diff options
author | MHX348@motorola.com <MHX348@motorola.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-01-12 15:58:00 +0000 |
---|---|---|
committer | MHX348@motorola.com <MHX348@motorola.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-01-12 15:58:00 +0000 |
commit | 636ee43284f75156541540698d89df1227ff3b12 (patch) | |
tree | e1ce6a8b2ccbb1cb085fe9a2ceb4231ff0c2c9df /chrome/browser/extensions/manifest_url_parser.cc | |
parent | cf33d4266856b04d59c67a536cb93374a7b7f509 (diff) | |
download | chromium_src-636ee43284f75156541540698d89df1227ff3b12.zip chromium_src-636ee43284f75156541540698d89df1227ff3b12.tar.gz chromium_src-636ee43284f75156541540698d89df1227ff3b12.tar.bz2 |
Move the parsing of "chrome_url_overrides" out of Extension.
Moved a bunch of stuff out of ExtensionService.
This CL depends on https://chromiumcodereview.appspot.com/11624036/
Patch from Joe Thomas <mhx348@motorola.com>.
BUG=159265
Review URL: https://chromiumcodereview.appspot.com/11660016
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@176532 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/extensions/manifest_url_parser.cc')
-rw-r--r-- | chrome/browser/extensions/manifest_url_parser.cc | 31 |
1 files changed, 30 insertions, 1 deletions
diff --git a/chrome/browser/extensions/manifest_url_parser.cc b/chrome/browser/extensions/manifest_url_parser.cc index e6aa80f..4afc76e 100644 --- a/chrome/browser/extensions/manifest_url_parser.cc +++ b/chrome/browser/extensions/manifest_url_parser.cc @@ -5,23 +5,52 @@ #include "chrome/browser/extensions/manifest_url_parser.h" #include "base/lazy_instance.h" +#include "chrome/browser/extensions/extension_web_ui.h" #include "chrome/browser/profiles/profile.h" +#include "chrome/common/chrome_notification_types.h" #include "chrome/common/extensions/extension_manifest_constants.h" #include "chrome/common/extensions/manifest_handler.h" #include "chrome/common/extensions/manifest_url_handler.h" +#include "content/public/browser/notification_details.h" +#include "content/public/browser/notification_service.h" namespace extensions { -ManifestURLParser::ManifestURLParser(Profile* profile) { +ManifestURLParser::ManifestURLParser(Profile* profile) + : profile_(profile) { ManifestHandler::Register(extension_manifest_keys::kDevToolsPage, new DevToolsPageHandler); ManifestHandler::Register(extension_manifest_keys::kHomepageURL, new HomepageURLHandler); + ManifestHandler::Register(extension_manifest_keys::kChromeURLOverrides, + new URLOverridesHandler); + + registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_LOADED, + content::Source<Profile>(profile)); + registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_UNLOADED, + content::Source<Profile>(profile)); } ManifestURLParser::~ManifestURLParser() { } +void ManifestURLParser::Observe(int type, + const content::NotificationSource& source, + const content::NotificationDetails& details) { + if (type == chrome::NOTIFICATION_EXTENSION_LOADED) { + const Extension* extension = + content::Details<const Extension>(details).ptr(); + ExtensionWebUI::RegisterChromeURLOverrides( + profile_, URLOverrides::GetChromeURLOverrides(extension)); + + } else if (type == chrome::NOTIFICATION_EXTENSION_UNLOADED) { + const Extension* extension = + content::Details<const UnloadedExtensionInfo>(details)->extension; + ExtensionWebUI::UnregisterChromeURLOverrides( + profile_, URLOverrides::GetChromeURLOverrides(extension)); + } +} + static base::LazyInstance<ProfileKeyedAPIFactory<ManifestURLParser> > g_factory = LAZY_INSTANCE_INITIALIZER; |