| OLD | NEW | 
|---|
|  | (Empty) | 
| 1 // Copyright 2015 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 SERVICES_UI_PUBLIC_CPP_WINDOW_MANAGER_DELEGATE_H_ |  | 
| 6 #define SERVICES_UI_PUBLIC_CPP_WINDOW_MANAGER_DELEGATE_H_ |  | 
| 7 |  | 
| 8 #include <stdint.h> |  | 
| 9 |  | 
| 10 #include <map> |  | 
| 11 #include <memory> |  | 
| 12 #include <string> |  | 
| 13 #include <vector> |  | 
| 14 |  | 
| 15 #include "base/callback_forward.h" |  | 
| 16 #include "services/ui/public/interfaces/cursor.mojom.h" |  | 
| 17 #include "services/ui/public/interfaces/window_manager.mojom.h" |  | 
| 18 #include "services/ui/public/interfaces/window_manager_constants.mojom.h" |  | 
| 19 #include "services/ui/public/interfaces/window_tree_constants.mojom.h" |  | 
| 20 #include "ui/events/mojo/event.mojom.h" |  | 
| 21 |  | 
| 22 namespace display { |  | 
| 23 class Display; |  | 
| 24 } |  | 
| 25 |  | 
| 26 namespace gfx { |  | 
| 27 class Insets; |  | 
| 28 class Rect; |  | 
| 29 class Vector2d; |  | 
| 30 } |  | 
| 31 |  | 
| 32 namespace ui { |  | 
| 33 class Event; |  | 
| 34 } |  | 
| 35 |  | 
| 36 namespace ui { |  | 
| 37 |  | 
| 38 class Window; |  | 
| 39 |  | 
| 40 // See the mojom with the same name for details on the functions in this |  | 
| 41 // interface. |  | 
| 42 class WindowManagerClient { |  | 
| 43  public: |  | 
| 44   virtual void SetFrameDecorationValues( |  | 
| 45       mojom::FrameDecorationValuesPtr values) = 0; |  | 
| 46   virtual void SetNonClientCursor(Window* window, |  | 
| 47                                   mojom::Cursor non_client_cursor) = 0; |  | 
| 48 |  | 
| 49   virtual void AddAccelerators(std::vector<mojom::AcceleratorPtr> accelerators, |  | 
| 50                                const base::Callback<void(bool)>& callback) = 0; |  | 
| 51   virtual void RemoveAccelerator(uint32_t id) = 0; |  | 
| 52   virtual void AddActivationParent(Window* window) = 0; |  | 
| 53   virtual void RemoveActivationParent(Window* window) = 0; |  | 
| 54   virtual void ActivateNextWindow() = 0; |  | 
| 55   virtual void SetUnderlaySurfaceOffsetAndExtendedHitArea( |  | 
| 56       Window* window, |  | 
| 57       const gfx::Vector2d& offset, |  | 
| 58       const gfx::Insets& hit_area) = 0; |  | 
| 59 |  | 
| 60  protected: |  | 
| 61   virtual ~WindowManagerClient() {} |  | 
| 62 }; |  | 
| 63 |  | 
| 64 // Used by clients implementing a window manager. |  | 
| 65 // TODO(sky): this should be called WindowManager, but that's rather confusing |  | 
| 66 // currently. |  | 
| 67 class WindowManagerDelegate { |  | 
| 68  public: |  | 
| 69   // Called once to give the delegate access to functions only exposed to |  | 
| 70   // the WindowManager. |  | 
| 71   virtual void SetWindowManagerClient(WindowManagerClient* client) = 0; |  | 
| 72 |  | 
| 73   // A client requested the bounds of |window| to change to |bounds|. Return |  | 
| 74   // true if the bounds are allowed to change. A return value of false |  | 
| 75   // indicates the change is not allowed. |  | 
| 76   // NOTE: This should not change the bounds of |window|. Instead return the |  | 
| 77   // bounds the window should be in |bounds|. |  | 
| 78   virtual bool OnWmSetBounds(Window* window, gfx::Rect* bounds) = 0; |  | 
| 79 |  | 
| 80   // A client requested the shared property named |name| to change to |  | 
| 81   // |new_data|. Return true to allow the change to |new_data|, false |  | 
| 82   // otherwise. |  | 
| 83   virtual bool OnWmSetProperty( |  | 
| 84       Window* window, |  | 
| 85       const std::string& name, |  | 
| 86       std::unique_ptr<std::vector<uint8_t>>* new_data) = 0; |  | 
| 87 |  | 
| 88   // A client has requested a new top level window. The delegate should create |  | 
| 89   // and parent the window appropriately and return it. |properties| is the |  | 
| 90   // supplied properties from the client requesting the new window. The |  | 
| 91   // delegate may modify |properties| before calling NewWindow(), but the |  | 
| 92   // delegate does *not* own |properties|, they are valid only for the life |  | 
| 93   // of OnWmCreateTopLevelWindow(). |  | 
| 94   virtual Window* OnWmCreateTopLevelWindow( |  | 
| 95       std::map<std::string, std::vector<uint8_t>>* properties) = 0; |  | 
| 96 |  | 
| 97   // Called when a Mus client's jankiness changes. |windows| is the set of |  | 
| 98   // windows owned by the window manager in which the client is embedded. |  | 
| 99   virtual void OnWmClientJankinessChanged( |  | 
| 100       const std::set<Window*>& client_windows, |  | 
| 101       bool janky) = 0; |  | 
| 102 |  | 
| 103   // Called when a display is added. |window| is the root of the window tree for |  | 
| 104   // the specified display. |  | 
| 105   virtual void OnWmNewDisplay(Window* window, |  | 
| 106                               const display::Display& display) = 0; |  | 
| 107 |  | 
| 108   // Called when a display is removed. |window| is the root of the display. |  | 
| 109   virtual void OnWmDisplayRemoved(Window* window) = 0; |  | 
| 110 |  | 
| 111   // Called when a display is modified. |  | 
| 112   virtual void OnWmDisplayModified(const display::Display& display) = 0; |  | 
| 113 |  | 
| 114   virtual mojom::EventResult OnAccelerator(uint32_t id, const ui::Event& event); |  | 
| 115 |  | 
| 116   virtual void OnWmPerformMoveLoop( |  | 
| 117       Window* window, |  | 
| 118       ui::mojom::MoveLoopSource source, |  | 
| 119       const gfx::Point& cursor_location, |  | 
| 120       const base::Callback<void(bool)>& on_done) = 0; |  | 
| 121 |  | 
| 122   virtual void OnWmCancelMoveLoop(Window* window) = 0; |  | 
| 123 |  | 
| 124  protected: |  | 
| 125   virtual ~WindowManagerDelegate() {} |  | 
| 126 }; |  | 
| 127 |  | 
| 128 }  // namespace ui |  | 
| 129 |  | 
| 130 #endif  // SERVICES_UI_PUBLIC_CPP_WINDOW_MANAGER_DELEGATE_H_ |  | 
| OLD | NEW | 
|---|