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

Side by Side Diff: ash/display/window_tree_host_manager.cc

Issue 1608053002: Remove now-unnecessary wrappers around gfx::Screen::GetScreen() (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@metro-mode-5
Patch Set: cros Created 4 years, 11 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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "ash/display/window_tree_host_manager.h" 5 #include "ash/display/window_tree_host_manager.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <cmath> 8 #include <cmath>
9 #include <map> 9 #include <map>
10 #include <utility> 10 #include <utility>
(...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after
239 cursor_display_id_for_restore_(gfx::Display::kInvalidDisplayID), 239 cursor_display_id_for_restore_(gfx::Display::kInvalidDisplayID),
240 weak_ptr_factory_(this) { 240 weak_ptr_factory_(this) {
241 // Reset primary display to make sure that tests don't use 241 // Reset primary display to make sure that tests don't use
242 // stale display info from previous tests. 242 // stale display info from previous tests.
243 primary_display_id = gfx::Display::kInvalidDisplayID; 243 primary_display_id = gfx::Display::kInvalidDisplayID;
244 } 244 }
245 245
246 WindowTreeHostManager::~WindowTreeHostManager() {} 246 WindowTreeHostManager::~WindowTreeHostManager() {}
247 247
248 void WindowTreeHostManager::Start() { 248 void WindowTreeHostManager::Start() {
249 Shell::GetScreen()->AddObserver(this); 249 gfx::Screen::GetScreen()->AddObserver(this);
250 Shell::GetInstance()->display_manager()->set_delegate(this); 250 Shell::GetInstance()->display_manager()->set_delegate(this);
251 } 251 }
252 252
253 void WindowTreeHostManager::Shutdown() { 253 void WindowTreeHostManager::Shutdown() {
254 FOR_EACH_OBSERVER(Observer, observers_, OnWindowTreeHostManagerShutdown()); 254 FOR_EACH_OBSERVER(Observer, observers_, OnWindowTreeHostManagerShutdown());
255 255
256 // Unset the display manager's delegate here because 256 // Unset the display manager's delegate here because
257 // DisplayManager outlives WindowTreeHostManager. 257 // DisplayManager outlives WindowTreeHostManager.
258 Shell::GetInstance()->display_manager()->set_delegate(nullptr); 258 Shell::GetInstance()->display_manager()->set_delegate(nullptr);
259 259
260 cursor_window_controller_.reset(); 260 cursor_window_controller_.reset();
261 mirror_window_controller_.reset(); 261 mirror_window_controller_.reset();
262 262
263 Shell::GetScreen()->RemoveObserver(this); 263 gfx::Screen::GetScreen()->RemoveObserver(this);
264 264
265 int64_t primary_id = Shell::GetScreen()->GetPrimaryDisplay().id(); 265 int64_t primary_id = gfx::Screen::GetScreen()->GetPrimaryDisplay().id();
266 266
267 // Delete non primary root window controllers first, then 267 // Delete non primary root window controllers first, then
268 // delete the primary root window controller. 268 // delete the primary root window controller.
269 aura::Window::Windows root_windows = 269 aura::Window::Windows root_windows =
270 WindowTreeHostManager::GetAllRootWindows(); 270 WindowTreeHostManager::GetAllRootWindows();
271 std::vector<RootWindowController*> to_delete; 271 std::vector<RootWindowController*> to_delete;
272 RootWindowController* primary_rwc = nullptr; 272 RootWindowController* primary_rwc = nullptr;
273 for (aura::Window::Windows::iterator iter = root_windows.begin(); 273 for (aura::Window::Windows::iterator iter = root_windows.begin();
274 iter != root_windows.end(); ++iter) { 274 iter != root_windows.end(); ++iter) {
275 RootWindowController* rwc = GetRootWindowController(*iter); 275 RootWindowController* rwc = GetRootWindowController(*iter);
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
384 it != window_tree_hosts_.end(); ++it) { 384 it != window_tree_hosts_.end(); ++it) {
385 RootWindowController* controller = 385 RootWindowController* controller =
386 GetRootWindowController(GetWindow(it->second)); 386 GetRootWindowController(GetWindow(it->second));
387 if (controller) 387 if (controller)
388 controllers.push_back(controller); 388 controllers.push_back(controller);
389 } 389 }
390 return controllers; 390 return controllers;
391 } 391 }
392 392
393 void WindowTreeHostManager::SwapPrimaryDisplayForTest() { 393 void WindowTreeHostManager::SwapPrimaryDisplayForTest() {
394 if (Shell::GetScreen()->GetNumDisplays() <= 1) 394 if (gfx::Screen::GetScreen()->GetNumDisplays() <= 1)
395 return; 395 return;
396 SetPrimaryDisplay(ScreenUtil::GetSecondaryDisplay()); 396 SetPrimaryDisplay(ScreenUtil::GetSecondaryDisplay());
397 } 397 }
398 398
399 void WindowTreeHostManager::SetPrimaryDisplayId(int64_t id) { 399 void WindowTreeHostManager::SetPrimaryDisplayId(int64_t id) {
400 DCHECK_NE(gfx::Display::kInvalidDisplayID, id); 400 DCHECK_NE(gfx::Display::kInvalidDisplayID, id);
401 if (id == gfx::Display::kInvalidDisplayID || primary_display_id == id) 401 if (id == gfx::Display::kInvalidDisplayID || primary_display_id == id)
402 return; 402 return;
403 403
404 const gfx::Display& display = GetDisplayManager()->GetDisplayForId(id); 404 const gfx::Display& display = GetDisplayManager()->GetDisplayForId(id);
(...skipping 20 matching lines...) Expand all
425 } 425 }
426 426
427 AshWindowTreeHost* non_primary_host = 427 AshWindowTreeHost* non_primary_host =
428 window_tree_hosts_[new_primary_display.id()]; 428 window_tree_hosts_[new_primary_display.id()];
429 LOG_IF(ERROR, !non_primary_host) 429 LOG_IF(ERROR, !non_primary_host)
430 << "Unknown display is requested in SetPrimaryDisplay: id=" 430 << "Unknown display is requested in SetPrimaryDisplay: id="
431 << new_primary_display.id(); 431 << new_primary_display.id();
432 if (!non_primary_host) 432 if (!non_primary_host)
433 return; 433 return;
434 434
435 gfx::Display old_primary_display = Shell::GetScreen()->GetPrimaryDisplay(); 435 gfx::Display old_primary_display =
436 gfx::Screen::GetScreen()->GetPrimaryDisplay();
436 437
437 // Swap root windows between current and new primary display. 438 // Swap root windows between current and new primary display.
438 AshWindowTreeHost* primary_host = window_tree_hosts_[primary_display_id]; 439 AshWindowTreeHost* primary_host = window_tree_hosts_[primary_display_id];
439 CHECK(primary_host); 440 CHECK(primary_host);
440 CHECK_NE(primary_host, non_primary_host); 441 CHECK_NE(primary_host, non_primary_host);
441 442
442 window_tree_hosts_[new_primary_display.id()] = primary_host; 443 window_tree_hosts_[new_primary_display.id()] = primary_host;
443 GetRootWindowSettings(GetWindow(primary_host))->display_id = 444 GetRootWindowSettings(GetWindow(primary_host))->display_id =
444 new_primary_display.id(); 445 new_primary_display.id();
445 446
(...skipping 14 matching lines...) Expand all
460 GetDisplayManager()->set_force_bounds_changed(true); 461 GetDisplayManager()->set_force_bounds_changed(true);
461 GetDisplayManager()->UpdateDisplays(); 462 GetDisplayManager()->UpdateDisplays();
462 GetDisplayManager()->set_force_bounds_changed(false); 463 GetDisplayManager()->set_force_bounds_changed(false);
463 } 464 }
464 465
465 void WindowTreeHostManager::UpdateMouseLocationAfterDisplayChange() { 466 void WindowTreeHostManager::UpdateMouseLocationAfterDisplayChange() {
466 // If the mouse is currently on a display in native location, 467 // If the mouse is currently on a display in native location,
467 // use the same native location. Otherwise find the display closest 468 // use the same native location. Otherwise find the display closest
468 // to the current cursor location in screen coordinates. 469 // to the current cursor location in screen coordinates.
469 470
470 gfx::Point point_in_screen = Shell::GetScreen()->GetCursorScreenPoint(); 471 gfx::Point point_in_screen = gfx::Screen::GetScreen()->GetCursorScreenPoint();
471 gfx::Point target_location_in_native; 472 gfx::Point target_location_in_native;
472 int64_t closest_distance_squared = -1; 473 int64_t closest_distance_squared = -1;
473 DisplayManager* display_manager = GetDisplayManager(); 474 DisplayManager* display_manager = GetDisplayManager();
474 475
475 aura::Window* dst_root_window = nullptr; 476 aura::Window* dst_root_window = nullptr;
476 for (size_t i = 0; i < display_manager->GetNumDisplays(); ++i) { 477 for (size_t i = 0; i < display_manager->GetNumDisplays(); ++i) {
477 const gfx::Display& display = display_manager->GetDisplayAt(i); 478 const gfx::Display& display = display_manager->GetDisplayAt(i);
478 const DisplayInfo display_info = 479 const DisplayInfo display_info =
479 display_manager->GetDisplayInfo(display.id()); 480 display_manager->GetDisplayInfo(display.id());
480 aura::Window* root_window = GetRootWindowForDisplayId(display.id()); 481 aura::Window* root_window = GetRootWindowForDisplayId(display.id());
(...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after
700 return; 701 return;
701 const DisplayInfo& display_info = 702 const DisplayInfo& display_info =
702 GetDisplayManager()->GetDisplayInfo(display.id()); 703 GetDisplayManager()->GetDisplayInfo(display.id());
703 DCHECK(!display_info.bounds_in_native().IsEmpty()); 704 DCHECK(!display_info.bounds_in_native().IsEmpty());
704 AshWindowTreeHost* ash_host = window_tree_hosts_[display.id()]; 705 AshWindowTreeHost* ash_host = window_tree_hosts_[display.id()];
705 ash_host->AsWindowTreeHost()->SetBounds(display_info.bounds_in_native()); 706 ash_host->AsWindowTreeHost()->SetBounds(display_info.bounds_in_native());
706 SetDisplayPropertiesOnHost(ash_host, display); 707 SetDisplayPropertiesOnHost(ash_host, display);
707 } 708 }
708 709
709 void WindowTreeHostManager::OnHostResized(const aura::WindowTreeHost* host) { 710 void WindowTreeHostManager::OnHostResized(const aura::WindowTreeHost* host) {
710 gfx::Display display = Shell::GetScreen()->GetDisplayNearestWindow( 711 gfx::Display display = gfx::Screen::GetScreen()->GetDisplayNearestWindow(
711 const_cast<aura::Window*>(host->window())); 712 const_cast<aura::Window*>(host->window()));
712 713
713 DisplayManager* display_manager = GetDisplayManager(); 714 DisplayManager* display_manager = GetDisplayManager();
714 if (display_manager->UpdateDisplayBounds(display.id(), host->GetBounds())) { 715 if (display_manager->UpdateDisplayBounds(display.id(), host->GetBounds())) {
715 mirror_window_controller_->UpdateWindow(); 716 mirror_window_controller_->UpdateWindow();
716 cursor_window_controller_->UpdateContainer(); 717 cursor_window_controller_->UpdateContainer();
717 } 718 }
718 } 719 }
719 720
720 void WindowTreeHostManager::CreateOrUpdateMirroringDisplay( 721 void WindowTreeHostManager::CreateOrUpdateMirroringDisplay(
(...skipping 13 matching lines...) Expand all
734 // always on the desktop display (the visible cursor on the non-desktop 735 // always on the desktop display (the visible cursor on the non-desktop
735 // display is drawn through compositor mirroring). Therefore, it's unnecessary 736 // display is drawn through compositor mirroring). Therefore, it's unnecessary
736 // to handle the cursor_window at all. See: http://crbug.com/412910 737 // to handle the cursor_window at all. See: http://crbug.com/412910
737 if (!cursor_window_controller_->is_cursor_compositing_enabled()) 738 if (!cursor_window_controller_->is_cursor_compositing_enabled())
738 cursor_window_controller_->UpdateContainer(); 739 cursor_window_controller_->UpdateContainer();
739 } 740 }
740 741
741 void WindowTreeHostManager::PreDisplayConfigurationChange(bool clear_focus) { 742 void WindowTreeHostManager::PreDisplayConfigurationChange(bool clear_focus) {
742 FOR_EACH_OBSERVER(Observer, observers_, OnDisplayConfigurationChanging()); 743 FOR_EACH_OBSERVER(Observer, observers_, OnDisplayConfigurationChanging());
743 focus_activation_store_->Store(clear_focus); 744 focus_activation_store_->Store(clear_focus);
744 gfx::Screen* screen = Shell::GetScreen(); 745 gfx::Screen* screen = gfx::Screen::GetScreen();
745 gfx::Point point_in_screen = screen->GetCursorScreenPoint(); 746 gfx::Point point_in_screen = screen->GetCursorScreenPoint();
746 cursor_location_in_screen_coords_for_restore_ = point_in_screen; 747 cursor_location_in_screen_coords_for_restore_ = point_in_screen;
747 748
748 gfx::Display display = screen->GetDisplayNearestPoint(point_in_screen); 749 gfx::Display display = screen->GetDisplayNearestPoint(point_in_screen);
749 cursor_display_id_for_restore_ = display.id(); 750 cursor_display_id_for_restore_ = display.id();
750 751
751 gfx::Point point_in_native = point_in_screen; 752 gfx::Point point_in_native = point_in_screen;
752 aura::Window* root_window = GetRootWindowForDisplayId(display.id()); 753 aura::Window* root_window = GetRootWindowForDisplayId(display.id());
753 ::wm::ConvertPointFromScreen(root_window, &point_in_native); 754 ::wm::ConvertPointFromScreen(root_window, &point_in_native);
754 root_window->GetHost()->ConvertPointToNativeScreen(&point_in_native); 755 root_window->GetHost()->ConvertPointToNativeScreen(&point_in_native);
755 cursor_location_in_native_coords_for_restore_ = point_in_native; 756 cursor_location_in_native_coords_for_restore_ = point_in_native;
756 } 757 }
757 758
758 void WindowTreeHostManager::PostDisplayConfigurationChange() { 759 void WindowTreeHostManager::PostDisplayConfigurationChange() {
759 focus_activation_store_->Restore(); 760 focus_activation_store_->Restore();
760 761
761 DisplayManager* display_manager = GetDisplayManager(); 762 DisplayManager* display_manager = GetDisplayManager();
762 DisplayLayoutStore* layout_store = display_manager->layout_store(); 763 DisplayLayoutStore* layout_store = display_manager->layout_store();
763 if (display_manager->num_connected_displays() > 1) { 764 if (display_manager->num_connected_displays() > 1) {
764 DisplayIdPair pair = display_manager->GetCurrentDisplayIdPair(); 765 DisplayIdPair pair = display_manager->GetCurrentDisplayIdPair();
765 DisplayLayout layout = layout_store->GetRegisteredDisplayLayout(pair); 766 DisplayLayout layout = layout_store->GetRegisteredDisplayLayout(pair);
766 layout_store->UpdateMultiDisplayState( 767 layout_store->UpdateMultiDisplayState(
767 pair, display_manager->IsInMirrorMode(), layout.default_unified); 768 pair, display_manager->IsInMirrorMode(), layout.default_unified);
768 769
769 if (Shell::GetScreen()->GetNumDisplays() > 1) { 770 if (gfx::Screen::GetScreen()->GetNumDisplays() > 1) {
770 int64_t primary_id = layout.primary_id; 771 int64_t primary_id = layout.primary_id;
771 SetPrimaryDisplayId(primary_id == gfx::Display::kInvalidDisplayID 772 SetPrimaryDisplayId(primary_id == gfx::Display::kInvalidDisplayID
772 ? pair.first 773 ? pair.first
773 : primary_id); 774 : primary_id);
774 // Update the primary_id in case the above call is 775 // Update the primary_id in case the above call is
775 // ignored. Happens when a) default layout's primary id 776 // ignored. Happens when a) default layout's primary id
776 // doesn't exist, or b) the primary_id has already been 777 // doesn't exist, or b) the primary_id has already been
777 // set to the same and didn't update it. 778 // set to the same and didn't update it.
778 layout_store->UpdatePrimaryDisplayId( 779 layout_store->UpdatePrimaryDisplayId(
779 pair, Shell::GetScreen()->GetPrimaryDisplay().id()); 780 pair, gfx::Screen::GetScreen()->GetPrimaryDisplay().id());
780 } 781 }
781 } 782 }
782 FOR_EACH_OBSERVER(Observer, observers_, OnDisplayConfigurationChanged()); 783 FOR_EACH_OBSERVER(Observer, observers_, OnDisplayConfigurationChanged());
783 UpdateMouseLocationAfterDisplayChange(); 784 UpdateMouseLocationAfterDisplayChange();
784 } 785 }
785 786
786 ui::EventDispatchDetails WindowTreeHostManager::DispatchKeyEventPostIME( 787 ui::EventDispatchDetails WindowTreeHostManager::DispatchKeyEventPostIME(
787 ui::KeyEvent* event) { 788 ui::KeyEvent* event) {
788 // Getting the active root window to dispatch the event. This isn't 789 // Getting the active root window to dispatch the event. This isn't
789 // significant as the event will be sent to the window resolved by 790 // significant as the event will be sent to the window resolved by
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
833 SetDisplayPropertiesOnHost(ash_host, display); 834 SetDisplayPropertiesOnHost(ash_host, display);
834 835
835 #if defined(OS_CHROMEOS) 836 #if defined(OS_CHROMEOS)
836 if (switches::ConstrainPointerToRoot()) 837 if (switches::ConstrainPointerToRoot())
837 ash_host->ConfineCursorToRootWindow(); 838 ash_host->ConfineCursorToRootWindow();
838 #endif 839 #endif
839 return ash_host; 840 return ash_host;
840 } 841 }
841 842
842 } // namespace ash 843 } // namespace ash
OLDNEW
« no previous file with comments | « ash/display/shared_display_edge_indicator.cc ('k') | ash/display/window_tree_host_manager_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698