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 #include "services/ui/public/cpp/in_flight_change.h" | |
6 | |
7 #include "services/ui/public/cpp/window_private.h" | |
8 #include "services/ui/public/cpp/window_tree_client.h" | |
9 | |
10 namespace ui { | |
11 | |
12 // InFlightChange ------------------------------------------------------------- | |
13 | |
14 InFlightChange::InFlightChange(Window* window, ChangeType type) | |
15 : window_(window), change_type_(type) {} | |
16 | |
17 InFlightChange::~InFlightChange() {} | |
18 | |
19 bool InFlightChange::Matches(const InFlightChange& change) const { | |
20 DCHECK(change.window_ == window_ && change.change_type_ == change_type_); | |
21 return true; | |
22 } | |
23 | |
24 void InFlightChange::ChangeFailed() {} | |
25 | |
26 // InFlightBoundsChange ------------------------------------------------------- | |
27 | |
28 InFlightBoundsChange::InFlightBoundsChange(Window* window, | |
29 const gfx::Rect& revert_bounds) | |
30 : InFlightChange(window, ChangeType::BOUNDS), | |
31 revert_bounds_(revert_bounds) {} | |
32 | |
33 void InFlightBoundsChange::SetRevertValueFrom(const InFlightChange& change) { | |
34 revert_bounds_ = | |
35 static_cast<const InFlightBoundsChange&>(change).revert_bounds_; | |
36 } | |
37 | |
38 void InFlightBoundsChange::Revert() { | |
39 WindowPrivate(window()).LocalSetBounds(window()->bounds(), revert_bounds_); | |
40 } | |
41 | |
42 // InFlightDragChange ----------------------------------------------------- | |
43 | |
44 InFlightDragChange::InFlightDragChange(Window* window, ChangeType type) | |
45 : InFlightChange(window, type) { | |
46 DCHECK(type == ChangeType::MOVE_LOOP || type == ChangeType::DRAG_LOOP); | |
47 } | |
48 | |
49 void InFlightDragChange::SetRevertValueFrom(const InFlightChange& change) {} | |
50 | |
51 void InFlightDragChange::Revert() {} | |
52 | |
53 // CrashInFlightChange -------------------------------------------------------- | |
54 | |
55 CrashInFlightChange::CrashInFlightChange(Window* window, ChangeType type) | |
56 : InFlightChange(window, type) {} | |
57 | |
58 CrashInFlightChange::~CrashInFlightChange() {} | |
59 | |
60 void CrashInFlightChange::SetRevertValueFrom(const InFlightChange& change) { | |
61 CHECK(false); | |
62 } | |
63 | |
64 void CrashInFlightChange::ChangeFailed() { | |
65 DLOG(ERROR) << "changed failed, type=" << static_cast<int>(change_type()); | |
66 CHECK(false); | |
67 } | |
68 | |
69 void CrashInFlightChange::Revert() { | |
70 CHECK(false); | |
71 } | |
72 | |
73 // InFlightWindowChange ------------------------------------------------------- | |
74 | |
75 InFlightWindowTreeClientChange::InFlightWindowTreeClientChange( | |
76 WindowTreeClient* client, | |
77 Window* revert_value, | |
78 ChangeType type) | |
79 : InFlightChange(nullptr, type), | |
80 client_(client), | |
81 revert_window_(nullptr) { | |
82 SetRevertWindow(revert_value); | |
83 } | |
84 | |
85 InFlightWindowTreeClientChange::~InFlightWindowTreeClientChange() { | |
86 SetRevertWindow(nullptr); | |
87 } | |
88 | |
89 void InFlightWindowTreeClientChange::SetRevertValueFrom( | |
90 const InFlightChange& change) { | |
91 SetRevertWindow(static_cast<const InFlightWindowTreeClientChange&>(change) | |
92 .revert_window_); | |
93 } | |
94 | |
95 void InFlightWindowTreeClientChange::SetRevertWindow(Window* window) { | |
96 if (revert_window_) | |
97 revert_window_->RemoveObserver(this); | |
98 revert_window_ = window; | |
99 if (revert_window_) | |
100 revert_window_->AddObserver(this); | |
101 } | |
102 | |
103 void InFlightWindowTreeClientChange::OnWindowDestroying(Window* window) { | |
104 SetRevertWindow(nullptr); | |
105 } | |
106 | |
107 // InFlightCaptureChange ------------------------------------------------------ | |
108 | |
109 InFlightCaptureChange::InFlightCaptureChange( | |
110 WindowTreeClient* client, Window* revert_value) | |
111 : InFlightWindowTreeClientChange(client, | |
112 revert_value, | |
113 ChangeType::CAPTURE) {} | |
114 | |
115 InFlightCaptureChange::~InFlightCaptureChange() {} | |
116 | |
117 void InFlightCaptureChange::Revert() { | |
118 client()->LocalSetCapture(revert_window()); | |
119 } | |
120 | |
121 // InFlightFocusChange -------------------------------------------------------- | |
122 | |
123 InFlightFocusChange::InFlightFocusChange( | |
124 WindowTreeClient* client, | |
125 Window* revert_value) | |
126 : InFlightWindowTreeClientChange(client, | |
127 revert_value, | |
128 ChangeType::FOCUS) {} | |
129 | |
130 InFlightFocusChange::~InFlightFocusChange() {} | |
131 | |
132 void InFlightFocusChange::Revert() { | |
133 client()->LocalSetFocus(revert_window()); | |
134 } | |
135 | |
136 // InFlightPropertyChange ----------------------------------------------------- | |
137 | |
138 InFlightPropertyChange::InFlightPropertyChange( | |
139 Window* window, | |
140 const std::string& property_name, | |
141 const base::Optional<std::vector<uint8_t>>& revert_value) | |
142 : InFlightChange(window, ChangeType::PROPERTY), | |
143 property_name_(property_name), | |
144 revert_value_(revert_value) {} | |
145 | |
146 InFlightPropertyChange::~InFlightPropertyChange() {} | |
147 | |
148 bool InFlightPropertyChange::Matches(const InFlightChange& change) const { | |
149 return static_cast<const InFlightPropertyChange&>(change).property_name_ == | |
150 property_name_; | |
151 } | |
152 | |
153 void InFlightPropertyChange::SetRevertValueFrom(const InFlightChange& change) { | |
154 revert_value_ = | |
155 static_cast<const InFlightPropertyChange&>(change).revert_value_; | |
156 } | |
157 | |
158 void InFlightPropertyChange::Revert() { | |
159 WindowPrivate(window()).LocalSetSharedProperty( | |
160 property_name_, revert_value_ ? &revert_value_.value() : nullptr); | |
161 } | |
162 | |
163 // InFlightPredefinedCursorChange --------------------------------------------- | |
164 | |
165 InFlightPredefinedCursorChange::InFlightPredefinedCursorChange( | |
166 Window* window, | |
167 mojom::Cursor revert_value) | |
168 : InFlightChange(window, ChangeType::PREDEFINED_CURSOR), | |
169 revert_cursor_(revert_value) {} | |
170 | |
171 InFlightPredefinedCursorChange::~InFlightPredefinedCursorChange() {} | |
172 | |
173 void InFlightPredefinedCursorChange::SetRevertValueFrom( | |
174 const InFlightChange& change) { | |
175 revert_cursor_ = | |
176 static_cast<const InFlightPredefinedCursorChange&>(change).revert_cursor_; | |
177 } | |
178 | |
179 void InFlightPredefinedCursorChange::Revert() { | |
180 WindowPrivate(window()).LocalSetPredefinedCursor(revert_cursor_); | |
181 } | |
182 | |
183 // InFlightVisibleChange ------------------------------------------------------- | |
184 | |
185 InFlightVisibleChange::InFlightVisibleChange(Window* window, | |
186 bool revert_value) | |
187 : InFlightChange(window, ChangeType::VISIBLE), | |
188 revert_visible_(revert_value) {} | |
189 | |
190 InFlightVisibleChange::~InFlightVisibleChange() {} | |
191 | |
192 void InFlightVisibleChange::SetRevertValueFrom(const InFlightChange& change) { | |
193 revert_visible_ = | |
194 static_cast<const InFlightVisibleChange&>(change).revert_visible_; | |
195 } | |
196 | |
197 void InFlightVisibleChange::Revert() { | |
198 WindowPrivate(window()).LocalSetVisible(revert_visible_); | |
199 } | |
200 | |
201 // InFlightOpacityChange ------------------------------------------------------- | |
202 | |
203 InFlightOpacityChange::InFlightOpacityChange(Window* window, float revert_value) | |
204 : InFlightChange(window, ChangeType::OPACITY), | |
205 revert_opacity_(revert_value) {} | |
206 | |
207 InFlightOpacityChange::~InFlightOpacityChange() {} | |
208 | |
209 void InFlightOpacityChange::SetRevertValueFrom(const InFlightChange& change) { | |
210 revert_opacity_ = | |
211 static_cast<const InFlightOpacityChange&>(change).revert_opacity_; | |
212 } | |
213 | |
214 void InFlightOpacityChange::Revert() { | |
215 WindowPrivate(window()).LocalSetOpacity(revert_opacity_); | |
216 } | |
217 | |
218 // InFlightSetModalChange ------------------------------------------------------ | |
219 | |
220 InFlightSetModalChange::InFlightSetModalChange(Window* window) | |
221 : InFlightChange(window, ChangeType::SET_MODAL) {} | |
222 | |
223 InFlightSetModalChange::~InFlightSetModalChange() {} | |
224 | |
225 void InFlightSetModalChange::SetRevertValueFrom(const InFlightChange& change) {} | |
226 | |
227 void InFlightSetModalChange::Revert() { | |
228 WindowPrivate(window()).LocalUnsetModal(); | |
229 } | |
230 | |
231 } // namespace ui | |
OLD | NEW |