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 "chrome/browser/extensions/declarative_user_script_master.h" 6 7#include <set> 8 9#include "chrome/browser/profiles/profile.h" 10#include "extensions/browser/extension_registry.h" 11 12namespace extensions { 13 14DeclarativeUserScriptMaster::DeclarativeUserScriptMaster( 15 Profile* profile, 16 const ExtensionId& extension_id) 17 : extension_id_(extension_id), 18 loader_(profile, 19 extension_id, 20 false /* listen_for_extension_system_loaded */), 21 extension_registry_observer_(this) { 22 extension_registry_observer_.Add(ExtensionRegistry::Get(profile)); 23} 24 25DeclarativeUserScriptMaster::~DeclarativeUserScriptMaster() { 26} 27 28void DeclarativeUserScriptMaster::OnExtensionUnloaded( 29 content::BrowserContext* browser_context, 30 const Extension* extension, 31 UnloadedExtensionInfo::Reason reason) { 32 if (extension_id_ == extension->id()) 33 ClearScripts(); 34} 35 36void DeclarativeUserScriptMaster::AddScript(const UserScript& script) { 37 std::set<UserScript> set; 38 set.insert(script); 39 loader_.AddScripts(set); 40} 41 42void DeclarativeUserScriptMaster::RemoveScript(const UserScript& script) { 43 std::set<UserScript> set; 44 set.insert(script); 45 loader_.RemoveScripts(set); 46} 47 48void DeclarativeUserScriptMaster::ClearScripts() { 49 loader_.ClearScripts(); 50} 51 52} // namespace extensions 53