Commit 204ef8f4 authored by Clark DuVall's avatar Clark DuVall Committed by Commit Bot

[WebLayer] Add PermissionDecisionAutoBlockerFactory for weblayer

This will be used for implementing permissions in WebLayer, and is the
equivalent of the chrome class of the same name.

Bug: 1025609
Change-Id: Iff7023262a1593c281ce350ecbd93536ee001db8
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2098987Reviewed-by: default avatarAndy Paicu <andypaicu@chromium.org>
Reviewed-by: default avatarJohn Abd-El-Malek <jam@chromium.org>
Commit-Queue: Clark DuVall <cduvall@chromium.org>
Cr-Commit-Position: refs/heads/master@{#749783}
parent 875801a7
......@@ -125,6 +125,9 @@ static_library("weblayer_lib") {
"browser/navigation_controller_impl.h",
"browser/navigation_impl.cc",
"browser/navigation_impl.h",
"browser/permissions/permission_decision_auto_blocker_factory.cc",
"browser/permissions/permission_decision_auto_blocker_factory.h",
"browser/permissions/permission_prompt_impl.cc",
"browser/persistence/browser_persistence_common.cc",
"browser/persistence/browser_persistence_common.h",
"browser/persistence/browser_persister.cc",
......@@ -222,6 +225,7 @@ static_library("weblayer_lib") {
"//components/metrics",
"//components/network_time",
"//components/omnibox/browser",
"//components/permissions",
"//components/policy/core/browser",
"//components/pref_registry:pref_registry",
"//components/prefs",
......
......@@ -16,6 +16,7 @@ include_rules = [
"+components/keyed_service/content",
"+components/metrics",
"+components/network_time",
"+components/permissions",
"+components/pref_registry",
"+components/prefs",
"+components/user_prefs",
......
// Copyright 2020 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 "weblayer/browser/permissions/permission_decision_auto_blocker_factory.h"
#include "components/keyed_service/content/browser_context_dependency_manager.h"
#include "components/permissions/permission_decision_auto_blocker.h"
#include "weblayer/browser/host_content_settings_map_factory.h"
namespace weblayer {
// static
permissions::PermissionDecisionAutoBlocker*
PermissionDecisionAutoBlockerFactory::GetForBrowserContext(
content::BrowserContext* browser_context) {
return static_cast<permissions::PermissionDecisionAutoBlocker*>(
GetInstance()->GetServiceForBrowserContext(browser_context, true));
}
// static
PermissionDecisionAutoBlockerFactory*
PermissionDecisionAutoBlockerFactory::GetInstance() {
static base::NoDestructor<PermissionDecisionAutoBlockerFactory> factory;
return factory.get();
}
PermissionDecisionAutoBlockerFactory::PermissionDecisionAutoBlockerFactory()
: BrowserContextKeyedServiceFactory(
"PermissionDecisionAutoBlocker",
BrowserContextDependencyManager::GetInstance()) {
DependsOn(HostContentSettingsMapFactory::GetInstance());
}
PermissionDecisionAutoBlockerFactory::~PermissionDecisionAutoBlockerFactory() =
default;
KeyedService* PermissionDecisionAutoBlockerFactory::BuildServiceInstanceFor(
content::BrowserContext* context) const {
return new permissions::PermissionDecisionAutoBlocker(
HostContentSettingsMapFactory::GetForBrowserContext(context));
}
content::BrowserContext*
PermissionDecisionAutoBlockerFactory::GetBrowserContextToUse(
content::BrowserContext* context) const {
return context;
}
} // namespace weblayer
// Copyright 2020 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 WEBLAYER_BROWSER_PERMISSIONS_PERMISSION_DECISION_AUTO_BLOCKER_FACTORY_H_
#define WEBLAYER_BROWSER_PERMISSIONS_PERMISSION_DECISION_AUTO_BLOCKER_FACTORY_H_
#include "base/no_destructor.h"
#include "components/keyed_service/content/browser_context_keyed_service_factory.h"
namespace permissions {
class PermissionDecisionAutoBlocker;
}
namespace weblayer {
class PermissionDecisionAutoBlockerFactory
: public BrowserContextKeyedServiceFactory {
public:
PermissionDecisionAutoBlockerFactory(
const PermissionDecisionAutoBlockerFactory&) = delete;
PermissionDecisionAutoBlockerFactory& operator=(
const PermissionDecisionAutoBlockerFactory&) = delete;
static permissions::PermissionDecisionAutoBlocker* GetForBrowserContext(
content::BrowserContext* browser_context);
static PermissionDecisionAutoBlockerFactory* GetInstance();
private:
friend class base::NoDestructor<PermissionDecisionAutoBlockerFactory>;
PermissionDecisionAutoBlockerFactory();
~PermissionDecisionAutoBlockerFactory() override;
// BrowserContextKeyedServiceFactory
KeyedService* BuildServiceInstanceFor(
content::BrowserContext* context) const override;
content::BrowserContext* GetBrowserContextToUse(
content::BrowserContext* context) const override;
};
} // namespace weblayer
#endif // WEBLAYER_BROWSER_PERMISSIONS_PERMISSION_DECISION_AUTO_BLOCKER_FACTORY_H_
// Copyright 2020 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 "build/build_config.h"
#include "components/permissions/permission_prompt.h"
namespace permissions {
#if !defined(OS_ANDROID)
// TODO(crbug.com/1025609): //components/permissions does not have a
// PermissionPrompt::Create() implementation for desktop platforms, so we define
// one here.
std::unique_ptr<PermissionPrompt> PermissionPrompt::Create(
content::WebContents* web_contents,
Delegate* delegate) {
return nullptr;
}
#endif
} // namespace permissions
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