Chromium Code Reviews| 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..1c6142bc4617f40799b93b8ccf7f8d22af50ff3d 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,27 @@ 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* render_frame_impl = |
| + RenderFrameImpl::FromRoutingID(routing_id()); |
| + DCHECK(render_frame_impl); |
|
Michael van Ouwerkerk
2014/09/29 18:11:48
Let's not DCHECK here as the dispatcher is owned b
mlamouri (slow - plz ping)
2014/09/30 09:44:52
Done.
|
| + |
| + ManifestManager* manifest_manager = render_frame_impl->manifest_manager(); |
| + DCHECK(manifest_manager); |
|
Michael van Ouwerkerk
2014/09/29 18:11:48
Ditto here.
mlamouri (slow - plz ping)
2014/09/30 09:44:52
Done.
|
| + |
| + manifest_manager->GetManifest(base::Bind(&PushMessagingDispatcher::DoRegister, |
|
Michael van Ouwerkerk
2014/09/29 18:11:48
Then collapse this to render_frame_impl->manifest_
mlamouri (slow - plz ping)
2014/09/30 09:44:52
I collapsed everything.
|
| + 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 +67,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)); |
| } |