1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "extensions/browser/declarative_user_script_manager.h"
7 #include "content/public/browser/browser_context.h"
8 #include "extensions/browser/declarative_user_script_manager_factory.h"
9 #include "extensions/browser/declarative_user_script_master.h"
10 #include "extensions/browser/extension_registry.h"
12 namespace extensions
{
14 DeclarativeUserScriptManager::DeclarativeUserScriptManager(
15 content::BrowserContext
* browser_context
)
16 : browser_context_(browser_context
), extension_registry_observer_(this) {
17 extension_registry_observer_
.Add(ExtensionRegistry::Get(browser_context
));
20 DeclarativeUserScriptManager::~DeclarativeUserScriptManager() {
24 DeclarativeUserScriptManager
* DeclarativeUserScriptManager::Get(
25 content::BrowserContext
* browser_context
) {
26 return DeclarativeUserScriptManagerFactory::GetForBrowserContext(
30 DeclarativeUserScriptMaster
*
31 DeclarativeUserScriptManager::GetDeclarativeUserScriptMasterByID(
32 const HostID
& host_id
) {
33 UserScriptMasterMap::iterator it
=
34 declarative_user_script_masters_
.find(host_id
);
36 if (it
!= declarative_user_script_masters_
.end())
37 return it
->second
.get();
39 return CreateDeclarativeUserScriptMaster(host_id
);
42 DeclarativeUserScriptMaster
*
43 DeclarativeUserScriptManager::CreateDeclarativeUserScriptMaster(
44 const HostID
& host_id
) {
45 linked_ptr
<DeclarativeUserScriptMaster
> master(
46 new DeclarativeUserScriptMaster(browser_context_
, host_id
));
47 declarative_user_script_masters_
[host_id
] = master
;
51 void DeclarativeUserScriptManager::OnExtensionUnloaded(
52 content::BrowserContext
* browser_context
,
53 const Extension
* extension
,
54 UnloadedExtensionInfo::Reason reason
) {
55 for (const auto& val
: declarative_user_script_masters_
) {
56 DeclarativeUserScriptMaster
* master
= val
.second
.get();
57 if (master
->host_id().id() == extension
->id())
58 master
->ClearScripts();
62 } // namespace extensions