Index: chrome/browser/extensions/extension_web_ui_override_registrar.cc |
diff --git a/chrome/browser/extensions/extension_web_ui_override_registrar.cc b/chrome/browser/extensions/extension_web_ui_override_registrar.cc |
index a0ffd99849a6275bdaad88e24d920eeb023bc520..9d9d970064704984c09270c7d7fd64dbb0874ad5 100644 |
--- a/chrome/browser/extensions/extension_web_ui_override_registrar.cc |
+++ b/chrome/browser/extensions/extension_web_ui_override_registrar.cc |
@@ -8,13 +8,23 @@ |
#include "chrome/browser/extensions/extension_web_ui.h" |
#include "chrome/browser/profiles/profile.h" |
#include "extensions/browser/extension_registry.h" |
+#include "extensions/browser/extension_system.h" |
+#include "extensions/common/one_shot_event.h" |
namespace extensions { |
ExtensionWebUIOverrideRegistrar::ExtensionWebUIOverrideRegistrar( |
content::BrowserContext* context) |
- : extension_registry_observer_(this) { |
+ : extension_registry_observer_(this), |
+ weak_factory_(this) { |
+ ExtensionWebUI::InitializeChromeURLOverrides( |
+ Profile::FromBrowserContext(context)); |
extension_registry_observer_.Add(ExtensionRegistry::Get(context)); |
+ ExtensionSystem::Get(context)->ready().Post( |
+ FROM_HERE, |
+ base::Bind(&ExtensionWebUIOverrideRegistrar::OnExtensionSystemReady, |
+ weak_factory_.GetWeakPtr(), |
+ context)); |
} |
ExtensionWebUIOverrideRegistrar::~ExtensionWebUIOverrideRegistrar() { |
@@ -23,7 +33,7 @@ ExtensionWebUIOverrideRegistrar::~ExtensionWebUIOverrideRegistrar() { |
void ExtensionWebUIOverrideRegistrar::OnExtensionLoaded( |
content::BrowserContext* browser_context, |
const Extension* extension) { |
- ExtensionWebUI::RegisterChromeURLOverrides( |
+ ExtensionWebUI::RegisterOrActivateChromeURLOverrides( |
Profile::FromBrowserContext(browser_context), |
URLOverrides::GetChromeURLOverrides(extension)); |
} |
@@ -32,11 +42,26 @@ void ExtensionWebUIOverrideRegistrar::OnExtensionUnloaded( |
content::BrowserContext* browser_context, |
const Extension* extension, |
UnloadedExtensionInfo::Reason reason) { |
+ ExtensionWebUI::DeactivateChromeURLOverrides( |
+ Profile::FromBrowserContext(browser_context), |
+ URLOverrides::GetChromeURLOverrides(extension)); |
+} |
+ |
+void ExtensionWebUIOverrideRegistrar::OnExtensionUninstalled( |
+ content::BrowserContext* browser_context, |
+ const Extension* extension, |
+ UninstallReason reason) { |
ExtensionWebUI::UnregisterChromeURLOverrides( |
Profile::FromBrowserContext(browser_context), |
URLOverrides::GetChromeURLOverrides(extension)); |
} |
+void ExtensionWebUIOverrideRegistrar::OnExtensionSystemReady( |
+ content::BrowserContext* context) { |
+ ExtensionWebUI::ValidateChromeURLOverrides( |
+ Profile::FromBrowserContext(context)); |
+} |
+ |
static base::LazyInstance< |
BrowserContextKeyedAPIFactory<ExtensionWebUIOverrideRegistrar> > g_factory = |
LAZY_INSTANCE_INITIALIZER; |