Home | History | Annotate | Download | only in metro_driver
      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