Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/browser/notifications/notification_message_filter.h" | 5 #include "content/browser/notifications/notification_message_filter.h" |
| 6 | 6 |
| 7 #include "base/callback.h" | 7 #include "base/callback.h" |
| 8 #include "content/browser/notifications/page_notification_delegate.h" | 8 #include "content/browser/notifications/page_notification_delegate.h" |
| 9 #include "content/common/platform_notification_messages.h" | 9 #include "content/common/platform_notification_messages.h" |
| 10 #include "content/public/browser/browser_context.h" | 10 #include "content/public/browser/browser_context.h" |
| 11 #include "content/public/browser/browser_thread.h" | 11 #include "content/public/browser/browser_thread.h" |
| 12 #include "content/public/browser/content_browser_client.h" | 12 #include "content/public/browser/content_browser_client.h" |
| 13 #include "content/public/browser/desktop_notification_delegate.h" | 13 #include "content/public/browser/desktop_notification_delegate.h" |
| 14 #include "content/public/browser/platform_notification_service.h" | |
| 14 #include "content/public/common/content_client.h" | 15 #include "content/public/common/content_client.h" |
| 15 | 16 |
| 16 namespace content { | 17 namespace content { |
| 17 | 18 |
| 18 NotificationMessageFilter::NotificationMessageFilter( | 19 NotificationMessageFilter::NotificationMessageFilter( |
| 19 int process_id, | 20 int process_id, |
| 20 ResourceContext* resource_context, | 21 ResourceContext* resource_context, |
| 21 BrowserContext* browser_context) | 22 BrowserContext* browser_context) |
| 22 : BrowserMessageFilter(PlatformNotificationMsgStart), | 23 : BrowserMessageFilter(PlatformNotificationMsgStart), |
| 23 process_id_(process_id), | 24 process_id_(process_id), |
| (...skipping 23 matching lines...) Expand all Loading... | |
| 47 | 48 |
| 48 void NotificationMessageFilter::OverrideThreadForMessage( | 49 void NotificationMessageFilter::OverrideThreadForMessage( |
| 49 const IPC::Message& message, content::BrowserThread::ID* thread) { | 50 const IPC::Message& message, content::BrowserThread::ID* thread) { |
| 50 if (message.type() == PlatformNotificationHostMsg_Show::ID || | 51 if (message.type() == PlatformNotificationHostMsg_Show::ID || |
| 51 message.type() == PlatformNotificationHostMsg_Close::ID) | 52 message.type() == PlatformNotificationHostMsg_Close::ID) |
| 52 *thread = BrowserThread::UI; | 53 *thread = BrowserThread::UI; |
| 53 } | 54 } |
| 54 | 55 |
| 55 void NotificationMessageFilter::OnCheckNotificationPermission( | 56 void NotificationMessageFilter::OnCheckNotificationPermission( |
| 56 const GURL& origin, blink::WebNotificationPermission* permission) { | 57 const GURL& origin, blink::WebNotificationPermission* permission) { |
| 57 *permission = | 58 PlatformNotificationService* service = |
| 58 GetContentClient()->browser()->CheckDesktopNotificationPermission( | 59 GetContentClient()->browser()->GetPlatformNotificationService(); |
| 59 origin, | 60 if (service) { |
| 60 resource_context_, | 61 *permission = service->CheckPermission(resource_context_, |
| 61 process_id_); | 62 origin, |
| 63 process_id_); | |
| 64 } else | |
|
dewittj
2014/12/02 17:22:59
nit: braces around else clause
Peter Beverloo
2014/12/05 20:03:43
Done.
| |
| 65 *permission = blink::WebNotificationPermissionDenied; | |
| 62 } | 66 } |
| 63 | 67 |
| 64 void NotificationMessageFilter::OnShowPlatformNotification( | 68 void NotificationMessageFilter::OnShowPlatformNotification( |
| 65 int notification_id, const ShowDesktopNotificationHostMsgParams& params) { | 69 int notification_id, const ShowDesktopNotificationHostMsgParams& params) { |
| 66 scoped_ptr<DesktopNotificationDelegate> delegate( | 70 scoped_ptr<DesktopNotificationDelegate> delegate( |
| 67 new PageNotificationDelegate(process_id_, notification_id)); | 71 new PageNotificationDelegate(process_id_, notification_id)); |
| 68 | 72 |
| 69 base::Closure close_closure; | 73 base::Closure close_closure; |
| 70 GetContentClient()->browser()->ShowDesktopNotification(params, | 74 PlatformNotificationService* service = |
| 71 browser_context_, | 75 GetContentClient()->browser()->GetPlatformNotificationService(); |
| 72 process_id_, | 76 |
| 73 delegate.Pass(), | 77 service->DisplayNotification(browser_context_, |
| 74 &close_closure); | 78 params, |
| 79 delegate.Pass(), | |
| 80 process_id_, | |
| 81 &close_closure); | |
| 75 | 82 |
| 76 if (!close_closure.is_null()) | 83 if (!close_closure.is_null()) |
| 77 close_closures_[notification_id] = close_closure; | 84 close_closures_[notification_id] = close_closure; |
| 78 } | 85 } |
| 79 | 86 |
| 80 void NotificationMessageFilter::OnClosePlatformNotification( | 87 void NotificationMessageFilter::OnClosePlatformNotification( |
| 81 int notification_id) { | 88 int notification_id) { |
| 82 if (!close_closures_.count(notification_id)) | 89 if (!close_closures_.count(notification_id)) |
| 83 return; | 90 return; |
| 84 | 91 |
| 85 close_closures_[notification_id].Run(); | 92 close_closures_[notification_id].Run(); |
| 86 close_closures_.erase(notification_id); | 93 close_closures_.erase(notification_id); |
| 87 } | 94 } |
| 88 | 95 |
| 89 } // namespace content | 96 } // namespace content |
| OLD | NEW |