Home | History | Annotate | Download | only in extensions
      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 
     12 namespace extensions {
     13 
     14 ExtensionWebUIOverrideRegistrar::ExtensionWebUIOverrideRegistrar(
     15     content::BrowserContext* context)
     16     : extension_registry_observer_(this) {
     17   extension_registry_observer_.Add(ExtensionRegistry::Get(context));
     18 }
     19 
     20 ExtensionWebUIOverrideRegistrar::~ExtensionWebUIOverrideRegistrar() {
     21 }
     22 
     23 void 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 
     31 void 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 
     40 static base::LazyInstance<
     41     BrowserContextKeyedAPIFactory<ExtensionWebUIOverrideRegistrar> > g_factory =
     42     LAZY_INSTANCE_INITIALIZER;
     43 
     44 // static
     45 BrowserContextKeyedAPIFactory<ExtensionWebUIOverrideRegistrar>*
     46 ExtensionWebUIOverrideRegistrar::GetFactoryInstance() {
     47   return g_factory.Pointer();
     48 }
     49 
     50 }  // namespace extensions
     51