1 // Copyright 2014 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/wm_event.h"
6
7 namespace ash {
8
WMEvent(WMEventType type)9 WMEvent::WMEvent(WMEventType type) : type_(type) {
10 DCHECK(IsWorkspaceEvent() || IsCompoundEvent() || IsBoundsEvent() ||
11 IsTransitionEvent());
12 }
13
14 WMEvent::~WMEvent() = default;
15
IsWorkspaceEvent() const16 bool WMEvent::IsWorkspaceEvent() const {
17 switch (type_) {
18 case WM_EVENT_ADDED_TO_WORKSPACE:
19 case WM_EVENT_WORKAREA_BOUNDS_CHANGED:
20 case WM_EVENT_DISPLAY_BOUNDS_CHANGED:
21 case WM_EVENT_SYSTEM_UI_AREA_CHANGED:
22 return true;
23 default:
24 break;
25 }
26 return false;
27 }
28
IsCompoundEvent() const29 bool WMEvent::IsCompoundEvent() const {
30 switch (type_) {
31 case WM_EVENT_TOGGLE_MAXIMIZE_CAPTION:
32 case WM_EVENT_TOGGLE_MAXIMIZE:
33 case WM_EVENT_TOGGLE_VERTICAL_MAXIMIZE:
34 case WM_EVENT_TOGGLE_HORIZONTAL_MAXIMIZE:
35 case WM_EVENT_TOGGLE_FULLSCREEN:
36 case WM_EVENT_CYCLE_SNAP_LEFT:
37 case WM_EVENT_CYCLE_SNAP_RIGHT:
38 return true;
39 default:
40 break;
41 }
42 return false;
43 }
44
IsPinEvent() const45 bool WMEvent::IsPinEvent() const {
46 switch (type_) {
47 case WM_EVENT_PIN:
48 case WM_EVENT_TRUSTED_PIN:
49 return true;
50 default:
51 break;
52 }
53 return false;
54 }
55
IsBoundsEvent() const56 bool WMEvent::IsBoundsEvent() const {
57 switch (type_) {
58 case WM_EVENT_SET_BOUNDS:
59 case WM_EVENT_CENTER:
60 return true;
61 default:
62 break;
63 }
64 return false;
65 }
66
IsTransitionEvent() const67 bool WMEvent::IsTransitionEvent() const {
68 switch (type_) {
69 case WM_EVENT_NORMAL:
70 case WM_EVENT_MAXIMIZE:
71 case WM_EVENT_MINIMIZE:
72 case WM_EVENT_FULLSCREEN:
73 case WM_EVENT_SNAP_LEFT:
74 case WM_EVENT_SNAP_RIGHT:
75 case WM_EVENT_SHOW_INACTIVE:
76 case WM_EVENT_PIN:
77 case WM_EVENT_TRUSTED_PIN:
78 case WM_EVENT_PIP:
79 return true;
80 default:
81 break;
82 }
83 return false;
84 }
85
AsDisplayMetricsChangedWMEvent() const86 const DisplayMetricsChangedWMEvent* WMEvent::AsDisplayMetricsChangedWMEvent()
87 const {
88 DCHECK_EQ(type(), WM_EVENT_DISPLAY_BOUNDS_CHANGED);
89 return static_cast<const DisplayMetricsChangedWMEvent*>(this);
90 }
91
SetBoundsWMEvent(const gfx::Rect & bounds,bool animate,base::TimeDelta duration)92 SetBoundsWMEvent::SetBoundsWMEvent(const gfx::Rect& bounds,
93 bool animate,
94 base::TimeDelta duration)
95 : WMEvent(WM_EVENT_SET_BOUNDS),
96 requested_bounds_(bounds),
97 animate_(animate),
98 duration_(duration) {}
99
SetBoundsWMEvent(const gfx::Rect & requested_bounds,int64_t display_id)100 SetBoundsWMEvent::SetBoundsWMEvent(const gfx::Rect& requested_bounds,
101 int64_t display_id)
102 : WMEvent(WM_EVENT_SET_BOUNDS),
103 requested_bounds_(requested_bounds),
104 display_id_(display_id),
105 animate_(false) {}
106
107 SetBoundsWMEvent::~SetBoundsWMEvent() = default;
108
DisplayMetricsChangedWMEvent(int changed_metrics)109 DisplayMetricsChangedWMEvent::DisplayMetricsChangedWMEvent(int changed_metrics)
110 : WMEvent(WM_EVENT_DISPLAY_BOUNDS_CHANGED),
111 changed_metrics_(changed_metrics) {}
112
113 DisplayMetricsChangedWMEvent::~DisplayMetricsChangedWMEvent() = default;
114
115 } // namespace ash
116