Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2172)

Unified Diff: ash/wm/screen_pinning_controller.cc

Issue 2735983006: Renames WmWindowUserData and converts to using aura (Closed)
Patch Set: moor aura Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ash/wm/screen_pinning_controller.cc
diff --git a/ash/wm/screen_pinning_controller.cc b/ash/wm/screen_pinning_controller.cc
index 10f55528a0b490b2a2d7287233e6ba60411774c5..7a0e1224df87f0126f012836c1a10f49aa138b93 100644
--- a/ash/wm/screen_pinning_controller.cc
+++ b/ash/wm/screen_pinning_controller.cc
@@ -11,18 +11,21 @@
#include "ash/common/wm/window_dimmer.h"
#include "ash/common/wm/window_state.h"
#include "ash/common/wm_window.h"
-#include "ash/common/wm_window_user_data.h"
#include "ash/display/window_tree_host_manager.h"
#include "ash/public/cpp/shell_window_ids.h"
#include "ash/shell.h"
#include "base/auto_reset.h"
#include "base/logging.h"
#include "base/memory/ptr_util.h"
+#include "ui/aura/window.h"
#include "ui/aura/window_observer.h"
+#include "ui/wm/core/window_util.h"
namespace ash {
namespace {
+DEFINE_OWNED_UI_CLASS_PROPERTY_KEY(WindowDimmer, kWindowDimmerKey, nullptr);
+
// Returns a list of WmWindows corresponding to SystemModalContainers,
// except ones whose root is shared with |pinned_window|.
std::vector<WmWindow*> GetSystemModalWindowsExceptPinned(
@@ -30,11 +33,11 @@ std::vector<WmWindow*> GetSystemModalWindowsExceptPinned(
WmWindow* pinned_root = pinned_window->GetRootWindow();
std::vector<WmWindow*> result;
- for (WmWindow* system_modal : wm::GetContainersFromAllRootWindows(
+ for (aura::Window* system_modal : wm::GetContainersFromAllRootWindows(
kShellWindowId_SystemModalContainer)) {
- if (system_modal->GetRootWindow() == pinned_root)
+ if (WmWindow::Get(system_modal)->GetRootWindow() == pinned_root)
continue;
- result.push_back(system_modal);
+ result.push_back(WmWindow::Get(system_modal));
}
return result;
}
@@ -142,8 +145,7 @@ class ScreenPinningController::SystemModalContainerWindowObserver
ScreenPinningController::ScreenPinningController(
WindowTreeHostManager* window_tree_host_manager)
- : window_dimmers_(base::MakeUnique<WmWindowUserData<WindowDimmer>>()),
- window_tree_host_manager_(window_tree_host_manager),
+ : window_tree_host_manager_(window_tree_host_manager),
pinned_container_window_observer_(
base::MakeUnique<PinnedContainerWindowObserver>(this)),
pinned_container_child_window_observer_(
@@ -164,7 +166,9 @@ bool ScreenPinningController::IsPinned() const {
}
void ScreenPinningController::SetPinnedWindow(WmWindow* pinned_window) {
- window_dimmers_->clear();
+ for (aura::Window* window : windows_with_dimmers_.windows())
+ window->ClearProperty(kWindowDimmerKey);
+ windows_with_dimmers_.RemoveAll();
if (pinned_window->GetWindowState()->IsPinned()) {
if (pinned_window_) {
@@ -270,12 +274,15 @@ void ScreenPinningController::OnSystemModalContainerWindowStackingChanged(
WmWindow* ScreenPinningController::CreateWindowDimmer(WmWindow* container) {
std::unique_ptr<WindowDimmer> window_dimmer =
- base::MakeUnique<WindowDimmer>(container);
+ base::MakeUnique<WindowDimmer>(container->aura_window());
window_dimmer->SetDimOpacity(1); // Fully opaque.
- window_dimmer->window()->SetFullscreen(true);
+ ::wm::SetWindowFullscreen(window_dimmer->window(), true);
window_dimmer->window()->Show();
- WmWindow* window = window_dimmer->window();
- window_dimmers_->Set(container, std::move(window_dimmer));
+ WmWindow* window = WmWindow::Get(window_dimmer->window());
+ // |container| takes ownership of |window_dimmer|.
+ container->aura_window()->SetProperty(kWindowDimmerKey,
+ window_dimmer.release());
+ windows_with_dimmers_.Add(container->aura_window());
return window;
}
@@ -292,10 +299,17 @@ void ScreenPinningController::OnDisplayConfigurationChanged() {
// WindowDimmer. So create it.
// First, delete unnecessary WindowDimmers.
- for (WmWindow* container : window_dimmers_->GetWindows()) {
- if (container != pinned_window_->GetParent() &&
- !window_dimmers_->Get(container)->window()->GetTargetVisibility()) {
- window_dimmers_->Set(container, nullptr);
+ {
+ aura::Window::Windows windows = windows_with_dimmers_.windows();
+ for (aura::Window* container : windows) {
+ if (WmWindow::Get(container) != pinned_window_->GetParent() &&
+ container->GetProperty(kWindowDimmerKey)
+ ->window()
+ ->layer()
+ ->GetTargetVisibility()) {
+ windows_with_dimmers_.Remove(container);
+ container->ClearProperty(kWindowDimmerKey);
+ }
}
}
@@ -303,7 +317,7 @@ void ScreenPinningController::OnDisplayConfigurationChanged() {
std::vector<WmWindow*> system_modal_containers =
GetSystemModalWindowsExceptPinned(pinned_window_);
for (WmWindow* system_modal : system_modal_containers) {
- if (window_dimmers_->Get(system_modal)) {
+ if (system_modal->aura_window()->GetProperty(kWindowDimmerKey)) {
// |system_modal| already has a WindowDimmer.
continue;
}
@@ -326,19 +340,23 @@ void ScreenPinningController::KeepPinnedWindowOnTop() {
base::AutoReset<bool> auto_reset(&in_restacking_, true);
WmWindow* container = pinned_window_->GetParent();
container->StackChildAtTop(pinned_window_);
- WindowDimmer* pinned_window_dimmer = window_dimmers_->Get(container);
- if (pinned_window_dimmer && pinned_window_dimmer->window())
- container->StackChildBelow(pinned_window_dimmer->window(), pinned_window_);
+ WindowDimmer* pinned_window_dimmer =
+ container->aura_window()->GetProperty(kWindowDimmerKey);
+ if (pinned_window_dimmer && pinned_window_dimmer->window()) {
+ container->StackChildBelow(WmWindow::Get(pinned_window_dimmer->window()),
+ pinned_window_);
+ }
}
void ScreenPinningController::KeepDimWindowAtBottom(WmWindow* container) {
if (in_restacking_)
return;
- WindowDimmer* window_dimmer = window_dimmers_->Get(container);
+ WindowDimmer* window_dimmer =
+ container->aura_window()->GetProperty(kWindowDimmerKey);
if (window_dimmer) {
base::AutoReset<bool> auto_reset(&in_restacking_, true);
- container->StackChildAtBottom(window_dimmer->window());
+ container->StackChildAtBottom(WmWindow::Get(window_dimmer->window()));
}
}

Powered by Google App Engine
This is Rietveld 408576698