Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(67)

Unified Diff: content/child/geofencing/geofencing_dispatcher.cc

Issue 623823002: Chrome side of passing on the service worker registration with geofencing API calls. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/child/geofencing/geofencing_dispatcher.cc
diff --git a/content/child/geofencing/geofencing_dispatcher.cc b/content/child/geofencing/geofencing_dispatcher.cc
index 1b0f8498c463d35c31f08f8dc68747085b7ae526..eec721faf979eaa18d6a140a076231195bb7f35d 100644
--- a/content/child/geofencing/geofencing_dispatcher.cc
+++ b/content/child/geofencing/geofencing_dispatcher.cc
@@ -8,9 +8,11 @@
#include "base/memory/scoped_ptr.h"
#include "base/message_loop/message_loop.h"
#include "base/thread_task_runner_handle.h"
+#include "content/child/service_worker/web_service_worker_registration_impl.h"
#include "content/child/thread_safe_sender.h"
#include "content/child/worker_thread_task_runner.h"
#include "content/common/geofencing_messages.h"
+#include "content/common/service_worker/service_worker_types.h"
#include "third_party/WebKit/public/platform/WebCircularGeofencingRegion.h"
#include "third_party/WebKit/public/platform/WebGeofencingError.h"
#include "third_party/WebKit/public/platform/WebGeofencingRegistration.h"
@@ -63,28 +65,60 @@ void GeofencingDispatcher::OnMessageReceived(const IPC::Message& msg) {
void GeofencingDispatcher::RegisterRegion(
const blink::WebString& region_id,
const blink::WebCircularGeofencingRegion& region,
+ blink::WebServiceWorkerRegistration* service_worker_registration,
blink::WebGeofencingCallbacks* callbacks) {
DCHECK(callbacks);
int request_id = region_registration_requests_.Add(callbacks);
- Send(new GeofencingHostMsg_RegisterRegion(
- CurrentWorkerId(), request_id, region_id.utf8(), region));
+ // TODO(mek): Immediately reject requests lacking a service worker
+ // registration, without bouncing through browser process.
+ int64 serviceworker_registration_id = kInvalidServiceWorkerRegistrationId;
+ if (service_worker_registration) {
+ serviceworker_registration_id =
+ static_cast<WebServiceWorkerRegistrationImpl*>(
+ service_worker_registration)->registration_id();
+ }
+ Send(new GeofencingHostMsg_RegisterRegion(CurrentWorkerId(),
+ request_id,
+ region_id.utf8(),
+ region,
+ serviceworker_registration_id));
}
void GeofencingDispatcher::UnregisterRegion(
const blink::WebString& region_id,
+ blink::WebServiceWorkerRegistration* service_worker_registration,
blink::WebGeofencingCallbacks* callbacks) {
DCHECK(callbacks);
int request_id = region_unregistration_requests_.Add(callbacks);
- Send(new GeofencingHostMsg_UnregisterRegion(
- CurrentWorkerId(), request_id, region_id.utf8()));
+ // TODO(mek): Immediately reject requests lacking a service worker
+ // registration, without bouncing through browser process.
+ int64 serviceworker_registration_id = kInvalidServiceWorkerRegistrationId;
+ if (service_worker_registration) {
+ serviceworker_registration_id =
+ static_cast<WebServiceWorkerRegistrationImpl*>(
+ service_worker_registration)->registration_id();
+ }
+ Send(new GeofencingHostMsg_UnregisterRegion(CurrentWorkerId(),
+ request_id,
+ region_id.utf8(),
+ serviceworker_registration_id));
}
void GeofencingDispatcher::GetRegisteredRegions(
+ blink::WebServiceWorkerRegistration* service_worker_registration,
blink::WebGeofencingRegionsCallbacks* callbacks) {
DCHECK(callbacks);
int request_id = get_registered_regions_requests_.Add(callbacks);
- Send(new GeofencingHostMsg_GetRegisteredRegions(CurrentWorkerId(),
- request_id));
+ // TODO(mek): Immediately reject requests lacking a service worker
+ // registration, without bouncing through browser process.
+ int64 serviceworker_registration_id = kInvalidServiceWorkerRegistrationId;
+ if (service_worker_registration) {
+ serviceworker_registration_id =
+ static_cast<WebServiceWorkerRegistrationImpl*>(
+ service_worker_registration)->registration_id();
+ }
+ Send(new GeofencingHostMsg_GetRegisteredRegions(
+ CurrentWorkerId(), request_id, serviceworker_registration_id));
}
GeofencingDispatcher* GeofencingDispatcher::GetOrCreateThreadSpecificInstance(
« no previous file with comments | « content/child/geofencing/geofencing_dispatcher.h ('k') | content/child/geofencing/web_geofencing_provider_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698