diff options
Diffstat (limited to 'chromium/components/policy/content/policy_blocklist_service.cc')
-rw-r--r-- | chromium/components/policy/content/policy_blocklist_service.cc | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/chromium/components/policy/content/policy_blocklist_service.cc b/chromium/components/policy/content/policy_blocklist_service.cc new file mode 100644 index 00000000000..559d654b1e4 --- /dev/null +++ b/chromium/components/policy/content/policy_blocklist_service.cc @@ -0,0 +1,58 @@ +// Copyright 2018 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 "components/policy/content/policy_blocklist_service.h" + +#include <utility> + +#include "base/bind.h" +#include "components/keyed_service/content/browser_context_dependency_manager.h" +#include "components/policy/core/common/policy_pref_names.h" +#include "components/user_prefs/user_prefs.h" +#include "content/public/browser/browser_context.h" +#include "content/public/browser/storage_partition.h" + +PolicyBlocklistService::PolicyBlocklistService( + std::unique_ptr<policy::URLBlocklistManager> url_blocklist_manager) + : url_blocklist_manager_(std::move(url_blocklist_manager)) {} + +PolicyBlocklistService::~PolicyBlocklistService() = default; + +policy::URLBlocklist::URLBlocklistState +PolicyBlocklistService::GetURLBlocklistState(const GURL& url) const { + return url_blocklist_manager_->GetURLBlocklistState(url); +} + +// static +PolicyBlocklistFactory* PolicyBlocklistFactory::GetInstance() { + return base::Singleton<PolicyBlocklistFactory>::get(); +} + +// static +PolicyBlocklistService* PolicyBlocklistFactory::GetForBrowserContext( + content::BrowserContext* context) { + return static_cast<PolicyBlocklistService*>( + GetInstance()->GetServiceForBrowserContext(context, true)); +} + +PolicyBlocklistFactory::PolicyBlocklistFactory() + : BrowserContextKeyedServiceFactory( + "PolicyBlocklist", + BrowserContextDependencyManager::GetInstance()) {} + +PolicyBlocklistFactory::~PolicyBlocklistFactory() = default; + +KeyedService* PolicyBlocklistFactory::BuildServiceInstanceFor( + content::BrowserContext* context) const { + PrefService* pref_service = user_prefs::UserPrefs::Get(context); + auto url_blocklist_manager = std::make_unique<policy::URLBlocklistManager>( + pref_service, policy::policy_prefs::kUrlBlocklist, + policy::policy_prefs::kUrlAllowlist); + return new PolicyBlocklistService(std::move(url_blocklist_manager)); +} + +content::BrowserContext* PolicyBlocklistFactory::GetBrowserContextToUse( + content::BrowserContext* context) const { + return context; +} |