OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/extensions/extension_web_ui_override_registrar.h" | 5 #include "chrome/browser/extensions/extension_web_ui_override_registrar.h" |
6 | 6 |
7 #include "base/lazy_instance.h" | 7 #include "base/lazy_instance.h" |
8 #include "chrome/browser/extensions/extension_web_ui.h" | 8 #include "chrome/browser/extensions/extension_web_ui.h" |
9 #include "chrome/browser/profiles/profile.h" | 9 #include "chrome/browser/profiles/profile.h" |
10 #include "extensions/browser/extension_registry.h" | 10 #include "extensions/browser/extension_registry.h" |
| 11 #include "extensions/browser/extension_system.h" |
| 12 #include "extensions/common/one_shot_event.h" |
11 | 13 |
12 namespace extensions { | 14 namespace extensions { |
13 | 15 |
14 ExtensionWebUIOverrideRegistrar::ExtensionWebUIOverrideRegistrar( | 16 ExtensionWebUIOverrideRegistrar::ExtensionWebUIOverrideRegistrar( |
15 content::BrowserContext* context) | 17 content::BrowserContext* context) |
16 : extension_registry_observer_(this) { | 18 : extension_registry_observer_(this), |
| 19 weak_factory_(this) { |
| 20 ExtensionWebUI::InitializeChromeURLOverrides( |
| 21 Profile::FromBrowserContext(context)); |
17 extension_registry_observer_.Add(ExtensionRegistry::Get(context)); | 22 extension_registry_observer_.Add(ExtensionRegistry::Get(context)); |
| 23 ExtensionSystem::Get(context)->ready().Post( |
| 24 FROM_HERE, |
| 25 base::Bind(&ExtensionWebUIOverrideRegistrar::OnExtensionSystemReady, |
| 26 weak_factory_.GetWeakPtr(), |
| 27 context)); |
18 } | 28 } |
19 | 29 |
20 ExtensionWebUIOverrideRegistrar::~ExtensionWebUIOverrideRegistrar() { | 30 ExtensionWebUIOverrideRegistrar::~ExtensionWebUIOverrideRegistrar() { |
21 } | 31 } |
22 | 32 |
23 void ExtensionWebUIOverrideRegistrar::OnExtensionLoaded( | 33 void ExtensionWebUIOverrideRegistrar::OnExtensionLoaded( |
24 content::BrowserContext* browser_context, | 34 content::BrowserContext* browser_context, |
25 const Extension* extension) { | 35 const Extension* extension) { |
26 ExtensionWebUI::RegisterChromeURLOverrides( | 36 ExtensionWebUI::RegisterOrActivateChromeURLOverrides( |
27 Profile::FromBrowserContext(browser_context), | 37 Profile::FromBrowserContext(browser_context), |
28 URLOverrides::GetChromeURLOverrides(extension)); | 38 URLOverrides::GetChromeURLOverrides(extension)); |
29 } | 39 } |
30 | 40 |
31 void ExtensionWebUIOverrideRegistrar::OnExtensionUnloaded( | 41 void ExtensionWebUIOverrideRegistrar::OnExtensionUnloaded( |
32 content::BrowserContext* browser_context, | 42 content::BrowserContext* browser_context, |
33 const Extension* extension, | 43 const Extension* extension, |
34 UnloadedExtensionInfo::Reason reason) { | 44 UnloadedExtensionInfo::Reason reason) { |
| 45 ExtensionWebUI::DeactivateChromeURLOverrides( |
| 46 Profile::FromBrowserContext(browser_context), |
| 47 URLOverrides::GetChromeURLOverrides(extension)); |
| 48 } |
| 49 |
| 50 void ExtensionWebUIOverrideRegistrar::OnExtensionUninstalled( |
| 51 content::BrowserContext* browser_context, |
| 52 const Extension* extension, |
| 53 UninstallReason reason) { |
35 ExtensionWebUI::UnregisterChromeURLOverrides( | 54 ExtensionWebUI::UnregisterChromeURLOverrides( |
36 Profile::FromBrowserContext(browser_context), | 55 Profile::FromBrowserContext(browser_context), |
37 URLOverrides::GetChromeURLOverrides(extension)); | 56 URLOverrides::GetChromeURLOverrides(extension)); |
38 } | 57 } |
39 | 58 |
| 59 void ExtensionWebUIOverrideRegistrar::OnExtensionSystemReady( |
| 60 content::BrowserContext* context) { |
| 61 ExtensionWebUI::ValidateChromeURLOverrides( |
| 62 Profile::FromBrowserContext(context)); |
| 63 } |
| 64 |
40 static base::LazyInstance< | 65 static base::LazyInstance< |
41 BrowserContextKeyedAPIFactory<ExtensionWebUIOverrideRegistrar> > g_factory = | 66 BrowserContextKeyedAPIFactory<ExtensionWebUIOverrideRegistrar> > g_factory = |
42 LAZY_INSTANCE_INITIALIZER; | 67 LAZY_INSTANCE_INITIALIZER; |
43 | 68 |
44 // static | 69 // static |
45 BrowserContextKeyedAPIFactory<ExtensionWebUIOverrideRegistrar>* | 70 BrowserContextKeyedAPIFactory<ExtensionWebUIOverrideRegistrar>* |
46 ExtensionWebUIOverrideRegistrar::GetFactoryInstance() { | 71 ExtensionWebUIOverrideRegistrar::GetFactoryInstance() { |
47 return g_factory.Pointer(); | 72 return g_factory.Pointer(); |
48 } | 73 } |
49 | 74 |
50 } // namespace extensions | 75 } // namespace extensions |
OLD | NEW |