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