summaryrefslogtreecommitdiffstats
path: root/chrome/browser/net
diff options
context:
space:
mode:
authoraa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-05-20 20:47:25 +0000
committeraa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-05-20 20:47:25 +0000
commit6d7c8059b0b3c9e5f079bb8f0569b0de6a115330 (patch)
tree93b51fcbae522fdd93b0d8031922ab131a9eb2ac /chrome/browser/net
parentb674dc73f0b635aa2f7be660153e5b05f6a9b593 (diff)
downloadchromium_src-6d7c8059b0b3c9e5f079bb8f0569b0de6a115330.zip
chromium_src-6d7c8059b0b3c9e5f079bb8f0569b0de6a115330.tar.gz
chromium_src-6d7c8059b0b3c9e5f079bb8f0569b0de6a115330.tar.bz2
Hook up more of extension uninstall.
Also removed all external dependencies from ExtensionsService. It now only sends out notifications, which other services consume. This should allow us to unit test the ExtensionsService frontend, but I haven't added that yet. Review URL: http://codereview.chromium.org/113493 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@16529 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/net')
-rw-r--r--chrome/browser/net/chrome_url_request_context.cc18
-rw-r--r--chrome/browser/net/chrome_url_request_context.h3
2 files changed, 21 insertions, 0 deletions
diff --git a/chrome/browser/net/chrome_url_request_context.cc b/chrome/browser/net/chrome_url_request_context.cc
index 3ea9cc1..ae75216 100644
--- a/chrome/browser/net/chrome_url_request_context.cc
+++ b/chrome/browser/net/chrome_url_request_context.cc
@@ -312,6 +312,9 @@ ChromeURLRequestContext::ChromeURLRequestContext(Profile* profile)
NotificationService::current()->AddObserver(
this, NotificationType::EXTENSIONS_LOADED,
NotificationService::AllSources());
+ NotificationService::current()->AddObserver(
+ this, NotificationType::EXTENSION_UNLOADED,
+ NotificationService::AllSources());
}
// NotificationObserver implementation.
@@ -349,6 +352,11 @@ void ChromeURLRequestContext::Observe(NotificationType type,
g_browser_process->io_thread()->message_loop()->PostTask(FROM_HERE,
NewRunnableMethod(this, &ChromeURLRequestContext::OnNewExtensions,
new_paths));
+ } else if (NotificationType::EXTENSION_UNLOADED == type) {
+ Extension* extension = Details<Extension>(details).ptr();
+ g_browser_process->io_thread()->message_loop()->PostTask(FROM_HERE,
+ NewRunnableMethod(this, &ChromeURLRequestContext::OnUnloadedExtension,
+ extension->id()));
} else {
NOTREACHED();
}
@@ -363,6 +371,9 @@ void ChromeURLRequestContext::CleanupOnUIThread() {
NotificationService::current()->RemoveObserver(
this, NotificationType::EXTENSIONS_LOADED,
NotificationService::AllSources());
+ NotificationService::current()->RemoveObserver(
+ this, NotificationType::EXTENSION_UNLOADED,
+ NotificationService::AllSources());
}
FilePath ChromeURLRequestContext::GetPathForExtension(const std::string& id) {
@@ -399,6 +410,13 @@ void ChromeURLRequestContext::OnNewExtensions(ExtensionPaths* new_paths) {
delete new_paths;
}
+void ChromeURLRequestContext::OnUnloadedExtension(
+ const std::string& extension_id) {
+ ExtensionPaths::iterator iter = extension_paths_.find(extension_id);
+ DCHECK(iter != extension_paths_.end());
+ extension_paths_.erase(iter);
+}
+
ChromeURLRequestContext::~ChromeURLRequestContext() {
DCHECK(NULL == prefs_);
diff --git a/chrome/browser/net/chrome_url_request_context.h b/chrome/browser/net/chrome_url_request_context.h
index 55af609..d5024c1 100644
--- a/chrome/browser/net/chrome_url_request_context.h
+++ b/chrome/browser/net/chrome_url_request_context.h
@@ -94,6 +94,9 @@ class ChromeURLRequestContext : public URLRequestContext,
// Callback for when new extensions are loaded.
void OnNewExtensions(ExtensionPaths* new_paths);
+ // Callback for when an extension is unloaded.
+ void OnUnloadedExtension(const std::string& id);
+
// Destructor.
virtual ~ChromeURLRequestContext();