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.
4
5 #include "extensions/browser/declarative_user_script_master.h"
6
7 #include "content/public/browser/browser_context.h"
8 #include "extensions/browser/extension_user_script_loader.h"
9 #include "extensions/browser/user_script_loader.h"
10 #include "extensions/browser/web_ui_user_script_loader.h"
11 #include "extensions/common/user_script.h"
12
13 namespace extensions {
14
DeclarativeUserScriptMaster(content::BrowserContext * browser_context,const HostID & host_id)15 DeclarativeUserScriptMaster::DeclarativeUserScriptMaster(
16 content::BrowserContext* browser_context,
17 const HostID& host_id)
18 : host_id_(host_id) {
19 switch (host_id_.type()) {
20 case HostID::EXTENSIONS:
21 loader_.reset(new ExtensionUserScriptLoader(
22 browser_context, host_id,
23 false /* listen_for_extension_system_loaded */));
24 break;
25 case HostID::WEBUI:
26 loader_.reset(new WebUIUserScriptLoader(browser_context, host_id));
27 break;
28 }
29 }
30
~DeclarativeUserScriptMaster()31 DeclarativeUserScriptMaster::~DeclarativeUserScriptMaster() {
32 }
33
AddScript(std::unique_ptr<UserScript> script)34 void DeclarativeUserScriptMaster::AddScript(
35 std::unique_ptr<UserScript> script) {
36 std::unique_ptr<UserScriptList> scripts(new UserScriptList());
37 scripts->push_back(std::move(script));
38 loader_->AddScripts(std::move(scripts));
39 }
40
AddScripts(std::unique_ptr<UserScriptList> scripts,int render_process_id,int render_view_id)41 void DeclarativeUserScriptMaster::AddScripts(
42 std::unique_ptr<UserScriptList> scripts,
43 int render_process_id,
44 int render_view_id) {
45 loader_->AddScripts(std::move(scripts), render_process_id, render_view_id);
46 }
47
RemoveScript(const UserScriptIDPair & script)48 void DeclarativeUserScriptMaster::RemoveScript(const UserScriptIDPair& script) {
49 std::set<UserScriptIDPair> scripts;
50 scripts.insert(script);
51 RemoveScripts(scripts);
52 }
53
RemoveScripts(const std::set<UserScriptIDPair> & scripts)54 void DeclarativeUserScriptMaster::RemoveScripts(
55 const std::set<UserScriptIDPair>& scripts) {
56 loader_->RemoveScripts(scripts);
57 }
58
ClearScripts()59 void DeclarativeUserScriptMaster::ClearScripts() {
60 loader_->ClearScripts();
61 }
62
63 } // namespace extensions
64