| Index: chrome/browser/media_galleries/media_scan_manager.cc
|
| ===================================================================
|
| --- chrome/browser/media_galleries/media_scan_manager.cc (revision 260931)
|
| +++ 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_CURRENTLY_ON(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_CURRENTLY_ON(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();
|
| folder_finder_.reset();
|
| }
|
|
|