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 string16 title; 21 string16 body; 22 string16 display_source; 23 std::string id; 24 base::win::MetroNotificationClickedHandler notification_handler; 25 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