| Index: content/child/geofencing/geofencing_dispatcher.cc
|
| diff --git a/content/child/geofencing/geofencing_dispatcher.cc b/content/child/geofencing/geofencing_dispatcher.cc
|
| deleted file mode 100644
|
| index 676282332fb587cb7d565370af7ed8458619c90e..0000000000000000000000000000000000000000
|
| --- a/content/child/geofencing/geofencing_dispatcher.cc
|
| +++ /dev/null
|
| @@ -1,228 +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/child/geofencing/geofencing_dispatcher.h"
|
| -
|
| -#include <stddef.h>
|
| -#include <stdint.h>
|
| -
|
| -#include <memory>
|
| -
|
| -#include "base/lazy_instance.h"
|
| -#include "base/message_loop/message_loop.h"
|
| -#include "base/threading/thread_task_runner_handle.h"
|
| -#include "content/child/service_worker/web_service_worker_registration_impl.h"
|
| -#include "content/child/thread_safe_sender.h"
|
| -#include "content/common/geofencing_messages.h"
|
| -#include "content/common/service_worker/service_worker_types.h"
|
| -#include "third_party/WebKit/public/platform/WebCircularGeofencingRegion.h"
|
| -#include "third_party/WebKit/public/platform/WebGeofencingError.h"
|
| -#include "third_party/WebKit/public/platform/WebGeofencingRegistration.h"
|
| -
|
| -using blink::WebGeofencingError;
|
| -
|
| -namespace content {
|
| -
|
| -namespace {
|
| -
|
| -base::LazyInstance<base::ThreadLocalPointer<void>>::Leaky g_dispatcher_tls =
|
| - LAZY_INSTANCE_INITIALIZER;
|
| -
|
| -void* const kHasBeenDeleted = reinterpret_cast<void*>(0x1);
|
| -
|
| -int CurrentWorkerId() {
|
| - return WorkerThread::GetCurrentId();
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| -GeofencingDispatcher::GeofencingDispatcher(ThreadSafeSender* sender)
|
| - : thread_safe_sender_(sender) {
|
| - g_dispatcher_tls.Pointer()->Set(static_cast<void*>(this));
|
| -}
|
| -
|
| -GeofencingDispatcher::~GeofencingDispatcher() {
|
| - g_dispatcher_tls.Pointer()->Set(kHasBeenDeleted);
|
| -}
|
| -
|
| -bool GeofencingDispatcher::Send(IPC::Message* msg) {
|
| - return thread_safe_sender_->Send(msg);
|
| -}
|
| -
|
| -void GeofencingDispatcher::OnMessageReceived(const IPC::Message& msg) {
|
| - bool handled = true;
|
| - IPC_BEGIN_MESSAGE_MAP(GeofencingDispatcher, msg)
|
| - IPC_MESSAGE_HANDLER(GeofencingMsg_RegisterRegionComplete,
|
| - OnRegisterRegionComplete)
|
| - IPC_MESSAGE_HANDLER(GeofencingMsg_UnregisterRegionComplete,
|
| - OnUnregisterRegionComplete)
|
| - IPC_MESSAGE_HANDLER(GeofencingMsg_GetRegisteredRegionsComplete,
|
| - OnGetRegisteredRegionsComplete)
|
| - IPC_MESSAGE_UNHANDLED(handled = false)
|
| - IPC_END_MESSAGE_MAP()
|
| - DCHECK(handled) << "Unhandled message:" << msg.type();
|
| -}
|
| -
|
| -void GeofencingDispatcher::RegisterRegion(
|
| - const blink::WebString& region_id,
|
| - const blink::WebCircularGeofencingRegion& region,
|
| - blink::WebServiceWorkerRegistration* service_worker_registration,
|
| - blink::WebGeofencingCallbacks* callbacks) {
|
| - DCHECK(callbacks);
|
| - int request_id = region_registration_requests_.Add(callbacks);
|
| - // TODO(mek): Immediately reject requests lacking a service worker
|
| - // registration, without bouncing through browser process.
|
| - int64_t serviceworker_registration_id = kInvalidServiceWorkerRegistrationId;
|
| - if (service_worker_registration) {
|
| - serviceworker_registration_id =
|
| - static_cast<WebServiceWorkerRegistrationImpl*>(
|
| - service_worker_registration)->registration_id();
|
| - }
|
| - Send(new GeofencingHostMsg_RegisterRegion(CurrentWorkerId(),
|
| - request_id,
|
| - region_id.utf8(),
|
| - region,
|
| - serviceworker_registration_id));
|
| -}
|
| -
|
| -void GeofencingDispatcher::UnregisterRegion(
|
| - const blink::WebString& region_id,
|
| - blink::WebServiceWorkerRegistration* service_worker_registration,
|
| - blink::WebGeofencingCallbacks* callbacks) {
|
| - DCHECK(callbacks);
|
| - int request_id = region_unregistration_requests_.Add(callbacks);
|
| - // TODO(mek): Immediately reject requests lacking a service worker
|
| - // registration, without bouncing through browser process.
|
| - int64_t serviceworker_registration_id = kInvalidServiceWorkerRegistrationId;
|
| - if (service_worker_registration) {
|
| - serviceworker_registration_id =
|
| - static_cast<WebServiceWorkerRegistrationImpl*>(
|
| - service_worker_registration)->registration_id();
|
| - }
|
| - Send(new GeofencingHostMsg_UnregisterRegion(CurrentWorkerId(),
|
| - request_id,
|
| - region_id.utf8(),
|
| - serviceworker_registration_id));
|
| -}
|
| -
|
| -void GeofencingDispatcher::GetRegisteredRegions(
|
| - blink::WebServiceWorkerRegistration* service_worker_registration,
|
| - blink::WebGeofencingRegionsCallbacks* callbacks) {
|
| - DCHECK(callbacks);
|
| - int request_id = get_registered_regions_requests_.Add(callbacks);
|
| - // TODO(mek): Immediately reject requests lacking a service worker
|
| - // registration, without bouncing through browser process.
|
| - int64_t serviceworker_registration_id = kInvalidServiceWorkerRegistrationId;
|
| - if (service_worker_registration) {
|
| - serviceworker_registration_id =
|
| - static_cast<WebServiceWorkerRegistrationImpl*>(
|
| - service_worker_registration)->registration_id();
|
| - }
|
| - Send(new GeofencingHostMsg_GetRegisteredRegions(
|
| - CurrentWorkerId(), request_id, serviceworker_registration_id));
|
| -}
|
| -
|
| -void GeofencingDispatcher::SetMockProvider(bool service_available) {
|
| - Send(new GeofencingHostMsg_SetMockProvider(
|
| - service_available ? GeofencingMockState::SERVICE_AVAILABLE
|
| - : GeofencingMockState::SERVICE_UNAVAILABLE));
|
| -}
|
| -
|
| -void GeofencingDispatcher::ClearMockProvider() {
|
| - Send(new GeofencingHostMsg_SetMockProvider(GeofencingMockState::NONE));
|
| -}
|
| -
|
| -void GeofencingDispatcher::SetMockPosition(double latitude, double longitude) {
|
| - Send(new GeofencingHostMsg_SetMockPosition(latitude, longitude));
|
| -}
|
| -
|
| -GeofencingDispatcher* GeofencingDispatcher::GetOrCreateThreadSpecificInstance(
|
| - ThreadSafeSender* thread_safe_sender) {
|
| - if (g_dispatcher_tls.Pointer()->Get() == kHasBeenDeleted) {
|
| - NOTREACHED() << "Re-instantiating TLS GeofencingDispatcher.";
|
| - g_dispatcher_tls.Pointer()->Set(NULL);
|
| - }
|
| - if (g_dispatcher_tls.Pointer()->Get())
|
| - return static_cast<GeofencingDispatcher*>(
|
| - g_dispatcher_tls.Pointer()->Get());
|
| -
|
| - GeofencingDispatcher* dispatcher =
|
| - new GeofencingDispatcher(thread_safe_sender);
|
| - if (WorkerThread::GetCurrentId())
|
| - WorkerThread::AddObserver(dispatcher);
|
| - return dispatcher;
|
| -}
|
| -
|
| -GeofencingDispatcher* GeofencingDispatcher::GetThreadSpecificInstance() {
|
| - if (g_dispatcher_tls.Pointer()->Get() == kHasBeenDeleted)
|
| - return NULL;
|
| - return static_cast<GeofencingDispatcher*>(g_dispatcher_tls.Pointer()->Get());
|
| -}
|
| -
|
| -void GeofencingDispatcher::OnRegisterRegionComplete(int thread_id,
|
| - int request_id,
|
| - GeofencingStatus status) {
|
| - blink::WebGeofencingCallbacks* callbacks =
|
| - region_registration_requests_.Lookup(request_id);
|
| - DCHECK(callbacks);
|
| -
|
| - if (status == GEOFENCING_STATUS_OK) {
|
| - callbacks->onSuccess();
|
| - } else {
|
| - callbacks->onError(WebGeofencingError(
|
| - WebGeofencingError::ErrorTypeAbort,
|
| - blink::WebString::fromUTF8(GeofencingStatusToString(status))));
|
| - }
|
| - region_registration_requests_.Remove(request_id);
|
| -}
|
| -
|
| -void GeofencingDispatcher::OnUnregisterRegionComplete(int thread_id,
|
| - int request_id,
|
| - GeofencingStatus status) {
|
| - blink::WebGeofencingCallbacks* callbacks =
|
| - region_unregistration_requests_.Lookup(request_id);
|
| - DCHECK(callbacks);
|
| -
|
| - if (status == GEOFENCING_STATUS_OK) {
|
| - callbacks->onSuccess();
|
| - } else {
|
| - callbacks->onError(WebGeofencingError(
|
| - WebGeofencingError::ErrorTypeAbort,
|
| - blink::WebString::fromUTF8(GeofencingStatusToString(status))));
|
| - }
|
| - region_unregistration_requests_.Remove(request_id);
|
| -}
|
| -
|
| -void GeofencingDispatcher::OnGetRegisteredRegionsComplete(
|
| - int thread_id,
|
| - int request_id,
|
| - GeofencingStatus status,
|
| - const GeofencingRegistrations& regions) {
|
| - blink::WebGeofencingRegionsCallbacks* callbacks =
|
| - get_registered_regions_requests_.Lookup(request_id);
|
| - DCHECK(callbacks);
|
| -
|
| - if (status == GEOFENCING_STATUS_OK) {
|
| - blink::WebVector<blink::WebGeofencingRegistration> result(regions.size());
|
| - size_t index = 0;
|
| - for (GeofencingRegistrations::const_iterator it = regions.begin();
|
| - it != regions.end();
|
| - ++it, ++index) {
|
| - result[index].id = blink::WebString::fromUTF8(it->first);
|
| - result[index].region = it->second;
|
| - }
|
| - callbacks->onSuccess(result);
|
| - } else {
|
| - callbacks->onError(WebGeofencingError(
|
| - WebGeofencingError::ErrorTypeAbort,
|
| - blink::WebString::fromUTF8(GeofencingStatusToString(status))));
|
| - }
|
| - get_registered_regions_requests_.Remove(request_id);
|
| -}
|
| -
|
| -void GeofencingDispatcher::WillStopCurrentWorkerThread() {
|
| - delete this;
|
| -}
|
| -
|
| -} // namespace content
|
|
|