diff options
author | aa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-05-21 22:39:57 +0000 |
---|---|---|
committer | aa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-05-21 22:39:57 +0000 |
commit | 894bb50fe9a1b145221dd6993c159ab9f7a0fc5d (patch) | |
tree | f201aa2984ce40b3ef3fd50f7d211280d1cd33c1 /chrome/browser/net/chrome_url_request_context.cc | |
parent | 182ac532081125b65bc169b56eb8230063a8d3a6 (diff) | |
download | chromium_src-894bb50fe9a1b145221dd6993c159ab9f7a0fc5d.zip chromium_src-894bb50fe9a1b145221dd6993c159ab9f7a0fc5d.tar.gz chromium_src-894bb50fe9a1b145221dd6993c159ab9f7a0fc5d.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@16676 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/net/chrome_url_request_context.cc')
-rw-r--r-- | chrome/browser/net/chrome_url_request_context.cc | 18 |
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_); |