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)); |
} |