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

Unified Diff: content/browser/geolocation/wifi_data_provider.cc

Issue 474433003: Cleaner organization of WifiDataProvider code. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rabase and rename arguments to manager Created 6 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
Index: content/browser/geolocation/wifi_data_provider.cc
diff --git a/content/browser/geolocation/wifi_data_provider.cc b/content/browser/geolocation/wifi_data_provider.cc
index 85595f927ab8b43b507eb628df471f7fff94624f..497747db5bf5a039027df0595a6d85bc59efcd4c 100644
--- a/content/browser/geolocation/wifi_data_provider.cc
+++ b/content/browser/geolocation/wifi_data_provider.cc
@@ -6,98 +6,44 @@
namespace content {
-// static
-WifiDataProvider* WifiDataProvider::instance_ = NULL;
-
-// static
-WifiDataProvider::ImplFactoryFunction WifiDataProvider::factory_function_ =
- DefaultFactoryFunction;
-
-// static
-void WifiDataProvider::SetFactory(ImplFactoryFunction factory_function_in) {
- factory_function_ = factory_function_in;
-}
-
-// static
-void WifiDataProvider::ResetFactory() {
- factory_function_ = DefaultFactoryFunction;
-}
-
-// static
-WifiDataProvider* WifiDataProvider::Register(WifiDataUpdateCallback* callback) {
- bool need_to_start_data_provider = false;
- if (!instance_) {
- instance_ = new WifiDataProvider();
- need_to_start_data_provider = true;
- }
- DCHECK(instance_);
- instance_->AddCallback(callback);
- // Start the provider after adding the callback, to avoid any race in
- // it running early.
- if (need_to_start_data_provider)
- instance_->StartDataProvider();
- return instance_;
-}
-
-// static
-bool WifiDataProvider::Unregister(WifiDataUpdateCallback* callback) {
- DCHECK(instance_);
- DCHECK(instance_->has_callbacks());
- if (!instance_->RemoveCallback(callback)) {
- return false;
- }
- if (!instance_->has_callbacks()) {
- // Must stop the data provider (and any implementation threads) before
- // destroying to avoid any race conditions in access to the provider in
- // the destructor chain.
- instance_->StopDataProvider();
- delete instance_;
- instance_ = NULL;
- }
- return true;
-}
-
-WifiDataProviderImplBase::WifiDataProviderImplBase()
- : container_(NULL),
- client_loop_(base::MessageLoop::current()) {
+WifiDataProvider::WifiDataProvider()
+ : container_(NULL), client_loop_(base::MessageLoop::current()) {
DCHECK(client_loop_);
}
-WifiDataProviderImplBase::~WifiDataProviderImplBase() {
+WifiDataProvider::~WifiDataProvider() {
}
-void WifiDataProviderImplBase::SetContainer(WifiDataProvider* container) {
+void WifiDataProvider::SetContainer(WifiDataProviderManager* container) {
container_ = container;
}
-void WifiDataProviderImplBase::AddCallback(WifiDataUpdateCallback* callback) {
+void WifiDataProvider::AddCallback(WifiDataUpdateCallback* callback) {
callbacks_.insert(callback);
}
-bool WifiDataProviderImplBase::RemoveCallback(
- WifiDataUpdateCallback* callback) {
+bool WifiDataProvider::RemoveCallback(WifiDataUpdateCallback* callback) {
return callbacks_.erase(callback) == 1;
}
-bool WifiDataProviderImplBase::has_callbacks() const {
+bool WifiDataProvider::has_callbacks() const {
return !callbacks_.empty();
}
-void WifiDataProviderImplBase::RunCallbacks() {
- client_loop_->PostTask(FROM_HERE, base::Bind(
- &WifiDataProviderImplBase::DoRunCallbacks,
- this));
+void WifiDataProvider::RunCallbacks() {
+ client_loop_->PostTask(FROM_HERE,
+ base::Bind(&WifiDataProvider::DoRunCallbacks, this));
}
-bool WifiDataProviderImplBase::CalledOnClientThread() const {
+bool WifiDataProvider::CalledOnClientThread() const {
return base::MessageLoop::current() == this->client_loop_;
}
-base::MessageLoop* WifiDataProviderImplBase::client_loop() const {
+base::MessageLoop* WifiDataProvider::client_loop() const {
return client_loop_;
}
-void WifiDataProviderImplBase::DoRunCallbacks() {
+void WifiDataProvider::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();
@@ -108,40 +54,4 @@ void WifiDataProviderImplBase::DoRunCallbacks() {
}
}
-WifiDataProvider::WifiDataProvider() {
- DCHECK(factory_function_);
- impl_ = (*factory_function_)();
- DCHECK(impl_.get());
- impl_->SetContainer(this);
-}
-
-WifiDataProvider::~WifiDataProvider() {
- DCHECK(impl_.get());
- impl_->SetContainer(NULL);
-}
-
-bool WifiDataProvider::GetData(WifiData* data) {
- return impl_->GetData(data);
-}
-
-void WifiDataProvider::AddCallback(WifiDataUpdateCallback* callback) {
- impl_->AddCallback(callback);
-}
-
-bool WifiDataProvider::RemoveCallback(WifiDataUpdateCallback* callback) {
- return impl_->RemoveCallback(callback);
-}
-
-bool WifiDataProvider::has_callbacks() const {
- return impl_->has_callbacks();
-}
-
-void WifiDataProvider::StartDataProvider() {
- impl_->StartDataProvider();
-}
-
-void WifiDataProvider::StopDataProvider() {
- impl_->StopDataProvider();
-}
-
} // namespace content
« no previous file with comments | « content/browser/geolocation/wifi_data_provider.h ('k') | content/browser/geolocation/wifi_data_provider_chromeos.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698