| OLD | NEW |
| (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 #ifndef ASH_AURA_WM_WINDOW_AURA_H_ | |
| 6 #define ASH_AURA_WM_WINDOW_AURA_H_ | |
| 7 | |
| 8 #include "ash/ash_export.h" | |
| 9 #include "ash/common/wm_window.h" | |
| 10 #include "base/macros.h" | |
| 11 #include "base/observer_list.h" | |
| 12 #include "ui/aura/window_observer.h" | |
| 13 #include "ui/wm/core/transient_window_observer.h" | |
| 14 | |
| 15 namespace ash { | |
| 16 | |
| 17 class WmWindowAuraTestApi; | |
| 18 | |
| 19 // WmWindowAura is tied to the life of the underlying aura::Window. Use the | |
| 20 // static Get() function to obtain a WmWindowAura from an aura::Window. | |
| 21 class ASH_EXPORT WmWindowAura : public WmWindow, | |
| 22 public aura::WindowObserver, | |
| 23 public ::wm::TransientWindowObserver { | |
| 24 public: | |
| 25 // NOTE: this class is owned by the corresponding window. You shouldn't delete | |
| 26 // TODO(sky): friend deleter and make private. | |
| 27 ~WmWindowAura() override; | |
| 28 | |
| 29 // Returns a WmWindow for an aura::Window, creating if necessary. |window| may | |
| 30 // be null, in which case null is returned. | |
| 31 static WmWindowAura* Get(aura::Window* window) { | |
| 32 return const_cast<WmWindowAura*>( | |
| 33 Get(const_cast<const aura::Window*>(window))); | |
| 34 } | |
| 35 static const WmWindowAura* Get(const aura::Window* window); | |
| 36 | |
| 37 static std::vector<WmWindow*> FromAuraWindows( | |
| 38 const std::vector<aura::Window*>& aura_windows); | |
| 39 static std::vector<aura::Window*> ToAuraWindows( | |
| 40 const std::vector<WmWindow*>& windows); | |
| 41 | |
| 42 static aura::Window* GetAuraWindow(WmWindow* wm_window) { | |
| 43 return const_cast<aura::Window*>( | |
| 44 GetAuraWindow(const_cast<const WmWindow*>(wm_window))); | |
| 45 } | |
| 46 static const aura::Window* GetAuraWindow(const WmWindow* wm_window); | |
| 47 | |
| 48 aura::Window* aura_window() { return window_; } | |
| 49 const aura::Window* aura_window() const { return window_; } | |
| 50 | |
| 51 // See description of |children_use_extended_hit_region_|. | |
| 52 bool ShouldUseExtendedHitRegion() const; | |
| 53 | |
| 54 wm::WindowState* GetWindowState() { return WmWindow::GetWindowState(); } | |
| 55 | |
| 56 // WmWindow: | |
| 57 void Destroy() override; | |
| 58 const WmWindow* GetRootWindow() const override; | |
| 59 RootWindowController* GetRootWindowController() override; | |
| 60 WmShell* GetShell() const override; | |
| 61 void SetName(const char* name) override; | |
| 62 std::string GetName() const override; | |
| 63 void SetTitle(const base::string16& title) override; | |
| 64 base::string16 GetTitle() const override; | |
| 65 void SetShellWindowId(int id) override; | |
| 66 int GetShellWindowId() const override; | |
| 67 WmWindow* GetChildByShellWindowId(int id) override; | |
| 68 ui::wm::WindowType GetType() const override; | |
| 69 int GetAppType() const override; | |
| 70 void SetAppType(int app_type) const override; | |
| 71 ui::Layer* GetLayer() override; | |
| 72 bool GetLayerTargetVisibility() override; | |
| 73 bool GetLayerVisible() override; | |
| 74 display::Display GetDisplayNearestWindow() override; | |
| 75 bool HasNonClientArea() override; | |
| 76 int GetNonClientComponent(const gfx::Point& location) override; | |
| 77 gfx::Point ConvertPointToTarget(const WmWindow* target, | |
| 78 const gfx::Point& point) const override; | |
| 79 gfx::Point ConvertPointToScreen(const gfx::Point& point) const override; | |
| 80 gfx::Point ConvertPointFromScreen(const gfx::Point& point) const override; | |
| 81 gfx::Rect ConvertRectToScreen(const gfx::Rect& rect) const override; | |
| 82 gfx::Rect ConvertRectFromScreen(const gfx::Rect& rect) const override; | |
| 83 gfx::Size GetMinimumSize() const override; | |
| 84 gfx::Size GetMaximumSize() const override; | |
| 85 bool GetTargetVisibility() const override; | |
| 86 bool IsVisible() const override; | |
| 87 void SetOpacity(float opacity) override; | |
| 88 float GetTargetOpacity() const override; | |
| 89 gfx::Rect GetMinimizeAnimationTargetBoundsInScreen() const override; | |
| 90 void SetTransform(const gfx::Transform& transform) override; | |
| 91 gfx::Transform GetTargetTransform() const override; | |
| 92 bool IsSystemModal() const override; | |
| 93 bool GetBoolProperty(WmWindowProperty key) override; | |
| 94 void SetBoolProperty(WmWindowProperty key, bool value) override; | |
| 95 SkColor GetColorProperty(WmWindowProperty key) override; | |
| 96 void SetColorProperty(WmWindowProperty key, SkColor value) override; | |
| 97 int GetIntProperty(WmWindowProperty key) override; | |
| 98 void SetIntProperty(WmWindowProperty key, int value) override; | |
| 99 std::string GetStringProperty(WmWindowProperty key) override; | |
| 100 void SetStringProperty(WmWindowProperty key, | |
| 101 const std::string& value) override; | |
| 102 gfx::ImageSkia GetWindowIcon() override; | |
| 103 gfx::ImageSkia GetAppIcon() override; | |
| 104 const wm::WindowState* GetWindowState() const override; | |
| 105 WmWindow* GetToplevelWindow() override; | |
| 106 WmWindow* GetToplevelWindowForFocus() override; | |
| 107 void SetParentUsingContext(WmWindow* context, | |
| 108 const gfx::Rect& screen_bounds) override; | |
| 109 void AddChild(WmWindow* window) override; | |
| 110 void RemoveChild(WmWindow* child) override; | |
| 111 const WmWindow* GetParent() const override; | |
| 112 const WmWindow* GetTransientParent() const override; | |
| 113 std::vector<WmWindow*> GetTransientChildren() override; | |
| 114 bool MoveToEventRoot(const ui::Event& event) override; | |
| 115 void SetLayoutManager( | |
| 116 std::unique_ptr<WmLayoutManager> layout_manager) override; | |
| 117 WmLayoutManager* GetLayoutManager() override; | |
| 118 void SetVisibilityChangesAnimated() override; | |
| 119 void SetVisibilityAnimationType(int type) override; | |
| 120 void SetVisibilityAnimationDuration(base::TimeDelta delta) override; | |
| 121 void SetVisibilityAnimationTransition( | |
| 122 ::wm::WindowVisibilityAnimationTransition transition) override; | |
| 123 void Animate(::wm::WindowAnimationType type) override; | |
| 124 void StopAnimatingProperty( | |
| 125 ui::LayerAnimationElement::AnimatableProperty property) override; | |
| 126 void SetChildWindowVisibilityChangesAnimated() override; | |
| 127 void SetMasksToBounds(bool value) override; | |
| 128 void SetBounds(const gfx::Rect& bounds) override; | |
| 129 void SetBoundsWithTransitionDelay(const gfx::Rect& bounds, | |
| 130 base::TimeDelta delta) override; | |
| 131 void SetBoundsDirect(const gfx::Rect& bounds) override; | |
| 132 void SetBoundsDirectAnimated(const gfx::Rect& bounds) override; | |
| 133 void SetBoundsDirectCrossFade(const gfx::Rect& bounds) override; | |
| 134 void SetBoundsInScreen(const gfx::Rect& bounds_in_screen, | |
| 135 const display::Display& dst_display) override; | |
| 136 gfx::Rect GetBoundsInScreen() const override; | |
| 137 const gfx::Rect& GetBounds() const override; | |
| 138 gfx::Rect GetTargetBounds() override; | |
| 139 void ClearRestoreBounds() override; | |
| 140 void SetRestoreBoundsInScreen(const gfx::Rect& bounds) override; | |
| 141 gfx::Rect GetRestoreBoundsInScreen() const override; | |
| 142 bool Contains(const WmWindow* other) const override; | |
| 143 void SetShowState(ui::WindowShowState show_state) override; | |
| 144 ui::WindowShowState GetShowState() const override; | |
| 145 void SetRestoreShowState(ui::WindowShowState show_state) override; | |
| 146 void SetRestoreOverrides(const gfx::Rect& bounds_override, | |
| 147 ui::WindowShowState window_state_override) override; | |
| 148 void SetLockedToRoot(bool value) override; | |
| 149 bool IsLockedToRoot() const override; | |
| 150 void SetCapture() override; | |
| 151 bool HasCapture() override; | |
| 152 void ReleaseCapture() override; | |
| 153 bool HasRestoreBounds() const override; | |
| 154 bool CanMaximize() const override; | |
| 155 bool CanMinimize() const override; | |
| 156 bool CanResize() const override; | |
| 157 bool CanActivate() const override; | |
| 158 void StackChildAtTop(WmWindow* child) override; | |
| 159 void StackChildAtBottom(WmWindow* child) override; | |
| 160 void StackChildAbove(WmWindow* child, WmWindow* target) override; | |
| 161 void StackChildBelow(WmWindow* child, WmWindow* target) override; | |
| 162 void SetPinned(bool trusted) override; | |
| 163 void SetAlwaysOnTop(bool value) override; | |
| 164 bool IsAlwaysOnTop() const override; | |
| 165 void Hide() override; | |
| 166 void Show() override; | |
| 167 views::Widget* GetInternalWidget() override; | |
| 168 void CloseWidget() override; | |
| 169 void SetFocused() override; | |
| 170 bool IsFocused() const override; | |
| 171 bool IsActive() const override; | |
| 172 void Activate() override; | |
| 173 void Deactivate() override; | |
| 174 void SetFullscreen() override; | |
| 175 void Maximize() override; | |
| 176 void Minimize() override; | |
| 177 void Unminimize() override; | |
| 178 std::vector<WmWindow*> GetChildren() override; | |
| 179 void ShowResizeShadow(int component) override; | |
| 180 void HideResizeShadow() override; | |
| 181 void InstallResizeHandleWindowTargeter( | |
| 182 ImmersiveFullscreenController* immersive_fullscreen_controller) override; | |
| 183 void SetBoundsInScreenBehaviorForChildren( | |
| 184 BoundsInScreenBehavior behavior) override; | |
| 185 void SetSnapsChildrenToPhysicalPixelBoundary() override; | |
| 186 void SnapToPixelBoundaryIfNecessary() override; | |
| 187 void SetChildrenUseExtendedHitRegion() override; | |
| 188 std::unique_ptr<views::View> CreateViewWithRecreatedLayers() override; | |
| 189 void AddObserver(WmWindowObserver* observer) override; | |
| 190 void RemoveObserver(WmWindowObserver* observer) override; | |
| 191 bool HasObserver(const WmWindowObserver* observer) const override; | |
| 192 void AddTransientWindowObserver(WmTransientWindowObserver* observer) override; | |
| 193 void RemoveTransientWindowObserver( | |
| 194 WmTransientWindowObserver* observer) override; | |
| 195 void AddLimitedPreTargetHandler(ui::EventHandler* handler) override; | |
| 196 void RemoveLimitedPreTargetHandler(ui::EventHandler* handler) override; | |
| 197 | |
| 198 protected: | |
| 199 explicit WmWindowAura(aura::Window* window); | |
| 200 | |
| 201 // Returns true if a WmWindowAura has been created for |window|. | |
| 202 static bool HasInstance(const aura::Window* window); | |
| 203 | |
| 204 base::ObserverList<WmWindowObserver>& observers() { return observers_; } | |
| 205 | |
| 206 // aura::WindowObserver: | |
| 207 void OnWindowHierarchyChanging(const HierarchyChangeParams& params) override; | |
| 208 void OnWindowHierarchyChanged(const HierarchyChangeParams& params) override; | |
| 209 void OnWindowStackingChanged(aura::Window* window) override; | |
| 210 void OnWindowPropertyChanged(aura::Window* window, | |
| 211 const void* key, | |
| 212 intptr_t old) override; | |
| 213 void OnWindowBoundsChanged(aura::Window* window, | |
| 214 const gfx::Rect& old_bounds, | |
| 215 const gfx::Rect& new_bounds) override; | |
| 216 void OnWindowDestroying(aura::Window* window) override; | |
| 217 void OnWindowDestroyed(aura::Window* window) override; | |
| 218 void OnWindowVisibilityChanging(aura::Window* window, bool visible) override; | |
| 219 void OnWindowVisibilityChanged(aura::Window* window, bool visible) override; | |
| 220 void OnWindowTitleChanged(aura::Window* window) override; | |
| 221 | |
| 222 // ::wm::TransientWindowObserver overrides: | |
| 223 void OnTransientChildAdded(aura::Window* window, | |
| 224 aura::Window* transient) override; | |
| 225 void OnTransientChildRemoved(aura::Window* window, | |
| 226 aura::Window* transient) override; | |
| 227 | |
| 228 private: | |
| 229 friend class WmWindowAuraTestApi; | |
| 230 | |
| 231 aura::Window* window_; | |
| 232 | |
| 233 base::ObserverList<WmWindowObserver> observers_; | |
| 234 | |
| 235 bool added_transient_observer_ = false; | |
| 236 base::ObserverList<WmTransientWindowObserver> transient_observers_; | |
| 237 | |
| 238 // If true child windows should get a slightly larger hit region to make | |
| 239 // resizing easier. | |
| 240 bool children_use_extended_hit_region_ = false; | |
| 241 | |
| 242 // Default value for |use_empty_minimum_size_for_testing_|. | |
| 243 static bool default_use_empty_minimum_size_for_testing_; | |
| 244 | |
| 245 // If true the minimum size is 0x0, default is minimum size comes from widget. | |
| 246 bool use_empty_minimum_size_for_testing_; | |
| 247 | |
| 248 DISALLOW_COPY_AND_ASSIGN(WmWindowAura); | |
| 249 }; | |
| 250 | |
| 251 } // namespace ash | |
| 252 | |
| 253 #endif // ASH_AURA_WM_WINDOW_AURA_H_ | |
| OLD | NEW |