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

Unified Diff: content/browser/geofencing/geofencing_service.cc

Issue 1972733002: Delete geofencing implementation. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: mark histogram suffix as obsolete Created 4 years, 7 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/geofencing/geofencing_service.cc
diff --git a/content/browser/geofencing/geofencing_service.cc b/content/browser/geofencing/geofencing_service.cc
deleted file mode 100644
index 39bee9b2fd37670a8083cc44b3806facb98e3913..0000000000000000000000000000000000000000
--- a/content/browser/geofencing/geofencing_service.cc
+++ /dev/null
@@ -1,203 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "content/browser/geofencing/geofencing_service.h"
-
-#include <utility>
-
-#include "base/location.h"
-#include "base/memory/singleton.h"
-#include "base/single_thread_task_runner.h"
-#include "base/threading/thread_task_runner_handle.h"
-#include "content/browser/geofencing/geofencing_provider.h"
-#include "content/browser/geofencing/geofencing_registration_delegate.h"
-#include "content/public/browser/browser_thread.h"
-#include "third_party/WebKit/public/platform/WebCircularGeofencingRegion.h"
-
-namespace content {
-
-namespace {
-
-void RunSoon(const base::Closure& callback) {
- if (!callback.is_null())
- base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, callback);
-}
-
-} // namespace
-
-struct GeofencingServiceImpl::Registration {
- Registration();
- Registration(const blink::WebCircularGeofencingRegion& region,
- int64_t geofencing_registration_id,
- GeofencingRegistrationDelegate* delegate);
-
- blink::WebCircularGeofencingRegion region;
- int64_t geofencing_registration_id;
- GeofencingRegistrationDelegate* delegate;
-
- enum RegistrationState {
- // In progress of being registered with provider.
- STATE_REGISTERING,
- // Currently registered with provider.
- STATE_REGISTERED,
- // In progress of being registered with provider, but should be unregistered
- // and deleted.
- STATE_SHOULD_UNREGISTER_AND_DELETE,
- // Not currently registered with provider, but still an active registration.
- STATE_UNREGISTERED
- };
- RegistrationState state;
-};
-
-GeofencingServiceImpl::Registration::Registration()
- : geofencing_registration_id(-1),
- delegate(nullptr),
- state(STATE_UNREGISTERED) {
-}
-
-GeofencingServiceImpl::Registration::Registration(
- const blink::WebCircularGeofencingRegion& region,
- int64_t geofencing_registration_id,
- GeofencingRegistrationDelegate* delegate)
- : region(region),
- geofencing_registration_id(geofencing_registration_id),
- delegate(delegate),
- state(STATE_REGISTERING) {}
-
-GeofencingServiceImpl::GeofencingServiceImpl() : next_registration_id_(0) {
-}
-
-GeofencingServiceImpl::~GeofencingServiceImpl() {
-}
-
-GeofencingServiceImpl* GeofencingServiceImpl::GetInstance() {
- DCHECK_CURRENTLY_ON(BrowserThread::IO);
- return base::Singleton<GeofencingServiceImpl>::get();
-}
-
-bool GeofencingServiceImpl::IsServiceAvailable() {
- DCHECK_CURRENTLY_ON(BrowserThread::IO);
- return EnsureProvider();
-}
-
-int64_t GeofencingServiceImpl::RegisterRegion(
- const blink::WebCircularGeofencingRegion& region,
- GeofencingRegistrationDelegate* delegate) {
- DCHECK_CURRENTLY_ON(BrowserThread::IO);
-
- int64_t geofencing_registration_id = GetNextId();
- registrations_[geofencing_registration_id] =
- Registration(region, geofencing_registration_id, delegate);
-
- if (!EnsureProvider()) {
- RunSoon(
- base::Bind(&GeofencingServiceImpl::NotifyRegistrationFinished,
- base::Unretained(this),
- geofencing_registration_id,
- GEOFENCING_STATUS_OPERATION_FAILED_SERVICE_NOT_AVAILABLE));
- return geofencing_registration_id;
- }
-
- provider_->RegisterRegion(
- geofencing_registration_id,
- region,
- base::Bind(&GeofencingServiceImpl::NotifyRegistrationFinished,
- base::Unretained(this),
- geofencing_registration_id));
- return geofencing_registration_id;
-}
-
-void GeofencingServiceImpl::UnregisterRegion(
- int64_t geofencing_registration_id) {
- DCHECK_CURRENTLY_ON(BrowserThread::IO);
-
- RegistrationsMap::iterator registration_iterator =
- registrations_.find(geofencing_registration_id);
- DCHECK(registration_iterator != registrations_.end());
-
- if (!EnsureProvider())
- return;
-
- switch (registration_iterator->second.state) {
- case Registration::STATE_REGISTERED:
- provider_->UnregisterRegion(geofencing_registration_id);
- // fallthru
- case Registration::STATE_UNREGISTERED:
- registrations_.erase(registration_iterator);
- break;
- case Registration::STATE_REGISTERING:
- // Update state, NotifyRegistrationFinished will take care of actually
- // unregistering.
- registration_iterator->second.state =
- Registration::STATE_SHOULD_UNREGISTER_AND_DELETE;
- break;
- case Registration::STATE_SHOULD_UNREGISTER_AND_DELETE:
- // Should not happen.
- NOTREACHED();
- break;
- }
-}
-
-void GeofencingServiceImpl::SetProviderForTesting(
- std::unique_ptr<GeofencingProvider> provider) {
- DCHECK(!provider_.get());
- provider_ = std::move(provider);
-}
-
-int GeofencingServiceImpl::RegistrationCountForTesting() {
- return registrations_.size();
-}
-
-bool GeofencingServiceImpl::EnsureProvider() {
- DCHECK_CURRENTLY_ON(BrowserThread::IO);
-
- if (!provider_) {
- // TODO(mek): Create platform specific provider.
- return false;
- }
- return true;
-}
-
-int64_t GeofencingServiceImpl::GetNextId() {
- DCHECK_CURRENTLY_ON(BrowserThread::IO);
-
- return next_registration_id_++;
-}
-
-void GeofencingServiceImpl::NotifyRegistrationFinished(
- int64_t geofencing_registration_id,
- GeofencingStatus status) {
- DCHECK_CURRENTLY_ON(BrowserThread::IO);
-
- RegistrationsMap::iterator registration_iterator =
- registrations_.find(geofencing_registration_id);
- DCHECK(registration_iterator != registrations_.end());
- DCHECK(registration_iterator->second.state ==
- Registration::STATE_REGISTERING ||
- registration_iterator->second.state ==
- Registration::STATE_SHOULD_UNREGISTER_AND_DELETE);
-
- if (registration_iterator->second.state ==
- Registration::STATE_SHOULD_UNREGISTER_AND_DELETE) {
- // Don't call delegate, but unregister with provider if registration was
- // succesfull.
- if (status == GEOFENCING_STATUS_OK) {
- provider_->UnregisterRegion(geofencing_registration_id);
- }
- registrations_.erase(registration_iterator);
- return;
- }
-
- // Normal case, mark as registered and call delegate.
- registration_iterator->second.state = Registration::STATE_REGISTERED;
- registration_iterator->second.delegate->RegistrationFinished(
- geofencing_registration_id, status);
-
- if (status != GEOFENCING_STATUS_OK) {
- // Registration failed, remove from our book-keeping.
- registrations_.erase(registration_iterator);
- }
-}
-
-} // namespace content
« no previous file with comments | « content/browser/geofencing/geofencing_service.h ('k') | content/browser/geofencing/geofencing_service_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698