Index: content/browser/geolocation/wifi_data_provider_manager.cc |
diff --git a/content/browser/geolocation/wifi_data_provider.cc b/content/browser/geolocation/wifi_data_provider_manager.cc |
similarity index 42% |
copy from content/browser/geolocation/wifi_data_provider.cc |
copy to content/browser/geolocation/wifi_data_provider_manager.cc |
index 85595f927ab8b43b507eb628df471f7fff94624f..1dc1770a1911222d7dbae080d18c15e6ac2fd3f5 100644 |
--- a/content/browser/geolocation/wifi_data_provider.cc |
+++ b/content/browser/geolocation/wifi_data_provider_manager.cc |
@@ -2,32 +2,36 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
+#include "content/browser/geolocation/wifi_data_provider_manager.h" |
+ |
#include "content/browser/geolocation/wifi_data_provider.h" |
namespace content { |
// static |
-WifiDataProvider* WifiDataProvider::instance_ = NULL; |
+WifiDataProviderManager* WifiDataProviderManager::instance_ = NULL; |
// static |
-WifiDataProvider::ImplFactoryFunction WifiDataProvider::factory_function_ = |
- DefaultFactoryFunction; |
+WifiDataProviderManager::ImplFactoryFunction |
+ WifiDataProviderManager::factory_function_ = DefaultFactoryFunction; |
// static |
-void WifiDataProvider::SetFactory(ImplFactoryFunction factory_function_in) { |
+void WifiDataProviderManager::SetFactory( |
+ ImplFactoryFunction factory_function_in) { |
factory_function_ = factory_function_in; |
} |
// static |
-void WifiDataProvider::ResetFactory() { |
+void WifiDataProviderManager::ResetFactory() { |
factory_function_ = DefaultFactoryFunction; |
} |
// static |
-WifiDataProvider* WifiDataProvider::Register(WifiDataUpdateCallback* callback) { |
+WifiDataProviderManager* WifiDataProviderManager::Register( |
+ WifiDataUpdateCallback* callback) { |
bool need_to_start_data_provider = false; |
if (!instance_) { |
- instance_ = new WifiDataProvider(); |
+ instance_ = new WifiDataProviderManager(); |
need_to_start_data_provider = true; |
} |
DCHECK(instance_); |
@@ -40,7 +44,7 @@ WifiDataProvider* WifiDataProvider::Register(WifiDataUpdateCallback* callback) { |
} |
// static |
-bool WifiDataProvider::Unregister(WifiDataUpdateCallback* callback) { |
+bool WifiDataProviderManager::Unregister(WifiDataUpdateCallback* callback) { |
DCHECK(instance_); |
DCHECK(instance_->has_callbacks()); |
if (!instance_->RemoveCallback(callback)) { |
@@ -57,90 +61,39 @@ bool WifiDataProvider::Unregister(WifiDataUpdateCallback* callback) { |
return true; |
} |
-WifiDataProviderImplBase::WifiDataProviderImplBase() |
- : container_(NULL), |
- client_loop_(base::MessageLoop::current()) { |
- DCHECK(client_loop_); |
-} |
- |
-WifiDataProviderImplBase::~WifiDataProviderImplBase() { |
-} |
- |
-void WifiDataProviderImplBase::SetContainer(WifiDataProvider* container) { |
- container_ = container; |
-} |
- |
-void WifiDataProviderImplBase::AddCallback(WifiDataUpdateCallback* callback) { |
- callbacks_.insert(callback); |
-} |
- |
-bool WifiDataProviderImplBase::RemoveCallback( |
- WifiDataUpdateCallback* callback) { |
- return callbacks_.erase(callback) == 1; |
-} |
- |
-bool WifiDataProviderImplBase::has_callbacks() const { |
- return !callbacks_.empty(); |
-} |
- |
-void WifiDataProviderImplBase::RunCallbacks() { |
- client_loop_->PostTask(FROM_HERE, base::Bind( |
- &WifiDataProviderImplBase::DoRunCallbacks, |
- this)); |
-} |
- |
-bool WifiDataProviderImplBase::CalledOnClientThread() const { |
- return base::MessageLoop::current() == this->client_loop_; |
-} |
- |
-base::MessageLoop* WifiDataProviderImplBase::client_loop() const { |
- return client_loop_; |
-} |
- |
-void WifiDataProviderImplBase::DoRunCallbacks() { |
- // It's possible that all the callbacks (and the container) went away |
- // whilst this task was pending. This is fine; the loop will be a no-op. |
- CallbackSet::const_iterator iter = callbacks_.begin(); |
- while (iter != callbacks_.end()) { |
- WifiDataUpdateCallback* callback = *iter; |
- ++iter; // Advance iter before running, in case callback unregisters. |
- callback->Run(container_); |
- } |
-} |
- |
-WifiDataProvider::WifiDataProvider() { |
+WifiDataProviderManager::WifiDataProviderManager() { |
DCHECK(factory_function_); |
impl_ = (*factory_function_)(); |
DCHECK(impl_.get()); |
impl_->SetContainer(this); |
} |
-WifiDataProvider::~WifiDataProvider() { |
+WifiDataProviderManager::~WifiDataProviderManager() { |
DCHECK(impl_.get()); |
impl_->SetContainer(NULL); |
} |
-bool WifiDataProvider::GetData(WifiData* data) { |
+bool WifiDataProviderManager::GetData(WifiData* data) { |
return impl_->GetData(data); |
} |
-void WifiDataProvider::AddCallback(WifiDataUpdateCallback* callback) { |
+void WifiDataProviderManager::AddCallback(WifiDataUpdateCallback* callback) { |
impl_->AddCallback(callback); |
} |
-bool WifiDataProvider::RemoveCallback(WifiDataUpdateCallback* callback) { |
+bool WifiDataProviderManager::RemoveCallback(WifiDataUpdateCallback* callback) { |
return impl_->RemoveCallback(callback); |
} |
-bool WifiDataProvider::has_callbacks() const { |
+bool WifiDataProviderManager::has_callbacks() const { |
return impl_->has_callbacks(); |
} |
-void WifiDataProvider::StartDataProvider() { |
+void WifiDataProviderManager::StartDataProvider() { |
impl_->StartDataProvider(); |
} |
-void WifiDataProvider::StopDataProvider() { |
+void WifiDataProviderManager::StopDataProvider() { |
impl_->StopDataProvider(); |
} |