| Index: content/browser/push_messaging_message_filter.cc
|
| diff --git a/content/browser/push_messaging_message_filter.cc b/content/browser/push_messaging_message_filter.cc
|
| index b681ce7b392d7314eceda446aa8c96aafd37cf48..c4df89d3dc8f86a2be6926bc82b7ceb39dbc709a 100644
|
| --- a/content/browser/push_messaging_message_filter.cc
|
| +++ b/content/browser/push_messaging_message_filter.cc
|
| @@ -15,6 +15,7 @@
|
| #include "content/public/browser/browser_context.h"
|
| #include "content/public/browser/browser_thread.h"
|
| #include "content/public/browser/push_messaging_service.h"
|
| +#include "third_party/WebKit/public/platform/WebPushPermissionStatus.h"
|
|
|
| namespace content {
|
| namespace {
|
| @@ -44,6 +45,8 @@ bool PushMessagingMessageFilter::OnMessageReceived(
|
| bool handled = true;
|
| IPC_BEGIN_MESSAGE_MAP(PushMessagingMessageFilter, message)
|
| IPC_MESSAGE_HANDLER(PushMessagingHostMsg_Register, OnRegister)
|
| + IPC_MESSAGE_HANDLER(PushMessagingHostMsg_PermissionStatus,
|
| + OnPermissionStatusRequest)
|
| IPC_MESSAGE_UNHANDLED(handled = false)
|
| IPC_END_MESSAGE_MAP()
|
| return handled;
|
| @@ -82,6 +85,30 @@ void PushMessagingMessageFilter::OnRegister(int render_frame_id,
|
| service_worker_host->active_version()->registration_id()));
|
| }
|
|
|
| +void PushMessagingMessageFilter::OnPermissionStatusRequest(
|
| + int render_frame_id,
|
| + int service_worker_provider_id,
|
| + int permission_callback_id) {
|
| + DCHECK_CURRENTLY_ON(BrowserThread::IO);
|
| + ServiceWorkerProviderHost* service_worker_host =
|
| + service_worker_context_->context()->GetProviderHost(
|
| + render_process_id_, service_worker_provider_id);
|
| +
|
| + if (service_worker_host && service_worker_host->active_version()) {
|
| + BrowserThread::PostTask(
|
| + BrowserThread::UI,
|
| + FROM_HERE,
|
| + base::Bind(&PushMessagingMessageFilter::DoPermissionStatusRequest,
|
| + weak_factory_.GetWeakPtr(),
|
| + service_worker_host->active_version()->scope().GetOrigin(),
|
| + render_frame_id,
|
| + permission_callback_id));
|
| + } else {
|
| + Send(new PushMessagingMsg_PermissionStatusFailure(
|
| + render_frame_id, permission_callback_id));
|
| + }
|
| +}
|
| +
|
| void PushMessagingMessageFilter::DoRegister(
|
| int render_frame_id,
|
| int callbacks_id,
|
| @@ -112,6 +139,19 @@ void PushMessagingMessageFilter::DoRegister(
|
| callbacks_id));
|
| }
|
|
|
| +void PushMessagingMessageFilter::DoPermissionStatusRequest(
|
| + const GURL& requesting_origin,
|
| + int render_frame_id,
|
| + int callback_id) {
|
| + DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
| + blink::WebPushPermissionStatus permission_value =
|
| + service()->GetPermissionStatus(
|
| + requesting_origin, render_process_id_, render_frame_id);
|
| +
|
| + Send(new PushMessagingMsg_PermissionStatusResult(
|
| + render_frame_id, callback_id, permission_value));
|
| +}
|
| +
|
| void PushMessagingMessageFilter::DidRegister(
|
| int render_frame_id,
|
| int callbacks_id,
|
|
|