Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2017 The Chromium Authors. All rights reserved. | 1 // Copyright 2017 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 "ui/ozone/platform/drm/common/drm_util.h" | 5 #include "ui/ozone/platform/drm/common/drm_util.h" |
| 6 | |
| 6 #include "testing/gtest/include/gtest/gtest.h" | 7 #include "testing/gtest/include/gtest/gtest.h" |
| 8 #include "ui/display/types/display_snapshot_mojo.h" | |
| 7 #include "ui/gfx/geometry/size.h" | 9 #include "ui/gfx/geometry/size.h" |
| 8 #include "ui/ozone/common/gpu/ozone_gpu_message_params.h" | 10 #include "ui/ozone/common/gpu/ozone_gpu_message_params.h" |
| 9 | 11 |
| 10 namespace ui { | 12 namespace ui { |
| 11 | 13 |
| 14 bool operator==(const ui::DisplayMode_Params& a, | |
|
dnicoara
2017/06/12 15:05:26
Why aren't these helper functions in the anonymous
rjkroege
2017/06/12 20:04:38
gtest can't look into the anonymous namespace for
| |
| 15 const ui::DisplayMode_Params& b) { | |
| 16 return a.size == b.size && a.is_interlaced == b.is_interlaced && | |
| 17 a.refresh_rate == b.refresh_rate; | |
| 18 } | |
| 19 | |
| 20 bool operator==(const ui::DisplaySnapshot_Params& a, | |
| 21 const ui::DisplaySnapshot_Params& b) { | |
| 22 return a.display_id == b.display_id && a.origin == b.origin && | |
| 23 a.physical_size == b.physical_size && a.type == b.type && | |
| 24 a.is_aspect_preserving_scaling == b.is_aspect_preserving_scaling && | |
| 25 a.has_overscan == b.has_overscan && | |
| 26 a.has_color_correction_matrix == b.has_color_correction_matrix && | |
| 27 a.display_name == b.display_name && a.sys_path == b.sys_path && | |
| 28 std::equal(a.modes.cbegin(), a.modes.cend(), b.modes.cbegin()) && | |
| 29 std::equal(a.edid.cbegin(), a.edid.cend(), a.edid.cbegin()) && | |
| 30 a.has_current_mode == b.has_current_mode && | |
| 31 a.current_mode == b.current_mode && | |
| 32 a.has_native_mode == b.has_native_mode && | |
| 33 a.native_mode == b.native_mode && a.product_id == b.product_id && | |
| 34 a.string_representation == b.string_representation && | |
| 35 a.maximum_cursor_size == b.maximum_cursor_size; | |
| 36 } | |
| 37 | |
| 38 void DetailedCompare(const ui::DisplaySnapshot_Params& a, | |
| 39 const ui::DisplaySnapshot_Params& b) { | |
| 40 EXPECT_EQ(a.display_id, b.display_id); | |
| 41 EXPECT_EQ(a.origin, b.origin); | |
| 42 EXPECT_EQ(a.physical_size, b.physical_size); | |
| 43 EXPECT_EQ(a.type, b.type); | |
| 44 EXPECT_EQ(a.is_aspect_preserving_scaling, b.is_aspect_preserving_scaling); | |
| 45 EXPECT_EQ(a.has_overscan, b.has_overscan); | |
| 46 EXPECT_EQ(a.has_color_correction_matrix, b.has_color_correction_matrix); | |
| 47 EXPECT_EQ(a.display_name, b.display_name); | |
| 48 EXPECT_EQ(a.sys_path, b.sys_path); | |
| 49 EXPECT_EQ(a.modes, b.modes); | |
| 50 EXPECT_EQ(a.edid, b.edid); | |
| 51 EXPECT_EQ(a.has_current_mode, b.has_current_mode); | |
| 52 EXPECT_EQ(a.current_mode, b.current_mode); | |
| 53 EXPECT_EQ(a.has_native_mode, b.has_native_mode); | |
| 54 EXPECT_EQ(a.native_mode, b.native_mode); | |
| 55 EXPECT_EQ(a.product_id, b.product_id); | |
| 56 EXPECT_EQ(a.string_representation, b.string_representation); | |
| 57 EXPECT_EQ(a.maximum_cursor_size, b.maximum_cursor_size); | |
| 58 } | |
| 59 | |
| 60 namespace { | |
| 61 | |
| 62 DisplayMode_Params MakeDisplay(float refresh) { | |
| 63 DisplayMode_Params params; | |
| 64 params.size = gfx::Size(101, 42); | |
| 65 params.is_interlaced = true; | |
| 66 params.refresh_rate = refresh; | |
| 67 return params; | |
| 68 } | |
| 69 | |
| 70 } // namespace | |
| 71 | |
| 12 class DrmUtilTest : public testing::Test {}; | 72 class DrmUtilTest : public testing::Test {}; |
| 13 | 73 |
| 14 TEST_F(DrmUtilTest, RoundTripEquivalence) { | 74 TEST_F(DrmUtilTest, RoundTripEquivalence) { |
| 15 DisplayMode_Params orig_params; | 75 DisplayMode_Params orig_params = MakeDisplay(3.14); |
| 16 | |
| 17 orig_params.size = gfx::Size(101, 42); | |
| 18 orig_params.is_interlaced = true; | |
| 19 orig_params.refresh_rate = 3.14; | |
| 20 | 76 |
| 21 auto udm = CreateDisplayModeFromParams(orig_params); | 77 auto udm = CreateDisplayModeFromParams(orig_params); |
| 22 auto roundtrip_params = GetDisplayModeParams(*udm.get()); | 78 auto roundtrip_params = GetDisplayModeParams(*udm.get()); |
| 23 | 79 |
| 24 EXPECT_EQ(orig_params.size.width(), roundtrip_params.size.width()); | 80 EXPECT_EQ(orig_params.size.width(), roundtrip_params.size.width()); |
| 25 EXPECT_EQ(orig_params.size.height(), roundtrip_params.size.height()); | 81 EXPECT_EQ(orig_params.size.height(), roundtrip_params.size.height()); |
| 26 EXPECT_EQ(orig_params.is_interlaced, roundtrip_params.is_interlaced); | 82 EXPECT_EQ(orig_params.is_interlaced, roundtrip_params.is_interlaced); |
| 27 EXPECT_EQ(orig_params.refresh_rate, roundtrip_params.refresh_rate); | 83 EXPECT_EQ(orig_params.refresh_rate, roundtrip_params.refresh_rate); |
| 28 } | 84 } |
| 29 | 85 |
| 86 TEST_F(DrmUtilTest, RoundTripDisplaySnapshot) { | |
| 87 std::vector<DisplaySnapshot_Params> orig_params; | |
| 88 DisplaySnapshot_Params fp, sp, ep; | |
| 89 | |
| 90 fp.display_id = 101; | |
| 91 fp.origin = gfx::Point(101, 42); | |
| 92 fp.physical_size = gfx::Size(102, 43); | |
| 93 fp.type = display::DISPLAY_CONNECTION_TYPE_INTERNAL; | |
| 94 fp.is_aspect_preserving_scaling = true; | |
| 95 fp.has_overscan = true; | |
| 96 fp.has_color_correction_matrix = true; | |
| 97 fp.display_name = "bending glass"; | |
| 98 fp.sys_path = base::FilePath("/bending"); | |
| 99 fp.modes = | |
| 100 std::vector<DisplayMode_Params>({MakeDisplay(1.1), MakeDisplay(1.2)}); | |
| 101 fp.edid = std::vector<uint8_t>({'f', 'p'}); | |
| 102 fp.has_current_mode = true; | |
| 103 fp.current_mode = MakeDisplay(1.2); | |
| 104 fp.has_native_mode = true; | |
| 105 fp.native_mode = MakeDisplay(1.1); | |
| 106 fp.product_id = 7; | |
| 107 fp.string_representation = "bending glass display"; | |
| 108 fp.maximum_cursor_size = gfx::Size(103, 44); | |
| 109 | |
| 110 sp.display_id = 1002; | |
| 111 sp.origin = gfx::Point(500, 42); | |
| 112 sp.physical_size = gfx::Size(500, 43); | |
| 113 sp.type = display::DISPLAY_CONNECTION_TYPE_INTERNAL; | |
| 114 sp.is_aspect_preserving_scaling = true; | |
| 115 sp.has_overscan = true; | |
| 116 sp.has_color_correction_matrix = true; | |
| 117 sp.display_name = "rigid glass"; | |
| 118 sp.sys_path = base::FilePath("/bending"); | |
| 119 sp.modes = | |
| 120 std::vector<DisplayMode_Params>({MakeDisplay(500.1), MakeDisplay(500.2)}); | |
| 121 sp.edid = std::vector<uint8_t>({'s', 'p'}); | |
| 122 sp.has_current_mode = false; | |
| 123 sp.has_native_mode = true; | |
| 124 sp.native_mode = MakeDisplay(500.2); | |
| 125 sp.product_id = 8; | |
| 126 sp.string_representation = "rigid glass display"; | |
| 127 sp.maximum_cursor_size = gfx::Size(500, 44); | |
| 128 | |
| 129 ep.display_id = 2002; | |
| 130 ep.origin = gfx::Point(1000, 42); | |
| 131 ep.physical_size = gfx::Size(1000, 43); | |
| 132 ep.type = display::DISPLAY_CONNECTION_TYPE_INTERNAL; | |
| 133 ep.is_aspect_preserving_scaling = false; | |
| 134 ep.has_overscan = false; | |
| 135 ep.has_color_correction_matrix = false; | |
| 136 ep.display_name = "fluted glass"; | |
| 137 ep.sys_path = base::FilePath("/bending"); | |
| 138 ep.modes = std::vector<DisplayMode_Params>( | |
| 139 {MakeDisplay(1000.1), MakeDisplay(1000.2)}); | |
| 140 ep.edid = std::vector<uint8_t>({'s', 'p'}); | |
| 141 ep.has_current_mode = true; | |
| 142 ep.current_mode = MakeDisplay(1000.2); | |
| 143 ep.has_native_mode = false; | |
| 144 ep.product_id = 9; | |
| 145 ep.string_representation = "fluted glass display"; | |
| 146 ep.maximum_cursor_size = gfx::Size(1000, 44); | |
| 147 | |
| 148 orig_params.push_back(fp); | |
| 149 orig_params.push_back(sp); | |
| 150 orig_params.push_back(ep); | |
| 151 | |
| 152 auto intermediate_snapshots = | |
| 153 CreateMovableDisplaySnapshotsFromParams(orig_params); | |
| 154 | |
| 155 std::vector<DisplaySnapshot_Params> roundtrip_params = | |
| 156 CreateParamsFromSnapshot(intermediate_snapshots); | |
| 157 | |
| 158 DetailedCompare(fp, roundtrip_params[0]); | |
| 159 | |
| 160 EXPECT_EQ(fp, roundtrip_params[0]); | |
| 161 EXPECT_EQ(sp, roundtrip_params[1]); | |
| 162 EXPECT_EQ(ep, roundtrip_params[2]); | |
| 163 } | |
| 164 | |
| 30 } // namespace ui | 165 } // namespace ui |
| OLD | NEW |