summaryrefslogtreecommitdiffstats
path: root/chrome/browser/net/chrome_url_request_context.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/net/chrome_url_request_context.cc')
-rw-r--r--chrome/browser/net/chrome_url_request_context.cc18
1 files changed, 18 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_);