Chromium Code Reviews| Index: chrome/browser/media_galleries/media_scan_manager.cc |
| =================================================================== |
| --- chrome/browser/media_galleries/media_scan_manager.cc (revision 259942) |
| +++ chrome/browser/media_galleries/media_scan_manager.cc (working copy) |
| @@ -9,7 +9,6 @@ |
| #include "base/logging.h" |
| #include "base/metrics/histogram.h" |
| #include "base/time/time.h" |
| -#include "chrome/browser/chrome_notification_types.h" |
| #include "chrome/browser/extensions/extension_service.h" |
| #include "chrome/browser/media_galleries/media_galleries_preferences.h" |
| #include "chrome/browser/media_galleries/media_galleries_preferences_factory.h" |
| @@ -17,11 +16,12 @@ |
| #include "chrome/browser/profiles/profile.h" |
| #include "chrome/common/extensions/api/media_galleries.h" |
| #include "content/public/browser/browser_thread.h" |
| -#include "content/public/browser/notification_details.h" |
| -#include "content/public/browser/notification_source.h" |
| +#include "extensions/browser/extension_registry.h" |
| #include "extensions/browser/extension_system.h" |
| #include "extensions/common/extension.h" |
| +using extensions::ExtensionRegistry; |
| + |
| namespace media_galleries = extensions::api::media_galleries; |
| namespace { |
| @@ -304,7 +304,9 @@ |
| } // namespace |
| -MediaScanManager::MediaScanManager() : weak_factory_(this) { |
| +MediaScanManager::MediaScanManager() |
| + : scoped_extension_registry_observer_(this), |
| + weak_factory_(this) { |
| DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); |
| } |
| @@ -369,12 +371,8 @@ |
| } |
| // On first scan for the |profile|, register to listen for extension unload. |
| - if (scanning_extensions->empty()) { |
| - registrar_.Add( |
| - this, |
| - chrome::NOTIFICATION_EXTENSION_UNLOADED_DEPRECATED, |
| - content::Source<Profile>(profile)); |
| - } |
| + if (scanning_extensions->empty()) |
| + scoped_extension_registry_observer_.Add(ExtensionRegistry::Get(profile)); |
| scanning_extensions->insert(extension->id()); |
| scans_for_profile->second.observer->OnScanStarted(extension->id()); |
| @@ -408,12 +406,8 @@ |
| scans_for_profile->second.observer->OnScanCancelled(extension->id()); |
| // No more scanning extensions for |profile|, so stop listening for unloads. |
| - if (scans_for_profile->second.scanning_extensions.empty()) { |
| - registrar_.Remove( |
| - this, |
| - chrome::NOTIFICATION_EXTENSION_UNLOADED_DEPRECATED, |
| - content::Source<Profile>(profile)); |
| - } |
| + if (scans_for_profile->second.scanning_extensions.empty()) |
| + scoped_extension_registry_observer_.Remove(ExtensionRegistry::Get(profile)); |
| if (!ScanInProgress()) { |
| folder_finder_.reset(); |
| @@ -432,23 +426,11 @@ |
| MediaScanManager::ScanObservers::ScanObservers() : observer(NULL) {} |
| MediaScanManager::ScanObservers::~ScanObservers() {} |
| -void MediaScanManager::Observe( |
| - int type, const content::NotificationSource& source, |
| - const content::NotificationDetails& details) { |
| +void MediaScanManager::OnExtensionUnloaded( |
| + content::BrowserContext* browser_context, |
| + const extensions::Extension* extension) { |
| DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); |
| - switch (type) { |
| - case chrome::NOTIFICATION_EXTENSION_UNLOADED_DEPRECATED: { |
| - Profile* profile = content::Source<Profile>(source).ptr(); |
| - extensions::Extension* extension = const_cast<extensions::Extension*>( |
| - content::Details<extensions::UnloadedExtensionInfo>( |
| - details)->extension); |
| - DCHECK(extension); |
| - CancelScan(profile, extension); |
| - break; |
| - } |
| - default: |
| - NOTREACHED(); |
| - } |
| + CancelScan(Profile::FromBrowserContext(browser_context), extension); |
| } |
| bool MediaScanManager::ScanInProgress() const { |
| @@ -529,6 +511,6 @@ |
| scanning_extensions->clear(); |
| preferences->SetLastScanCompletionTime(base::Time::Now()); |
| } |
| - registrar_.RemoveAll(); |
| + scoped_extension_registry_observer_.RemoveAll(); |
|
Nico
2014/03/27 23:01:29
Won't RemoveObserver() be called twice now? (Once
Lei Zhang
2014/03/27 23:07:04
Yes, same as before with NotificationRegistrar.
|
| folder_finder_.reset(); |
| } |