| Index: content/renderer/push_messaging_dispatcher.cc
|
| diff --git a/content/renderer/push_messaging_dispatcher.cc b/content/renderer/push_messaging_dispatcher.cc
|
| index b2bb8502e50d81f57e12fa4c259402ff966ba4f0..1de8da99d2d277d4daa1a63a0488f13dbf8a597c 100644
|
| --- a/content/renderer/push_messaging_dispatcher.cc
|
| +++ b/content/renderer/push_messaging_dispatcher.cc
|
| @@ -4,8 +4,11 @@
|
|
|
| #include "content/renderer/push_messaging_dispatcher.h"
|
|
|
| +#include "base/strings/utf_string_conversions.h"
|
| #include "content/child/service_worker/web_service_worker_provider_impl.h"
|
| #include "content/common/push_messaging_messages.h"
|
| +#include "content/renderer/manifest/manifest_manager.h"
|
| +#include "content/renderer/render_frame_impl.h"
|
| #include "ipc/ipc_message.h"
|
| #include "third_party/WebKit/public/platform/WebPushError.h"
|
| #include "third_party/WebKit/public/platform/WebPushRegistration.h"
|
| @@ -36,20 +39,21 @@ bool PushMessagingDispatcher::OnMessageReceived(const IPC::Message& message) {
|
|
|
| void PushMessagingDispatcher::registerPushMessaging(
|
| const WebString& sender_id,
|
| - blink::WebPushRegistrationCallbacks* callbacks) {
|
| - DCHECK(callbacks);
|
| - scoped_ptr<blink::WebPushError> error(new blink::WebPushError(
|
| - blink::WebPushError::ErrorTypeAbort,
|
| - WebString::fromUTF8(PushMessagingStatusToString(
|
| - PUSH_MESSAGING_STATUS_REGISTRATION_FAILED_NO_SERVICE_WORKER))));
|
| - callbacks->onError(error.release());
|
| - delete callbacks;
|
| + blink::WebPushRegistrationCallbacks* callbacks,
|
| + blink::WebServiceWorkerProvider* service_worker_provider) {
|
| + RenderFrameImpl::FromRoutingID(routing_id())->manifest_manager()->GetManifest(
|
| + base::Bind(&PushMessagingDispatcher::DoRegister,
|
| + base::Unretained(this),
|
| + sender_id.utf8(),
|
| + callbacks,
|
| + service_worker_provider));
|
| }
|
|
|
| -void PushMessagingDispatcher::registerPushMessaging(
|
| - const WebString& sender_id,
|
| +void PushMessagingDispatcher::DoRegister(
|
| + const std::string& sender_id,
|
| blink::WebPushRegistrationCallbacks* callbacks,
|
| - blink::WebServiceWorkerProvider* service_worker_provider) {
|
| + blink::WebServiceWorkerProvider* service_worker_provider,
|
| + const Manifest& manifest) {
|
| DCHECK(callbacks);
|
| int callbacks_id = registration_callbacks_.Add(callbacks);
|
| int service_worker_provider_id = static_cast<WebServiceWorkerProviderImpl*>(
|
| @@ -57,7 +61,9 @@ void PushMessagingDispatcher::registerPushMessaging(
|
| Send(new PushMessagingHostMsg_Register(
|
| routing_id(),
|
| callbacks_id,
|
| - sender_id.utf8(),
|
| + manifest.gcm_sender_id.is_null()
|
| + ? sender_id
|
| + : base::UTF16ToUTF8(manifest.gcm_sender_id.string()),
|
| blink::WebUserGestureIndicator::isProcessingUserGesture(),
|
| service_worker_provider_id));
|
| }
|
|
|