Commit 2dc4ad2a authored by Yuchen Liu's avatar Yuchen Liu Committed by Commit Bot

[Fuchsia][EME] Add stub permission manager

Temporary grants permisson of PROTECTED_MEDIA_IDENTIFIER, to unblock EME
dev.

Bug: 922833
Bug: 966191
Test: Build and pages with EME
Change-Id: I853719d74ee04a1bbc0e7d4768d17aa208147ab7
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1646632
Commit-Queue: Yuchen Liu <yucliu@chromium.org>
Reviewed-by: default avatarWez <wez@chromium.org>
Cr-Commit-Position: refs/heads/master@{#666456}
parent f55c0034
...@@ -119,6 +119,8 @@ component("web_engine_core") { ...@@ -119,6 +119,8 @@ component("web_engine_core") {
"browser/web_engine_devtools_socket_factory.h", "browser/web_engine_devtools_socket_factory.h",
"browser/web_engine_net_log.cc", "browser/web_engine_net_log.cc",
"browser/web_engine_net_log.h", "browser/web_engine_net_log.h",
"browser/web_engine_permission_manager.cc",
"browser/web_engine_permission_manager.h",
"browser/web_engine_screen.cc", "browser/web_engine_screen.cc",
"browser/web_engine_screen.h", "browser/web_engine_screen.h",
"browser/web_engine_url_request_context_getter.cc", "browser/web_engine_url_request_context_getter.cc",
......
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
#include "content/public/browser/browser_thread.h" #include "content/public/browser/browser_thread.h"
#include "content/public/browser/resource_context.h" #include "content/public/browser/resource_context.h"
#include "fuchsia/engine/browser/web_engine_net_log.h" #include "fuchsia/engine/browser/web_engine_net_log.h"
#include "fuchsia/engine/browser/web_engine_permission_manager.h"
#include "fuchsia/engine/browser/web_engine_url_request_context_getter.h" #include "fuchsia/engine/browser/web_engine_url_request_context_getter.h"
#include "fuchsia/engine/common.h" #include "fuchsia/engine/common.h"
#include "net/url_request/url_request_context.h" #include "net/url_request/url_request_context.h"
...@@ -119,7 +120,9 @@ WebEngineBrowserContext::GetSSLHostStateDelegate() { ...@@ -119,7 +120,9 @@ WebEngineBrowserContext::GetSSLHostStateDelegate() {
content::PermissionControllerDelegate* content::PermissionControllerDelegate*
WebEngineBrowserContext::GetPermissionControllerDelegate() { WebEngineBrowserContext::GetPermissionControllerDelegate() {
return nullptr; if (!permission_manager_)
permission_manager_ = std::make_unique<WebEnginePermissionManager>();
return permission_manager_.get();
} }
content::ClientHintsControllerDelegate* content::ClientHintsControllerDelegate*
......
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
#include "content/public/browser/browser_context.h" #include "content/public/browser/browser_context.h"
class WebEngineNetLog; class WebEngineNetLog;
class WebEnginePermissionManager;
class WebEngineURLRequestContextGetter; class WebEngineURLRequestContextGetter;
class WebEngineBrowserContext : public content::BrowserContext { class WebEngineBrowserContext : public content::BrowserContext {
...@@ -64,6 +65,7 @@ class WebEngineBrowserContext : public content::BrowserContext { ...@@ -64,6 +65,7 @@ class WebEngineBrowserContext : public content::BrowserContext {
scoped_refptr<WebEngineURLRequestContextGetter> url_request_getter_; scoped_refptr<WebEngineURLRequestContextGetter> url_request_getter_;
std::unique_ptr<SimpleFactoryKey> simple_factory_key_; std::unique_ptr<SimpleFactoryKey> simple_factory_key_;
std::unique_ptr<ResourceContext> resource_context_; std::unique_ptr<ResourceContext> resource_context_;
std::unique_ptr<WebEnginePermissionManager> permission_manager_;
DISALLOW_COPY_AND_ASSIGN(WebEngineBrowserContext); DISALLOW_COPY_AND_ASSIGN(WebEngineBrowserContext);
}; };
......
// Copyright 2019 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 "fuchsia/engine/browser/web_engine_permission_manager.h"
#include "base/callback.h"
#include "base/logging.h"
#include "content/public/browser/permission_controller.h"
#include "content/public/browser/permission_type.h"
namespace {
blink::mojom::PermissionStatus CheckPermissionStatus(
content::PermissionType permission_type) {
// TODO(crbug/922833): Temporary grant permission of
// PROTECTED_MEDIA_IDENTIFIER to unblock EME development.
return permission_type == content::PermissionType::PROTECTED_MEDIA_IDENTIFIER
? blink::mojom::PermissionStatus::GRANTED
: blink::mojom::PermissionStatus::DENIED;
}
} // namespace
WebEnginePermissionManager::WebEnginePermissionManager() = default;
WebEnginePermissionManager::~WebEnginePermissionManager() = default;
int WebEnginePermissionManager::RequestPermission(
content::PermissionType permission,
content::RenderFrameHost* render_frame_host,
const GURL& origin,
bool user_gesture,
base::OnceCallback<void(blink::mojom::PermissionStatus)> callback) {
std::move(callback).Run(CheckPermissionStatus(permission));
return content::PermissionController::kNoPendingOperation;
}
int WebEnginePermissionManager::RequestPermissions(
const std::vector<content::PermissionType>& permissions,
content::RenderFrameHost* render_frame_host,
const GURL& requesting_origin,
bool user_gesture,
base::OnceCallback<void(const std::vector<blink::mojom::PermissionStatus>&)>
callback) {
std::vector<blink::mojom::PermissionStatus> statuses;
for (auto permission : permissions)
statuses.push_back(CheckPermissionStatus(permission));
std::move(callback).Run(statuses);
return content::PermissionController::kNoPendingOperation;
}
void WebEnginePermissionManager::ResetPermission(
content::PermissionType permission,
const GURL& requesting_origin,
const GURL& embedding_origin) {
NOTIMPLEMENTED() << ": " << static_cast<int>(permission);
}
blink::mojom::PermissionStatus WebEnginePermissionManager::GetPermissionStatus(
content::PermissionType permission,
const GURL& requesting_origin,
const GURL& embedding_origin) {
return CheckPermissionStatus(permission);
}
blink::mojom::PermissionStatus
WebEnginePermissionManager::GetPermissionStatusForFrame(
content::PermissionType permission,
content::RenderFrameHost* render_frame_host,
const GURL& requesting_origin) {
return CheckPermissionStatus(permission);
}
int WebEnginePermissionManager::SubscribePermissionStatusChange(
content::PermissionType permission,
content::RenderFrameHost* render_frame_host,
const GURL& requesting_origin,
base::RepeatingCallback<void(blink::mojom::PermissionStatus)> callback) {
NOTIMPLEMENTED() << ": " << static_cast<int>(permission);
return content::PermissionController::kNoPendingOperation;
}
void WebEnginePermissionManager::UnsubscribePermissionStatusChange(
int subscription_id) {
NOTIMPLEMENTED();
}
// Copyright 2019 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.
#ifndef FUCHSIA_ENGINE_BROWSER_WEB_ENGINE_PERMISSION_MANAGER_H_
#define FUCHSIA_ENGINE_BROWSER_WEB_ENGINE_PERMISSION_MANAGER_H_
#include "base/macros.h"
#include "content/public/browser/permission_controller_delegate.h"
class WebEnginePermissionManager
: public content::PermissionControllerDelegate {
public:
WebEnginePermissionManager();
~WebEnginePermissionManager() override;
// content::PermissionControllerDelegate implementation:
int RequestPermission(content::PermissionType permission,
content::RenderFrameHost* render_frame_host,
const GURL& requesting_origin,
bool user_gesture,
base::OnceCallback<void(blink::mojom::PermissionStatus)>
callback) override;
int RequestPermissions(
const std::vector<content::PermissionType>& permission,
content::RenderFrameHost* render_frame_host,
const GURL& requesting_origin,
bool user_gesture,
base::OnceCallback<
void(const std::vector<blink::mojom::PermissionStatus>&)> callback)
override;
void ResetPermission(content::PermissionType permission,
const GURL& requesting_origin,
const GURL& embedding_origin) override;
blink::mojom::PermissionStatus GetPermissionStatus(
content::PermissionType permission,
const GURL& requesting_origin,
const GURL& embedding_origin) override;
blink::mojom::PermissionStatus GetPermissionStatusForFrame(
content::PermissionType permission,
content::RenderFrameHost* render_frame_host,
const GURL& requesting_origin) override;
int SubscribePermissionStatusChange(
content::PermissionType permission,
content::RenderFrameHost* render_frame_host,
const GURL& requesting_origin,
base::RepeatingCallback<void(blink::mojom::PermissionStatus)> callback)
override;
void UnsubscribePermissionStatusChange(int subscription_id) override;
private:
DISALLOW_COPY_AND_ASSIGN(WebEnginePermissionManager);
};
#endif // FUCHSIA_ENGINE_BROWSER_WEB_ENGINE_PERMISSION_MANAGER_H_
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment