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

Unified Diff: device/geolocation/geolocation_provider_impl.h

Issue 2226143002: Gets rid of the LocationArbitrator interface, in preference for LocationProvider. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Merge branch 'master' into lai Created 4 years, 4 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
« no previous file with comments | « device/geolocation/BUILD.gn ('k') | device/geolocation/geolocation_provider_impl.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: device/geolocation/geolocation_provider_impl.h
diff --git a/device/geolocation/geolocation_provider_impl.h b/device/geolocation/geolocation_provider_impl.h
index e092b8b27ee299cc57da0848d66330c10eb1edc7..b08f3af5e59290d91eab8a565fa2d9f48e362d89 100644
--- a/device/geolocation/geolocation_provider_impl.h
+++ b/device/geolocation/geolocation_provider_impl.h
@@ -16,6 +16,7 @@
#include "device/geolocation/geolocation_export.h"
#include "device/geolocation/geolocation_provider.h"
#include "device/geolocation/geoposition.h"
+#include "device/geolocation/location_provider.h"
namespace base {
template <typename Type>
@@ -24,7 +25,6 @@ class SingleThreadTaskRunner;
}
namespace device {
-class LocationArbitrator;
class DEVICE_GEOLOCATION_EXPORT GeolocationProviderImpl
: public NON_EXPORTED_BASE(GeolocationProvider),
@@ -38,7 +38,8 @@ class DEVICE_GEOLOCATION_EXPORT GeolocationProviderImpl
void OverrideLocationForTesting(const Geoposition& position) override;
// Callback from the LocationArbitrator. Public for testing.
- void OnLocationUpdate(const Geoposition& position);
+ void OnLocationUpdate(const LocationProvider* provider,
+ const Geoposition& position);
// Gets a pointer to the singleton instance of the location relayer, which
// is in turn bound to the browser's global context objects. This must only be
@@ -50,16 +51,15 @@ class DEVICE_GEOLOCATION_EXPORT GeolocationProviderImpl
return user_did_opt_into_location_services_;
}
- protected:
+ // Safe to call while there are no GeolocationProviderImpl clients
+ // registered.
+ void SetArbitratorForTesting(std::unique_ptr<LocationProvider> arbitrator);
+
+ private:
friend struct base::DefaultSingletonTraits<GeolocationProviderImpl>;
GeolocationProviderImpl();
~GeolocationProviderImpl() override;
- // Useful for injecting mock geolocation arbitrator in tests.
- // TODO(mvanouwerkerk): Use something like SetArbitratorForTesting instead.
- virtual std::unique_ptr<LocationArbitrator> CreateArbitrator();
-
- private:
bool OnGeolocationThread() const;
// Start and stop providers as needed when clients are added or removed.
@@ -93,12 +93,12 @@ class DEVICE_GEOLOCATION_EXPORT GeolocationProviderImpl
// True only in testing, where we want to use a custom position.
bool ignore_location_updates_;
- // Only to be used on the geolocation thread.
- std::unique_ptr<LocationArbitrator> arbitrator_;
-
- // Used to PostTask()s from the geolocation thread to creation thread.
+ // Used to PostTask()s from the geolocation thread to caller thread.
const scoped_refptr<base::SingleThreadTaskRunner> main_task_runner_;
+ // Only to be used on the geolocation thread.
+ std::unique_ptr<LocationProvider> arbitrator_;
+
DISALLOW_COPY_AND_ASSIGN(GeolocationProviderImpl);
};
« no previous file with comments | « device/geolocation/BUILD.gn ('k') | device/geolocation/geolocation_provider_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698