Index: ash/wm/overview/scoped_transform_overview_window.cc |
diff --git a/ash/wm/overview/scoped_transform_overview_window.cc b/ash/wm/overview/scoped_transform_overview_window.cc |
index 39a50cc0a36dfcdc2b38539d01fbc084e0645bc6..003134a6ae51d5e7149501134be9e764b368fcaa 100644 |
--- a/ash/wm/overview/scoped_transform_overview_window.cc |
+++ b/ash/wm/overview/scoped_transform_overview_window.cc |
@@ -13,19 +13,21 @@ |
#include "ash/wm/overview/window_selector_item.h" |
#include "ash/wm/window_mirror_view.h" |
#include "ash/wm/window_state.h" |
+#include "ash/wm/window_util.h" |
#include "ash/wm_window.h" |
#include "base/macros.h" |
#include "base/memory/ptr_util.h" |
#include "base/single_thread_task_runner.h" |
#include "base/threading/thread_task_runner_handle.h" |
#include "ui/aura/client/aura_constants.h" |
+#include "ui/aura/window.h" |
#include "ui/compositor/layer.h" |
#include "ui/gfx/geometry/rect.h" |
#include "ui/gfx/geometry/safe_integer_conversions.h" |
#include "ui/gfx/transform_util.h" |
#include "ui/views/widget/widget.h" |
- |
-using WmWindows = std::vector<ash::WmWindow*>; |
+#include "ui/wm/core/coordinate_conversion.h" |
+#include "ui/wm/core/window_util.h" |
namespace ash { |
@@ -37,20 +39,20 @@ bool immediate_close_for_tests = false; |
// Delay closing window to allow it to shrink and fade out. |
const int kCloseWindowDelayInMilliseconds = 150; |
-WmWindow* GetTransientRoot(WmWindow* window) { |
- while (window && window->GetTransientParent()) |
- window = window->GetTransientParent(); |
+aura::Window* GetTransientRoot(aura::Window* window) { |
+ while (window && ::wm::GetTransientParent(window)) |
+ window = ::wm::GetTransientParent(window); |
return window; |
} |
std::unique_ptr<ScopedOverviewAnimationSettings> |
CreateScopedOverviewAnimationSettings(OverviewAnimationType animation_type, |
- WmWindow* window) { |
+ aura::Window* window) { |
return ScopedOverviewAnimationSettingsFactory::Get() |
->CreateOverviewAnimationSettings(animation_type, window); |
} |
-// An iterator class that traverses a WmWindow and all of its transient |
+// An iterator class that traverses an aura::Window and all of its transient |
// descendants. |
class TransientDescendantIterator { |
public: |
@@ -63,7 +65,7 @@ class TransientDescendantIterator { |
// Iterates over |root_window| and all of its transient descendants. |
// Note |root_window| must not have a transient parent. |
- explicit TransientDescendantIterator(WmWindow* root_window); |
+ explicit TransientDescendantIterator(aura::Window* root_window); |
// Prefix increment operator. This assumes there are more items (i.e. |
// *this != TransientDescendantIterator()). |
@@ -73,7 +75,7 @@ class TransientDescendantIterator { |
bool operator!=(const TransientDescendantIterator& other) const; |
// Dereference operator for STL-compatible iterators. |
- WmWindow* operator*() const; |
+ aura::Window* operator*() const; |
private: |
// Explicit assignment operator defined because an explicit copy constructor |
@@ -83,7 +85,7 @@ class TransientDescendantIterator { |
// The current window that |this| refers to. A null |current_window_| denotes |
// an empty iterator and is used as the last possible value in the traversal. |
- WmWindow* current_window_; |
+ aura::Window* current_window_; |
}; |
// Provides a virtual container implementing begin() and end() for a sequence of |
@@ -113,27 +115,30 @@ class TransientDescendantIteratorRange { |
TransientDescendantIterator::TransientDescendantIterator() |
: current_window_(nullptr) {} |
-TransientDescendantIterator::TransientDescendantIterator(WmWindow* root_window) |
+TransientDescendantIterator::TransientDescendantIterator( |
+ aura::Window* root_window) |
: current_window_(root_window) { |
- DCHECK(!root_window->GetTransientParent()); |
+ DCHECK(!::wm::GetTransientParent(root_window)); |
} |
// Performs a pre-order traversal of the transient descendants. |
const TransientDescendantIterator& TransientDescendantIterator::operator++() { |
DCHECK(current_window_); |
- const WmWindows transient_children = current_window_->GetTransientChildren(); |
+ const aura::Window::Windows transient_children = |
+ ::wm::GetTransientChildren(current_window_); |
if (!transient_children.empty()) { |
current_window_ = transient_children.front(); |
} else { |
while (current_window_) { |
- WmWindow* parent = current_window_->GetTransientParent(); |
+ aura::Window* parent = ::wm::GetTransientParent(current_window_); |
if (!parent) { |
current_window_ = nullptr; |
break; |
} |
- const WmWindows transient_siblings = parent->GetTransientChildren(); |
+ const aura::Window::Windows transient_siblings = |
+ ::wm::GetTransientChildren(parent); |
auto iter = std::find(transient_siblings.begin(), |
transient_siblings.end(), current_window_); |
++iter; |
@@ -141,7 +146,7 @@ const TransientDescendantIterator& TransientDescendantIterator::operator++() { |
current_window_ = *iter; |
break; |
} |
- current_window_ = current_window_->GetTransientParent(); |
+ current_window_ = ::wm::GetTransientParent(current_window_); |
} |
} |
return *this; |
@@ -152,7 +157,7 @@ bool TransientDescendantIterator::operator!=( |
return current_window_ != other.current_window_; |
} |
-WmWindow* TransientDescendantIterator::operator*() const { |
+aura::Window* TransientDescendantIterator::operator*() const { |
return current_window_; |
} |
@@ -160,20 +165,22 @@ TransientDescendantIteratorRange::TransientDescendantIteratorRange( |
const TransientDescendantIterator& begin) |
: begin_(begin) {} |
-TransientDescendantIteratorRange GetTransientTreeIterator(WmWindow* window) { |
+TransientDescendantIteratorRange GetTransientTreeIterator( |
+ aura::Window* window) { |
return TransientDescendantIteratorRange( |
TransientDescendantIterator(GetTransientRoot(window))); |
} |
} // namespace |
-ScopedTransformOverviewWindow::ScopedTransformOverviewWindow(WmWindow* window) |
+ScopedTransformOverviewWindow::ScopedTransformOverviewWindow( |
+ aura::Window* window) |
: window_(window), |
determined_original_window_shape_(false), |
- ignored_by_shelf_(window->GetWindowState()->ignored_by_shelf()), |
+ ignored_by_shelf_(wm::GetWindowState(window)->ignored_by_shelf()), |
overview_started_(false), |
- original_transform_(window->GetTargetTransform()), |
- original_opacity_(window->GetTargetOpacity()), |
+ original_transform_(window->layer()->GetTargetTransform()), |
+ original_opacity_(window->layer()->GetTargetOpacity()), |
weak_ptr_factory_(this) {} |
ScopedTransformOverviewWindow::~ScopedTransformOverviewWindow() {} |
@@ -194,7 +201,7 @@ void ScopedTransformOverviewWindow::RestoreWindow() { |
CreateScopedOverviewAnimationSettings( |
OverviewAnimationType::OVERVIEW_ANIMATION_LAY_OUT_SELECTOR_ITEMS, |
window_); |
- window_->GetWindowState()->set_ignored_by_shelf(ignored_by_shelf_); |
+ wm::GetWindowState(window_)->set_ignored_by_shelf(ignored_by_shelf_); |
SetOpacity(original_opacity_); |
} |
@@ -207,28 +214,29 @@ void ScopedTransformOverviewWindow::BeginScopedAnimation( |
} |
} |
-bool ScopedTransformOverviewWindow::Contains(const WmWindow* target) const { |
+bool ScopedTransformOverviewWindow::Contains(const aura::Window* target) const { |
for (auto* window : GetTransientTreeIterator(window_)) { |
if (window->Contains(target)) |
return true; |
} |
- WmWindow* mirror = GetOverviewWindowForMinimizedState(); |
+ aura::Window* mirror = GetOverviewWindowForMinimizedState(); |
return mirror && mirror->Contains(target); |
} |
gfx::Rect ScopedTransformOverviewWindow::GetTargetBoundsInScreen() const { |
gfx::Rect bounds; |
- WmWindow* overview_window = GetOverviewWindow(); |
+ aura::Window* overview_window = GetOverviewWindow(); |
for (auto* window : GetTransientTreeIterator(overview_window)) { |
// Ignore other window types when computing bounding box of window |
// selector target item. |
if (window != overview_window && |
- window->GetType() != ui::wm::WINDOW_TYPE_NORMAL && |
- window->GetType() != ui::wm::WINDOW_TYPE_PANEL) { |
+ window->type() != ui::wm::WINDOW_TYPE_NORMAL && |
+ window->type() != ui::wm::WINDOW_TYPE_PANEL) { |
continue; |
} |
- bounds.Union( |
- window->GetParent()->ConvertRectToScreen(window->GetTargetBounds())); |
+ gfx::Rect target_bounds = window->GetTargetBounds(); |
+ ::wm::ConvertRectToScreen(window->parent(), &target_bounds); |
+ bounds.Union(target_bounds); |
} |
return bounds; |
} |
@@ -236,19 +244,19 @@ gfx::Rect ScopedTransformOverviewWindow::GetTargetBoundsInScreen() const { |
gfx::Rect ScopedTransformOverviewWindow::GetTransformedBounds() const { |
const int top_inset = GetTopInset(); |
gfx::Rect bounds; |
- WmWindow* overview_window = GetOverviewWindow(); |
+ aura::Window* overview_window = GetOverviewWindow(); |
for (auto* window : GetTransientTreeIterator(overview_window)) { |
// Ignore other window types when computing bounding box of window |
// selector target item. |
if (window != overview_window && |
- (window->GetType() != ui::wm::WINDOW_TYPE_NORMAL && |
- window->GetType() != ui::wm::WINDOW_TYPE_PANEL)) { |
+ (window->type() != ui::wm::WINDOW_TYPE_NORMAL && |
+ window->type() != ui::wm::WINDOW_TYPE_PANEL)) { |
continue; |
} |
gfx::RectF window_bounds(window->GetTargetBounds()); |
gfx::Transform new_transform = |
TransformAboutPivot(gfx::Point(window_bounds.x(), window_bounds.y()), |
- window->GetTargetTransform()); |
+ window->layer()->GetTargetTransform()); |
new_transform.TransformRect(&window_bounds); |
// The preview title is shown above the preview window. Hide the window |
@@ -260,8 +268,9 @@ gfx::Rect ScopedTransformOverviewWindow::GetTransformedBounds() const { |
new_transform.TransformRect(&header_bounds); |
window_bounds.Inset(0, gfx::ToCeiledInt(header_bounds.height()), 0, 0); |
} |
- bounds.Union(window->GetParent()->ConvertRectToScreen( |
- ToEnclosingRect(window_bounds))); |
+ gfx::Rect enclosing_bounds = ToEnclosingRect(window_bounds); |
+ ::wm::ConvertRectToScreen(window->parent(), &enclosing_bounds); |
+ bounds.Union(enclosing_bounds); |
} |
return bounds; |
} |
@@ -270,12 +279,12 @@ SkColor ScopedTransformOverviewWindow::GetTopColor() const { |
for (auto* window : GetTransientTreeIterator(window_)) { |
// If there are regular windows in the transient ancestor tree, all those |
// windows are shown in the same overview item and the header is not masked. |
- if (window != window_ && (window->GetType() == ui::wm::WINDOW_TYPE_NORMAL || |
- window->GetType() == ui::wm::WINDOW_TYPE_PANEL)) { |
+ if (window != window_ && (window->type() == ui::wm::WINDOW_TYPE_NORMAL || |
+ window->type() == ui::wm::WINDOW_TYPE_PANEL)) { |
return SK_ColorTRANSPARENT; |
} |
} |
- return window_->aura_window()->GetProperty(aura::client::kTopViewColor); |
+ return window_->GetProperty(aura::client::kTopViewColor); |
} |
int ScopedTransformOverviewWindow::GetTopInset() const { |
@@ -285,12 +294,12 @@ int ScopedTransformOverviewWindow::GetTopInset() const { |
for (auto* window : GetTransientTreeIterator(window_)) { |
// If there are regular windows in the transient ancestor tree, all those |
// windows are shown in the same overview item and the header is not masked. |
- if (window != window_ && (window->GetType() == ui::wm::WINDOW_TYPE_NORMAL || |
- window->GetType() == ui::wm::WINDOW_TYPE_PANEL)) { |
+ if (window != window_ && (window->type() == ui::wm::WINDOW_TYPE_NORMAL || |
+ window->type() == ui::wm::WINDOW_TYPE_PANEL)) { |
return 0; |
} |
} |
- return window_->aura_window()->GetProperty(aura::client::kTopViewInset); |
+ return window_->GetProperty(aura::client::kTopViewInset); |
} |
void ScopedTransformOverviewWindow::OnWindowDestroyed() { |
@@ -337,35 +346,34 @@ gfx::Transform ScopedTransformOverviewWindow::GetTransformForRect( |
} |
void ScopedTransformOverviewWindow::SetTransform( |
- WmWindow* root_window, |
+ aura::Window* root_window, |
const gfx::Transform& transform) { |
DCHECK(overview_started_); |
if (&transform != &original_transform_ && |
!determined_original_window_shape_) { |
determined_original_window_shape_ = true; |
- SkRegion* window_shape = window()->GetLayer()->alpha_shape(); |
+ SkRegion* window_shape = window()->layer()->alpha_shape(); |
if (!original_window_shape_ && window_shape) |
original_window_shape_.reset(new SkRegion(*window_shape)); |
} |
gfx::Point target_origin(GetTargetBoundsInScreen().origin()); |
for (auto* window : GetTransientTreeIterator(GetOverviewWindow())) { |
- WmWindow* parent_window = window->GetParent(); |
- gfx::Point original_origin = |
- parent_window->ConvertRectToScreen(window->GetTargetBounds()).origin(); |
+ aura::Window* parent_window = window->parent(); |
+ gfx::Rect original_bounds(window->GetTargetBounds()); |
+ ::wm::ConvertRectToScreen(parent_window, &original_bounds); |
gfx::Transform new_transform = |
- TransformAboutPivot(gfx::Point(target_origin.x() - original_origin.x(), |
- target_origin.y() - original_origin.y()), |
+ TransformAboutPivot(gfx::Point(target_origin.x() - original_bounds.x(), |
+ target_origin.y() - original_bounds.y()), |
transform); |
window->SetTransform(new_transform); |
} |
} |
void ScopedTransformOverviewWindow::SetOpacity(float opacity) { |
- for (auto* window : GetTransientTreeIterator(GetOverviewWindow())) { |
- window->SetOpacity(opacity); |
- } |
+ for (auto* window : GetTransientTreeIterator(GetOverviewWindow())) |
+ window->layer()->SetOpacity(opacity); |
} |
void ScopedTransformOverviewWindow::HideHeader() { |
@@ -381,26 +389,27 @@ void ScopedTransformOverviewWindow::HideHeader() { |
region->setRect(RectToSkIRect(bounds)); |
if (original_window_shape_) |
region->op(*original_window_shape_, SkRegion::kIntersect_Op); |
- WmWindow* window = GetOverviewWindow(); |
- window->GetLayer()->SetAlphaShape(std::move(region)); |
- window->SetMasksToBounds(true); |
+ aura::Window* window = GetOverviewWindow(); |
+ window->layer()->SetAlphaShape(std::move(region)); |
+ window->layer()->SetMasksToBounds(true); |
} |
} |
void ScopedTransformOverviewWindow::ShowHeader() { |
- ui::Layer* layer = window()->GetLayer(); |
+ ui::Layer* layer = window()->layer(); |
if (original_window_shape_) { |
layer->SetAlphaShape( |
base::MakeUnique<SkRegion>(*original_window_shape_.get())); |
} else { |
layer->SetAlphaShape(nullptr); |
} |
- window()->SetMasksToBounds(false); |
+ layer->SetMasksToBounds(false); |
} |
void ScopedTransformOverviewWindow::UpdateMirrorWindowForMinimizedState() { |
// TODO(oshima): Disable animation. |
- if (window_->GetShowState() == ui::SHOW_STATE_MINIMIZED) { |
+ if (window_->GetProperty(aura::client::kShowStateKey) == |
+ ui::SHOW_STATE_MINIMIZED) { |
if (!minimized_widget_) |
CreateMirrorWindowForMinimizedState(); |
} else { |
@@ -423,13 +432,15 @@ void ScopedTransformOverviewWindow::Close() { |
void ScopedTransformOverviewWindow::PrepareForOverview() { |
DCHECK(!overview_started_); |
overview_started_ = true; |
- window_->GetWindowState()->set_ignored_by_shelf(true); |
- if (window_->GetShowState() == ui::SHOW_STATE_MINIMIZED) |
+ wm::GetWindowState(window_)->set_ignored_by_shelf(true); |
+ if (window_->GetProperty(aura::client::kShowStateKey) == |
+ ui::SHOW_STATE_MINIMIZED) { |
CreateMirrorWindowForMinimizedState(); |
+ } |
} |
void ScopedTransformOverviewWindow::CloseWidget() { |
- WmWindow* parent_window = GetTransientRoot(window_); |
+ WmWindow* parent_window = WmWindow::Get(GetTransientRoot(window_)); |
if (parent_window) |
parent_window->CloseWidget(); |
} |
@@ -439,7 +450,7 @@ void ScopedTransformOverviewWindow::SetImmediateCloseForTests() { |
immediate_close_for_tests = true; |
} |
-WmWindow* ScopedTransformOverviewWindow::GetOverviewWindow() const { |
+aura::Window* ScopedTransformOverviewWindow::GetOverviewWindow() const { |
if (minimized_widget_) |
return GetOverviewWindowForMinimizedState(); |
return window_; |
@@ -453,7 +464,7 @@ void ScopedTransformOverviewWindow::OnGestureEvent(ui::GestureEvent* event) { |
if (event->type() == ui::ET_GESTURE_TAP) { |
EnsureVisible(); |
window_->Show(); |
- window_->Activate(); |
+ wm::ActivateWindow(window_); |
} |
} |
@@ -461,14 +472,13 @@ void ScopedTransformOverviewWindow::OnMouseEvent(ui::MouseEvent* event) { |
if (event->type() == ui::ET_MOUSE_PRESSED && event->IsOnlyLeftMouseButton()) { |
EnsureVisible(); |
window_->Show(); |
- window_->Activate(); |
+ wm::ActivateWindow(window_); |
} |
} |
-WmWindow* ScopedTransformOverviewWindow::GetOverviewWindowForMinimizedState() |
- const { |
- return minimized_widget_ ? WmWindow::Get(minimized_widget_->GetNativeWindow()) |
- : nullptr; |
+aura::Window* |
+ScopedTransformOverviewWindow::GetOverviewWindowForMinimizedState() const { |
+ return minimized_widget_ ? minimized_widget_->GetNativeWindow() : nullptr; |
} |
void ScopedTransformOverviewWindow::CreateMirrorWindowForMinimizedState() { |
@@ -481,15 +491,13 @@ void ScopedTransformOverviewWindow::CreateMirrorWindowForMinimizedState() { |
params.activatable = views::Widget::InitParams::Activatable::ACTIVATABLE_NO; |
params.accept_events = true; |
minimized_widget_.reset(new views::Widget); |
- window_->GetRootWindow() |
- ->GetRootWindowController() |
- ->ConfigureWidgetInitParamsForContainer( |
- minimized_widget_.get(), window_->GetParent()->aura_window()->id(), |
- ¶ms); |
+ RootWindowController::ForWindow(window_->GetRootWindow()) |
+ ->ConfigureWidgetInitParamsForContainer(minimized_widget_.get(), |
+ window_->parent()->id(), ¶ms); |
minimized_widget_->set_focus_on_creation(false); |
minimized_widget_->Init(params); |
- views::View* mirror_view = new wm::WindowMirrorView(window_->aura_window()); |
+ views::View* mirror_view = new wm::WindowMirrorView(window_); |
mirror_view->SetVisible(true); |
mirror_view->SetTargetHandler(this); |
minimized_widget_->SetContentsView(mirror_view); |