| Index: content/child/permissions/permission_manager.cc
|
| diff --git a/content/child/permissions/permission_manager.cc b/content/child/permissions/permission_manager.cc
|
| deleted file mode 100644
|
| index d7e1f2c4134194fd57a7ce91154b2ebcd84293b0..0000000000000000000000000000000000000000
|
| --- a/content/child/permissions/permission_manager.cc
|
| +++ /dev/null
|
| @@ -1,155 +0,0 @@
|
| -// Copyright 2015 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/permissions/permission_manager.h"
|
| -
|
| -#include "content/child/worker_task_runner.h"
|
| -#include "content/public/common/service_registry.h"
|
| -#include "third_party/WebKit/public/platform/WebURL.h"
|
| -
|
| -namespace content {
|
| -
|
| -namespace {
|
| -
|
| -PermissionName GetPermissionName(blink::WebPermissionType type) {
|
| - switch (type) {
|
| - case blink::WebPermissionTypeGeolocation:
|
| - return PERMISSION_NAME_GEOLOCATION;
|
| - case blink::WebPermissionTypeNotifications:
|
| - return PERMISSION_NAME_NOTIFICATIONS;
|
| - case blink::WebPermissionTypePushNotifications:
|
| - return PERMISSION_NAME_PUSH_NOTIFICATIONS;
|
| - case blink::WebPermissionTypeMidiSysEx:
|
| - return PERMISSION_NAME_MIDI_SYSEX;
|
| - default:
|
| - // The default statement is only there to prevent compilation failures if
|
| - // WebPermissionType enum gets extended.
|
| - NOTREACHED();
|
| - return PERMISSION_NAME_GEOLOCATION;
|
| - }
|
| -}
|
| -
|
| -blink::WebPermissionStatus GetWebPermissionStatus(PermissionStatus status) {
|
| - switch (status) {
|
| - case PERMISSION_STATUS_GRANTED:
|
| - return blink::WebPermissionStatusGranted;
|
| - case PERMISSION_STATUS_DENIED:
|
| - return blink::WebPermissionStatusDenied;
|
| - case PERMISSION_STATUS_ASK:
|
| - return blink::WebPermissionStatusPrompt;
|
| - }
|
| -
|
| - NOTREACHED();
|
| - return blink::WebPermissionStatusDenied;
|
| -}
|
| -
|
| -const int kNoWorkerThread = 0;
|
| -
|
| -} // anonymous namespace
|
| -
|
| -PermissionManager::CallbackInformation::CallbackInformation(
|
| - blink::WebPermissionQueryCallback* callback,
|
| - int worker_thread_id)
|
| - : callback_(callback),
|
| - worker_thread_id_(worker_thread_id) {
|
| -}
|
| -
|
| -blink::WebPermissionQueryCallback*
|
| -PermissionManager::CallbackInformation::callback() const {
|
| - return callback_.get();
|
| -}
|
| -
|
| -int PermissionManager::CallbackInformation::worker_thread_id() const {
|
| - return worker_thread_id_;
|
| -}
|
| -
|
| -blink::WebPermissionQueryCallback*
|
| -PermissionManager::CallbackInformation::ReleaseCallback() {
|
| - return callback_.release();
|
| -}
|
| -
|
| -PermissionManager::CallbackInformation::~CallbackInformation() {
|
| -}
|
| -
|
| -PermissionManager::PermissionManager(ServiceRegistry* service_registry)
|
| - : service_registry_(service_registry) {
|
| -}
|
| -
|
| -PermissionManager::~PermissionManager() {
|
| -}
|
| -
|
| -void PermissionManager::queryPermission(
|
| - blink::WebPermissionType type,
|
| - const blink::WebURL& origin,
|
| - blink::WebPermissionQueryCallback* callback) {
|
| - QueryPermissionInternal(
|
| - type, origin.string().utf8(), callback, kNoWorkerThread);
|
| -}
|
| -
|
| -void PermissionManager::QueryPermissionForWorker(
|
| - blink::WebPermissionType type,
|
| - const std::string& origin,
|
| - blink::WebPermissionQueryCallback* callback,
|
| - int worker_thread_id) {
|
| - QueryPermissionInternal(type, origin, callback, worker_thread_id);
|
| -}
|
| -
|
| -void PermissionManager::QueryPermissionInternal(
|
| - blink::WebPermissionType type,
|
| - const std::string& origin,
|
| - blink::WebPermissionQueryCallback* callback,
|
| - int worker_thread_id) {
|
| - // We need to save the |callback| in an IDMap so if |this| gets deleted, the
|
| - // callback will not leak. In the case of |this| gets deleted, the
|
| - // |permission_service_| pipe will be destroyed too so OnQueryPermission will
|
| - // not be called.
|
| - int request_id = pending_callbacks_.Add(
|
| - new CallbackInformation(callback, worker_thread_id));
|
| - if (!permission_service_.get())
|
| - service_registry_->ConnectToRemoteService(&permission_service_);
|
| - permission_service_->HasPermission(
|
| - GetPermissionName(type),
|
| - origin,
|
| - base::Bind(&PermissionManager::OnQueryPermission,
|
| - base::Unretained(this),
|
| - request_id));
|
| -}
|
| -
|
| -void PermissionManager::OnQueryPermission(int request_id,
|
| - PermissionStatus result) {
|
| - CallbackInformation* callback_information =
|
| - pending_callbacks_.Lookup(request_id);
|
| - DCHECK(callback_information && callback_information->callback());
|
| - scoped_ptr<blink::WebPermissionStatus> status(
|
| - new blink::WebPermissionStatus(GetWebPermissionStatus(result)));
|
| -
|
| - if (callback_information->worker_thread_id() != kNoWorkerThread) {
|
| - blink::WebPermissionQueryCallback* callback =
|
| - callback_information->ReleaseCallback();
|
| - int worker_thread_id = callback_information->worker_thread_id();
|
| - pending_callbacks_.Remove(request_id);
|
| -
|
| - // If the worker is no longer running, ::PostTask() will return false and
|
| - // gracefully fail, destroying the callback too.
|
| - WorkerTaskRunner::Instance()->PostTask(
|
| - worker_thread_id,
|
| - base::Bind(&PermissionManager::RunCallbackOnWorkerThread,
|
| - base::Unretained(callback),
|
| - base::Passed(&status)));
|
| - return;
|
| - }
|
| -
|
| - callback_information->callback()->onSuccess(status.release());
|
| - pending_callbacks_.Remove(request_id);
|
| -}
|
| -
|
| -// static
|
| -void PermissionManager::RunCallbackOnWorkerThread(
|
| - blink::WebPermissionQueryCallback* callback,
|
| - scoped_ptr<blink::WebPermissionStatus> status) {
|
| - callback->onSuccess(status.release());
|
| - delete callback;
|
| -}
|
| -
|
| -} // namespace content
|
|
|