| 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;
|
|
|