Chromium Code Reviews| Index: content/browser/geofencing/geofencing_manager.h |
| diff --git a/content/browser/geofencing/geofencing_manager.h b/content/browser/geofencing/geofencing_manager.h |
| index 7cd7b17ef44c7362c258de94291a8bd1af49156e..ff721659cf50cd861e786156e4c69823bc301d84 100644 |
| --- a/content/browser/geofencing/geofencing_manager.h |
| +++ b/content/browser/geofencing/geofencing_manager.h |
| @@ -14,8 +14,10 @@ |
| #include "base/memory/ref_counted.h" |
| #include "base/memory/scoped_ptr.h" |
| #include "content/browser/geofencing/geofencing_registration_delegate.h" |
| +#include "content/browser/service_worker/service_worker_storage.h" |
| #include "content/common/content_export.h" |
| #include "content/common/geofencing_status.h" |
| +#include "content/common/service_worker/service_worker_status_code.h" |
| template <typename T> |
| struct DefaultSingletonTraits; |
| @@ -29,6 +31,7 @@ namespace content { |
| class GeofencingService; |
| class ServiceWorkerContextWrapper; |
| +class ServiceWorkerRegistration; |
| // This is the main API to the geofencing subsystem. There is one instance of |
| // this class per storage partition. |
| @@ -38,6 +41,8 @@ class ServiceWorkerContextWrapper; |
| // This class is created on the UI thread, but all its methods should only be |
| // called from the IO thread. |
| // TODO(mek): Implement some kind of persistence of registrations. |
| +// TODO(mek): Unregister a geofence when the ServiceWorkerRegistration it |
| +// belongs to goes away. |
| class CONTENT_EXPORT GeofencingManager |
| : NON_EXPORTED_BASE(public GeofencingRegistrationDelegate), |
| public base::RefCountedThreadSafe<GeofencingManager> { |
| @@ -102,6 +107,8 @@ class CONTENT_EXPORT GeofencingManager |
| // GeofencingRegistrationDelegate implementation. |
| void RegistrationFinished(int64 geofencing_registration_id, |
| GeofencingStatus status) override; |
| + void RegionEntered(int64 geofencing_registration_id) override; |
| + void RegionExited(int64 geofencing_registration_id) override; |
| // Looks up a particular geofence registration. Returns nullptr if no |
| // registration with the given IDs exists. |
| @@ -125,6 +132,29 @@ class CONTENT_EXPORT GeofencingManager |
| // Clears a registration. |
| void ClearRegistration(Registration* registration); |
| + // Starts dispatching a particular geofencing |event_type| for the geofence |
| + // registration with the given ID. This first looks up the Service Worker |
| + // Registration the geofence is associated with, and then attempts to deliver |
| + // the event to that service worker. |
| + void DispatchGeofencingEvent(blink::WebGeofencingEventType event_type, |
| + int64 geofencing_registration_id); |
| + |
| + // Delivers an event to the specified service worker for the given geofence. |
| + // If the geofence registration id is no longer valid, this method does |
| + // nothing. This assumes the |service_worker_registration| is the service |
| + // worker the geofence registration is associated with. |
| + void DeliverGeofencingEvent(blink::WebGeofencingEventType event_type, |
| + int64 geofencing_registration_id, |
| + ServiceWorkerStatusCode service_worker_status, |
| + const scoped_refptr<ServiceWorkerRegistration>& |
| + service_worker_registration); |
| + |
| + // Called when delivering of a geofence event to a service worker has finished |
|
palmer
2014/10/27 22:27:36
Nit: "...when delivery of..."
Marijn Kruisselbrink
2014/10/29 17:31:28
Done.
|
| + // (or failed to finish). |
| + void DeliverGeofencingEventEnd(const scoped_refptr<ServiceWorkerRegistration>& |
| + service_worker_registration, |
| + ServiceWorkerStatusCode service_worker_status); |
| + |
| // Map of all registered regions for a particular service worker registration. |
| typedef std::map<std::string, Registration> RegionIdRegistrationMap; |
| // Map of service worker registration id to the regions registered by that |