• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef CHROME_BROWSER_UI_METRO_DRIVER_TOAST_NOTIFICATION_HANDLER_H_
6 #define CHROME_BROWSER_UI_METRO_DRIVER_TOAST_NOTIFICATION_HANDLER_H_
7 
8 #include <windows.ui.notifications.h>
9 
10 #include "base/strings/string16.h"
11 #include "base/win/metro.h"
12 
13 // Provides functionality to display a metro style toast notification.
14 class ToastNotificationHandler {
15  public:
16   // Holds information about a desktop notification to be displayed.
17   struct DesktopNotification {
18     std::string origin_url;
19     std::string icon_url;
20     base::string16 title;
21     base::string16 body;
22     base::string16 display_source;
23     std::string id;
24     base::win::MetroNotificationClickedHandler notification_handler;
25     base::string16 notification_context;
26 
27     DesktopNotification(const char* notification_origin,
28                         const char* notification_icon,
29                         const wchar_t* notification_title,
30                         const wchar_t* notification_body,
31                         const wchar_t* notification_display_source,
32                         const char* notification_id,
33                         base::win::MetroNotificationClickedHandler handler,
34                         const wchar_t* handler_context);
35 
36     DesktopNotification();
37   };
38 
39   ToastNotificationHandler();
40   ~ToastNotificationHandler();
41 
42   void DisplayNotification(const DesktopNotification& notification);
43   void CancelNotification();
44 
45   HRESULT OnActivate(winui::Notifications::IToastNotification* notification,
46                      IInspectable* inspectable);
47 
48  private:
49   mswr::ComPtr<winui::Notifications::IToastNotifier> notifier_;
50   mswr::ComPtr<winui::Notifications::IToastNotification> notification_;
51   EventRegistrationToken activated_token_;
52   DesktopNotification notification_info_;
53 };
54 
55 #endif  // CHROME_BROWSER_UI_METRO_DRIVER_TOAST_NOTIFICATION_HANDLER_H_
56