[Extensions] Move rules registry IDs to a separate file.
The various declarative API directories have a number of circular dependencies that need to be broken up, and this is the first in a series of CLs to do that. This CL creates a separate file in extensions/browser that defines the IDs that were previously defined in RulesRegistryService. Bug: 40593486 Change-Id: I7f263e79b0af5b805d01951b403a28d814c4d463 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6288584 Auto-Submit: David Bertoni <dbertoni@chromium.org> Reviewed-by: Solomon Kinard <solomonkinard@chromium.org> Commit-Queue: David Bertoni <dbertoni@chromium.org> Cr-Commit-Position: refs/heads/main@{#1423468}
This commit is contained in:

committed by
Chromium LUCI CQ

parent
23b6788f2f
commit
19744a04ed
chrome/browser/extensions/api
declarative
declarative_content
declarative_webrequest
extensions/browser
@ -25,6 +25,7 @@
|
||||
#include "extensions/browser/api/declarative_webrequest/webrequest_constants.h"
|
||||
#include "extensions/browser/api/declarative_webrequest/webrequest_rules_registry.h"
|
||||
#include "extensions/browser/extension_prefs.h"
|
||||
#include "extensions/browser/rules_registry_ids.h"
|
||||
#include "extensions/common/extension.h"
|
||||
#include "extensions/test/extension_test_message_listener.h"
|
||||
#include "extensions/test/test_extension_dir.h"
|
||||
@ -115,7 +116,7 @@ class DeclarativeApiTest : public ExtensionApiTest {
|
||||
extensions::RulesRegistryService::Get(browser()->profile());
|
||||
scoped_refptr<RulesRegistry> rules_registry =
|
||||
rules_registry_service->GetRulesRegistry(
|
||||
RulesRegistryService::kDefaultRulesRegistryID,
|
||||
rules_registry_ids::kDefaultRulesRegistryID,
|
||||
extensions::declarative_webrequest_constants::kOnRequest);
|
||||
|
||||
std::vector<const api::events::Rule*> rules;
|
||||
|
@ -21,6 +21,7 @@
|
||||
#include "content/public/test/browser_task_environment.h"
|
||||
#include "extensions/browser/api/declarative/test_rules_registry.h"
|
||||
#include "extensions/browser/api/declarative_webrequest/webrequest_constants.h"
|
||||
#include "extensions/browser/rules_registry_ids.h"
|
||||
#include "extensions/common/api/declarative/declarative_constants.h"
|
||||
#include "extensions/common/extension.h"
|
||||
#include "extensions/common/extension_builder.h"
|
||||
@ -70,7 +71,7 @@ class RulesRegistryServiceTest : public testing::Test {
|
||||
TEST_F(RulesRegistryServiceTest, TestConstructionAndMultiThreading) {
|
||||
RulesRegistryService registry_service(nullptr);
|
||||
|
||||
int key = RulesRegistryService::kDefaultRulesRegistryID;
|
||||
int key = rules_registry_ids::kDefaultRulesRegistryID;
|
||||
TestRulesRegistry* ui_registry = new TestRulesRegistry("ui", key);
|
||||
|
||||
// Test registration.
|
||||
@ -140,13 +141,13 @@ TEST_F(RulesRegistryServiceTest, DefaultRulesRegistryRegistered) {
|
||||
EXPECT_EQ(
|
||||
test_case.expect_api_enabled,
|
||||
registry_service
|
||||
.GetRulesRegistry(RulesRegistryService::kDefaultRulesRegistryID,
|
||||
.GetRulesRegistry(rules_registry_ids::kDefaultRulesRegistryID,
|
||||
declarative_webrequest_constants::kOnRequest)
|
||||
.get() != nullptr);
|
||||
|
||||
// Content rules registry should always be created.
|
||||
EXPECT_TRUE(registry_service.GetRulesRegistry(
|
||||
RulesRegistryService::kDefaultRulesRegistryID,
|
||||
rules_registry_ids::kDefaultRulesRegistryID,
|
||||
declarative_content_constants::kOnPageChanged));
|
||||
EXPECT_TRUE(registry_service.content_rules_registry());
|
||||
|
||||
|
@ -26,6 +26,7 @@
|
||||
#include "extensions/browser/api/declarative/test_rules_registry.h"
|
||||
#include "extensions/browser/extension_prefs.h"
|
||||
#include "extensions/browser/extension_registry.h"
|
||||
#include "extensions/browser/rules_registry_ids.h"
|
||||
#include "extensions/common/extension.h"
|
||||
#include "extensions/common/features/feature_channel.h"
|
||||
#include "extensions/common/manifest_constants.h"
|
||||
@ -40,7 +41,7 @@ const char kRule2Id[] = "rule2";
|
||||
}
|
||||
|
||||
namespace extensions {
|
||||
const int kRulesRegistryID = RulesRegistryService::kDefaultRulesRegistryID;
|
||||
const int kRulesRegistryID = rules_registry_ids::kDefaultRulesRegistryID;
|
||||
|
||||
class RulesRegistryWithCacheTest : public testing::Test {
|
||||
public:
|
||||
|
@ -18,6 +18,7 @@
|
||||
#include "extensions/browser/extension_registry.h"
|
||||
#include "extensions/browser/extension_system.h"
|
||||
#include "extensions/browser/extension_util.h"
|
||||
#include "extensions/browser/rules_registry_ids.h"
|
||||
#include "extensions/common/api/declarative/declarative_constants.h"
|
||||
#include "extensions/common/extension_id.h"
|
||||
|
||||
@ -82,7 +83,7 @@ ChromeContentRulesRegistry::ChromeContentRulesRegistry(
|
||||
: ContentRulesRegistry(browser_context,
|
||||
declarative_content_constants::kOnPageChanged,
|
||||
cache_delegate,
|
||||
RulesRegistryService::kDefaultRulesRegistryID),
|
||||
rules_registry_ids::kDefaultRulesRegistryID),
|
||||
evaluators_(std::move(evaluators_factory).Run(this)),
|
||||
evaluation_disposition_(EVALUATE_REQUESTS) {}
|
||||
|
||||
|
@ -35,6 +35,7 @@
|
||||
#include "extensions/browser/extension_action_manager.h"
|
||||
#include "extensions/browser/extension_registry.h"
|
||||
#include "extensions/browser/extension_system.h"
|
||||
#include "extensions/browser/rules_registry_ids.h"
|
||||
#include "extensions/browser/test_extension_registry_observer.h"
|
||||
#include "extensions/common/api/extension_action/action_info.h"
|
||||
#include "extensions/common/api/extension_action/action_info_test_util.h"
|
||||
@ -1163,7 +1164,7 @@ IN_PROC_BROWSER_TEST_P(DeclarativeContentApiTestWithContextType,
|
||||
extensions::RulesRegistryService::Get(browser()->profile());
|
||||
scoped_refptr<RulesRegistry> rules_registry =
|
||||
rules_registry_service->GetRulesRegistry(
|
||||
RulesRegistryService::kDefaultRulesRegistryID,
|
||||
rules_registry_ids::kDefaultRulesRegistryID,
|
||||
"declarativeContent.onPageChanged");
|
||||
DCHECK(rules_registry);
|
||||
|
||||
|
@ -15,6 +15,7 @@
|
||||
#include "extensions/browser/api/declarative/rules_registry_service.h"
|
||||
#include "extensions/browser/extension_action.h"
|
||||
#include "extensions/browser/extension_action_manager.h"
|
||||
#include "extensions/browser/rules_registry_ids.h"
|
||||
#include "extensions/common/features/feature_channel.h"
|
||||
#include "extensions/test/extension_test_message_listener.h"
|
||||
#include "extensions/test/test_extension_dir.h"
|
||||
@ -127,7 +128,7 @@ IN_PROC_BROWSER_TEST_F(SetIconAPITest, Parameter) {
|
||||
|
||||
scoped_refptr<RulesRegistry> rules_registry =
|
||||
extensions::RulesRegistryService::Get(browser()->profile())
|
||||
->GetRulesRegistry(RulesRegistryService::kDefaultRulesRegistryID,
|
||||
->GetRulesRegistry(rules_registry_ids::kDefaultRulesRegistryID,
|
||||
"declarativeContent.onPageChanged");
|
||||
ASSERT_TRUE(rules_registry);
|
||||
|
||||
|
@ -28,6 +28,7 @@
|
||||
#include "extensions/browser/api/web_request/web_request_info.h"
|
||||
#include "extensions/browser/extension_prefs.h"
|
||||
#include "extensions/browser/extension_registry.h"
|
||||
#include "extensions/browser/rules_registry_ids.h"
|
||||
#include "services/network/public/mojom/fetch_api.mojom-shared.h"
|
||||
#include "testing/gmock/include/gmock/gmock.h"
|
||||
#include "testing/gtest/include/gtest/gtest-message.h"
|
||||
@ -71,7 +72,7 @@ class TestWebRequestRulesRegistry : public WebRequestRulesRegistry {
|
||||
explicit TestWebRequestRulesRegistry(content::BrowserContext* context)
|
||||
: WebRequestRulesRegistry(context,
|
||||
nullptr /* cache_delegate */,
|
||||
RulesRegistryService::kDefaultRulesRegistryID),
|
||||
rules_registry_ids::kDefaultRulesRegistryID),
|
||||
num_clear_cache_calls_(0) {}
|
||||
|
||||
// Returns how often the in-memory caches of the renderers were instructed
|
||||
|
@ -442,6 +442,7 @@ source_set("browser_sources") {
|
||||
"renderer_startup_helper.h",
|
||||
"requirements_checker.cc",
|
||||
"requirements_checker.h",
|
||||
"rules_registry_ids.h",
|
||||
"ruleset_parse_result.cc",
|
||||
"ruleset_parse_result.h",
|
||||
"sandboxed_unpacker.cc",
|
||||
|
@ -23,6 +23,7 @@
|
||||
#include "extensions/browser/api/declarative/rules_registry_service.h"
|
||||
#include "extensions/browser/api/extensions_api_client.h"
|
||||
#include "extensions/browser/extension_system.h"
|
||||
#include "extensions/browser/rules_registry_ids.h"
|
||||
#include "extensions/common/api/events.h"
|
||||
#include "extensions/common/extension_api.h"
|
||||
#include "extensions/common/permissions/permissions_data.h"
|
||||
@ -162,7 +163,7 @@ ExtensionFunction::ResponseAction RulesFunction::Run() {
|
||||
RecordUMA(event_name);
|
||||
|
||||
// If we are not operating on a particular <webview>, then the key is 0.
|
||||
int rules_registry_id = RulesRegistryService::kDefaultRulesRegistryID;
|
||||
int rules_registry_id = rules_registry_ids::kDefaultRulesRegistryID;
|
||||
|
||||
#if BUILDFLAG(ENABLE_GUEST_VIEW)
|
||||
bool from_web_view = web_view_instance_id != 0;
|
||||
|
@ -28,13 +28,8 @@
|
||||
|
||||
namespace extensions {
|
||||
|
||||
const int RulesRegistryService::kDefaultRulesRegistryID = 0;
|
||||
const int RulesRegistryService::kInvalidRulesRegistryID = -1;
|
||||
|
||||
RulesRegistryService::RulesRegistryService(content::BrowserContext* context)
|
||||
: current_rules_registry_id_(kDefaultRulesRegistryID),
|
||||
content_rules_registry_(nullptr),
|
||||
browser_context_(context) {
|
||||
: browser_context_(context) {
|
||||
if (browser_context_) {
|
||||
extension_registry_observation_.Observe(
|
||||
ExtensionRegistry::Get(browser_context_));
|
||||
@ -64,7 +59,7 @@ void RulesRegistryService::Shutdown() {
|
||||
// instance is.
|
||||
WebRequestEventRouter::Get(browser_context_)
|
||||
->RegisterRulesRegistry(browser_context_,
|
||||
RulesRegistryService::kDefaultRulesRegistryID,
|
||||
rules_registry_ids::kDefaultRulesRegistryID,
|
||||
nullptr);
|
||||
}
|
||||
|
||||
@ -109,7 +104,8 @@ scoped_refptr<RulesRegistry> RulesRegistryService::GetRulesRegistry(
|
||||
|
||||
// We should have attempted creation of the default rule registries at
|
||||
// construction.
|
||||
if (!browser_context_ || rules_registry_id == kDefaultRulesRegistryID) {
|
||||
if (!browser_context_ ||
|
||||
rules_registry_id == rules_registry_ids::kDefaultRulesRegistryID) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
@ -204,7 +200,7 @@ void RulesRegistryService::EnsureDefaultRulesRegistriesRegistered() {
|
||||
DCHECK(!base::Contains(
|
||||
rule_registries_,
|
||||
RulesRegistryKey(declarative_webrequest_constants::kOnRequest,
|
||||
kDefaultRulesRegistryID)));
|
||||
rules_registry_ids::kDefaultRulesRegistryID)));
|
||||
|
||||
// Only register the default web request rules registry if the
|
||||
// declarativeWebRequest API is enabled. See crbug.com/693243.
|
||||
@ -215,7 +211,7 @@ void RulesRegistryService::EnsureDefaultRulesRegistriesRegistered() {
|
||||
.is_available();
|
||||
if (is_api_enabled) {
|
||||
// Persist the cache since it pertains to regular pages (i.e. not webviews).
|
||||
RegisterWebRequestRulesRegistry(kDefaultRulesRegistryID,
|
||||
RegisterWebRequestRulesRegistry(rules_registry_ids::kDefaultRulesRegistryID,
|
||||
RulesCacheDelegate::Type::kPersistent);
|
||||
}
|
||||
|
||||
|
@ -20,6 +20,7 @@
|
||||
#include "extensions/browser/browser_context_keyed_api_factory.h"
|
||||
#include "extensions/browser/extension_registry.h"
|
||||
#include "extensions/browser/extension_registry_observer.h"
|
||||
#include "extensions/browser/rules_registry_ids.h"
|
||||
|
||||
namespace content {
|
||||
class BrowserContext;
|
||||
@ -37,9 +38,6 @@ class RulesRegistryService : public BrowserContextKeyedAPI,
|
||||
public ExtensionRegistryObserver,
|
||||
public RulesCacheDelegate::Observer {
|
||||
public:
|
||||
static const int kDefaultRulesRegistryID;
|
||||
static const int kInvalidRulesRegistryID;
|
||||
|
||||
struct RulesRegistryKey {
|
||||
std::string event_name;
|
||||
int rules_registry_id;
|
||||
@ -162,7 +160,7 @@ class RulesRegistryService : public BrowserContextKeyedAPI,
|
||||
static const bool kServiceHasOwnInstanceInIncognito = true;
|
||||
static const bool kServiceIsNULLWhileTesting = true;
|
||||
|
||||
int current_rules_registry_id_;
|
||||
int current_rules_registry_id_ = rules_registry_ids::kDefaultRulesRegistryID;
|
||||
|
||||
RulesRegistryMap rule_registries_;
|
||||
|
||||
@ -172,7 +170,7 @@ class RulesRegistryService : public BrowserContextKeyedAPI,
|
||||
// Weak pointer into rule_registries_ to make it easier to handle content rule
|
||||
// conditions.
|
||||
raw_ptr<ContentRulesRegistry, AcrossTasksDanglingUntriaged>
|
||||
content_rules_registry_;
|
||||
content_rules_registry_ = nullptr;
|
||||
|
||||
// Listen to extension load, unloaded notification.
|
||||
base::ScopedObservation<ExtensionRegistry, ExtensionRegistryObserver>
|
||||
|
@ -15,18 +15,19 @@
|
||||
#include "extensions/browser/api/declarative/rules_registry_service.h"
|
||||
#include "extensions/browser/api/declarative/test_rules_registry.h"
|
||||
#include "extensions/browser/api_test_utils.h"
|
||||
#include "extensions/browser/rules_registry_ids.h"
|
||||
#include "extensions/common/extension.h"
|
||||
#include "extensions/common/extension_builder.h"
|
||||
#include "testing/gtest/include/gtest/gtest.h"
|
||||
|
||||
namespace extensions {
|
||||
|
||||
namespace {
|
||||
const char kExtensionId[] = "foobar";
|
||||
const char kRuleId[] = "foo";
|
||||
const int key = extensions::RulesRegistryService::kDefaultRulesRegistryID;
|
||||
const int key = rules_registry_ids::kDefaultRulesRegistryID;
|
||||
} // namespace
|
||||
|
||||
namespace extensions {
|
||||
|
||||
TEST(RulesRegistryTest, FillOptionalIdentifiers) {
|
||||
content::BrowserTaskEnvironment task_environment;
|
||||
|
||||
|
@ -20,7 +20,6 @@
|
||||
#include "content/public/browser/browser_context.h"
|
||||
#include "content/public/browser/browser_thread.h"
|
||||
#include "content/public/browser/render_process_host.h"
|
||||
#include "extensions/browser/api/declarative/rules_registry_service.h"
|
||||
#include "extensions/browser/api/declarative_net_request/action_tracker.h"
|
||||
#include "extensions/browser/api/declarative_net_request/constants.h"
|
||||
#include "extensions/browser/api/declarative_net_request/request_action.h"
|
||||
@ -44,6 +43,7 @@
|
||||
#include "extensions/browser/extension_registry.h"
|
||||
#include "extensions/browser/extensions_browser_client.h"
|
||||
#include "extensions/browser/process_map.h"
|
||||
#include "extensions/browser/rules_registry_ids.h"
|
||||
#include "extensions/common/api/web_request/web_request_activity_log_constants.h"
|
||||
#include "extensions/common/error_utils.h"
|
||||
#include "extensions/common/extension_id.h"
|
||||
@ -2575,7 +2575,7 @@ bool WebRequestEventRouter::ProcessDeclarativeRules(
|
||||
|
||||
int rules_registry_id = request->is_web_view
|
||||
? request->web_view_rules_registry_id
|
||||
: RulesRegistryService::kDefaultRulesRegistryID;
|
||||
: rules_registry_ids::kDefaultRulesRegistryID;
|
||||
|
||||
// First parameter identifies the registry, the second indicates whether the
|
||||
// registry belongs to the cross browser_context.
|
||||
|
@ -68,6 +68,7 @@
|
||||
#include "extensions/browser/guest_view/web_view/web_view_permission_types.h"
|
||||
#include "extensions/browser/guest_view/web_view/web_view_renderer_state.h"
|
||||
#include "extensions/browser/process_manager.h"
|
||||
#include "extensions/browser/rules_registry_ids.h"
|
||||
#include "extensions/browser/url_loader_factory_manager.h"
|
||||
#include "extensions/common/constants.h"
|
||||
#include "extensions/common/extension_features.h"
|
||||
@ -396,7 +397,7 @@ int WebViewGuest::GetOrGenerateRulesRegistryID(int embedder_process_id,
|
||||
int webview_instance_id) {
|
||||
bool is_web_view = embedder_process_id && webview_instance_id;
|
||||
if (!is_web_view)
|
||||
return RulesRegistryService::kDefaultRulesRegistryID;
|
||||
return rules_registry_ids::kDefaultRulesRegistryID;
|
||||
|
||||
WebViewKey key = std::make_pair(content::ChildProcessId(embedder_process_id),
|
||||
webview_instance_id);
|
||||
@ -1176,7 +1177,7 @@ bool WebViewGuest::ClearData(base::Time remove_since,
|
||||
|
||||
WebViewGuest::WebViewGuest(content::RenderFrameHost* owner_rfh)
|
||||
: GuestView<WebViewGuest>(owner_rfh),
|
||||
rules_registry_id_(RulesRegistryService::kInvalidRulesRegistryID),
|
||||
rules_registry_id_(rules_registry_ids::kInvalidRulesRegistryID),
|
||||
find_helper_(this),
|
||||
javascript_dialog_helper_(this),
|
||||
web_view_guest_delegate_(base::WrapUnique(
|
||||
|
15
extensions/browser/rules_registry_ids.h
Normal file
15
extensions/browser/rules_registry_ids.h
Normal file
@ -0,0 +1,15 @@
|
||||
// Copyright 2025 The Chromium Authors
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
#ifndef EXTENSIONS_BROWSER_RULES_REGISTRY_IDS_H_
|
||||
#define EXTENSIONS_BROWSER_RULES_REGISTRY_IDS_H_
|
||||
|
||||
namespace extensions::rules_registry_ids {
|
||||
|
||||
inline constexpr int kDefaultRulesRegistryID = 0;
|
||||
inline constexpr int kInvalidRulesRegistryID = -1;
|
||||
|
||||
} // namespace extensions::rules_registry_ids
|
||||
|
||||
#endif // EXTENSIONS_BROWSER_RULES_REGISTRY_IDS_H_
|
Reference in New Issue
Block a user