| OLD | NEW |
| 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/test/display_manager_test_api.h" | 5 #include "ash/test/display_manager_test_api.h" |
| 6 | 6 |
| 7 #include <cstdarg> | 7 #include <cstdarg> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "ash/common/ash_switches.h" | 10 #include "ash/common/ash_switches.h" |
| 11 #include "ash/common/display/display_info.h" | |
| 12 #include "ash/display/display_manager.h" | 11 #include "ash/display/display_manager.h" |
| 13 #include "ash/display/display_util.h" | 12 #include "ash/display/display_util.h" |
| 14 #include "ash/display/extended_mouse_warp_controller.h" | 13 #include "ash/display/extended_mouse_warp_controller.h" |
| 15 #include "ash/display/mouse_cursor_event_filter.h" | 14 #include "ash/display/mouse_cursor_event_filter.h" |
| 16 #include "ash/display/unified_mouse_warp_controller.h" | 15 #include "ash/display/unified_mouse_warp_controller.h" |
| 17 #include "ash/screen_util.h" | 16 #include "ash/screen_util.h" |
| 18 #include "ash/shell.h" | 17 #include "ash/shell.h" |
| 19 #include "base/command_line.h" | 18 #include "base/command_line.h" |
| 20 #include "base/strings/string_split.h" | 19 #include "base/strings/string_split.h" |
| 21 #include "ui/aura/env.h" | 20 #include "ui/aura/env.h" |
| 22 #include "ui/aura/window_event_dispatcher.h" | 21 #include "ui/aura/window_event_dispatcher.h" |
| 23 #include "ui/display/display.h" | 22 #include "ui/display/display.h" |
| 23 #include "ui/display/manager/display_info.h" |
| 24 #include "ui/display/manager/display_layout_builder.h" | 24 #include "ui/display/manager/display_layout_builder.h" |
| 25 #include "ui/events/test/event_generator.h" | 25 #include "ui/events/test/event_generator.h" |
| 26 | 26 |
| 27 namespace ash { | 27 namespace ash { |
| 28 namespace test { | 28 namespace test { |
| 29 namespace { | 29 namespace { |
| 30 | 30 |
| 31 std::vector<DisplayInfo> CreateDisplayInfoListFromString( | 31 DisplayInfoList CreateDisplayInfoListFromString( |
| 32 const std::string specs, | 32 const std::string specs, |
| 33 DisplayManager* display_manager) { | 33 DisplayManager* display_manager) { |
| 34 std::vector<DisplayInfo> display_info_list; | 34 DisplayInfoList display_info_list; |
| 35 std::vector<std::string> parts = base::SplitString( | 35 std::vector<std::string> parts = base::SplitString( |
| 36 specs, ",", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL); | 36 specs, ",", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL); |
| 37 size_t index = 0; | 37 size_t index = 0; |
| 38 | 38 |
| 39 display::DisplayList list = | 39 display::DisplayList list = |
| 40 display_manager->IsInUnifiedMode() | 40 display_manager->IsInUnifiedMode() |
| 41 ? display_manager->software_mirroring_display_list() | 41 ? display_manager->software_mirroring_display_list() |
| 42 : display_manager->active_display_list(); | 42 : display_manager->active_display_list(); |
| 43 | 43 |
| 44 for (std::vector<std::string>::const_iterator iter = parts.begin(); | 44 for (std::vector<std::string>::const_iterator iter = parts.begin(); |
| 45 iter != parts.end(); ++iter, ++index) { | 45 iter != parts.end(); ++iter, ++index) { |
| 46 int64_t id = (index < list.size()) ? list[index].id() | 46 int64_t id = (index < list.size()) ? list[index].id() |
| 47 : display::Display::kInvalidDisplayID; | 47 : display::Display::kInvalidDisplayID; |
| 48 display_info_list.push_back(DisplayInfo::CreateFromSpecWithID(*iter, id)); | 48 display_info_list.push_back( |
| 49 ui::DisplayInfo::CreateFromSpecWithID(*iter, id)); |
| 49 } | 50 } |
| 50 return display_info_list; | 51 return display_info_list; |
| 51 } | 52 } |
| 52 | 53 |
| 53 } // namespace | 54 } // namespace |
| 54 | 55 |
| 55 // static | 56 // static |
| 56 bool DisplayManagerTestApi::TestIfMouseWarpsAt( | 57 bool DisplayManagerTestApi::TestIfMouseWarpsAt( |
| 57 ui::test::EventGenerator& event_generator, | 58 ui::test::EventGenerator& event_generator, |
| 58 const gfx::Point& point_in_screen) { | 59 const gfx::Point& point_in_screen) { |
| (...skipping 13 matching lines...) Expand all Loading... |
| 72 aura::Env::GetInstance()->last_mouse_location()) | 73 aura::Env::GetInstance()->last_mouse_location()) |
| 73 .id(); | 74 .id(); |
| 74 } | 75 } |
| 75 | 76 |
| 76 DisplayManagerTestApi::DisplayManagerTestApi() | 77 DisplayManagerTestApi::DisplayManagerTestApi() |
| 77 : display_manager_(Shell::GetInstance()->display_manager()) {} | 78 : display_manager_(Shell::GetInstance()->display_manager()) {} |
| 78 | 79 |
| 79 DisplayManagerTestApi::~DisplayManagerTestApi() {} | 80 DisplayManagerTestApi::~DisplayManagerTestApi() {} |
| 80 | 81 |
| 81 void DisplayManagerTestApi::UpdateDisplay(const std::string& display_specs) { | 82 void DisplayManagerTestApi::UpdateDisplay(const std::string& display_specs) { |
| 82 std::vector<DisplayInfo> display_info_list = | 83 DisplayInfoList display_info_list = |
| 83 CreateDisplayInfoListFromString(display_specs, display_manager_); | 84 CreateDisplayInfoListFromString(display_specs, display_manager_); |
| 84 bool is_host_origin_set = false; | 85 bool is_host_origin_set = false; |
| 85 for (size_t i = 0; i < display_info_list.size(); ++i) { | 86 for (size_t i = 0; i < display_info_list.size(); ++i) { |
| 86 const DisplayInfo& display_info = display_info_list[i]; | 87 const ui::DisplayInfo& display_info = display_info_list[i]; |
| 87 if (display_info.bounds_in_native().origin() != gfx::Point(0, 0)) { | 88 if (display_info.bounds_in_native().origin() != gfx::Point(0, 0)) { |
| 88 is_host_origin_set = true; | 89 is_host_origin_set = true; |
| 89 break; | 90 break; |
| 90 } | 91 } |
| 91 } | 92 } |
| 92 | 93 |
| 93 // On non-testing environment, when a secondary display is connected, a new | 94 // On non-testing environment, when a secondary display is connected, a new |
| 94 // native (i.e. X) window for the display is always created below the | 95 // native (i.e. X) window for the display is always created below the |
| 95 // previous one for GPU performance reasons. Try to emulate the behavior | 96 // previous one for GPU performance reasons. Try to emulate the behavior |
| 96 // unless host origins are explicitly set. | 97 // unless host origins are explicitly set. |
| 97 if (!is_host_origin_set) { | 98 if (!is_host_origin_set) { |
| 98 // Sart from (1,1) so that windows won't overlap with native mouse cursor. | 99 // Sart from (1,1) so that windows won't overlap with native mouse cursor. |
| 99 // See |AshTestBase::SetUp()|. | 100 // See |AshTestBase::SetUp()|. |
| 100 int next_y = 1; | 101 int next_y = 1; |
| 101 for (std::vector<DisplayInfo>::iterator iter = display_info_list.begin(); | 102 for (DisplayInfoList::iterator iter = display_info_list.begin(); |
| 102 iter != display_info_list.end(); ++iter) { | 103 iter != display_info_list.end(); ++iter) { |
| 103 gfx::Rect bounds(iter->bounds_in_native().size()); | 104 gfx::Rect bounds(iter->bounds_in_native().size()); |
| 104 bounds.set_x(1); | 105 bounds.set_x(1); |
| 105 bounds.set_y(next_y); | 106 bounds.set_y(next_y); |
| 106 next_y += bounds.height(); | 107 next_y += bounds.height(); |
| 107 iter->SetBounds(bounds); | 108 iter->SetBounds(bounds); |
| 108 } | 109 } |
| 109 } | 110 } |
| 110 | 111 |
| 111 display_manager_->OnNativeDisplaysChanged(display_info_list); | 112 display_manager_->OnNativeDisplaysChanged(display_info_list); |
| (...skipping 17 matching lines...) Expand all Loading... |
| 129 } | 130 } |
| 130 | 131 |
| 131 void DisplayManagerTestApi::SetAvailableColorProfiles( | 132 void DisplayManagerTestApi::SetAvailableColorProfiles( |
| 132 int64_t display_id, | 133 int64_t display_id, |
| 133 const std::vector<ui::ColorCalibrationProfile>& profiles) { | 134 const std::vector<ui::ColorCalibrationProfile>& profiles) { |
| 134 display_manager_->display_info_[display_id].set_available_color_profiles( | 135 display_manager_->display_info_[display_id].set_available_color_profiles( |
| 135 profiles); | 136 profiles); |
| 136 } | 137 } |
| 137 | 138 |
| 138 ScopedDisable125DSFForUIScaling::ScopedDisable125DSFForUIScaling() { | 139 ScopedDisable125DSFForUIScaling::ScopedDisable125DSFForUIScaling() { |
| 139 DisplayInfo::SetUse125DSFForUIScalingForTest(false); | 140 ui::DisplayInfo::SetUse125DSFForUIScalingForTest(false); |
| 140 } | 141 } |
| 141 | 142 |
| 142 ScopedDisable125DSFForUIScaling::~ScopedDisable125DSFForUIScaling() { | 143 ScopedDisable125DSFForUIScaling::~ScopedDisable125DSFForUIScaling() { |
| 143 DisplayInfo::SetUse125DSFForUIScalingForTest(true); | 144 ui::DisplayInfo::SetUse125DSFForUIScalingForTest(true); |
| 144 } | 145 } |
| 145 | 146 |
| 146 ScopedSetInternalDisplayId::ScopedSetInternalDisplayId(int64_t id) { | 147 ScopedSetInternalDisplayId::ScopedSetInternalDisplayId(int64_t id) { |
| 147 DisplayManagerTestApi().SetInternalDisplayId(id); | 148 DisplayManagerTestApi().SetInternalDisplayId(id); |
| 148 } | 149 } |
| 149 | 150 |
| 150 ScopedSetInternalDisplayId::~ScopedSetInternalDisplayId() { | 151 ScopedSetInternalDisplayId::~ScopedSetInternalDisplayId() { |
| 151 display::Display::SetInternalDisplayId(display::Display::kInvalidDisplayID); | 152 display::Display::SetInternalDisplayId(display::Display::kInvalidDisplayID); |
| 152 } | 153 } |
| 153 | 154 |
| 154 bool SetDisplayResolution(int64_t display_id, const gfx::Size& resolution) { | 155 bool SetDisplayResolution(int64_t display_id, const gfx::Size& resolution) { |
| 155 DisplayManager* display_manager = Shell::GetInstance()->display_manager(); | 156 DisplayManager* display_manager = Shell::GetInstance()->display_manager(); |
| 156 const DisplayInfo& info = display_manager->GetDisplayInfo(display_id); | 157 const ui::DisplayInfo& info = display_manager->GetDisplayInfo(display_id); |
| 157 scoped_refptr<ManagedDisplayMode> mode = | 158 scoped_refptr<ui::ManagedDisplayMode> mode = |
| 158 GetDisplayModeForResolution(info, resolution); | 159 GetDisplayModeForResolution(info, resolution); |
| 159 if (!mode) | 160 if (!mode) |
| 160 return false; | 161 return false; |
| 161 return display_manager->SetDisplayMode(display_id, mode); | 162 return display_manager->SetDisplayMode(display_id, mode); |
| 162 } | 163 } |
| 163 | 164 |
| 164 void SwapPrimaryDisplay() { | 165 void SwapPrimaryDisplay() { |
| 165 if (display::Screen::GetScreen()->GetNumDisplays() <= 1) | 166 if (display::Screen::GetScreen()->GetNumDisplays() <= 1) |
| 166 return; | 167 return; |
| 167 Shell::GetInstance()->window_tree_host_manager()->SetPrimaryDisplayId( | 168 Shell::GetInstance()->window_tree_host_manager()->SetPrimaryDisplayId( |
| (...skipping 28 matching lines...) Expand all Loading... |
| 196 for (size_t i = 0; i < count; i++) { | 197 for (size_t i = 0; i < count; i++) { |
| 197 int64_t id = va_arg(args, int64_t); | 198 int64_t id = va_arg(args, int64_t); |
| 198 list.push_back(id); | 199 list.push_back(id); |
| 199 } | 200 } |
| 200 SortDisplayIdList(&list); | 201 SortDisplayIdList(&list); |
| 201 return list; | 202 return list; |
| 202 } | 203 } |
| 203 | 204 |
| 204 } // namespace test | 205 } // namespace test |
| 205 } // namespace ash | 206 } // namespace ash |
| OLD | NEW |