| 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
|
|
|