blob: 20a505c0e9f1dfec0ec305edcab68c8948c79009 [file]
// Copyright 2026 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/devtools/devtools_navigation_gating_service_factory.h"
#include "base/types/pass_key.h"
#include "chrome/browser/devtools/devtools_navigation_gating_service.h"
#include "chrome/browser/origin_gating/origin_gating_service_factory.h"
#include "chrome/browser/profiles/profile_selections.h"
#include "components/origin_gating/core/origin_gating_service.h"
#include "content/public/browser/browser_context.h"
// static
DevToolsNavigationGatingServiceFactory*
DevToolsNavigationGatingServiceFactory::GetInstance() {
static base::NoDestructor<DevToolsNavigationGatingServiceFactory> instance;
return instance.get();
}
// static
DevToolsNavigationGatingService*
DevToolsNavigationGatingServiceFactory::GetForBrowserContext(
content::BrowserContext* context) {
return static_cast<DevToolsNavigationGatingService*>(
GetInstance()->GetServiceForBrowserContext(context, /*create=*/true));
}
DevToolsNavigationGatingServiceFactory::DevToolsNavigationGatingServiceFactory()
: ProfileKeyedServiceFactory(
"DevToolsNavigationGatingService",
ProfileSelections::Builder()
.WithRegular(ProfileSelection::kOwnInstance)
.WithGuest(ProfileSelection::kOffTheRecordOnly)
.WithSystem(ProfileSelection::kNone)
.Build()) {
DependsOn(origin_gating::OriginGatingServiceFactory::GetInstance());
}
DevToolsNavigationGatingServiceFactory::
~DevToolsNavigationGatingServiceFactory() = default;
bool DevToolsNavigationGatingServiceFactory::
ServiceIsCreatedWithBrowserContext() const {
return true;
}
std::unique_ptr<KeyedService>
DevToolsNavigationGatingServiceFactory::BuildServiceInstanceForBrowserContext(
content::BrowserContext* context) const {
origin_gating::OriginGatingService* origin_gating_service =
origin_gating::OriginGatingServiceFactory::GetForBrowserContext(context);
if (!origin_gating_service) {
return nullptr;
}
return std::make_unique<DevToolsNavigationGatingService>(
base::PassKey<DevToolsNavigationGatingServiceFactory>(),
*origin_gating_service);
}