| Index: content/browser/geolocation/wifi_data_provider_manager.h
|
| diff --git a/content/browser/geolocation/wifi_data_provider.h b/content/browser/geolocation/wifi_data_provider_manager.h
|
| similarity index 45%
|
| copy from content/browser/geolocation/wifi_data_provider.h
|
| copy to content/browser/geolocation/wifi_data_provider_manager.h
|
| index bfb06ec54446962381dfaea0818ce3edf6b07a69..24075077c4bc838e53212d3fcc1a7f861a879d34 100644
|
| --- a/content/browser/geolocation/wifi_data_provider.h
|
| +++ b/content/browser/geolocation/wifi_data_provider_manager.h
|
| @@ -4,19 +4,16 @@
|
|
|
| // A wifi data provider provides wifi data from the device that is used by a
|
| // NetworkLocationProvider to obtain a position fix. We use a singleton
|
| -// instance of the wifi data provider, which is used by multiple
|
| +// instance of the wifi data provider manager, which is used by multiple
|
| // NetworkLocationProvider objects.
|
| //
|
| -// This file provides WifiDataProvider, which provides static methods to
|
| +// This file provides WifiDataProviderManager, which provides static methods to
|
| // access the singleton instance. The singleton instance uses a private
|
| -// implementation to abstract across platforms and also to allow mock providers
|
| -// to be used for testing.
|
| -//
|
| -// This file also provides WifiDataProviderImplBase, a base class which
|
| -// provides common functionality for the private implementations.
|
| +// implementation of WifiDataProvider to abstract across platforms and also to
|
| +// allow mock providers to be used for testing.
|
|
|
| -#ifndef CONTENT_BROWSER_GEOLOCATION_WIFI_DATA_PROVIDER_H_
|
| -#define CONTENT_BROWSER_GEOLOCATION_WIFI_DATA_PROVIDER_H_
|
| +#ifndef CONTENT_BROWSER_GEOLOCATION_WIFI_DATA_PROVIDER_MANAGER_H_
|
| +#define CONTENT_BROWSER_GEOLOCATION_WIFI_DATA_PROVIDER_MANAGER_H_
|
|
|
| #include <set>
|
|
|
| @@ -34,90 +31,28 @@ namespace content {
|
|
|
| class WifiDataProvider;
|
|
|
| -// See class WifiDataProvider for the public client API.
|
| -// WifiDataProvider uses containment to hide platform-specific implementation
|
| -// details from common code. This class provides common functionality for these
|
| -// contained implementation classes. This is a modified pimpl pattern.
|
| -class CONTENT_EXPORT WifiDataProviderImplBase
|
| - : public base::RefCountedThreadSafe<WifiDataProviderImplBase> {
|
| - public:
|
| - WifiDataProviderImplBase();
|
| -
|
| - // Tells the provider to start looking for data. Callbacks will start
|
| - // receiving notifications after this call.
|
| - virtual void StartDataProvider() = 0;
|
| -
|
| - // Tells the provider to stop looking for data. Callbacks will stop
|
| - // receiving notifications after this call.
|
| - virtual void StopDataProvider() = 0;
|
| -
|
| - // Provides whatever data the provider has, which may be nothing. Return
|
| - // value indicates whether this is all the data the provider could ever
|
| - // obtain.
|
| - virtual bool GetData(WifiData* data) = 0;
|
| -
|
| - // Sets the container of this class, which is of type WifiDataProvider.
|
| - // This is required to pass as a parameter when calling a callback.
|
| - void SetContainer(WifiDataProvider* container);
|
| -
|
| - typedef base::Callback<void(WifiDataProvider*)> WifiDataUpdateCallback;
|
| -
|
| - void AddCallback(WifiDataUpdateCallback* callback);
|
| -
|
| - bool RemoveCallback(WifiDataUpdateCallback* callback);
|
| -
|
| - bool has_callbacks() const;
|
| -
|
| - protected:
|
| - friend class base::RefCountedThreadSafe<WifiDataProviderImplBase>;
|
| - virtual ~WifiDataProviderImplBase();
|
| -
|
| - typedef std::set<WifiDataUpdateCallback*> CallbackSet;
|
| -
|
| - // Runs all callbacks via a posted task, so we can unwind callstack here and
|
| - // avoid client reentrancy.
|
| - void RunCallbacks();
|
| -
|
| - bool CalledOnClientThread() const;
|
| -
|
| - base::MessageLoop* client_loop() const;
|
| -
|
| - private:
|
| - void DoRunCallbacks();
|
| -
|
| - WifiDataProvider* container_;
|
| -
|
| - // Reference to the client's message loop. All callbacks should happen in this
|
| - // context.
|
| - base::MessageLoop* client_loop_;
|
| -
|
| - CallbackSet callbacks_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(WifiDataProviderImplBase);
|
| -};
|
| -
|
| -// A wifi data provider
|
| +// A manager for wifi data providers.
|
| //
|
| // We use a singleton instance of this class which is shared by multiple network
|
| // location providers. These location providers access the instance through the
|
| // Register and Unregister methods.
|
| -class CONTENT_EXPORT WifiDataProvider {
|
| +class CONTENT_EXPORT WifiDataProviderManager {
|
| public:
|
| // Sets the factory function which will be used by Register to create the
|
| // implementation used by the singleton instance. This factory approach is
|
| // used both to abstract accross platform-specific implementations and to
|
| // inject mock implementations for testing.
|
| - typedef WifiDataProviderImplBase* (*ImplFactoryFunction)(void);
|
| + typedef WifiDataProvider* (*ImplFactoryFunction)(void);
|
| static void SetFactory(ImplFactoryFunction factory_function_in);
|
|
|
| // Resets the factory function to the default.
|
| static void ResetFactory();
|
|
|
| - typedef base::Callback<void(WifiDataProvider*)> WifiDataUpdateCallback;
|
| + typedef base::Callback<void(WifiDataProviderManager*)> WifiDataUpdateCallback;
|
|
|
| // Registers a callback, which will be run whenever new data is available.
|
| // Instantiates the singleton if necessary, and always returns it.
|
| - static WifiDataProvider* Register(WifiDataUpdateCallback* callback);
|
| + static WifiDataProviderManager* Register(WifiDataUpdateCallback* callback);
|
|
|
| // Removes a callback. If this is the last callback, deletes the singleton
|
| // instance. Return value indicates success.
|
| @@ -131,8 +66,8 @@ class CONTENT_EXPORT WifiDataProvider {
|
| private:
|
| // Private constructor and destructor, callers access singleton through
|
| // Register and Unregister.
|
| - WifiDataProvider();
|
| - virtual ~WifiDataProvider();
|
| + WifiDataProviderManager();
|
| + ~WifiDataProviderManager();
|
|
|
| void AddCallback(WifiDataUpdateCallback* callback);
|
| bool RemoveCallback(WifiDataUpdateCallback* callback);
|
| @@ -141,22 +76,22 @@ class CONTENT_EXPORT WifiDataProvider {
|
| void StartDataProvider();
|
| void StopDataProvider();
|
|
|
| - static WifiDataProviderImplBase* DefaultFactoryFunction();
|
| + static WifiDataProvider* DefaultFactoryFunction();
|
|
|
| // The singleton-like instance of this class. (Not 'true' singleton, as it
|
| // may go through multiple create/destroy/create cycles per process instance,
|
| // e.g. when under test).
|
| - static WifiDataProvider* instance_;
|
| + static WifiDataProviderManager* instance_;
|
|
|
| // The factory function used to create the singleton instance.
|
| static ImplFactoryFunction factory_function_;
|
|
|
| // The internal implementation.
|
| - scoped_refptr<WifiDataProviderImplBase> impl_;
|
| + scoped_refptr<WifiDataProvider> impl_;
|
|
|
| - DISALLOW_COPY_AND_ASSIGN(WifiDataProvider);
|
| + DISALLOW_COPY_AND_ASSIGN(WifiDataProviderManager);
|
| };
|
|
|
| } // namespace content
|
|
|
| -#endif // CONTENT_BROWSER_GEOLOCATION_WIFI_DATA_PROVIDER_H_
|
| +#endif // CONTENT_BROWSER_GEOLOCATION_WIFI_DATA_PROVIDER_MANAGER_H_
|
|
|