| Index: ash/common/wm/screen_dimmer.cc
|
| diff --git a/ash/common/wm/screen_dimmer.cc b/ash/common/wm/screen_dimmer.cc
|
| index 8304d118252ea8ee4d09c263390d74121adde646..f5917edf5cdd95a90371431542d415bde80100ad 100644
|
| --- a/ash/common/wm/screen_dimmer.cc
|
| +++ b/ash/common/wm/screen_dimmer.cc
|
| @@ -8,14 +8,16 @@
|
| #include "ash/common/wm/window_dimmer.h"
|
| #include "ash/common/wm_shell.h"
|
| #include "ash/common/wm_window.h"
|
| -#include "ash/common/wm_window_user_data.h"
|
| #include "ash/public/cpp/shell_window_ids.h"
|
| #include "ash/shell.h"
|
| #include "base/memory/ptr_util.h"
|
| +#include "ui/aura/window.h"
|
|
|
| namespace ash {
|
| namespace {
|
|
|
| +DEFINE_OWNED_UI_CLASS_PROPERTY_KEY(WindowDimmer, kWindowDimmerKey, nullptr);
|
| +
|
| // Opacity when it's dimming the entire screen.
|
| const float kDimmingLayerOpacityForRoot = 0.4f;
|
|
|
| @@ -25,17 +27,18 @@ const float kDimmingLayerOpacityForLockScreen = 0.5f;
|
| } // namespace
|
|
|
| ScreenDimmer::ScreenDimmer(Container container)
|
| - : container_(container),
|
| - is_dimming_(false),
|
| - at_bottom_(false),
|
| - window_dimmers_(base::MakeUnique<WmWindowUserData<WindowDimmer>>()) {
|
| + : container_(container), is_dimming_(false), at_bottom_(false) {
|
| Shell::GetInstance()->AddShellObserver(this);
|
| }
|
|
|
| ScreenDimmer::~ScreenDimmer() {
|
| // Usage in chrome results in ScreenDimmer outliving the shell.
|
| - if (Shell::HasInstance())
|
| - Shell::GetInstance()->RemoveShellObserver(this);
|
| + if (!Shell::HasInstance())
|
| + return;
|
| +
|
| + Shell::GetInstance()->RemoveShellObserver(this);
|
| + for (aura::Window* container : GetAllContainers())
|
| + container->ClearProperty(kWindowDimmerKey);
|
| }
|
|
|
| void ScreenDimmer::SetDimming(bool should_dim) {
|
| @@ -46,9 +49,14 @@ void ScreenDimmer::SetDimming(bool should_dim) {
|
| Update(should_dim);
|
| }
|
|
|
| -std::vector<WmWindow*> ScreenDimmer::GetAllContainers() {
|
| +// static
|
| +WindowDimmer* ScreenDimmer::GetWindowDimmer(aura::Window* window) {
|
| + return window->GetProperty(kWindowDimmerKey);
|
| +}
|
| +
|
| +aura::Window::Windows ScreenDimmer::GetAllContainers() {
|
| return container_ == Container::ROOT
|
| - ? WmShell::Get()->GetAllRootWindows()
|
| + ? Shell::GetAllRootWindows()
|
| : wm::GetContainersFromAllRootWindows(
|
| ash::kShellWindowId_LockScreenContainersContainer);
|
| }
|
| @@ -58,13 +66,12 @@ void ScreenDimmer::OnRootWindowAdded(WmWindow* root_window) {
|
| }
|
|
|
| void ScreenDimmer::Update(bool should_dim) {
|
| - for (WmWindow* container : GetAllContainers()) {
|
| - WindowDimmer* window_dimmer = window_dimmers_->Get(container);
|
| + for (aura::Window* container : GetAllContainers()) {
|
| + WindowDimmer* window_dimmer = container->GetProperty(kWindowDimmerKey);
|
| if (should_dim) {
|
| if (!window_dimmer) {
|
| - window_dimmers_->Set(container,
|
| - base::MakeUnique<WindowDimmer>(container));
|
| - window_dimmer = window_dimmers_->Get(container);
|
| + window_dimmer = new WindowDimmer(container);
|
| + container->SetProperty(kWindowDimmerKey, window_dimmer);
|
| window_dimmer->SetDimOpacity(container_ == Container::ROOT
|
| ? kDimmingLayerOpacityForRoot
|
| : kDimmingLayerOpacityForLockScreen);
|
| @@ -75,7 +82,7 @@ void ScreenDimmer::Update(bool should_dim) {
|
| container->StackChildAtTop(window_dimmer->window());
|
| window_dimmer->window()->Show();
|
| } else if (window_dimmer) {
|
| - window_dimmers_->Set(container, nullptr);
|
| + container->ClearProperty(kWindowDimmerKey);
|
| }
|
| }
|
| }
|
|
|