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