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