OLD | NEW |
| (Empty) |
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 #include "chrome/browser/notifications/desktop_notification_service.h" | |
6 | |
7 #include "base/logging.h" | |
8 #include "base/win/metro.h" | |
9 #include "chrome/browser/notifications/notification.h" | |
10 #include "chrome/browser/notifications/notification_object_proxy.h" | |
11 #include "chrome/browser/notifications/notification_ui_manager.h" | |
12 #include "chrome/browser/notifications/notification_ui_manager.h" | |
13 #include "win8/util/win8_util.h" | |
14 | |
15 bool DesktopNotificationService::CancelDesktopNotification( | |
16 int process_id, int route_id, int notification_id) { | |
17 scoped_refptr<NotificationObjectProxy> proxy( | |
18 new NotificationObjectProxy(process_id, route_id, notification_id)); | |
19 if (win8::IsSingleWindowMetroMode()) { | |
20 base::win::MetroCancelNotification cancel_metro_notification = | |
21 reinterpret_cast<base::win::MetroCancelNotification>(GetProcAddress( | |
22 base::win::GetMetroModule(), "CancelNotification")); | |
23 DCHECK(cancel_metro_notification); | |
24 if (cancel_metro_notification(proxy->id().c_str())) | |
25 return true; | |
26 } | |
27 return GetUIManager()->CancelById(proxy->id()); | |
28 } | |
29 | |
30 void DesktopNotificationService::ShowNotification( | |
31 const Notification& notification) { | |
32 if (win8::IsSingleWindowMetroMode()) { | |
33 base::win::MetroNotification display_metro_notification = | |
34 reinterpret_cast<base::win::MetroNotification>(GetProcAddress( | |
35 base::win::GetMetroModule(), "DisplayNotification")); | |
36 DCHECK(display_metro_notification); | |
37 if (!notification.is_html()) { | |
38 display_metro_notification(notification.origin_url().spec().c_str(), | |
39 notification.content_url().spec().c_str(), | |
40 notification.title().c_str(), | |
41 notification.message().c_str(), | |
42 notification.display_source().c_str(), | |
43 notification.notification_id().c_str(), | |
44 NULL, NULL); | |
45 return; | |
46 } else { | |
47 NOTREACHED() << "We don't support HTML notifications in Windows 8 metro"; | |
48 } | |
49 } | |
50 GetUIManager()->Add(notification, profile_); | |
51 } | |
OLD | NEW |