| Index: content/browser/geolocation/geolocation_provider_impl.h
|
| ===================================================================
|
| --- content/browser/geolocation/geolocation_provider_impl.h (revision 269041)
|
| +++ content/browser/geolocation/geolocation_provider_impl.h (working copy)
|
| @@ -21,34 +21,17 @@
|
| namespace content {
|
| class LocationArbitrator;
|
|
|
| -// This is the main API to the geolocation subsystem. The application will hold
|
| -// a single instance of this class and can register multiple clients to be
|
| -// notified of location changes:
|
| -// * Callbacks are registered by AddLocationUpdateCallback() and will keep
|
| -// receiving updates until unregistered by RemoveLocationUpdateCallback().
|
| -// The application must instantiate the GeolocationProvider on the IO thread and
|
| -// must communicate with it on the same thread.
|
| -// The underlying location arbitrator will only be enabled whilst there is at
|
| -// least one registered observer or pending callback. The arbitrator and the
|
| -// location providers it uses run on a separate Geolocation thread.
|
| class CONTENT_EXPORT GeolocationProviderImpl
|
| : public NON_EXPORTED_BASE(GeolocationProvider),
|
| public base::Thread {
|
| public:
|
| // GeolocationProvider implementation:
|
| - virtual void AddLocationUpdateCallback(const LocationUpdateCallback& callback,
|
| - bool use_high_accuracy) OVERRIDE;
|
| - virtual bool RemoveLocationUpdateCallback(
|
| - const LocationUpdateCallback& callback) OVERRIDE;
|
| + virtual scoped_ptr<GeolocationProvider::Subscription>
|
| + AddLocationUpdateCallback(const LocationUpdateCallback& callback,
|
| + bool use_high_accuracy) OVERRIDE;
|
| virtual void UserDidOptIntoLocationServices() OVERRIDE;
|
| + virtual void OverrideLocationForTesting(const Geoposition& position) OVERRIDE;
|
|
|
| - bool LocationServicesOptedIn() const;
|
| -
|
| - // Overrides the location for automation/testing. Suppresses any further
|
| - // updates from the actual providers and sends an update with the overridden
|
| - // position to all registered clients.
|
| - void OverrideLocationForTesting(const Geoposition& override_position);
|
| -
|
| // Callback from the LocationArbitrator. Public for testing.
|
| void OnLocationUpdate(const Geoposition& position);
|
|
|
| @@ -58,6 +41,10 @@
|
| // instantiated on the same thread. Ownership is NOT returned.
|
| static GeolocationProviderImpl* GetInstance();
|
|
|
| + bool user_did_opt_into_location_services_for_testing() {
|
| + return user_did_opt_into_location_services_;
|
| + }
|
| +
|
| protected:
|
| friend struct DefaultSingletonTraits<GeolocationProviderImpl>;
|
| GeolocationProviderImpl();
|
| @@ -67,9 +54,6 @@
|
| virtual LocationArbitrator* CreateArbitrator();
|
|
|
| private:
|
| - typedef std::pair<LocationUpdateCallback, bool> LocationUpdateInfo;
|
| - typedef std::list<LocationUpdateInfo> CallbackList;
|
| -
|
| bool OnGeolocationThread() const;
|
|
|
| // Start and stop providers as needed when clients are added or removed.
|
| @@ -94,8 +78,9 @@
|
| virtual void Init() OVERRIDE;
|
| virtual void CleanUp() OVERRIDE;
|
|
|
| - // Only used on the IO thread
|
| - CallbackList callbacks_;
|
| + base::CallbackList<void(const Geoposition&)> high_accuracy_callbacks_;
|
| + base::CallbackList<void(const Geoposition&)> low_accuracy_callbacks_;
|
| +
|
| bool user_did_opt_into_location_services_;
|
| Geoposition position_;
|
|
|
|
|