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

Side by Side Diff: components/mus/ws/display.cc

Issue 1987133002: Delete mus surfaces hit testing (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix unittests Created 4 years, 7 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
« no previous file with comments | « components/mus/ws/display.h ('k') | components/mus/ws/event_dispatcher.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 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 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 "components/mus/ws/display.h" 5 #include "components/mus/ws/display.h"
6 6
7 #include <set> 7 #include <set>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/debug/debugger.h" 10 #include "base/debug/debugger.h"
(...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after
229 void Display::SetTitle(const mojo::String& title) { 229 void Display::SetTitle(const mojo::String& title) {
230 platform_display_->SetTitle(title.To<base::string16>()); 230 platform_display_->SetTitle(title.To<base::string16>());
231 } 231 }
232 232
233 void Display::InitWindowManagersIfNecessary() { 233 void Display::InitWindowManagersIfNecessary() {
234 if (!init_called_ || !root_) 234 if (!init_called_ || !root_)
235 return; 235 return;
236 236
237 display_manager()->OnDisplayAcceleratedWidgetAvailable(this); 237 display_manager()->OnDisplayAcceleratedWidgetAvailable(this);
238 if (binding_) { 238 if (binding_) {
239 std::unique_ptr<WindowManagerState> wms_ptr(new WindowManagerState( 239 std::unique_ptr<WindowManagerState> wms_ptr(
240 this, platform_display_.get(), top_level_surface_id_)); 240 new WindowManagerState(this, platform_display_.get()));
241 WindowManagerState* wms = wms_ptr.get(); 241 WindowManagerState* wms = wms_ptr.get();
242 // For this case we never create additional WindowManagerStates, so any 242 // For this case we never create additional WindowManagerStates, so any
243 // id works. 243 // id works.
244 window_manager_state_map_[shell::mojom::kRootUserID] = std::move(wms_ptr); 244 window_manager_state_map_[shell::mojom::kRootUserID] = std::move(wms_ptr);
245 wms->tree_ = binding_->CreateWindowTree(wms->root()); 245 wms->tree_ = binding_->CreateWindowTree(wms->root());
246 } else { 246 } else {
247 CreateWindowManagerStatesFromRegistry(); 247 CreateWindowManagerStatesFromRegistry();
248 } 248 }
249 } 249 }
250 250
251 void Display::CreateWindowManagerStatesFromRegistry() { 251 void Display::CreateWindowManagerStatesFromRegistry() {
252 std::vector<WindowManagerFactoryService*> services = 252 std::vector<WindowManagerFactoryService*> services =
253 window_server_->window_manager_factory_registry()->GetServices(); 253 window_server_->window_manager_factory_registry()->GetServices();
254 for (WindowManagerFactoryService* service : services) { 254 for (WindowManagerFactoryService* service : services) {
255 if (service->window_manager_factory()) 255 if (service->window_manager_factory())
256 CreateWindowManagerStateFromService(service); 256 CreateWindowManagerStateFromService(service);
257 } 257 }
258 } 258 }
259 259
260 void Display::CreateWindowManagerStateFromService( 260 void Display::CreateWindowManagerStateFromService(
261 WindowManagerFactoryService* service) { 261 WindowManagerFactoryService* service) {
262 std::unique_ptr<WindowManagerState> wms_ptr( 262 std::unique_ptr<WindowManagerState> wms_ptr(new WindowManagerState(
263 new WindowManagerState(this, platform_display_.get(), 263 this, platform_display_.get(), service->user_id()));
264 top_level_surface_id_, service->user_id()));
265 WindowManagerState* wms = wms_ptr.get(); 264 WindowManagerState* wms = wms_ptr.get();
266 window_manager_state_map_[service->user_id()] = std::move(wms_ptr); 265 window_manager_state_map_[service->user_id()] = std::move(wms_ptr);
267 wms->tree_ = window_server_->CreateTreeForWindowManager( 266 wms->tree_ = window_server_->CreateTreeForWindowManager(
268 this, service->window_manager_factory(), wms->root(), service->user_id()); 267 this, service->window_manager_factory(), wms->root(), service->user_id());
269 if (!binding_) { 268 if (!binding_) {
270 const bool is_active = 269 const bool is_active =
271 service->user_id() == window_server_->user_id_tracker()->active_id(); 270 service->user_id() == window_server_->user_id_tracker()->active_id();
272 wms->root()->SetVisible(is_active); 271 wms->root()->SetVisible(is_active);
273 } 272 }
274 } 273 }
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
309 root_->SetBounds(gfx::Rect(new_metrics.size_in_pixels.To<gfx::Size>())); 308 root_->SetBounds(gfx::Rect(new_metrics.size_in_pixels.To<gfx::Size>()));
310 const gfx::Rect wm_bounds(root_->bounds().size()); 309 const gfx::Rect wm_bounds(root_->bounds().size());
311 for (auto& pair : window_manager_state_map_) 310 for (auto& pair : window_manager_state_map_)
312 pair.second->root()->SetBounds(wm_bounds); 311 pair.second->root()->SetBounds(wm_bounds);
313 } 312 }
314 // TODO(sky): if bounds changed, then need to update 313 // TODO(sky): if bounds changed, then need to update
315 // Display/WindowManagerState appropriately (e.g. notify observers). 314 // Display/WindowManagerState appropriately (e.g. notify observers).
316 window_server_->ProcessViewportMetricsChanged(this, old_metrics, new_metrics); 315 window_server_->ProcessViewportMetricsChanged(this, old_metrics, new_metrics);
317 } 316 }
318 317
319 void Display::OnTopLevelSurfaceChanged(cc::SurfaceId surface_id) {
320 DCHECK(!root_);
321 // This should only be called once, and before we've created root_.
322 top_level_surface_id_ = surface_id;
323 }
324
325 void Display::OnCompositorFrameDrawn() { 318 void Display::OnCompositorFrameDrawn() {
326 std::set<ServerWindow*> windows; 319 std::set<ServerWindow*> windows;
327 windows.swap(windows_needing_frame_destruction_); 320 windows.swap(windows_needing_frame_destruction_);
328 for (ServerWindow* window : windows) { 321 for (ServerWindow* window : windows) {
329 window->RemoveObserver(this); 322 window->RemoveObserver(this);
330 window->DestroySurfacesScheduledForDestruction(); 323 window->DestroySurfacesScheduledForDestruction();
331 } 324 }
332 } 325 }
333 326
334 bool Display::CanHaveActiveChildren(ServerWindow* window) const { 327 bool Display::CanHaveActiveChildren(ServerWindow* window) const {
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
467 DCHECK_EQ(0u, window_manager_state_map_.count(id)); 460 DCHECK_EQ(0u, window_manager_state_map_.count(id));
468 } 461 }
469 462
470 void Display::OnWindowManagerFactorySet(WindowManagerFactoryService* service) { 463 void Display::OnWindowManagerFactorySet(WindowManagerFactoryService* service) {
471 if (!binding_) 464 if (!binding_)
472 CreateWindowManagerStateFromService(service); 465 CreateWindowManagerStateFromService(service);
473 } 466 }
474 467
475 } // namespace ws 468 } // namespace ws
476 } // namespace mus 469 } // namespace mus
OLDNEW
« no previous file with comments | « components/mus/ws/display.h ('k') | components/mus/ws/event_dispatcher.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698