// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CHROME_BROWSER_UI_METRO_DRIVER_TOAST_NOTIFICATION_HANDLER_H_ #define CHROME_BROWSER_UI_METRO_DRIVER_TOAST_NOTIFICATION_HANDLER_H_ #include <windows.ui.notifications.h> #include "base/strings/string16.h" #include "base/win/metro.h" // Provides functionality to display a metro style toast notification. class ToastNotificationHandler { public: // Holds information about a desktop notification to be displayed. struct DesktopNotification { std::string origin_url; std::string icon_url; string16 title; string16 body; string16 display_source; std::string id; base::win::MetroNotificationClickedHandler notification_handler; string16 notification_context; DesktopNotification(const char* notification_origin, const char* notification_icon, const wchar_t* notification_title, const wchar_t* notification_body, const wchar_t* notification_display_source, const char* notification_id, base::win::MetroNotificationClickedHandler handler, const wchar_t* handler_context); DesktopNotification(); }; ToastNotificationHandler(); ~ToastNotificationHandler(); void DisplayNotification(const DesktopNotification& notification); void CancelNotification(); HRESULT OnActivate(winui::Notifications::IToastNotification* notification, IInspectable* inspectable); private: mswr::ComPtr<winui::Notifications::IToastNotifier> notifier_; mswr::ComPtr<winui::Notifications::IToastNotification> notification_; EventRegistrationToken activated_token_; DesktopNotification notification_info_; }; #endif // CHROME_BROWSER_UI_METRO_DRIVER_TOAST_NOTIFICATION_HANDLER_H_