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

Side by Side Diff: ash/wm/aura/wm_window_aura.cc

Issue 2035543004: Shuffles and renames ash/common/wm classes (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: random changes for chrome tests Created 4 years, 6 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 unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "ash/wm/aura/wm_window_aura.h"
6
7 #include "ash/ash_constants.h"
8 #include "ash/common/wm/window_state.h"
9 #include "ash/common/wm/wm_layout_manager.h"
10 #include "ash/common/wm/wm_window_observer.h"
11 #include "ash/common/wm/wm_window_property.h"
12 #include "ash/screen_util.h"
13 #include "ash/shelf/shelf_util.h"
14 #include "ash/shell.h"
15 #include "ash/wm/aura/aura_layout_manager_adapter.h"
16 #include "ash/wm/aura/wm_globals_aura.h"
17 #include "ash/wm/aura/wm_root_window_controller_aura.h"
18 #include "ash/wm/resize_shadow_controller.h"
19 #include "ash/wm/window_animations.h"
20 #include "ash/wm/window_properties.h"
21 #include "ash/wm/window_state_aura.h"
22 #include "ash/wm/window_util.h"
23 #include "base/memory/ptr_util.h"
24 #include "ui/aura/client/aura_constants.h"
25 #include "ui/aura/client/window_tree_client.h"
26 #include "ui/aura/layout_manager.h"
27 #include "ui/aura/window.h"
28 #include "ui/aura/window_delegate.h"
29 #include "ui/aura/window_property.h"
30 #include "ui/base/hit_test.h"
31 #include "ui/compositor/layer_tree_owner.h"
32 #include "ui/compositor/scoped_layer_animation_settings.h"
33 #include "ui/display/screen.h"
34 #include "ui/gfx/geometry/insets.h"
35 #include "ui/views/widget/widget.h"
36 #include "ui/wm/core/coordinate_conversion.h"
37 #include "ui/wm/core/easy_resize_window_targeter.h"
38 #include "ui/wm/core/visibility_controller.h"
39 #include "ui/wm/core/window_util.h"
40
41 DECLARE_WINDOW_PROPERTY_TYPE(ash::wm::WmWindowAura*);
42
43 namespace ash {
44 namespace wm {
45
46 DEFINE_OWNED_WINDOW_PROPERTY_KEY(ash::wm::WmWindowAura, kWmWindowKey, nullptr);
47
48 namespace {
49
50 // A tentative class to set the bounds on the window.
51 // TODO(oshima): Once all logic is cleaned up, move this to the real layout
52 // manager with proper friendship.
53 class BoundsSetter : public aura::LayoutManager {
54 public:
55 BoundsSetter() {}
56 ~BoundsSetter() override {}
57
58 // aura::LayoutManager overrides:
59 void OnWindowResized() override {}
60 void OnWindowAddedToLayout(aura::Window* child) override {}
61 void OnWillRemoveWindowFromLayout(aura::Window* child) override {}
62 void OnWindowRemovedFromLayout(aura::Window* child) override {}
63 void OnChildWindowVisibilityChanged(aura::Window* child,
64 bool visible) override {}
65 void SetChildBounds(aura::Window* child,
66 const gfx::Rect& requested_bounds) override {}
67
68 void SetBounds(aura::Window* window, const gfx::Rect& bounds) {
69 SetChildBoundsDirect(window, bounds);
70 }
71
72 private:
73 DISALLOW_COPY_AND_ASSIGN(BoundsSetter);
74 };
75
76 } // namespace
77
78 WmWindowAura::WmWindowAura(aura::Window* window)
79 : window_(window),
80 // Mirrors that of aura::Window.
81 observers_(base::ObserverList<WmWindowObserver>::NOTIFY_EXISTING_ONLY) {
82 window_->AddObserver(this);
83 window_->SetProperty(kWmWindowKey, this);
84 }
85
86 // static
87 const WmWindow* WmWindowAura::Get(const aura::Window* window) {
88 if (!window)
89 return nullptr;
90
91 const WmWindow* wm_window = window->GetProperty(kWmWindowKey);
92 if (wm_window)
93 return wm_window;
94 // WmWindowAura is owned by the aura::Window.
95 // TODO(sky): fix constness.
96 return new WmWindowAura(const_cast<aura::Window*>(window));
97 }
98
99 // static
100 std::vector<WmWindow*> WmWindowAura::FromAuraWindows(
101 const std::vector<aura::Window*>& aura_windows) {
102 std::vector<WmWindow*> result(aura_windows.size());
103 for (size_t i = 0; i < aura_windows.size(); ++i)
104 result[i] = Get(aura_windows[i]);
105 return result;
106 }
107
108 // static
109 const aura::Window* WmWindowAura::GetAuraWindow(const WmWindow* wm_window) {
110 return wm_window ? static_cast<const WmWindowAura*>(wm_window)->aura_window()
111 : nullptr;
112 }
113
114 const WmWindow* WmWindowAura::GetRootWindow() const {
115 return Get(window_->GetRootWindow());
116 }
117
118 WmRootWindowController* WmWindowAura::GetRootWindowController() {
119 aura::Window* root = window_->GetRootWindow();
120 return root ? WmRootWindowControllerAura::Get(root) : nullptr;
121 }
122
123 WmGlobals* WmWindowAura::GetGlobals() const {
124 return WmGlobals::Get();
125 }
126
127 void WmWindowAura::SetName(const char* name) {
128 window_->SetName(name);
129 }
130
131 base::string16 WmWindowAura::GetTitle() const {
132 return window_->title();
133 }
134
135 void WmWindowAura::SetShellWindowId(int id) {
136 window_->set_id(id);
137 }
138
139 int WmWindowAura::GetShellWindowId() const {
140 return window_->id();
141 }
142
143 ui::wm::WindowType WmWindowAura::GetType() const {
144 return window_->type();
145 }
146
147 ui::Layer* WmWindowAura::GetLayer() {
148 return window_->layer();
149 }
150
151 display::Display WmWindowAura::GetDisplayNearestWindow() {
152 return display::Screen::GetScreen()->GetDisplayNearestWindow(window_);
153 }
154
155 bool WmWindowAura::HasNonClientArea() {
156 return window_->delegate() ? true : false;
157 }
158
159 int WmWindowAura::GetNonClientComponent(const gfx::Point& location) {
160 return window_->delegate()
161 ? window_->delegate()->GetNonClientComponent(location)
162 : HTNOWHERE;
163 }
164
165 gfx::Point WmWindowAura::ConvertPointToTarget(const WmWindow* target,
166 const gfx::Point& point) const {
167 gfx::Point result(point);
168 aura::Window::ConvertPointToTarget(window_, GetAuraWindow(target), &result);
169 return result;
170 }
171
172 gfx::Point WmWindowAura::ConvertPointToScreen(const gfx::Point& point) const {
173 gfx::Point result(point);
174 ::wm::ConvertPointToScreen(window_, &result);
175 return result;
176 }
177
178 gfx::Point WmWindowAura::ConvertPointFromScreen(const gfx::Point& point) const {
179 gfx::Point result(point);
180 ::wm::ConvertPointFromScreen(window_, &result);
181 return result;
182 }
183
184 gfx::Rect WmWindowAura::ConvertRectToScreen(const gfx::Rect& rect) const {
185 return ScreenUtil::ConvertRectToScreen(window_, rect);
186 }
187
188 gfx::Rect WmWindowAura::ConvertRectFromScreen(const gfx::Rect& rect) const {
189 return ScreenUtil::ConvertRectFromScreen(window_, rect);
190 }
191
192 gfx::Size WmWindowAura::GetMinimumSize() const {
193 return window_->delegate() ? window_->delegate()->GetMinimumSize()
194 : gfx::Size();
195 }
196
197 gfx::Size WmWindowAura::GetMaximumSize() const {
198 return window_->delegate() ? window_->delegate()->GetMaximumSize()
199 : gfx::Size();
200 }
201
202 bool WmWindowAura::GetTargetVisibility() const {
203 return window_->TargetVisibility();
204 }
205
206 bool WmWindowAura::IsVisible() const {
207 return window_->IsVisible();
208 }
209
210 void WmWindowAura::SetOpacity(float opacity) {
211 window_->layer()->SetOpacity(opacity);
212 }
213
214 float WmWindowAura::GetTargetOpacity() const {
215 return window_->layer()->GetTargetOpacity();
216 }
217
218 void WmWindowAura::SetTransform(const gfx::Transform& transform) {
219 window_->SetTransform(transform);
220 }
221
222 gfx::Transform WmWindowAura::GetTargetTransform() const {
223 return window_->layer()->GetTargetTransform();
224 }
225
226 bool WmWindowAura::IsSystemModal() const {
227 return window_->GetProperty(aura::client::kModalKey) == ui::MODAL_TYPE_SYSTEM;
228 }
229
230 bool WmWindowAura::GetBoolProperty(WmWindowProperty key) {
231 switch (key) {
232 case WmWindowProperty::SNAP_CHILDREN_TO_PIXEL_BOUNDARY:
233 return window_->GetProperty(kSnapChildrenToPixelBoundary);
234
235 case WmWindowProperty::ALWAYS_ON_TOP:
236 return window_->GetProperty(aura::client::kAlwaysOnTopKey);
237
238 default:
239 NOTREACHED();
240 break;
241 }
242
243 return false;
244 }
245
246 int WmWindowAura::GetIntProperty(WmWindowProperty key) {
247 if (key == WmWindowProperty::SHELF_ID)
248 return GetShelfIDForWindow(window_);
249
250 if (key == WmWindowProperty::TOP_VIEW_INSET)
251 return window_->GetProperty(aura::client::kTopViewInset);
252
253 NOTREACHED();
254 return 0;
255 }
256
257 const WindowState* WmWindowAura::GetWindowState() const {
258 return ash::wm::GetWindowState(window_);
259 }
260
261 WmWindow* WmWindowAura::GetToplevelWindow() {
262 return Get(window_->GetToplevelWindow());
263 }
264
265 void WmWindowAura::SetParentUsingContext(WmWindow* context,
266 const gfx::Rect& screen_bounds) {
267 aura::client::ParentWindowWithContext(window_, GetAuraWindow(context),
268 screen_bounds);
269 }
270
271 void WmWindowAura::AddChild(WmWindow* window) {
272 window_->AddChild(GetAuraWindow(window));
273 }
274
275 WmWindow* WmWindowAura::GetParent() {
276 return Get(window_->parent());
277 }
278
279 const WmWindow* WmWindowAura::GetTransientParent() const {
280 return Get(::wm::GetTransientParent(window_));
281 }
282
283 std::vector<WmWindow*> WmWindowAura::GetTransientChildren() {
284 return FromAuraWindows(::wm::GetTransientChildren(window_));
285 }
286
287 void WmWindowAura::SetLayoutManager(
288 std::unique_ptr<WmLayoutManager> layout_manager) {
289 // |window_| takes ownership of AuraLayoutManagerAdapter.
290 window_->SetLayoutManager(
291 new AuraLayoutManagerAdapter(std::move(layout_manager)));
292 }
293
294 WmLayoutManager* WmWindowAura::GetLayoutManager() {
295 return static_cast<AuraLayoutManagerAdapter*>(window_->layout_manager())
296 ->wm_layout_manager();
297 }
298
299 void WmWindowAura::SetVisibilityAnimationType(int type) {
300 ::wm::SetWindowVisibilityAnimationType(window_, type);
301 }
302
303 void WmWindowAura::SetVisibilityAnimationDuration(base::TimeDelta delta) {
304 ::wm::SetWindowVisibilityAnimationDuration(window_, delta);
305 }
306
307 void WmWindowAura::SetVisibilityAnimationTransition(
308 ::wm::WindowVisibilityAnimationTransition transition) {
309 ::wm::SetWindowVisibilityAnimationTransition(window_, transition);
310 }
311
312 void WmWindowAura::Animate(::wm::WindowAnimationType type) {
313 ::wm::AnimateWindow(window_, type);
314 }
315
316 void WmWindowAura::StopAnimatingProperty(
317 ui::LayerAnimationElement::AnimatableProperty property) {
318 window_->layer()->GetAnimator()->StopAnimatingProperty(property);
319 }
320
321 void WmWindowAura::SetChildWindowVisibilityChangesAnimated() {
322 ::wm::SetChildWindowVisibilityChangesAnimated(window_);
323 }
324
325 void WmWindowAura::SetMasksToBounds(bool value) {
326 window_->layer()->SetMasksToBounds(value);
327 }
328
329 void WmWindowAura::SetBounds(const gfx::Rect& bounds) {
330 window_->SetBounds(bounds);
331 }
332
333 void WmWindowAura::SetBoundsWithTransitionDelay(const gfx::Rect& bounds,
334 base::TimeDelta delta) {
335 if (::wm::WindowAnimationsDisabled(window_)) {
336 window_->SetBounds(bounds);
337 return;
338 }
339
340 ui::ScopedLayerAnimationSettings settings(window_->layer()->GetAnimator());
341 settings.SetTransitionDuration(delta);
342 window_->SetBounds(bounds);
343 }
344
345 void WmWindowAura::SetBoundsDirect(const gfx::Rect& bounds) {
346 BoundsSetter().SetBounds(window_, bounds);
347 SnapWindowToPixelBoundary(window_);
348 }
349
350 void WmWindowAura::SetBoundsDirectAnimated(const gfx::Rect& bounds) {
351 const int kBoundsChangeSlideDurationMs = 120;
352
353 ui::Layer* layer = window_->layer();
354 ui::ScopedLayerAnimationSettings slide_settings(layer->GetAnimator());
355 slide_settings.SetPreemptionStrategy(
356 ui::LayerAnimator::IMMEDIATELY_ANIMATE_TO_NEW_TARGET);
357 slide_settings.SetTransitionDuration(
358 base::TimeDelta::FromMilliseconds(kBoundsChangeSlideDurationMs));
359 SetBoundsDirect(bounds);
360 }
361
362 void WmWindowAura::SetBoundsDirectCrossFade(const gfx::Rect& bounds) {
363 const gfx::Rect old_bounds = window_->bounds();
364
365 // Create fresh layers for the window and all its children to paint into.
366 // Takes ownership of the old layer and all its children, which will be
367 // cleaned up after the animation completes.
368 // Specify |set_bounds| to true here to keep the old bounds in the child
369 // windows of |window|.
370 std::unique_ptr<ui::LayerTreeOwner> old_layer_owner =
371 ::wm::RecreateLayers(window_, nullptr);
372 ui::Layer* old_layer = old_layer_owner->root();
373 DCHECK(old_layer);
374 ui::Layer* new_layer = window_->layer();
375
376 // Resize the window to the new size, which will force a layout and paint.
377 SetBoundsDirect(bounds);
378
379 // Ensure the higher-resolution layer is on top.
380 bool old_on_top = (old_bounds.width() > bounds.width());
381 if (old_on_top)
382 old_layer->parent()->StackBelow(new_layer, old_layer);
383 else
384 old_layer->parent()->StackAbove(new_layer, old_layer);
385
386 CrossFadeAnimation(window_, std::move(old_layer_owner), gfx::Tween::EASE_OUT);
387 }
388
389 void WmWindowAura::SetBoundsInScreen(const gfx::Rect& bounds_in_screen,
390 const display::Display& dst_display) {
391 window_->SetBoundsInScreen(bounds_in_screen, dst_display);
392 }
393
394 gfx::Rect WmWindowAura::GetBoundsInScreen() const {
395 return window_->GetBoundsInScreen();
396 }
397
398 const gfx::Rect& WmWindowAura::GetBounds() const {
399 return window_->bounds();
400 }
401
402 gfx::Rect WmWindowAura::GetTargetBounds() {
403 return window_->GetTargetBounds();
404 }
405
406 void WmWindowAura::ClearRestoreBounds() {
407 window_->ClearProperty(aura::client::kRestoreBoundsKey);
408 }
409
410 void WmWindowAura::SetRestoreBoundsInScreen(const gfx::Rect& bounds) {
411 window_->SetProperty(aura::client::kRestoreBoundsKey, new gfx::Rect(bounds));
412 }
413
414 gfx::Rect WmWindowAura::GetRestoreBoundsInScreen() const {
415 return *window_->GetProperty(aura::client::kRestoreBoundsKey);
416 }
417
418 bool WmWindowAura::Contains(const WmWindow* other) const {
419 return other
420 ? window_->Contains(
421 static_cast<const WmWindowAura*>(other)->window_)
422 : false;
423 }
424
425 void WmWindowAura::SetShowState(ui::WindowShowState show_state) {
426 window_->SetProperty(aura::client::kShowStateKey, show_state);
427 }
428
429 ui::WindowShowState WmWindowAura::GetShowState() const {
430 return window_->GetProperty(aura::client::kShowStateKey);
431 }
432
433 void WmWindowAura::SetRestoreShowState(ui::WindowShowState show_state) {
434 window_->SetProperty(aura::client::kRestoreShowStateKey, show_state);
435 }
436
437 void WmWindowAura::SetLockedToRoot(bool value) {
438 window_->SetProperty(kStayInSameRootWindowKey, value);
439 }
440
441 void WmWindowAura::SetCapture() {
442 window_->SetCapture();
443 }
444
445 bool WmWindowAura::HasCapture() {
446 return window_->HasCapture();
447 }
448
449 void WmWindowAura::ReleaseCapture() {
450 window_->ReleaseCapture();
451 }
452
453 bool WmWindowAura::HasRestoreBounds() const {
454 return window_->GetProperty(aura::client::kRestoreBoundsKey) != nullptr;
455 }
456
457 bool WmWindowAura::CanMaximize() const {
458 return window_->GetProperty(aura::client::kCanMaximizeKey);
459 }
460
461 bool WmWindowAura::CanMinimize() const {
462 return window_->GetProperty(aura::client::kCanMinimizeKey);
463 }
464
465 bool WmWindowAura::CanResize() const {
466 return window_->GetProperty(aura::client::kCanResizeKey);
467 }
468
469 bool WmWindowAura::CanActivate() const {
470 return ::wm::CanActivateWindow(window_);
471 }
472
473 void WmWindowAura::StackChildAtTop(WmWindow* child) {
474 window_->StackChildAtTop(GetAuraWindow(child));
475 }
476
477 void WmWindowAura::StackChildAtBottom(WmWindow* child) {
478 window_->StackChildAtBottom(GetAuraWindow(child));
479 }
480
481 void WmWindowAura::StackChildAbove(WmWindow* child, WmWindow* target) {
482 window_->StackChildAbove(GetAuraWindow(child), GetAuraWindow(target));
483 }
484
485 void WmWindowAura::StackChildBelow(WmWindow* child, WmWindow* target) {
486 window_->StackChildBelow(GetAuraWindow(child), GetAuraWindow(target));
487 }
488
489 void WmWindowAura::SetAlwaysOnTop(bool value) {
490 window_->SetProperty(aura::client::kAlwaysOnTopKey, value);
491 }
492
493 bool WmWindowAura::IsAlwaysOnTop() const {
494 return window_->GetProperty(aura::client::kAlwaysOnTopKey);
495 }
496
497 void WmWindowAura::Hide() {
498 window_->Hide();
499 }
500
501 void WmWindowAura::Show() {
502 window_->Show();
503 }
504
505 void WmWindowAura::CloseWidget() {
506 DCHECK(views::Widget::GetWidgetForNativeView(window_));
507 views::Widget::GetWidgetForNativeView(window_)->Close();
508 }
509
510 bool WmWindowAura::IsFocused() const {
511 return window_->HasFocus();
512 }
513
514 bool WmWindowAura::IsActive() const {
515 return IsActiveWindow(window_);
516 }
517
518 void WmWindowAura::Activate() {
519 ActivateWindow(window_);
520 }
521
522 void WmWindowAura::Deactivate() {
523 DeactivateWindow(window_);
524 }
525
526 void WmWindowAura::SetFullscreen() {
527 window_->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_FULLSCREEN);
528 }
529
530 void WmWindowAura::Maximize() {
531 return window_->SetProperty(aura::client::kShowStateKey,
532 ui::SHOW_STATE_MAXIMIZED);
533 }
534
535 void WmWindowAura::Minimize() {
536 window_->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_MINIMIZED);
537 }
538
539 void WmWindowAura::Unminimize() {
540 window_->SetProperty(
541 aura::client::kShowStateKey,
542 window_->GetProperty(aura::client::kRestoreShowStateKey));
543 window_->ClearProperty(aura::client::kRestoreShowStateKey);
544 }
545
546 std::vector<WmWindow*> WmWindowAura::GetChildren() {
547 return FromAuraWindows(window_->children());
548 }
549
550 WmWindow* WmWindowAura::GetChildByShellWindowId(int id) {
551 return Get(window_->GetChildById(id));
552 }
553
554 void WmWindowAura::ShowResizeShadow(int component) {
555 ResizeShadowController* resize_shadow_controller =
556 Shell::GetInstance()->resize_shadow_controller();
557 if (resize_shadow_controller)
558 resize_shadow_controller->ShowShadow(window_, component);
559 }
560
561 void WmWindowAura::HideResizeShadow() {
562 ResizeShadowController* resize_shadow_controller =
563 Shell::GetInstance()->resize_shadow_controller();
564 if (resize_shadow_controller)
565 resize_shadow_controller->HideShadow(window_);
566 }
567
568 void WmWindowAura::SetBoundsInScreenBehaviorForChildren(
569 BoundsInScreenBehavior behavior) {
570 window_->SetProperty(
571 kUsesScreenCoordinatesKey,
572 behavior == BoundsInScreenBehavior::USE_SCREEN_COORDINATES);
573 }
574
575 void WmWindowAura::SetSnapsChildrenToPhysicalPixelBoundary() {
576 wm::SetSnapsChildrenToPhysicalPixelBoundary(window_);
577 }
578
579 void WmWindowAura::SnapToPixelBoundaryIfNecessary() {
580 SnapWindowToPixelBoundary(window_);
581 }
582
583 void WmWindowAura::SetChildrenUseExtendedHitRegion() {
584 gfx::Insets mouse_extend(-kResizeOutsideBoundsSize, -kResizeOutsideBoundsSize,
585 -kResizeOutsideBoundsSize,
586 -kResizeOutsideBoundsSize);
587 gfx::Insets touch_extend =
588 mouse_extend.Scale(kResizeOutsideBoundsScaleForTouch);
589 window_->SetEventTargeter(base::WrapUnique(
590 new ::wm::EasyResizeWindowTargeter(window_, mouse_extend, touch_extend)));
591 }
592
593 void WmWindowAura::SetDescendantsStayInSameRootWindow(bool value) {
594 window_->SetProperty(kStayInSameRootWindowKey, true);
595 }
596
597 void WmWindowAura::AddObserver(WmWindowObserver* observer) {
598 observers_.AddObserver(observer);
599 }
600
601 void WmWindowAura::RemoveObserver(WmWindowObserver* observer) {
602 observers_.RemoveObserver(observer);
603 }
604
605 WmWindowAura::~WmWindowAura() {
606 window_->RemoveObserver(this);
607 }
608
609 void WmWindowAura::OnWindowHierarchyChanged(
610 const HierarchyChangeParams& params) {
611 WmWindowObserver::TreeChangeParams wm_params;
612 wm_params.target = Get(params.target);
613 wm_params.new_parent = Get(params.new_parent);
614 wm_params.old_parent = Get(params.old_parent);
615 FOR_EACH_OBSERVER(WmWindowObserver, observers_,
616 OnWindowTreeChanged(this, wm_params));
617 }
618
619 void WmWindowAura::OnWindowStackingChanged(aura::Window* window) {
620 FOR_EACH_OBSERVER(WmWindowObserver, observers_,
621 OnWindowStackingChanged(this));
622 }
623
624 void WmWindowAura::OnWindowPropertyChanged(aura::Window* window,
625 const void* key,
626 intptr_t old) {
627 if (key == aura::client::kShowStateKey) {
628 ash::wm::GetWindowState(window_)->OnWindowShowStateChanged();
629 return;
630 }
631 WmWindowProperty wm_property;
632 if (key == kSnapChildrenToPixelBoundary) {
633 wm_property = WmWindowProperty::SNAP_CHILDREN_TO_PIXEL_BOUNDARY;
634 } else if (key == aura::client::kAlwaysOnTopKey) {
635 wm_property = WmWindowProperty::ALWAYS_ON_TOP;
636 } else if (key == kShelfID) {
637 wm_property = WmWindowProperty::SHELF_ID;
638 } else if (key == aura::client::kTopViewInset) {
639 wm_property = WmWindowProperty::TOP_VIEW_INSET;
640 } else {
641 return;
642 }
643 FOR_EACH_OBSERVER(WmWindowObserver, observers_,
644 OnWindowPropertyChanged(this, wm_property));
645 }
646
647 void WmWindowAura::OnWindowBoundsChanged(aura::Window* window,
648 const gfx::Rect& old_bounds,
649 const gfx::Rect& new_bounds) {
650 FOR_EACH_OBSERVER(WmWindowObserver, observers_,
651 OnWindowBoundsChanged(this, old_bounds, new_bounds));
652 }
653
654 void WmWindowAura::OnWindowDestroying(aura::Window* window) {
655 FOR_EACH_OBSERVER(WmWindowObserver, observers_, OnWindowDestroying(this));
656 }
657
658 void WmWindowAura::OnWindowVisibilityChanging(aura::Window* window,
659 bool visible) {
660 FOR_EACH_OBSERVER(WmWindowObserver, observers_,
661 OnWindowVisibilityChanging(this, visible));
662 }
663
664 void WmWindowAura::OnWindowTitleChanged(aura::Window* window) {
665 FOR_EACH_OBSERVER(WmWindowObserver, observers_, OnWindowTitleChanged(this));
666 }
667
668 } // namespace wm
669 } // namespace ash
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698