forked from chromium/chromium
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathwm_helper.h
121 lines (99 loc) · 3.95 KB
/
wm_helper.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
// Copyright 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef COMPONENTS_EXO_WM_HELPER_H_
#define COMPONENTS_EXO_WM_HELPER_H_
#include "ash/display/window_tree_host_manager.h"
#include "base/macros.h"
#include "base/observer_list.h"
#include "ui/aura/client/drag_drop_delegate.h"
#include "ui/base/cursor/cursor.h"
#include "ui/compositor/compositor_vsync_manager.h"
namespace ash {
class TabletModeObserver;
}
namespace aura {
class Window;
namespace client {
class CursorClient;
class FocusChangeObserver;
} // namespace client
} // namespace aura
namespace wm {
class ActivationChangeObserver;
}
namespace display {
class ManagedDisplayInfo;
}
namespace ui {
class EventHandler;
class DropTargetEvent;
class InputDeviceEventObserver;
} // namespace ui
namespace wm {
class ActivationChangeObserver;
}
namespace exo {
// A helper class for accessing WindowManager related features.
class WMHelper : public aura::client::DragDropDelegate {
public:
class DragDropObserver {
public:
virtual void OnDragEntered(const ui::DropTargetEvent& event) = 0;
virtual int OnDragUpdated(const ui::DropTargetEvent& event) = 0;
virtual void OnDragExited() = 0;
virtual int OnPerformDrop(const ui::DropTargetEvent& event) = 0;
protected:
virtual ~DragDropObserver() {}
};
WMHelper();
~WMHelper() override;
static void SetInstance(WMHelper* helper);
static WMHelper* GetInstance();
static bool HasInstance();
void AddActivationObserver(wm::ActivationChangeObserver* observer);
void RemoveActivationObserver(wm::ActivationChangeObserver* observer);
void AddFocusObserver(aura::client::FocusChangeObserver* observer);
void RemoveFocusObserver(aura::client::FocusChangeObserver* observer);
void AddTabletModeObserver(ash::TabletModeObserver* observer);
void RemoveTabletModeObserver(ash::TabletModeObserver* observer);
void AddInputDeviceEventObserver(ui::InputDeviceEventObserver* observer);
void RemoveInputDeviceEventObserver(ui::InputDeviceEventObserver* observer);
void AddDisplayConfigurationObserver(
ash::WindowTreeHostManager::Observer* observer);
void RemoveDisplayConfigurationObserver(
ash::WindowTreeHostManager::Observer* observer);
void AddDragDropObserver(DragDropObserver* observer);
void RemoveDragDropObserver(DragDropObserver* observer);
void SetDragDropDelegate(aura::Window*);
void ResetDragDropDelegate(aura::Window*);
void AddVSyncObserver(ui::CompositorVSyncManager::Observer* observer);
void RemoveVSyncObserver(ui::CompositorVSyncManager::Observer* observer);
const display::ManagedDisplayInfo& GetDisplayInfo(int64_t display_id) const;
aura::Window* GetPrimaryDisplayContainer(int container_id);
aura::Window* GetActiveWindow() const;
aura::Window* GetFocusedWindow() const;
aura::client::CursorClient* GetCursorClient();
void AddPreTargetHandler(ui::EventHandler* handler);
void PrependPreTargetHandler(ui::EventHandler* handler);
void RemovePreTargetHandler(ui::EventHandler* handler);
void AddPostTargetHandler(ui::EventHandler* handler);
void RemovePostTargetHandler(ui::EventHandler* handler);
bool IsTabletModeWindowManagerEnabled() const;
double GetDefaultDeviceScaleFactor() const;
bool AreVerifiedSyncTokensNeeded() const;
// Overridden from aura::client::DragDropDelegate:
void OnDragEntered(const ui::DropTargetEvent& event) override;
int OnDragUpdated(const ui::DropTargetEvent& event) override;
void OnDragExited() override;
int OnPerformDrop(const ui::DropTargetEvent& event) override;
private:
base::ObserverList<DragDropObserver> drag_drop_observers_;
// The most recently cached VSync parameters, sent to observers on addition.
base::TimeTicks vsync_timebase_;
base::TimeDelta vsync_interval_;
scoped_refptr<ui::CompositorVSyncManager> vsync_manager_;
DISALLOW_COPY_AND_ASSIGN(WMHelper);
};
} // namespace exo
#endif // COMPONENTS_EXO_WM_HELPER_H_