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