Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(808)

Side by Side Diff: services/ui/ws/display_manager.cc

Issue 2712963003: mustash: Use ui::chromeos::EventRewriter in mus (Closed)
Patch Set: Address review issues. Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "services/ui/ws/display_manager.h" 5 #include "services/ui/ws/display_manager.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/memory/ptr_util.h" 9 #include "base/memory/ptr_util.h"
10 #include "base/trace_event/trace_event.h" 10 #include "base/trace_event/trace_event.h"
11 #include "services/ui/display/viewport_metrics.h" 11 #include "services/ui/display/viewport_metrics.h"
12 #include "services/ui/ws/cursor_location_manager.h" 12 #include "services/ui/ws/cursor_location_manager.h"
13 #include "services/ui/ws/display.h" 13 #include "services/ui/ws/display.h"
14 #include "services/ui/ws/display_binding.h" 14 #include "services/ui/ws/display_binding.h"
15 #include "services/ui/ws/event_dispatcher.h" 15 #include "services/ui/ws/event_dispatcher.h"
16 #include "services/ui/ws/server_window.h" 16 #include "services/ui/ws/server_window.h"
17 #include "services/ui/ws/user_display_manager.h" 17 #include "services/ui/ws/user_display_manager.h"
18 #include "services/ui/ws/user_display_manager_delegate.h" 18 #include "services/ui/ws/user_display_manager_delegate.h"
19 #include "services/ui/ws/user_id_tracker.h" 19 #include "services/ui/ws/user_id_tracker.h"
20 #include "services/ui/ws/window_manager_state.h" 20 #include "services/ui/ws/window_manager_state.h"
21 #include "services/ui/ws/window_manager_window_tree_factory.h" 21 #include "services/ui/ws/window_manager_window_tree_factory.h"
22 #include "services/ui/ws/window_server_delegate.h" 22 #include "services/ui/ws/window_server_delegate.h"
23 #include "services/ui/ws/window_tree.h" 23 #include "services/ui/ws/window_tree.h"
24 #include "ui/events/event_rewriter.h"
25
26 #if defined(OS_CHROMEOS)
27 #include "ui/chromeos/events/event_rewriter_chromeos.h"
28 #endif
24 29
25 namespace ui { 30 namespace ui {
26 namespace ws { 31 namespace ws {
27 32
28 DisplayManager::DisplayManager(WindowServer* window_server, 33 DisplayManager::DisplayManager(WindowServer* window_server,
29 UserIdTracker* user_id_tracker) 34 UserIdTracker* user_id_tracker)
30 // |next_root_id_| is used as the lower bits, so that starting at 0 is 35 // |next_root_id_| is used as the lower bits, so that starting at 0 is
31 // fine. |next_display_id_| is used by itself, so we start at 1 to reserve 36 // fine. |next_display_id_| is used by itself, so we start at 1 to reserve
32 // 0 as invalid. 37 // 0 as invalid.
33 : window_server_(window_server), 38 : window_server_(window_server),
34 user_id_tracker_(user_id_tracker), 39 user_id_tracker_(user_id_tracker),
35 next_root_id_(0) { 40 next_root_id_(0) {
41 #if defined(OS_CHROMEOS)
42 // TODO: http://crbug.com/701468 fix function key preferences and sticky keys.
43 ui::EventRewriterChromeOS::Delegate* delegate = nullptr;
44 ui::EventRewriter* sticky_keys_controller = nullptr;
45 event_rewriter_ = base::MakeUnique<ui::EventRewriterChromeOS>(
46 delegate, sticky_keys_controller);
47 #endif
36 user_id_tracker_->AddObserver(this); 48 user_id_tracker_->AddObserver(this);
37 } 49 }
38 50
39 DisplayManager::~DisplayManager() { 51 DisplayManager::~DisplayManager() {
40 user_id_tracker_->RemoveObserver(this); 52 user_id_tracker_->RemoveObserver(this);
41 DestroyAllDisplays(); 53 DestroyAllDisplays();
42 } 54 }
43 55
44 UserDisplayManager* DisplayManager::GetUserDisplayManager( 56 UserDisplayManager* DisplayManager::GetUserDisplayManager(
45 const UserId& user_id) { 57 const UserId& user_id) {
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
154 DCHECK_LT(id, next_root_id_); 166 DCHECK_LT(id, next_root_id_);
155 return RootWindowId(id); 167 return RootWindowId(id);
156 } 168 }
157 169
158 void DisplayManager::OnDisplayAcceleratedWidgetAvailable(Display* display) { 170 void DisplayManager::OnDisplayAcceleratedWidgetAvailable(Display* display) {
159 DCHECK_NE(0u, pending_displays_.count(display)); 171 DCHECK_NE(0u, pending_displays_.count(display));
160 DCHECK_EQ(0u, displays_.count(display)); 172 DCHECK_EQ(0u, displays_.count(display));
161 const bool is_first_display = displays_.empty(); 173 const bool is_first_display = displays_.empty();
162 displays_.insert(display); 174 displays_.insert(display);
163 pending_displays_.erase(display); 175 pending_displays_.erase(display);
176 if (event_rewriter_)
177 display->platform_display()->AddEventRewriter(event_rewriter_.get());
164 window_server_->OnDisplayReady(display, is_first_display); 178 window_server_->OnDisplayReady(display, is_first_display);
165 } 179 }
166 180
167 void DisplayManager::OnActiveUserIdChanged(const UserId& previously_active_id, 181 void DisplayManager::OnActiveUserIdChanged(const UserId& previously_active_id,
168 const UserId& active_id) { 182 const UserId& active_id) {
169 WindowManagerState* previous_window_manager_state = 183 WindowManagerState* previous_window_manager_state =
170 window_server_->GetWindowManagerStateForUser(previously_active_id); 184 window_server_->GetWindowManagerStateForUser(previously_active_id);
171 gfx::Point mouse_location_on_screen; 185 gfx::Point mouse_location_on_screen;
172 if (previous_window_manager_state) { 186 if (previous_window_manager_state) {
173 mouse_location_on_screen = previous_window_manager_state->event_dispatcher() 187 mouse_location_on_screen = previous_window_manager_state->event_dispatcher()
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
227 DVLOG(3) << "OnPrimaryDisplayChanged: " << primary_display_id; 241 DVLOG(3) << "OnPrimaryDisplayChanged: " << primary_display_id;
228 // TODO(kylechar): Send IPCs to WM clients first. 242 // TODO(kylechar): Send IPCs to WM clients first.
229 243
230 // Send IPCs to any DisplayManagerObservers. 244 // Send IPCs to any DisplayManagerObservers.
231 for (const auto& pair : user_display_managers_) 245 for (const auto& pair : user_display_managers_)
232 pair.second->OnPrimaryDisplayChanged(primary_display_id); 246 pair.second->OnPrimaryDisplayChanged(primary_display_id);
233 } 247 }
234 248
235 } // namespace ws 249 } // namespace ws
236 } // namespace ui 250 } // namespace ui
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698