12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 5c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/extensions/extension_web_ui_override_registrar.h" 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/lazy_instance.h" 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/extensions/extension_web_ui.h" 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/profiles/profile.h" 100529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#include "extensions/browser/extension_registry.h" 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace extensions { 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 14c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)ExtensionWebUIOverrideRegistrar::ExtensionWebUIOverrideRegistrar( 15a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) content::BrowserContext* context) 160529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch : extension_registry_observer_(this) { 170529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch extension_registry_observer_.Add(ExtensionRegistry::Get(context)); 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 20c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)ExtensionWebUIOverrideRegistrar::~ExtensionWebUIOverrideRegistrar() { 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 230529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochvoid ExtensionWebUIOverrideRegistrar::OnExtensionLoaded( 240529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch content::BrowserContext* browser_context, 250529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch const Extension* extension) { 260529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch ExtensionWebUI::RegisterChromeURLOverrides( 270529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch Profile::FromBrowserContext(browser_context), 280529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch URLOverrides::GetChromeURLOverrides(extension)); 290529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch} 300529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 310529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochvoid ExtensionWebUIOverrideRegistrar::OnExtensionUnloaded( 320529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch content::BrowserContext* browser_context, 330529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch const Extension* extension, 340529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch UnloadedExtensionInfo::Reason reason) { 350529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch ExtensionWebUI::UnregisterChromeURLOverrides( 360529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch Profile::FromBrowserContext(browser_context), 370529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch URLOverrides::GetChromeURLOverrides(extension)); 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 40c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)static base::LazyInstance< 41a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) BrowserContextKeyedAPIFactory<ExtensionWebUIOverrideRegistrar> > g_factory = 42a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) LAZY_INSTANCE_INITIALIZER; 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// static 45a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)BrowserContextKeyedAPIFactory<ExtensionWebUIOverrideRegistrar>* 46c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)ExtensionWebUIOverrideRegistrar::GetFactoryInstance() { 475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return g_factory.Pointer(); 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace extensions 51