| Index: ash/shell.cc
|
| diff --git a/ash/shell.cc b/ash/shell.cc
|
| index 11fe19f2c244de9b5638d148986f7fd232d1debc..322259741ff4b3e4cdc1edde37762201f5ebd77f 100644
|
| --- a/ash/shell.cc
|
| +++ b/ash/shell.cc
|
| @@ -28,6 +28,7 @@
|
| #include "ash/shell_window_ids.h"
|
| #include "ash/system/status_area_widget.h"
|
| #include "ash/system/tray/system_tray_delegate.h"
|
| +#include "ash/system/tray/system_tray_notifier.h"
|
| #include "ash/tooltips/tooltip_controller.h"
|
| #include "ash/touch/touch_observer_hud.h"
|
| #include "ash/wm/activation_controller.h"
|
| @@ -255,6 +256,11 @@ Shell::~Shell() {
|
| // Destroy SystemTrayDelegate before destroying the status area(s).
|
| system_tray_delegate_.reset();
|
|
|
| + // Destroy SystemTrayNotifier immediately after destroying SystemTrayDelegate
|
| + // so that it is still available when shutting down the UI, but not after
|
| + // the notifier observers have been destroyed.
|
| + system_tray_notifier_.reset();
|
| +
|
| // Destroy all child windows including widgets.
|
| display_controller_->CloseChildWindows();
|
|
|
| @@ -491,6 +497,9 @@ void Shell::Init() {
|
| shadow_controller_.reset(new internal::ShadowController());
|
| }
|
|
|
| + // Create system_tray_notifier_ before the delegate.
|
| + system_tray_notifier_.reset(new ash::SystemTrayNotifier());
|
| +
|
| // Initialize system_tray_delegate_ before initializing StatusAreaWidget.
|
| system_tray_delegate_.reset(delegate()->CreateSystemTrayDelegate());
|
| if (!system_tray_delegate_.get())
|
|
|