| Index: chrome/browser/chromeos/system/ash_system_tray_delegate.cc
|
| diff --git a/chrome/browser/chromeos/system/ash_system_tray_delegate.cc b/chrome/browser/chromeos/system/ash_system_tray_delegate.cc
|
| index c7f2bb045f288a8d6a4d48ef45972a72c66539b8..bf62266bb41725b6bace6f8a84414b484a2c753b 100644
|
| --- a/chrome/browser/chromeos/system/ash_system_tray_delegate.cc
|
| +++ b/chrome/browser/chromeos/system/ash_system_tray_delegate.cc
|
| @@ -250,32 +250,33 @@ class SystemTrayDelegate : public ash::SystemTrayDelegate,
|
| volume_control_delegate_(new VolumeController()) {
|
| // Register notifications on construction so that events such as
|
| // PROFILE_CREATED do not get missed if they happen before Initialize().
|
| - registrar_.Add(this,
|
| + registrar_.reset(new content::NotificationRegistrar);
|
| + registrar_->Add(this,
|
| chrome::NOTIFICATION_UPGRADE_RECOMMENDED,
|
| content::NotificationService::AllSources());
|
| - registrar_.Add(this,
|
| + registrar_->Add(this,
|
| chrome::NOTIFICATION_LOGIN_USER_IMAGE_CHANGED,
|
| content::NotificationService::AllSources());
|
| if (GetUserLoginStatus() == ash::user::LOGGED_IN_NONE) {
|
| - registrar_.Add(this,
|
| + registrar_->Add(this,
|
| chrome::NOTIFICATION_SESSION_STARTED,
|
| content::NotificationService::AllSources());
|
| }
|
| - registrar_.Add(this,
|
| + registrar_->Add(this,
|
| chrome::NOTIFICATION_PROFILE_CREATED,
|
| content::NotificationService::AllSources());
|
| - registrar_.Add(this,
|
| + registrar_->Add(this,
|
| chrome::NOTIFICATION_LOGIN_USER_PROFILE_PREPARED,
|
| content::NotificationService::AllSources());
|
| - registrar_.Add(
|
| + registrar_->Add(
|
| this,
|
| chrome::NOTIFICATION_CROS_ACCESSIBILITY_TOGGLE_SCREEN_MAGNIFIER,
|
| content::NotificationService::AllSources());
|
| - registrar_.Add(
|
| + registrar_->Add(
|
| this,
|
| chrome::NOTIFICATION_CROS_ACCESSIBILITY_TOGGLE_SPOKEN_FEEDBACK,
|
| content::NotificationService::AllSources());
|
| - registrar_.Add(
|
| + registrar_->Add(
|
| this,
|
| chrome::NOTIFICATION_CROS_ACCESSIBILITY_TOGGLE_HIGH_CONTRAST_MODE,
|
| content::NotificationService::AllSources());
|
| @@ -339,6 +340,9 @@ class SystemTrayDelegate : public ash::SystemTrayDelegate,
|
| }
|
|
|
| virtual ~SystemTrayDelegate() {
|
| + // Unregister content notifications befure destroying any components.
|
| + registrar_.reset();
|
| +
|
| if (!ash::switches::UseNewAudioHandler() && AudioHandler::GetInstance()) {
|
| AudioHandler::GetInstance()->RemoveVolumeObserver(this);
|
| }
|
| @@ -1072,9 +1076,9 @@ class SystemTrayDelegate : public ash::SystemTrayDelegate,
|
| }
|
| case chrome::NOTIFICATION_PROFILE_CREATED: {
|
| SetProfile(content::Source<Profile>(source).ptr());
|
| - registrar_.Remove(this,
|
| - chrome::NOTIFICATION_PROFILE_CREATED,
|
| - content::NotificationService::AllSources());
|
| + registrar_->Remove(this,
|
| + chrome::NOTIFICATION_PROFILE_CREATED,
|
| + content::NotificationService::AllSources());
|
| break;
|
| }
|
| case chrome::NOTIFICATION_SESSION_STARTED: {
|
| @@ -1283,7 +1287,7 @@ class SystemTrayDelegate : public ash::SystemTrayDelegate,
|
| }
|
|
|
| scoped_ptr<base::WeakPtrFactory<SystemTrayDelegate> > ui_weak_ptr_factory_;
|
| - content::NotificationRegistrar registrar_;
|
| + scoped_ptr<content::NotificationRegistrar> registrar_;
|
| PrefChangeRegistrar local_state_registrar_;
|
| scoped_ptr<PrefChangeRegistrar> user_pref_registrar_;
|
| std::string active_network_path_;
|
|
|