OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "content/renderer/notification_provider.h" | 5 #include "content/renderer/notification_provider.h" |
6 | 6 |
7 #include "base/string_util.h" | 7 #include "base/string_util.h" |
8 #include "content/common/desktop_notification_messages.h" | 8 #include "content/common/desktop_notification_messages.h" |
9 #include "content/common/view_messages.h" | 9 #include "content/common/view_messages.h" |
10 #include "content/renderer/render_view_impl.h" | 10 #include "content/renderer/render_view_impl.h" |
11 #include "third_party/WebKit/Source/WebKit/chromium/public/WebDocument.h" | 11 #include "third_party/WebKit/Source/WebKit/chromium/public/WebDocument.h" |
12 #include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h" | 12 #include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h" |
13 #include "third_party/WebKit/Source/WebKit/chromium/public/WebNotificationPermis
sionCallback.h" | 13 #include "third_party/WebKit/Source/WebKit/chromium/public/WebNotificationPermis
sionCallback.h" |
14 #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebURL.h" | 14 #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebURL.h" |
15 #include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h" | 15 #include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h" |
16 | 16 |
17 using WebKit::WebDocument; | 17 using WebKit::WebDocument; |
18 using WebKit::WebNotification; | 18 using WebKit::WebNotification; |
19 using WebKit::WebNotificationPresenter; | 19 using WebKit::WebNotificationPresenter; |
20 using WebKit::WebNotificationPermissionCallback; | 20 using WebKit::WebNotificationPermissionCallback; |
21 using WebKit::WebSecurityOrigin; | 21 using WebKit::WebSecurityOrigin; |
22 using WebKit::WebString; | 22 using WebKit::WebString; |
23 using WebKit::WebURL; | 23 using WebKit::WebURL; |
24 | 24 |
| 25 namespace content { |
| 26 |
| 27 |
25 NotificationProvider::NotificationProvider(RenderViewImpl* render_view) | 28 NotificationProvider::NotificationProvider(RenderViewImpl* render_view) |
26 : content::RenderViewObserver(render_view) { | 29 : RenderViewObserver(render_view) { |
27 } | 30 } |
28 | 31 |
29 NotificationProvider::~NotificationProvider() { | 32 NotificationProvider::~NotificationProvider() { |
30 manager_.DetachAll(); | 33 manager_.DetachAll(); |
31 } | 34 } |
32 | 35 |
33 bool NotificationProvider::show(const WebNotification& notification) { | 36 bool NotificationProvider::show(const WebNotification& notification) { |
34 int notification_id = manager_.RegisterNotification(notification); | 37 int notification_id = manager_.RegisterNotification(notification); |
35 if (notification.isHTML()) | 38 if (notification.isHTML()) |
36 return ShowHTML(notification, notification_id); | 39 return ShowHTML(notification, notification_id); |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
92 | 95 |
93 if (message.type() == ViewMsg_Navigate::ID) | 96 if (message.type() == ViewMsg_Navigate::ID) |
94 OnNavigate(); // Don't want to swallow the message. | 97 OnNavigate(); // Don't want to swallow the message. |
95 | 98 |
96 return handled; | 99 return handled; |
97 } | 100 } |
98 | 101 |
99 bool NotificationProvider::ShowHTML(const WebNotification& notification, | 102 bool NotificationProvider::ShowHTML(const WebNotification& notification, |
100 int id) { | 103 int id) { |
101 DCHECK(notification.isHTML()); | 104 DCHECK(notification.isHTML()); |
102 content::ShowDesktopNotificationHostMsgParams params; | 105 ShowDesktopNotificationHostMsgParams params; |
103 WebDocument document = render_view()->GetWebView()->mainFrame()->document(); | 106 WebDocument document = render_view()->GetWebView()->mainFrame()->document(); |
104 params.origin = GURL(document.securityOrigin().toString()); | 107 params.origin = GURL(document.securityOrigin().toString()); |
105 params.is_html = true; | 108 params.is_html = true; |
106 params.contents_url = notification.url(); | 109 params.contents_url = notification.url(); |
107 params.notification_id = id; | 110 params.notification_id = id; |
108 params.replace_id = notification.replaceId(); | 111 params.replace_id = notification.replaceId(); |
109 return Send(new DesktopNotificationHostMsg_Show(routing_id(), params)); | 112 return Send(new DesktopNotificationHostMsg_Show(routing_id(), params)); |
110 } | 113 } |
111 | 114 |
112 bool NotificationProvider::ShowText(const WebNotification& notification, | 115 bool NotificationProvider::ShowText(const WebNotification& notification, |
113 int id) { | 116 int id) { |
114 DCHECK(!notification.isHTML()); | 117 DCHECK(!notification.isHTML()); |
115 content::ShowDesktopNotificationHostMsgParams params; | 118 ShowDesktopNotificationHostMsgParams params; |
116 params.is_html = false; | 119 params.is_html = false; |
117 WebDocument document = render_view()->GetWebView()->mainFrame()->document(); | 120 WebDocument document = render_view()->GetWebView()->mainFrame()->document(); |
118 params.origin = GURL(document.securityOrigin().toString()); | 121 params.origin = GURL(document.securityOrigin().toString()); |
119 params.icon_url = notification.iconURL(); | 122 params.icon_url = notification.iconURL(); |
120 params.title = notification.title(); | 123 params.title = notification.title(); |
121 params.body = notification.body(); | 124 params.body = notification.body(); |
122 params.direction = notification.direction(); | 125 params.direction = notification.direction(); |
123 params.notification_id = id; | 126 params.notification_id = id; |
124 params.replace_id = notification.replaceId(); | 127 params.replace_id = notification.replaceId(); |
125 return Send(new DesktopNotificationHostMsg_Show(routing_id(), params)); | 128 return Send(new DesktopNotificationHostMsg_Show(routing_id(), params)); |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
166 void NotificationProvider::OnPermissionRequestComplete(int id) { | 169 void NotificationProvider::OnPermissionRequestComplete(int id) { |
167 WebNotificationPermissionCallback* callback = manager_.GetCallback(id); | 170 WebNotificationPermissionCallback* callback = manager_.GetCallback(id); |
168 DCHECK(callback); | 171 DCHECK(callback); |
169 callback->permissionRequestComplete(); | 172 callback->permissionRequestComplete(); |
170 manager_.OnPermissionRequestComplete(id); | 173 manager_.OnPermissionRequestComplete(id); |
171 } | 174 } |
172 | 175 |
173 void NotificationProvider::OnNavigate() { | 176 void NotificationProvider::OnNavigate() { |
174 manager_.Clear(); | 177 manager_.Clear(); |
175 } | 178 } |
| 179 |
| 180 } // namespace content |
OLD | NEW |