1// Copyright (c) 2012 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/extension_web_ui_override_registrar.h"
6
7#include "base/lazy_instance.h"
8#include "chrome/browser/extensions/extension_web_ui.h"
9#include "chrome/browser/profiles/profile.h"
10#include "extensions/browser/extension_registry.h"
11
12namespace extensions {
13
14ExtensionWebUIOverrideRegistrar::ExtensionWebUIOverrideRegistrar(
15    content::BrowserContext* context)
16    : extension_registry_observer_(this) {
17  extension_registry_observer_.Add(ExtensionRegistry::Get(context));
18}
19
20ExtensionWebUIOverrideRegistrar::~ExtensionWebUIOverrideRegistrar() {
21}
22
23void ExtensionWebUIOverrideRegistrar::OnExtensionLoaded(
24    content::BrowserContext* browser_context,
25    const Extension* extension) {
26  ExtensionWebUI::RegisterChromeURLOverrides(
27      Profile::FromBrowserContext(browser_context),
28      URLOverrides::GetChromeURLOverrides(extension));
29}
30
31void ExtensionWebUIOverrideRegistrar::OnExtensionUnloaded(
32    content::BrowserContext* browser_context,
33    const Extension* extension,
34    UnloadedExtensionInfo::Reason reason) {
35  ExtensionWebUI::UnregisterChromeURLOverrides(
36      Profile::FromBrowserContext(browser_context),
37      URLOverrides::GetChromeURLOverrides(extension));
38}
39
40static base::LazyInstance<
41    BrowserContextKeyedAPIFactory<ExtensionWebUIOverrideRegistrar> > g_factory =
42    LAZY_INSTANCE_INITIALIZER;
43
44// static
45BrowserContextKeyedAPIFactory<ExtensionWebUIOverrideRegistrar>*
46ExtensionWebUIOverrideRegistrar::GetFactoryInstance() {
47  return g_factory.Pointer();
48}
49
50}  // namespace extensions
51