| 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/display/display_manager.h" | 5 #include "ui/display/manager/display_manager.h" |
| 6 | 6 |
| 7 #include "ash/accelerators/accelerator_commands_aura.h" | 7 #include "ash/accelerators/accelerator_commands_aura.h" |
| 8 #include "ash/common/material_design/material_design_controller.h" | 8 #include "ash/common/material_design/material_design_controller.h" |
| 9 #include "ash/common/wm/window_state.h" | 9 #include "ash/common/wm/window_state.h" |
| 10 #include "ash/display/display_configuration_controller.h" | 10 #include "ash/display/display_configuration_controller.h" |
| 11 #include "ash/display/display_util.h" | 11 #include "ash/display/display_util.h" |
| 12 #include "ash/display/mirror_window_controller.h" | 12 #include "ash/display/mirror_window_controller.h" |
| 13 #include "ash/display/window_tree_host_manager.h" | 13 #include "ash/display/window_tree_host_manager.h" |
| 14 #include "ash/screen_util.h" | 14 #include "ash/screen_util.h" |
| 15 #include "ash/shell.h" | 15 #include "ash/shell.h" |
| 16 #include "ash/test/ash_md_test_base.h" | 16 #include "ash/test/ash_md_test_base.h" |
| 17 #include "ash/test/ash_test_base.h" | 17 #include "ash/test/ash_test_base.h" |
| 18 #include "ash/test/display_manager_test_api.h" | |
| 19 #include "ash/test/mirror_window_test_api.h" | 18 #include "ash/test/mirror_window_test_api.h" |
| 20 #include "ash/wm/window_state_aura.h" | 19 #include "ash/wm/window_state_aura.h" |
| 21 #include "base/command_line.h" | 20 #include "base/command_line.h" |
| 22 #include "base/format_macros.h" | 21 #include "base/format_macros.h" |
| 23 #include "base/strings/string_number_conversions.h" | 22 #include "base/strings/string_number_conversions.h" |
| 24 #include "base/strings/stringprintf.h" | 23 #include "base/strings/stringprintf.h" |
| 25 #include "build/build_config.h" | 24 #include "build/build_config.h" |
| 26 #include "grit/ash_strings.h" | 25 #include "grit/ash_strings.h" |
| 27 #include "ui/aura/client/aura_constants.h" | 26 #include "ui/aura/client/aura_constants.h" |
| 28 #include "ui/aura/env.h" | 27 #include "ui/aura/env.h" |
| 29 #include "ui/aura/window_observer.h" | 28 #include "ui/aura/window_observer.h" |
| 30 #include "ui/aura/window_tree_host.h" | 29 #include "ui/aura/window_tree_host.h" |
| 31 #include "ui/base/l10n/l10n_util.h" | 30 #include "ui/base/l10n/l10n_util.h" |
| 32 #include "ui/display/display.h" | 31 #include "ui/display/display.h" |
| 33 #include "ui/display/display_observer.h" | 32 #include "ui/display/display_observer.h" |
| 34 #include "ui/display/display_switches.h" | 33 #include "ui/display/display_switches.h" |
| 35 #include "ui/display/manager/display_layout_builder.h" | 34 #include "ui/display/manager/display_layout_builder.h" |
| 36 #include "ui/display/manager/display_layout_store.h" | 35 #include "ui/display/manager/display_layout_store.h" |
| 37 #include "ui/display/manager/display_manager_utilities.h" | 36 #include "ui/display/manager/display_manager_utilities.h" |
| 38 #include "ui/display/manager/managed_display_info.h" | 37 #include "ui/display/manager/managed_display_info.h" |
| 39 #include "ui/display/screen.h" | 38 #include "ui/display/screen.h" |
| 39 #include "ui/display/test/display_manager_test_api.h" |
| 40 #include "ui/events/test/event_generator.h" | 40 #include "ui/events/test/event_generator.h" |
| 41 #include "ui/gfx/font_render_params.h" | 41 #include "ui/gfx/font_render_params.h" |
| 42 | 42 |
| 43 namespace ash { | 43 namespace ash { |
| 44 | 44 |
| 45 using std::vector; | 45 using std::vector; |
| 46 using std::string; | 46 using std::string; |
| 47 | 47 |
| 48 using base::StringPrintf; | 48 using base::StringPrintf; |
| 49 | 49 |
| (...skipping 297 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 347 display_manager()->GetDisplayAt(1).bounds().ToString()); | 347 display_manager()->GetDisplayAt(1).bounds().ToString()); |
| 348 EXPECT_EQ("20,680 400x300", | 348 EXPECT_EQ("20,680 400x300", |
| 349 display_manager()->GetDisplayAt(2).bounds().ToString()); | 349 display_manager()->GetDisplayAt(2).bounds().ToString()); |
| 350 } | 350 } |
| 351 | 351 |
| 352 TEST_P(DisplayManagerTest, LayoutMorethanThreeDisplaysTest) { | 352 TEST_P(DisplayManagerTest, LayoutMorethanThreeDisplaysTest) { |
| 353 if (!SupportsMultipleDisplays()) | 353 if (!SupportsMultipleDisplays()) |
| 354 return; | 354 return; |
| 355 | 355 |
| 356 int64_t primary_id = display::Screen::GetScreen()->GetPrimaryDisplay().id(); | 356 int64_t primary_id = display::Screen::GetScreen()->GetPrimaryDisplay().id(); |
| 357 display::DisplayIdList list = ash::test::CreateDisplayIdListN( | 357 display::DisplayIdList list = display::test::CreateDisplayIdListN( |
| 358 3, primary_id, primary_id + 1, primary_id + 2); | 358 3, primary_id, primary_id + 1, primary_id + 2); |
| 359 { | 359 { |
| 360 // Layout: [2] | 360 // Layout: [2] |
| 361 // [1][P] | 361 // [1][P] |
| 362 display::DisplayLayoutBuilder builder(primary_id); | 362 display::DisplayLayoutBuilder builder(primary_id); |
| 363 builder.AddDisplayPlacement(list[1], primary_id, | 363 builder.AddDisplayPlacement(list[1], primary_id, |
| 364 display::DisplayPlacement::LEFT, 10); | 364 display::DisplayPlacement::LEFT, 10); |
| 365 builder.AddDisplayPlacement(list[2], list[1], | 365 builder.AddDisplayPlacement(list[2], list[1], |
| 366 display::DisplayPlacement::TOP, 10); | 366 display::DisplayPlacement::TOP, 10); |
| 367 display_manager()->layout_store()->RegisterLayoutForDisplayIdList( | 367 display_manager()->layout_store()->RegisterLayoutForDisplayIdList( |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 418 | 418 |
| 419 EXPECT_EQ("0,0 640x480", | 419 EXPECT_EQ("0,0 640x480", |
| 420 display_manager()->GetDisplayAt(0).bounds().ToString()); | 420 display_manager()->GetDisplayAt(0).bounds().ToString()); |
| 421 EXPECT_EQ("20,780 320x200", | 421 EXPECT_EQ("20,780 320x200", |
| 422 display_manager()->GetDisplayAt(1).bounds().ToString()); | 422 display_manager()->GetDisplayAt(1).bounds().ToString()); |
| 423 EXPECT_EQ("10,480 400x300", | 423 EXPECT_EQ("10,480 400x300", |
| 424 display_manager()->GetDisplayAt(2).bounds().ToString()); | 424 display_manager()->GetDisplayAt(2).bounds().ToString()); |
| 425 } | 425 } |
| 426 | 426 |
| 427 { | 427 { |
| 428 list = ash::test::CreateDisplayIdListN(5, primary_id, primary_id + 1, | 428 list = display::test::CreateDisplayIdListN(5, primary_id, primary_id + 1, |
| 429 primary_id + 2, primary_id + 3, | 429 primary_id + 2, primary_id + 3, |
| 430 primary_id + 4); | 430 primary_id + 4); |
| 431 // Layout: [P][2] | 431 // Layout: [P][2] |
| 432 // [3][4] | 432 // [3][4] |
| 433 // [1] | 433 // [1] |
| 434 display::DisplayLayoutBuilder builder(primary_id); | 434 display::DisplayLayoutBuilder builder(primary_id); |
| 435 builder.AddDisplayPlacement(list[2], primary_id, | 435 builder.AddDisplayPlacement(list[2], primary_id, |
| 436 display::DisplayPlacement::RIGHT, 10); | 436 display::DisplayPlacement::RIGHT, 10); |
| 437 builder.AddDisplayPlacement(list[1], list[3], | 437 builder.AddDisplayPlacement(list[1], list[3], |
| 438 display::DisplayPlacement::BOTTOM, 10); | 438 display::DisplayPlacement::BOTTOM, 10); |
| 439 builder.AddDisplayPlacement(list[3], list[4], | 439 builder.AddDisplayPlacement(list[3], list[4], |
| 440 display::DisplayPlacement::LEFT, 10); | 440 display::DisplayPlacement::LEFT, 10); |
| (...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 645 | 645 |
| 646 display::ManagedDisplayInfo CreateDisplayInfo(int64_t id, | 646 display::ManagedDisplayInfo CreateDisplayInfo(int64_t id, |
| 647 const gfx::Rect& bounds) { | 647 const gfx::Rect& bounds) { |
| 648 display::ManagedDisplayInfo info(id, ToDisplayName(id), false); | 648 display::ManagedDisplayInfo info(id, ToDisplayName(id), false); |
| 649 info.SetBounds(bounds); | 649 info.SetBounds(bounds); |
| 650 return info; | 650 return info; |
| 651 } | 651 } |
| 652 | 652 |
| 653 TEST_P(DisplayManagerTest, TestNativeDisplaysChanged) { | 653 TEST_P(DisplayManagerTest, TestNativeDisplaysChanged) { |
| 654 const int64_t internal_display_id = | 654 const int64_t internal_display_id = |
| 655 test::DisplayManagerTestApi(display_manager()) | 655 display::test::DisplayManagerTestApi(display_manager()) |
| 656 .SetFirstDisplayAsInternalDisplay(); | 656 .SetFirstDisplayAsInternalDisplay(); |
| 657 const int external_id = 10; | 657 const int external_id = 10; |
| 658 const int mirror_id = 11; | 658 const int mirror_id = 11; |
| 659 const int64_t invalid_id = display::Display::kInvalidDisplayID; | 659 const int64_t invalid_id = display::Display::kInvalidDisplayID; |
| 660 const display::ManagedDisplayInfo internal_display_info = | 660 const display::ManagedDisplayInfo internal_display_info = |
| 661 CreateDisplayInfo(internal_display_id, gfx::Rect(0, 0, 500, 500)); | 661 CreateDisplayInfo(internal_display_id, gfx::Rect(0, 0, 500, 500)); |
| 662 const display::ManagedDisplayInfo external_display_info = | 662 const display::ManagedDisplayInfo external_display_info = |
| 663 CreateDisplayInfo(external_id, gfx::Rect(1, 1, 100, 100)); | 663 CreateDisplayInfo(external_id, gfx::Rect(1, 1, 100, 100)); |
| 664 const display::ManagedDisplayInfo mirroring_display_info = | 664 const display::ManagedDisplayInfo mirroring_display_info = |
| 665 CreateDisplayInfo(mirror_id, gfx::Rect(0, 0, 500, 500)); | 665 CreateDisplayInfo(mirror_id, gfx::Rect(0, 0, 500, 500)); |
| (...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 874 .size() | 874 .size() |
| 875 .ToString()); | 875 .ToString()); |
| 876 } | 876 } |
| 877 #endif // defined(OS_CHROMEOS) | 877 #endif // defined(OS_CHROMEOS) |
| 878 | 878 |
| 879 TEST_P(DisplayManagerTest, NativeDisplaysChangedAfterPrimaryChange) { | 879 TEST_P(DisplayManagerTest, NativeDisplaysChangedAfterPrimaryChange) { |
| 880 if (!SupportsMultipleDisplays()) | 880 if (!SupportsMultipleDisplays()) |
| 881 return; | 881 return; |
| 882 | 882 |
| 883 const int64_t internal_display_id = | 883 const int64_t internal_display_id = |
| 884 test::DisplayManagerTestApi(display_manager()) | 884 display::test::DisplayManagerTestApi(display_manager()) |
| 885 .SetFirstDisplayAsInternalDisplay(); | 885 .SetFirstDisplayAsInternalDisplay(); |
| 886 const display::ManagedDisplayInfo native_display_info = | 886 const display::ManagedDisplayInfo native_display_info = |
| 887 CreateDisplayInfo(internal_display_id, gfx::Rect(0, 0, 500, 500)); | 887 CreateDisplayInfo(internal_display_id, gfx::Rect(0, 0, 500, 500)); |
| 888 const display::ManagedDisplayInfo secondary_display_info = | 888 const display::ManagedDisplayInfo secondary_display_info = |
| 889 CreateDisplayInfo(10, gfx::Rect(1, 1, 100, 100)); | 889 CreateDisplayInfo(10, gfx::Rect(1, 1, 100, 100)); |
| 890 | 890 |
| 891 std::vector<display::ManagedDisplayInfo> display_info_list; | 891 std::vector<display::ManagedDisplayInfo> display_info_list; |
| 892 display_info_list.push_back(native_display_info); | 892 display_info_list.push_back(native_display_info); |
| 893 display_info_list.push_back(secondary_display_info); | 893 display_info_list.push_back(secondary_display_info); |
| 894 display_manager()->OnNativeDisplaysChanged(display_info_list); | 894 display_manager()->OnNativeDisplaysChanged(display_info_list); |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 935 scoped_refptr<display::ManagedDisplayMode> expected_mode( | 935 scoped_refptr<display::ManagedDisplayMode> expected_mode( |
| 936 new display::ManagedDisplayMode(gfx::Size(1000, 500), 0.0f, false, | 936 new display::ManagedDisplayMode(gfx::Size(1000, 500), 0.0f, false, |
| 937 false)); | 937 false)); |
| 938 | 938 |
| 939 mode = display_manager()->GetSelectedModeForDisplayId(display_id); | 939 mode = display_manager()->GetSelectedModeForDisplayId(display_id); |
| 940 EXPECT_FALSE(!!mode); | 940 EXPECT_FALSE(!!mode); |
| 941 EXPECT_TRUE(expected_mode->IsEquivalent( | 941 EXPECT_TRUE(expected_mode->IsEquivalent( |
| 942 display_manager()->GetActiveModeForDisplayId(display_id))); | 942 display_manager()->GetActiveModeForDisplayId(display_id))); |
| 943 | 943 |
| 944 // Unsupported resolution. | 944 // Unsupported resolution. |
| 945 test::SetDisplayResolution(display_manager(), display_id, | 945 display::test::SetDisplayResolution(display_manager(), display_id, |
| 946 gfx::Size(800, 4000)); | 946 gfx::Size(800, 4000)); |
| 947 mode = display_manager()->GetSelectedModeForDisplayId(display_id); | 947 mode = display_manager()->GetSelectedModeForDisplayId(display_id); |
| 948 EXPECT_FALSE(!!mode); | 948 EXPECT_FALSE(!!mode); |
| 949 EXPECT_TRUE(expected_mode->IsEquivalent( | 949 EXPECT_TRUE(expected_mode->IsEquivalent( |
| 950 display_manager()->GetActiveModeForDisplayId(display_id))); | 950 display_manager()->GetActiveModeForDisplayId(display_id))); |
| 951 | 951 |
| 952 // Supported resolution. | 952 // Supported resolution. |
| 953 test::SetDisplayResolution(display_manager(), display_id, | 953 display::test::SetDisplayResolution(display_manager(), display_id, |
| 954 gfx::Size(800, 300)); | 954 gfx::Size(800, 300)); |
| 955 mode = display_manager()->GetSelectedModeForDisplayId(display_id); | 955 mode = display_manager()->GetSelectedModeForDisplayId(display_id); |
| 956 EXPECT_TRUE(!!mode); | 956 EXPECT_TRUE(!!mode); |
| 957 EXPECT_EQ("800x300", mode->size().ToString()); | 957 EXPECT_EQ("800x300", mode->size().ToString()); |
| 958 EXPECT_EQ(59.0f, mode->refresh_rate()); | 958 EXPECT_EQ(59.0f, mode->refresh_rate()); |
| 959 EXPECT_FALSE(mode->native()); | 959 EXPECT_FALSE(mode->native()); |
| 960 | 960 |
| 961 expected_mode = | 961 expected_mode = |
| 962 new display::ManagedDisplayMode(gfx::Size(800, 300), 0.0f, false, false); | 962 new display::ManagedDisplayMode(gfx::Size(800, 300), 0.0f, false, false); |
| 963 | 963 |
| 964 EXPECT_TRUE(expected_mode->IsEquivalent( | 964 EXPECT_TRUE(expected_mode->IsEquivalent( |
| 965 display_manager()->GetActiveModeForDisplayId(display_id))); | 965 display_manager()->GetActiveModeForDisplayId(display_id))); |
| 966 | 966 |
| 967 // Best resolution. | 967 // Best resolution. |
| 968 test::SetDisplayResolution(display_manager(), display_id, | 968 display::test::SetDisplayResolution(display_manager(), display_id, |
| 969 gfx::Size(1000, 500)); | 969 gfx::Size(1000, 500)); |
| 970 mode = display_manager()->GetSelectedModeForDisplayId(display_id); | 970 mode = display_manager()->GetSelectedModeForDisplayId(display_id); |
| 971 EXPECT_TRUE(!!mode); | 971 EXPECT_TRUE(!!mode); |
| 972 EXPECT_EQ("1000x500", mode->size().ToString()); | 972 EXPECT_EQ("1000x500", mode->size().ToString()); |
| 973 EXPECT_EQ(58.0f, mode->refresh_rate()); | 973 EXPECT_EQ(58.0f, mode->refresh_rate()); |
| 974 EXPECT_TRUE(mode->native()); | 974 EXPECT_TRUE(mode->native()); |
| 975 | 975 |
| 976 expected_mode = | 976 expected_mode = |
| 977 new display::ManagedDisplayMode(gfx::Size(1000, 500), 0.0f, false, false); | 977 new display::ManagedDisplayMode(gfx::Size(1000, 500), 0.0f, false, false); |
| 978 | 978 |
| 979 EXPECT_TRUE(expected_mode->IsEquivalent( | 979 EXPECT_TRUE(expected_mode->IsEquivalent( |
| (...skipping 15 matching lines...) Expand all Loading... |
| 995 display_modes.push_back(make_scoped_refptr(new display::ManagedDisplayMode( | 995 display_modes.push_back(make_scoped_refptr(new display::ManagedDisplayMode( |
| 996 gfx::Size(400, 500), 60.0f, false, false))); | 996 gfx::Size(400, 500), 60.0f, false, false))); |
| 997 | 997 |
| 998 display::ManagedDisplayInfo::ManagedDisplayModeList copy = display_modes; | 998 display::ManagedDisplayInfo::ManagedDisplayModeList copy = display_modes; |
| 999 native_display_info.SetManagedDisplayModes(copy); | 999 native_display_info.SetManagedDisplayModes(copy); |
| 1000 | 1000 |
| 1001 std::vector<display::ManagedDisplayInfo> display_info_list; | 1001 std::vector<display::ManagedDisplayInfo> display_info_list; |
| 1002 display_info_list.push_back(native_display_info); | 1002 display_info_list.push_back(native_display_info); |
| 1003 display_manager()->OnNativeDisplaysChanged(display_info_list); | 1003 display_manager()->OnNativeDisplaysChanged(display_info_list); |
| 1004 { | 1004 { |
| 1005 test::SetDisplayResolution(display_manager(), display_id, | 1005 display::test::SetDisplayResolution(display_manager(), display_id, |
| 1006 gfx::Size(800, 300)); | 1006 gfx::Size(800, 300)); |
| 1007 display::ManagedDisplayInfo new_native_display_info = | 1007 display::ManagedDisplayInfo new_native_display_info = |
| 1008 CreateDisplayInfo(display_id, gfx::Rect(0, 0, 400, 500)); | 1008 CreateDisplayInfo(display_id, gfx::Rect(0, 0, 400, 500)); |
| 1009 copy = display_modes; | 1009 copy = display_modes; |
| 1010 new_native_display_info.SetManagedDisplayModes(copy); | 1010 new_native_display_info.SetManagedDisplayModes(copy); |
| 1011 std::vector<display::ManagedDisplayInfo> new_display_info_list; | 1011 std::vector<display::ManagedDisplayInfo> new_display_info_list; |
| 1012 new_display_info_list.push_back(new_native_display_info); | 1012 new_display_info_list.push_back(new_native_display_info); |
| 1013 display_manager()->OnNativeDisplaysChanged(new_display_info_list); | 1013 display_manager()->OnNativeDisplaysChanged(new_display_info_list); |
| 1014 | 1014 |
| 1015 scoped_refptr<display::ManagedDisplayMode> mode = | 1015 scoped_refptr<display::ManagedDisplayMode> mode = |
| 1016 display_manager()->GetSelectedModeForDisplayId(display_id); | 1016 display_manager()->GetSelectedModeForDisplayId(display_id); |
| 1017 EXPECT_TRUE(!!mode); | 1017 EXPECT_TRUE(!!mode); |
| 1018 EXPECT_EQ("400x500", mode->size().ToString()); | 1018 EXPECT_EQ("400x500", mode->size().ToString()); |
| 1019 EXPECT_EQ(60.0f, mode->refresh_rate()); | 1019 EXPECT_EQ(60.0f, mode->refresh_rate()); |
| 1020 EXPECT_FALSE(mode->native()); | 1020 EXPECT_FALSE(mode->native()); |
| 1021 } | 1021 } |
| 1022 { | 1022 { |
| 1023 // Best resolution should find itself on the resolutions list. | 1023 // Best resolution should find itself on the resolutions list. |
| 1024 test::SetDisplayResolution(display_manager(), display_id, | 1024 display::test::SetDisplayResolution(display_manager(), display_id, |
| 1025 gfx::Size(800, 300)); | 1025 gfx::Size(800, 300)); |
| 1026 display::ManagedDisplayInfo new_native_display_info = | 1026 display::ManagedDisplayInfo new_native_display_info = |
| 1027 CreateDisplayInfo(display_id, gfx::Rect(0, 0, 1000, 500)); | 1027 CreateDisplayInfo(display_id, gfx::Rect(0, 0, 1000, 500)); |
| 1028 display::ManagedDisplayInfo::ManagedDisplayModeList copy = display_modes; | 1028 display::ManagedDisplayInfo::ManagedDisplayModeList copy = display_modes; |
| 1029 new_native_display_info.SetManagedDisplayModes(copy); | 1029 new_native_display_info.SetManagedDisplayModes(copy); |
| 1030 std::vector<display::ManagedDisplayInfo> new_display_info_list; | 1030 std::vector<display::ManagedDisplayInfo> new_display_info_list; |
| 1031 new_display_info_list.push_back(new_native_display_info); | 1031 new_display_info_list.push_back(new_native_display_info); |
| 1032 display_manager()->OnNativeDisplaysChanged(new_display_info_list); | 1032 display_manager()->OnNativeDisplaysChanged(new_display_info_list); |
| 1033 | 1033 |
| 1034 scoped_refptr<display::ManagedDisplayMode> mode = | 1034 scoped_refptr<display::ManagedDisplayMode> mode = |
| 1035 display_manager()->GetSelectedModeForDisplayId(display_id); | 1035 display_manager()->GetSelectedModeForDisplayId(display_id); |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1086 EXPECT_EQ("1 0 0", GetCountSummary()); | 1086 EXPECT_EQ("1 0 0", GetCountSummary()); |
| 1087 reset(); | 1087 reset(); |
| 1088 | 1088 |
| 1089 UpdateDisplay("200x200/l"); | 1089 UpdateDisplay("200x200/l"); |
| 1090 EXPECT_EQ("1 0 0", GetCountSummary()); | 1090 EXPECT_EQ("1 0 0", GetCountSummary()); |
| 1091 | 1091 |
| 1092 // Having the internal display deactivated should restore user rotation. Newly | 1092 // Having the internal display deactivated should restore user rotation. Newly |
| 1093 // set rotations should be applied. | 1093 // set rotations should be applied. |
| 1094 UpdateDisplay("200x200, 200x200"); | 1094 UpdateDisplay("200x200, 200x200"); |
| 1095 const int64_t internal_display_id = | 1095 const int64_t internal_display_id = |
| 1096 test::DisplayManagerTestApi(display_manager()) | 1096 display::test::DisplayManagerTestApi(display_manager()) |
| 1097 .SetFirstDisplayAsInternalDisplay(); | 1097 .SetFirstDisplayAsInternalDisplay(); |
| 1098 | 1098 |
| 1099 display_manager()->SetDisplayRotation(internal_display_id, | 1099 display_manager()->SetDisplayRotation(internal_display_id, |
| 1100 display::Display::ROTATE_90, | 1100 display::Display::ROTATE_90, |
| 1101 display::Display::ROTATION_SOURCE_USER); | 1101 display::Display::ROTATION_SOURCE_USER); |
| 1102 display_manager()->SetDisplayRotation( | 1102 display_manager()->SetDisplayRotation( |
| 1103 internal_display_id, display::Display::ROTATE_0, | 1103 internal_display_id, display::Display::ROTATE_0, |
| 1104 display::Display::ROTATION_SOURCE_ACTIVE); | 1104 display::Display::ROTATION_SOURCE_ACTIVE); |
| 1105 | 1105 |
| 1106 const display::ManagedDisplayInfo info = | 1106 const display::ManagedDisplayInfo info = |
| 1107 GetDisplayInfoForId(internal_display_id); | 1107 GetDisplayInfoForId(internal_display_id); |
| 1108 EXPECT_EQ(display::Display::ROTATE_0, info.GetActiveRotation()); | 1108 EXPECT_EQ(display::Display::ROTATE_0, info.GetActiveRotation()); |
| 1109 | 1109 |
| 1110 // Deactivate internal display to simulate Docked Mode. | 1110 // Deactivate internal display to simulate Docked Mode. |
| 1111 vector<display::ManagedDisplayInfo> secondary_only; | 1111 vector<display::ManagedDisplayInfo> secondary_only; |
| 1112 secondary_only.push_back(GetDisplayInfoAt(1)); | 1112 secondary_only.push_back(GetDisplayInfoAt(1)); |
| 1113 display_manager()->OnNativeDisplaysChanged(secondary_only); | 1113 display_manager()->OnNativeDisplaysChanged(secondary_only); |
| 1114 | 1114 |
| 1115 const display::ManagedDisplayInfo& post_removal_info = | 1115 const display::ManagedDisplayInfo& post_removal_info = |
| 1116 test::DisplayManagerTestApi(display_manager()) | 1116 display::test::DisplayManagerTestApi(display_manager()) |
| 1117 .GetInternalManagedDisplayInfo(internal_display_id); | 1117 .GetInternalManagedDisplayInfo(internal_display_id); |
| 1118 EXPECT_NE(info.GetActiveRotation(), post_removal_info.GetActiveRotation()); | 1118 EXPECT_NE(info.GetActiveRotation(), post_removal_info.GetActiveRotation()); |
| 1119 EXPECT_EQ(display::Display::ROTATE_90, post_removal_info.GetActiveRotation()); | 1119 EXPECT_EQ(display::Display::ROTATE_90, post_removal_info.GetActiveRotation()); |
| 1120 | 1120 |
| 1121 display_manager()->SetDisplayRotation( | 1121 display_manager()->SetDisplayRotation( |
| 1122 internal_display_id, display::Display::ROTATE_180, | 1122 internal_display_id, display::Display::ROTATE_180, |
| 1123 display::Display::ROTATION_SOURCE_ACTIVE); | 1123 display::Display::ROTATION_SOURCE_ACTIVE); |
| 1124 const display::ManagedDisplayInfo& post_rotation_info = | 1124 const display::ManagedDisplayInfo& post_rotation_info = |
| 1125 test::DisplayManagerTestApi(display_manager()) | 1125 display::test::DisplayManagerTestApi(display_manager()) |
| 1126 .GetInternalManagedDisplayInfo(internal_display_id); | 1126 .GetInternalManagedDisplayInfo(internal_display_id); |
| 1127 EXPECT_NE(info.GetActiveRotation(), post_rotation_info.GetActiveRotation()); | 1127 EXPECT_NE(info.GetActiveRotation(), post_rotation_info.GetActiveRotation()); |
| 1128 EXPECT_EQ(display::Display::ROTATE_180, | 1128 EXPECT_EQ(display::Display::ROTATE_180, |
| 1129 post_rotation_info.GetActiveRotation()); | 1129 post_rotation_info.GetActiveRotation()); |
| 1130 } | 1130 } |
| 1131 | 1131 |
| 1132 // TODO(msw): Broken on Windows. http://crbug.com/584038 | 1132 // TODO(msw): Broken on Windows. http://crbug.com/584038 |
| 1133 #if defined(OS_CHROMEOS) | 1133 #if defined(OS_CHROMEOS) |
| 1134 TEST_P(DisplayManagerTest, UIScale) { | 1134 TEST_P(DisplayManagerTest, UIScale) { |
| 1135 test::ScopedDisable125DSFForUIScaling disable; | 1135 display::test::ScopedDisable125DSFForUIScaling disable; |
| 1136 | 1136 |
| 1137 UpdateDisplay("1280x800"); | 1137 UpdateDisplay("1280x800"); |
| 1138 int64_t display_id = display::Screen::GetScreen()->GetPrimaryDisplay().id(); | 1138 int64_t display_id = display::Screen::GetScreen()->GetPrimaryDisplay().id(); |
| 1139 display_manager()->SetDisplayUIScale(display_id, 1.125f); | 1139 display_manager()->SetDisplayUIScale(display_id, 1.125f); |
| 1140 EXPECT_EQ(1.0, GetDisplayInfoAt(0).configured_ui_scale()); | 1140 EXPECT_EQ(1.0, GetDisplayInfoAt(0).configured_ui_scale()); |
| 1141 display_manager()->SetDisplayUIScale(display_id, 0.8f); | 1141 display_manager()->SetDisplayUIScale(display_id, 0.8f); |
| 1142 EXPECT_EQ(1.0f, GetDisplayInfoAt(0).configured_ui_scale()); | 1142 EXPECT_EQ(1.0f, GetDisplayInfoAt(0).configured_ui_scale()); |
| 1143 display_manager()->SetDisplayUIScale(display_id, 0.75f); | 1143 display_manager()->SetDisplayUIScale(display_id, 0.75f); |
| 1144 EXPECT_EQ(1.0f, GetDisplayInfoAt(0).configured_ui_scale()); | 1144 EXPECT_EQ(1.0f, GetDisplayInfoAt(0).configured_ui_scale()); |
| 1145 display_manager()->SetDisplayUIScale(display_id, 0.625f); | 1145 display_manager()->SetDisplayUIScale(display_id, 0.625f); |
| 1146 EXPECT_EQ(1.0f, GetDisplayInfoAt(0).configured_ui_scale()); | 1146 EXPECT_EQ(1.0f, GetDisplayInfoAt(0).configured_ui_scale()); |
| 1147 | 1147 |
| 1148 test::ScopedSetInternalDisplayId set_internal(display_manager(), display_id); | 1148 display::test::ScopedSetInternalDisplayId set_internal(display_manager(), |
| 1149 display_id); |
| 1149 | 1150 |
| 1150 display_manager()->SetDisplayUIScale(display_id, 1.5f); | 1151 display_manager()->SetDisplayUIScale(display_id, 1.5f); |
| 1151 EXPECT_EQ(1.0f, GetDisplayInfoAt(0).configured_ui_scale()); | 1152 EXPECT_EQ(1.0f, GetDisplayInfoAt(0).configured_ui_scale()); |
| 1152 display_manager()->SetDisplayUIScale(display_id, 1.25f); | 1153 display_manager()->SetDisplayUIScale(display_id, 1.25f); |
| 1153 EXPECT_EQ(1.0f, GetDisplayInfoAt(0).configured_ui_scale()); | 1154 EXPECT_EQ(1.0f, GetDisplayInfoAt(0).configured_ui_scale()); |
| 1154 display_manager()->SetDisplayUIScale(display_id, 1.125f); | 1155 display_manager()->SetDisplayUIScale(display_id, 1.125f); |
| 1155 EXPECT_EQ(1.125f, GetDisplayInfoAt(0).configured_ui_scale()); | 1156 EXPECT_EQ(1.125f, GetDisplayInfoAt(0).configured_ui_scale()); |
| 1156 display_manager()->SetDisplayUIScale(display_id, 0.8f); | 1157 display_manager()->SetDisplayUIScale(display_id, 0.8f); |
| 1157 EXPECT_EQ(0.8f, GetDisplayInfoAt(0).configured_ui_scale()); | 1158 EXPECT_EQ(0.8f, GetDisplayInfoAt(0).configured_ui_scale()); |
| 1158 display_manager()->SetDisplayUIScale(display_id, 0.75f); | 1159 display_manager()->SetDisplayUIScale(display_id, 0.75f); |
| (...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1240 native_display_info.SetManagedDisplayModes(mode_list); | 1241 native_display_info.SetManagedDisplayModes(mode_list); |
| 1241 | 1242 |
| 1242 std::vector<display::ManagedDisplayInfo> display_info_list; | 1243 std::vector<display::ManagedDisplayInfo> display_info_list; |
| 1243 display_info_list.push_back(native_display_info); | 1244 display_info_list.push_back(native_display_info); |
| 1244 display_manager()->OnNativeDisplaysChanged(display_info_list); | 1245 display_manager()->OnNativeDisplaysChanged(display_info_list); |
| 1245 | 1246 |
| 1246 scoped_refptr<display::ManagedDisplayMode> expected_mode = base_mode; | 1247 scoped_refptr<display::ManagedDisplayMode> expected_mode = base_mode; |
| 1247 EXPECT_TRUE(expected_mode->IsEquivalent( | 1248 EXPECT_TRUE(expected_mode->IsEquivalent( |
| 1248 display_manager()->GetActiveModeForDisplayId(display_id))); | 1249 display_manager()->GetActiveModeForDisplayId(display_id))); |
| 1249 | 1250 |
| 1250 test::ScopedSetInternalDisplayId set_internal(display_manager(), display_id); | 1251 display::test::ScopedSetInternalDisplayId set_internal(display_manager(), |
| 1252 display_id); |
| 1251 | 1253 |
| 1252 display_manager()->SetDisplayUIScale(display_id, 1.5f); | 1254 display_manager()->SetDisplayUIScale(display_id, 1.5f); |
| 1253 EXPECT_EQ(1.0f, GetDisplayInfoAt(0).configured_ui_scale()); | 1255 EXPECT_EQ(1.0f, GetDisplayInfoAt(0).configured_ui_scale()); |
| 1254 EXPECT_TRUE(expected_mode->IsEquivalent( | 1256 EXPECT_TRUE(expected_mode->IsEquivalent( |
| 1255 display_manager()->GetActiveModeForDisplayId(display_id))); | 1257 display_manager()->GetActiveModeForDisplayId(display_id))); |
| 1256 display_manager()->SetDisplayUIScale(display_id, 1.25f); | 1258 display_manager()->SetDisplayUIScale(display_id, 1.25f); |
| 1257 EXPECT_EQ(1.0f, GetDisplayInfoAt(0).configured_ui_scale()); | 1259 EXPECT_EQ(1.0f, GetDisplayInfoAt(0).configured_ui_scale()); |
| 1258 EXPECT_TRUE(expected_mode->IsEquivalent( | 1260 EXPECT_TRUE(expected_mode->IsEquivalent( |
| 1259 display_manager()->GetActiveModeForDisplayId(display_id))); | 1261 display_manager()->GetActiveModeForDisplayId(display_id))); |
| 1260 display_manager()->SetDisplayUIScale(display_id, 1.125f); | 1262 display_manager()->SetDisplayUIScale(display_id, 1.125f); |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1305 | 1307 |
| 1306 EXPECT_TRUE(expected_mode->IsEquivalent( | 1308 EXPECT_TRUE(expected_mode->IsEquivalent( |
| 1307 display_manager()->GetActiveModeForDisplayId(display_id))); | 1309 display_manager()->GetActiveModeForDisplayId(display_id))); |
| 1308 } | 1310 } |
| 1309 | 1311 |
| 1310 // TODO(msw): Broken on Windows. http://crbug.com/584038 | 1312 // TODO(msw): Broken on Windows. http://crbug.com/584038 |
| 1311 #if defined(OS_CHROMEOS) | 1313 #if defined(OS_CHROMEOS) |
| 1312 TEST_P(DisplayManagerTest, Use125DSFForUIScaling) { | 1314 TEST_P(DisplayManagerTest, Use125DSFForUIScaling) { |
| 1313 int64_t display_id = display::Screen::GetScreen()->GetPrimaryDisplay().id(); | 1315 int64_t display_id = display::Screen::GetScreen()->GetPrimaryDisplay().id(); |
| 1314 | 1316 |
| 1315 test::ScopedSetInternalDisplayId set_internal(display_manager(), display_id); | 1317 display::test::ScopedSetInternalDisplayId set_internal(display_manager(), |
| 1318 display_id); |
| 1316 UpdateDisplay("1920x1080*1.25"); | 1319 UpdateDisplay("1920x1080*1.25"); |
| 1317 EXPECT_EQ(1.0f, GetDisplayInfoAt(0).GetEffectiveDeviceScaleFactor()); | 1320 EXPECT_EQ(1.0f, GetDisplayInfoAt(0).GetEffectiveDeviceScaleFactor()); |
| 1318 EXPECT_EQ(1.0f, GetDisplayInfoAt(0).GetEffectiveUIScale()); | 1321 EXPECT_EQ(1.0f, GetDisplayInfoAt(0).GetEffectiveUIScale()); |
| 1319 | 1322 |
| 1320 display_manager()->SetDisplayUIScale(display_id, 0.8f); | 1323 display_manager()->SetDisplayUIScale(display_id, 0.8f); |
| 1321 EXPECT_EQ(1.25f, GetDisplayInfoAt(0).GetEffectiveDeviceScaleFactor()); | 1324 EXPECT_EQ(1.25f, GetDisplayInfoAt(0).GetEffectiveDeviceScaleFactor()); |
| 1322 EXPECT_EQ(1.0f, GetDisplayInfoAt(0).GetEffectiveUIScale()); | 1325 EXPECT_EQ(1.0f, GetDisplayInfoAt(0).GetEffectiveUIScale()); |
| 1323 EXPECT_EQ("1536x864", GetDisplayForId(display_id).size().ToString()); | 1326 EXPECT_EQ("1536x864", GetDisplayForId(display_id).size().ToString()); |
| 1324 | 1327 |
| 1325 display_manager()->SetDisplayUIScale(display_id, 0.5f); | 1328 display_manager()->SetDisplayUIScale(display_id, 0.5f); |
| 1326 EXPECT_EQ(1.0f, GetDisplayInfoAt(0).GetEffectiveDeviceScaleFactor()); | 1329 EXPECT_EQ(1.0f, GetDisplayInfoAt(0).GetEffectiveDeviceScaleFactor()); |
| 1327 EXPECT_EQ(0.5f, GetDisplayInfoAt(0).GetEffectiveUIScale()); | 1330 EXPECT_EQ(0.5f, GetDisplayInfoAt(0).GetEffectiveUIScale()); |
| 1328 EXPECT_EQ("960x540", GetDisplayForId(display_id).size().ToString()); | 1331 EXPECT_EQ("960x540", GetDisplayForId(display_id).size().ToString()); |
| 1329 | 1332 |
| 1330 display_manager()->SetDisplayUIScale(display_id, 1.25f); | 1333 display_manager()->SetDisplayUIScale(display_id, 1.25f); |
| 1331 EXPECT_EQ(1.0f, GetDisplayInfoAt(0).GetEffectiveDeviceScaleFactor()); | 1334 EXPECT_EQ(1.0f, GetDisplayInfoAt(0).GetEffectiveDeviceScaleFactor()); |
| 1332 EXPECT_EQ(1.25f, GetDisplayInfoAt(0).GetEffectiveUIScale()); | 1335 EXPECT_EQ(1.25f, GetDisplayInfoAt(0).GetEffectiveUIScale()); |
| 1333 EXPECT_EQ("2400x1350", GetDisplayForId(display_id).size().ToString()); | 1336 EXPECT_EQ("2400x1350", GetDisplayForId(display_id).size().ToString()); |
| 1334 } | 1337 } |
| 1335 #endif // defined(OS_CHROMEOS) | 1338 #endif // defined(OS_CHROMEOS) |
| 1336 | 1339 |
| 1337 // TODO(msw): Broken on Windows. http://crbug.com/584038 | 1340 // TODO(msw): Broken on Windows. http://crbug.com/584038 |
| 1338 #if defined(OS_CHROMEOS) | 1341 #if defined(OS_CHROMEOS) |
| 1339 TEST_P(DisplayManagerTest, FHD125DefaultsTo08UIScaling) { | 1342 TEST_P(DisplayManagerTest, FHD125DefaultsTo08UIScaling) { |
| 1340 int64_t display_id = display::Screen::GetScreen()->GetPrimaryDisplay().id(); | 1343 int64_t display_id = display::Screen::GetScreen()->GetPrimaryDisplay().id(); |
| 1341 | 1344 |
| 1342 display_id++; | 1345 display_id++; |
| 1343 test::ScopedSetInternalDisplayId set_internal(display_manager(), display_id); | 1346 display::test::ScopedSetInternalDisplayId set_internal(display_manager(), |
| 1347 display_id); |
| 1344 | 1348 |
| 1345 // Setup the display modes with UI-scale. | 1349 // Setup the display modes with UI-scale. |
| 1346 display::ManagedDisplayInfo native_display_info = | 1350 display::ManagedDisplayInfo native_display_info = |
| 1347 CreateDisplayInfo(display_id, gfx::Rect(0, 0, 1920, 1080)); | 1351 CreateDisplayInfo(display_id, gfx::Rect(0, 0, 1920, 1080)); |
| 1348 native_display_info.set_device_scale_factor(1.25); | 1352 native_display_info.set_device_scale_factor(1.25); |
| 1349 | 1353 |
| 1350 const scoped_refptr<display::ManagedDisplayMode>& base_mode( | 1354 const scoped_refptr<display::ManagedDisplayMode>& base_mode( |
| 1351 new display::ManagedDisplayMode(gfx::Size(1920, 1080), 60.0f, false, | 1355 new display::ManagedDisplayMode(gfx::Size(1920, 1080), 60.0f, false, |
| 1352 false)); | 1356 false)); |
| 1353 display::ManagedDisplayInfo::ManagedDisplayModeList mode_list = | 1357 display::ManagedDisplayInfo::ManagedDisplayModeList mode_list = |
| (...skipping 11 matching lines...) Expand all Loading... |
| 1365 #endif // defined(OS_CHROMEOS) | 1369 #endif // defined(OS_CHROMEOS) |
| 1366 | 1370 |
| 1367 // TODO(msw): Broken on Windows. http://crbug.com/584038 | 1371 // TODO(msw): Broken on Windows. http://crbug.com/584038 |
| 1368 #if defined(OS_CHROMEOS) | 1372 #if defined(OS_CHROMEOS) |
| 1369 // Don't default to 1.25 DSF if the user already has a prefrence stored for | 1373 // Don't default to 1.25 DSF if the user already has a prefrence stored for |
| 1370 // the internal display. | 1374 // the internal display. |
| 1371 TEST_P(DisplayManagerTest, FHD125DefaultsTo08UIScalingNoOverride) { | 1375 TEST_P(DisplayManagerTest, FHD125DefaultsTo08UIScalingNoOverride) { |
| 1372 int64_t display_id = display::Screen::GetScreen()->GetPrimaryDisplay().id(); | 1376 int64_t display_id = display::Screen::GetScreen()->GetPrimaryDisplay().id(); |
| 1373 | 1377 |
| 1374 display_id++; | 1378 display_id++; |
| 1375 test::ScopedSetInternalDisplayId set_internal(display_manager(), display_id); | 1379 display::test::ScopedSetInternalDisplayId set_internal(display_manager(), |
| 1380 display_id); |
| 1376 const gfx::Insets dummy_overscan_insets; | 1381 const gfx::Insets dummy_overscan_insets; |
| 1377 display_manager()->RegisterDisplayProperty( | 1382 display_manager()->RegisterDisplayProperty( |
| 1378 display_id, display::Display::ROTATE_0, 1.0f, &dummy_overscan_insets, | 1383 display_id, display::Display::ROTATE_0, 1.0f, &dummy_overscan_insets, |
| 1379 gfx::Size(), 1.0f, ui::ColorCalibrationProfile()); | 1384 gfx::Size(), 1.0f, ui::ColorCalibrationProfile()); |
| 1380 | 1385 |
| 1381 // Setup the display modes with UI-scale. | 1386 // Setup the display modes with UI-scale. |
| 1382 display::ManagedDisplayInfo native_display_info = | 1387 display::ManagedDisplayInfo native_display_info = |
| 1383 CreateDisplayInfo(display_id, gfx::Rect(0, 0, 1920, 1080)); | 1388 CreateDisplayInfo(display_id, gfx::Rect(0, 0, 1920, 1080)); |
| 1384 native_display_info.set_device_scale_factor(1.25); | 1389 native_display_info.set_device_scale_factor(1.25); |
| 1385 | 1390 |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1419 EXPECT_EQ("800x400", info.display_modes()[1]->size().ToString()); | 1424 EXPECT_EQ("800x400", info.display_modes()[1]->size().ToString()); |
| 1420 EXPECT_FALSE(info.display_modes()[1]->native()); | 1425 EXPECT_FALSE(info.display_modes()[1]->native()); |
| 1421 EXPECT_EQ( | 1426 EXPECT_EQ( |
| 1422 "400x200", | 1427 "400x200", |
| 1423 display::Screen::GetScreen()->GetPrimaryDisplay().size().ToString()); | 1428 display::Screen::GetScreen()->GetPrimaryDisplay().size().ToString()); |
| 1424 scoped_refptr<display::ManagedDisplayMode> active_mode = | 1429 scoped_refptr<display::ManagedDisplayMode> active_mode = |
| 1425 display_manager()->GetActiveModeForDisplayId(unified_id); | 1430 display_manager()->GetActiveModeForDisplayId(unified_id); |
| 1426 EXPECT_EQ(1.0f, active_mode->ui_scale()); | 1431 EXPECT_EQ(1.0f, active_mode->ui_scale()); |
| 1427 EXPECT_EQ("400x200", active_mode->size().ToString()); | 1432 EXPECT_EQ("400x200", active_mode->size().ToString()); |
| 1428 | 1433 |
| 1429 EXPECT_TRUE(test::SetDisplayResolution(display_manager(), unified_id, | 1434 EXPECT_TRUE(display::test::SetDisplayResolution(display_manager(), unified_id, |
| 1430 gfx::Size(800, 400))); | 1435 gfx::Size(800, 400))); |
| 1431 EXPECT_EQ( | 1436 EXPECT_EQ( |
| 1432 "800x400", | 1437 "800x400", |
| 1433 display::Screen::GetScreen()->GetPrimaryDisplay().size().ToString()); | 1438 display::Screen::GetScreen()->GetPrimaryDisplay().size().ToString()); |
| 1434 | 1439 |
| 1435 active_mode = display_manager()->GetActiveModeForDisplayId(unified_id); | 1440 active_mode = display_manager()->GetActiveModeForDisplayId(unified_id); |
| 1436 EXPECT_EQ(1.0f, active_mode->ui_scale()); | 1441 EXPECT_EQ(1.0f, active_mode->ui_scale()); |
| 1437 EXPECT_EQ("800x400", active_mode->size().ToString()); | 1442 EXPECT_EQ("800x400", active_mode->size().ToString()); |
| 1438 | 1443 |
| 1439 // resolution change will not persist in unified desktop mode. | 1444 // resolution change will not persist in unified desktop mode. |
| 1440 UpdateDisplay("600x600, 200x200"); | 1445 UpdateDisplay("600x600, 200x200"); |
| (...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1537 return; | 1542 return; |
| 1538 | 1543 |
| 1539 UpdateDisplay("300x400,400x500"); | 1544 UpdateDisplay("300x400,400x500"); |
| 1540 | 1545 |
| 1541 test::MirrorWindowTestApi test_api; | 1546 test::MirrorWindowTestApi test_api; |
| 1542 EXPECT_EQ(nullptr, test_api.GetHost()); | 1547 EXPECT_EQ(nullptr, test_api.GetHost()); |
| 1543 | 1548 |
| 1544 TestDisplayObserver display_observer; | 1549 TestDisplayObserver display_observer; |
| 1545 display::Screen::GetScreen()->AddObserver(&display_observer); | 1550 display::Screen::GetScreen()->AddObserver(&display_observer); |
| 1546 | 1551 |
| 1547 display_manager()->SetMultiDisplayMode(DisplayManager::MIRRORING); | 1552 display_manager()->SetMultiDisplayMode(display::DisplayManager::MIRRORING); |
| 1548 display_manager()->UpdateDisplays(); | 1553 display_manager()->UpdateDisplays(); |
| 1549 RunAllPendingInMessageLoop(); | 1554 RunAllPendingInMessageLoop(); |
| 1550 EXPECT_TRUE(display_observer.changed_and_reset()); | 1555 EXPECT_TRUE(display_observer.changed_and_reset()); |
| 1551 EXPECT_EQ(1U, display_manager()->GetNumDisplays()); | 1556 EXPECT_EQ(1U, display_manager()->GetNumDisplays()); |
| 1552 EXPECT_EQ( | 1557 EXPECT_EQ( |
| 1553 "0,0 300x400", | 1558 "0,0 300x400", |
| 1554 display::Screen::GetScreen()->GetPrimaryDisplay().bounds().ToString()); | 1559 display::Screen::GetScreen()->GetPrimaryDisplay().bounds().ToString()); |
| 1555 EXPECT_EQ("400x500", test_api.GetHost()->GetBounds().size().ToString()); | 1560 EXPECT_EQ("400x500", test_api.GetHost()->GetBounds().size().ToString()); |
| 1556 EXPECT_EQ("300x400", | 1561 EXPECT_EQ("300x400", |
| 1557 test_api.GetHost()->window()->bounds().size().ToString()); | 1562 test_api.GetHost()->window()->bounds().size().ToString()); |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1610 primary_id, display::Display::ROTATE_180, | 1615 primary_id, display::Display::ROTATE_180, |
| 1611 display::Display::ROTATION_SOURCE_ACTIVE); | 1616 display::Display::ROTATION_SOURCE_ACTIVE); |
| 1612 display_manager()->SetMirrorMode(false); | 1617 display_manager()->SetMirrorMode(false); |
| 1613 } | 1618 } |
| 1614 | 1619 |
| 1615 TEST_P(DisplayManagerTest, SingleDisplayToSoftwareMirroring) { | 1620 TEST_P(DisplayManagerTest, SingleDisplayToSoftwareMirroring) { |
| 1616 if (!SupportsMultipleDisplays()) | 1621 if (!SupportsMultipleDisplays()) |
| 1617 return; | 1622 return; |
| 1618 UpdateDisplay("600x400"); | 1623 UpdateDisplay("600x400"); |
| 1619 | 1624 |
| 1620 display_manager()->SetMultiDisplayMode(DisplayManager::MIRRORING); | 1625 display_manager()->SetMultiDisplayMode(display::DisplayManager::MIRRORING); |
| 1621 UpdateDisplay("600x400,600x400"); | 1626 UpdateDisplay("600x400,600x400"); |
| 1622 | 1627 |
| 1623 EXPECT_TRUE(display_manager()->IsInMirrorMode()); | 1628 EXPECT_TRUE(display_manager()->IsInMirrorMode()); |
| 1624 EXPECT_EQ(1U, display_manager()->GetNumDisplays()); | 1629 EXPECT_EQ(1U, display_manager()->GetNumDisplays()); |
| 1625 WindowTreeHostManager* window_tree_host_manager = | 1630 WindowTreeHostManager* window_tree_host_manager = |
| 1626 ash::Shell::GetInstance()->window_tree_host_manager(); | 1631 ash::Shell::GetInstance()->window_tree_host_manager(); |
| 1627 EXPECT_TRUE( | 1632 EXPECT_TRUE( |
| 1628 window_tree_host_manager->mirror_window_controller()->GetWindow()); | 1633 window_tree_host_manager->mirror_window_controller()->GetWindow()); |
| 1629 | 1634 |
| 1630 UpdateDisplay("600x400"); | 1635 UpdateDisplay("600x400"); |
| (...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1865 UpdateDisplay("500x300,400x500"); | 1870 UpdateDisplay("500x300,400x500"); |
| 1866 // 400 * 300 / 500 + 500 ~= 739. | 1871 // 400 * 300 / 500 + 500 ~= 739. |
| 1867 EXPECT_EQ(gfx::Size(739, 300), screen->GetPrimaryDisplay().size()); | 1872 EXPECT_EQ(gfx::Size(739, 300), screen->GetPrimaryDisplay().size()); |
| 1868 | 1873 |
| 1869 // The default should fit to the internal display. | 1874 // The default should fit to the internal display. |
| 1870 std::vector<display::ManagedDisplayInfo> display_info_list; | 1875 std::vector<display::ManagedDisplayInfo> display_info_list; |
| 1871 display_info_list.push_back(CreateDisplayInfo(10, gfx::Rect(0, 0, 500, 300))); | 1876 display_info_list.push_back(CreateDisplayInfo(10, gfx::Rect(0, 0, 500, 300))); |
| 1872 display_info_list.push_back( | 1877 display_info_list.push_back( |
| 1873 CreateDisplayInfo(11, gfx::Rect(500, 0, 400, 500))); | 1878 CreateDisplayInfo(11, gfx::Rect(500, 0, 400, 500))); |
| 1874 { | 1879 { |
| 1875 test::ScopedSetInternalDisplayId set_internal(display_manager(), 11); | 1880 display::test::ScopedSetInternalDisplayId set_internal(display_manager(), |
| 1881 11); |
| 1876 display_manager()->OnNativeDisplaysChanged(display_info_list); | 1882 display_manager()->OnNativeDisplaysChanged(display_info_list); |
| 1877 // 500 * 500 / 300 + 400 ~= 1233. | 1883 // 500 * 500 / 300 + 400 ~= 1233. |
| 1878 EXPECT_EQ(gfx::Size(1233, 500), screen->GetPrimaryDisplay().size()); | 1884 EXPECT_EQ(gfx::Size(1233, 500), screen->GetPrimaryDisplay().size()); |
| 1879 } | 1885 } |
| 1880 | 1886 |
| 1881 // Switch to 3 displays. | 1887 // Switch to 3 displays. |
| 1882 UpdateDisplay("500x300,400x500,500x300"); | 1888 UpdateDisplay("500x300,400x500,500x300"); |
| 1883 EXPECT_EQ(gfx::Size(1239, 300), screen->GetPrimaryDisplay().size()); | 1889 EXPECT_EQ(gfx::Size(1239, 300), screen->GetPrimaryDisplay().size()); |
| 1884 | 1890 |
| 1885 // Switch back to extended desktop. | 1891 // Switch back to extended desktop. |
| (...skipping 24 matching lines...) Expand all Loading... |
| 1910 display_info_list.push_back(d2); | 1916 display_info_list.push_back(d2); |
| 1911 display_manager()->OnNativeDisplaysChanged(display_info_list); | 1917 display_manager()->OnNativeDisplaysChanged(display_info_list); |
| 1912 ASSERT_TRUE(display_manager()->IsInMirrorMode()); | 1918 ASSERT_TRUE(display_manager()->IsInMirrorMode()); |
| 1913 display_manager()->SetUnifiedDesktopEnabled(true); | 1919 display_manager()->SetUnifiedDesktopEnabled(true); |
| 1914 EXPECT_TRUE(display_manager()->IsInMirrorMode()); | 1920 EXPECT_TRUE(display_manager()->IsInMirrorMode()); |
| 1915 | 1921 |
| 1916 // The display manager automaticaclly switches to software mirroring | 1922 // The display manager automaticaclly switches to software mirroring |
| 1917 // if the displays are configured to use mirroring when running on desktop. | 1923 // if the displays are configured to use mirroring when running on desktop. |
| 1918 // This is a workdaround to force the display manager to forget | 1924 // This is a workdaround to force the display manager to forget |
| 1919 // the mirroing layout. | 1925 // the mirroing layout. |
| 1920 display::DisplayIdList list = test::CreateDisplayIdList2(1, 2); | 1926 display::DisplayIdList list = display::test::CreateDisplayIdList2(1, 2); |
| 1921 display::DisplayLayoutBuilder builder( | 1927 display::DisplayLayoutBuilder builder( |
| 1922 display_manager()->layout_store()->GetRegisteredDisplayLayout(list)); | 1928 display_manager()->layout_store()->GetRegisteredDisplayLayout(list)); |
| 1923 builder.SetMirrored(false); | 1929 builder.SetMirrored(false); |
| 1924 display_manager()->layout_store()->RegisterLayoutForDisplayIdList( | 1930 display_manager()->layout_store()->RegisterLayoutForDisplayIdList( |
| 1925 list, builder.Build()); | 1931 list, builder.Build()); |
| 1926 | 1932 |
| 1927 // Exit from hardware mirroring. | 1933 // Exit from hardware mirroring. |
| 1928 d2.SetBounds(gfx::Rect(0, 500, 500, 500)); | 1934 d2.SetBounds(gfx::Rect(0, 500, 500, 500)); |
| 1929 display_info_list.clear(); | 1935 display_info_list.clear(); |
| 1930 display_info_list.push_back(d1); | 1936 display_info_list.push_back(d1); |
| (...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2133 CreateDisplayInfo(internal_id, gfx::Rect(0, 0, 500, 500)); | 2139 CreateDisplayInfo(internal_id, gfx::Rect(0, 0, 500, 500)); |
| 2134 const display::ManagedDisplayInfo external_display_info = | 2140 const display::ManagedDisplayInfo external_display_info = |
| 2135 CreateDisplayInfo(external_id, gfx::Rect(1, 1, 100, 100)); | 2141 CreateDisplayInfo(external_id, gfx::Rect(1, 1, 100, 100)); |
| 2136 std::vector<display::ManagedDisplayInfo> display_info_list; | 2142 std::vector<display::ManagedDisplayInfo> display_info_list; |
| 2137 | 2143 |
| 2138 // software mirroring. | 2144 // software mirroring. |
| 2139 display_info_list.push_back(internal_display_info); | 2145 display_info_list.push_back(internal_display_info); |
| 2140 display_info_list.push_back(external_display_info); | 2146 display_info_list.push_back(external_display_info); |
| 2141 display_manager()->OnNativeDisplaysChanged(display_info_list); | 2147 display_manager()->OnNativeDisplaysChanged(display_info_list); |
| 2142 const int64_t internal_display_id = | 2148 const int64_t internal_display_id = |
| 2143 test::DisplayManagerTestApi(display_manager()) | 2149 display::test::DisplayManagerTestApi(display_manager()) |
| 2144 .SetFirstDisplayAsInternalDisplay(); | 2150 .SetFirstDisplayAsInternalDisplay(); |
| 2145 EXPECT_EQ(internal_id, internal_display_id); | 2151 EXPECT_EQ(internal_id, internal_display_id); |
| 2146 | 2152 |
| 2147 display_info_list.clear(); | 2153 display_info_list.clear(); |
| 2148 display_info_list.push_back(external_display_info); | 2154 display_info_list.push_back(external_display_info); |
| 2149 display_manager()->OnNativeDisplaysChanged(display_info_list); | 2155 display_manager()->OnNativeDisplaysChanged(display_info_list); |
| 2150 EXPECT_EQ(1U, display_manager()->active_display_list().size()); | 2156 EXPECT_EQ(1U, display_manager()->active_display_list().size()); |
| 2151 | 2157 |
| 2152 EXPECT_TRUE(display_manager()->IsActiveDisplayId(external_id)); | 2158 EXPECT_TRUE(display_manager()->IsActiveDisplayId(external_id)); |
| 2153 EXPECT_FALSE(display_manager()->IsActiveDisplayId(internal_id)); | 2159 EXPECT_FALSE(display_manager()->IsActiveDisplayId(internal_id)); |
| 2154 | 2160 |
| 2155 EXPECT_FALSE(display_manager()->ZoomInternalDisplay(true)); | 2161 EXPECT_FALSE(display_manager()->ZoomInternalDisplay(true)); |
| 2156 EXPECT_FALSE(display_manager()->ZoomInternalDisplay(false)); | 2162 EXPECT_FALSE(display_manager()->ZoomInternalDisplay(false)); |
| 2157 EXPECT_FALSE(display_manager()->SetDisplayUIScale(internal_id, 1.0f)); | 2163 EXPECT_FALSE(display_manager()->SetDisplayUIScale(internal_id, 1.0f)); |
| 2158 } | 2164 } |
| 2159 | 2165 |
| 2160 // Make sure that bad layout information is ignored and does not crash. | 2166 // Make sure that bad layout information is ignored and does not crash. |
| 2161 TEST_P(DisplayManagerTest, DontRegisterBadConfig) { | 2167 TEST_P(DisplayManagerTest, DontRegisterBadConfig) { |
| 2162 if (!SupportsMultipleDisplays()) | 2168 if (!SupportsMultipleDisplays()) |
| 2163 return; | 2169 return; |
| 2164 display::DisplayIdList list = ash::test::CreateDisplayIdList2(1, 2); | 2170 display::DisplayIdList list = display::test::CreateDisplayIdList2(1, 2); |
| 2165 display::DisplayLayoutBuilder builder(1); | 2171 display::DisplayLayoutBuilder builder(1); |
| 2166 builder.AddDisplayPlacement(2, 1, display::DisplayPlacement::LEFT, 0); | 2172 builder.AddDisplayPlacement(2, 1, display::DisplayPlacement::LEFT, 0); |
| 2167 builder.AddDisplayPlacement(3, 1, display::DisplayPlacement::BOTTOM, 0); | 2173 builder.AddDisplayPlacement(3, 1, display::DisplayPlacement::BOTTOM, 0); |
| 2168 | 2174 |
| 2169 display_manager()->layout_store()->RegisterLayoutForDisplayIdList( | 2175 display_manager()->layout_store()->RegisterLayoutForDisplayIdList( |
| 2170 list, builder.Build()); | 2176 list, builder.Build()); |
| 2171 } | 2177 } |
| 2172 | 2178 |
| 2173 class ScreenShutdownTest : public test::AshTestBase { | 2179 class ScreenShutdownTest : public test::AshTestBase { |
| 2174 public: | 2180 public: |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2247 TEST_F(DisplayManagerFontTest, TextSubpixelPositioningWithDsf100Internal) { | 2253 TEST_F(DisplayManagerFontTest, TextSubpixelPositioningWithDsf100Internal) { |
| 2248 FontTestHelper helper(1.0f, FontTestHelper::INTERNAL); | 2254 FontTestHelper helper(1.0f, FontTestHelper::INTERNAL); |
| 2249 ASSERT_DOUBLE_EQ( | 2255 ASSERT_DOUBLE_EQ( |
| 2250 1.0f, | 2256 1.0f, |
| 2251 display::Screen::GetScreen()->GetPrimaryDisplay().device_scale_factor()); | 2257 display::Screen::GetScreen()->GetPrimaryDisplay().device_scale_factor()); |
| 2252 EXPECT_FALSE(IsTextSubpixelPositioningEnabled()); | 2258 EXPECT_FALSE(IsTextSubpixelPositioningEnabled()); |
| 2253 EXPECT_NE(gfx::FontRenderParams::HINTING_NONE, GetFontHintingParams()); | 2259 EXPECT_NE(gfx::FontRenderParams::HINTING_NONE, GetFontHintingParams()); |
| 2254 } | 2260 } |
| 2255 | 2261 |
| 2256 TEST_F(DisplayManagerFontTest, TextSubpixelPositioningWithDsf125Internal) { | 2262 TEST_F(DisplayManagerFontTest, TextSubpixelPositioningWithDsf125Internal) { |
| 2257 test::ScopedDisable125DSFForUIScaling disable; | 2263 display::test::ScopedDisable125DSFForUIScaling disable; |
| 2258 FontTestHelper helper(1.25f, FontTestHelper::INTERNAL); | 2264 FontTestHelper helper(1.25f, FontTestHelper::INTERNAL); |
| 2259 ASSERT_DOUBLE_EQ( | 2265 ASSERT_DOUBLE_EQ( |
| 2260 1.25f, | 2266 1.25f, |
| 2261 display::Screen::GetScreen()->GetPrimaryDisplay().device_scale_factor()); | 2267 display::Screen::GetScreen()->GetPrimaryDisplay().device_scale_factor()); |
| 2262 EXPECT_TRUE(IsTextSubpixelPositioningEnabled()); | 2268 EXPECT_TRUE(IsTextSubpixelPositioningEnabled()); |
| 2263 EXPECT_EQ(gfx::FontRenderParams::HINTING_NONE, GetFontHintingParams()); | 2269 EXPECT_EQ(gfx::FontRenderParams::HINTING_NONE, GetFontHintingParams()); |
| 2264 } | 2270 } |
| 2265 | 2271 |
| 2266 TEST_F(DisplayManagerFontTest, TextSubpixelPositioningWithDsf200Internal) { | 2272 TEST_F(DisplayManagerFontTest, TextSubpixelPositioningWithDsf200Internal) { |
| 2267 FontTestHelper helper(2.0f, FontTestHelper::INTERNAL); | 2273 FontTestHelper helper(2.0f, FontTestHelper::INTERNAL); |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2344 | 2350 |
| 2345 TEST_P(DisplayManagerTest, RejectInvalidLayoutData) { | 2351 TEST_P(DisplayManagerTest, RejectInvalidLayoutData) { |
| 2346 display::DisplayLayoutStore* layout_store = display_manager()->layout_store(); | 2352 display::DisplayLayoutStore* layout_store = display_manager()->layout_store(); |
| 2347 int64_t id1 = 10001; | 2353 int64_t id1 = 10001; |
| 2348 int64_t id2 = 10002; | 2354 int64_t id2 = 10002; |
| 2349 ASSERT_TRUE(display::CompareDisplayIds(id1, id2)); | 2355 ASSERT_TRUE(display::CompareDisplayIds(id1, id2)); |
| 2350 display::DisplayLayoutBuilder good_builder(id1); | 2356 display::DisplayLayoutBuilder good_builder(id1); |
| 2351 good_builder.SetSecondaryPlacement(id2, display::DisplayPlacement::LEFT, 0); | 2357 good_builder.SetSecondaryPlacement(id2, display::DisplayPlacement::LEFT, 0); |
| 2352 std::unique_ptr<display::DisplayLayout> good(good_builder.Build()); | 2358 std::unique_ptr<display::DisplayLayout> good(good_builder.Build()); |
| 2353 | 2359 |
| 2354 display::DisplayIdList good_list = test::CreateDisplayIdList2(id1, id2); | 2360 display::DisplayIdList good_list = |
| 2361 display::test::CreateDisplayIdList2(id1, id2); |
| 2355 layout_store->RegisterLayoutForDisplayIdList(good_list, good->Copy()); | 2362 layout_store->RegisterLayoutForDisplayIdList(good_list, good->Copy()); |
| 2356 | 2363 |
| 2357 display::DisplayLayoutBuilder bad(id1); | 2364 display::DisplayLayoutBuilder bad(id1); |
| 2358 bad.SetSecondaryPlacement(id2, display::DisplayPlacement::BOTTOM, 0); | 2365 bad.SetSecondaryPlacement(id2, display::DisplayPlacement::BOTTOM, 0); |
| 2359 | 2366 |
| 2360 display::DisplayIdList bad_list(2); | 2367 display::DisplayIdList bad_list(2); |
| 2361 bad_list[0] = id2; | 2368 bad_list[0] = id2; |
| 2362 bad_list[1] = id1; | 2369 bad_list[1] = id1; |
| 2363 layout_store->RegisterLayoutForDisplayIdList(bad_list, bad.Build()); | 2370 layout_store->RegisterLayoutForDisplayIdList(bad_list, bad.Build()); |
| 2364 | 2371 |
| 2365 EXPECT_EQ(good->ToString(), | 2372 EXPECT_EQ(good->ToString(), |
| 2366 layout_store->GetRegisteredDisplayLayout(good_list).ToString()); | 2373 layout_store->GetRegisteredDisplayLayout(good_list).ToString()); |
| 2367 } | 2374 } |
| 2368 | 2375 |
| 2369 TEST_P(DisplayManagerTest, GuessDisplayIdFieldsInDisplayLayout) { | 2376 TEST_P(DisplayManagerTest, GuessDisplayIdFieldsInDisplayLayout) { |
| 2370 int64_t id1 = 10001; | 2377 int64_t id1 = 10001; |
| 2371 int64_t id2 = 10002; | 2378 int64_t id2 = 10002; |
| 2372 | 2379 |
| 2373 std::unique_ptr<display::DisplayLayout> old_layout( | 2380 std::unique_ptr<display::DisplayLayout> old_layout( |
| 2374 new display::DisplayLayout); | 2381 new display::DisplayLayout); |
| 2375 old_layout->placement_list.emplace_back(display::DisplayPlacement::BOTTOM, 0); | 2382 old_layout->placement_list.emplace_back(display::DisplayPlacement::BOTTOM, 0); |
| 2376 old_layout->primary_id = id1; | 2383 old_layout->primary_id = id1; |
| 2377 | 2384 |
| 2378 display::DisplayLayoutStore* layout_store = display_manager()->layout_store(); | 2385 display::DisplayLayoutStore* layout_store = display_manager()->layout_store(); |
| 2379 display::DisplayIdList list = test::CreateDisplayIdList2(id1, id2); | 2386 display::DisplayIdList list = display::test::CreateDisplayIdList2(id1, id2); |
| 2380 layout_store->RegisterLayoutForDisplayIdList(list, std::move(old_layout)); | 2387 layout_store->RegisterLayoutForDisplayIdList(list, std::move(old_layout)); |
| 2381 const display::DisplayLayout& stored = | 2388 const display::DisplayLayout& stored = |
| 2382 layout_store->GetRegisteredDisplayLayout(list); | 2389 layout_store->GetRegisteredDisplayLayout(list); |
| 2383 | 2390 |
| 2384 EXPECT_EQ(id1, stored.placement_list[0].parent_display_id); | 2391 EXPECT_EQ(id1, stored.placement_list[0].parent_display_id); |
| 2385 EXPECT_EQ(id2, stored.placement_list[0].display_id); | 2392 EXPECT_EQ(id2, stored.placement_list[0].display_id); |
| 2386 } | 2393 } |
| 2387 | 2394 |
| 2388 #endif // OS_CHROMEOS | 2395 #endif // OS_CHROMEOS |
| 2389 | 2396 |
| 2390 } // namespace ash | 2397 } // namespace ash |
| OLD | NEW |