#include "extensions/browser/api/declarative/rules_registry_service.h"
#include <memory>
#include <utility>
#include "base/check_op.h"
#include "base/containers/contains.h"
#include "base/functional/bind.h"
#include "base/lazy_instance.h"
#include "base/observer_list.h"
#include "base/ranges/algorithm.h"
#include "content/public/browser/browser_task_traits.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/render_process_host.h"
#include "extensions/browser/api/declarative_content/content_rules_registry.h"
#include "extensions/browser/api/declarative_webrequest/webrequest_constants.h"
#include "extensions/browser/api/declarative_webrequest/webrequest_rules_registry.h"
#include "extensions/browser/api/extensions_api_client.h"
#include "extensions/browser/api/web_request/extension_web_request_event_router.h"
#include "extensions/browser/extension_util.h"
#include "extensions/common/extension.h"
#include "extensions/common/features/feature.h"
#include "extensions/common/features/feature_provider.h"
namespace extensions {
const int RulesRegistryService::kDefaultRulesRegistryID = …;
const int RulesRegistryService::kInvalidRulesRegistryID = …;
RulesRegistryService::RulesRegistryService(content::BrowserContext* context)
: … { … }
RulesRegistryService::~RulesRegistryService() = default;
int RulesRegistryService::GetNextRulesRegistryID() { … }
void RulesRegistryService::Shutdown() { … }
static base::LazyInstance<BrowserContextKeyedAPIFactory<RulesRegistryService>>::
DestructorAtExit g_factory = …;
BrowserContextKeyedAPIFactory<RulesRegistryService>*
RulesRegistryService::GetFactoryInstance() { … }
RulesRegistryService* RulesRegistryService::Get(
content::BrowserContext* context) { … }
RulesRegistryService* RulesRegistryService::GetIfExists(
content::BrowserContext* context) { … }
void RulesRegistryService::RegisterRulesRegistry(
scoped_refptr<RulesRegistry> rule_registry) { … }
scoped_refptr<RulesRegistry> RulesRegistryService::GetRulesRegistry(
int rules_registry_id,
const std::string& event_name) { … }
void RulesRegistryService::RemoveRulesRegistriesByID(int rules_registry_id) { … }
bool RulesRegistryService::HasAnyRegisteredRules() const { … }
void RulesRegistryService::AddObserver(Observer* observer) { … }
void RulesRegistryService::RemoveObserver(Observer* observer) { … }
void RulesRegistryService::SimulateExtensionUninstalled(
const Extension* extension) { … }
bool RulesRegistryService::HasRulesRegistryForTesting(
int rules_registry_id,
const std::string& event_name) { … }
void RulesRegistryService::OnUpdateRules() { … }
scoped_refptr<RulesRegistry>
RulesRegistryService::RegisterWebRequestRulesRegistry(
int rules_registry_id,
RulesCacheDelegate::Type cache_delegate_type) { … }
void RulesRegistryService::EnsureDefaultRulesRegistriesRegistered() { … }
void RulesRegistryService::NotifyRegistriesHelper(
void (RulesRegistry::*notification_callback)(const Extension*),
const Extension* extension) { … }
void RulesRegistryService::OnExtensionLoaded(
content::BrowserContext* browser_context,
const Extension* extension) { … }
void RulesRegistryService::OnExtensionUnloaded(
content::BrowserContext* browser_context,
const Extension* extension,
UnloadedExtensionReason reason) { … }
void RulesRegistryService::OnExtensionUninstalled(
content::BrowserContext* browser_context,
const Extension* extension,
extensions::UninstallReason reason) { … }
}