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

Unified Diff: ui/display/mojo/display_struct_traits_unittest.cc

Issue 2646213002: Write mojom and StructTraits for DisplaySnapshot. (Closed)
Patch Set: use filepath mojom Created 3 years, 10 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 side-by-side diff with in-line comments
Download patch
Index: ui/display/mojo/display_struct_traits_unittest.cc
diff --git a/ui/display/mojo/display_struct_traits_unittest.cc b/ui/display/mojo/display_struct_traits_unittest.cc
index e087e68d63e240e979ba24140c472ba8a62b6b45..20f2ef9adeaaa76089bd6edda8c18e512590c8b0 100644
--- a/ui/display/mojo/display_struct_traits_unittest.cc
+++ b/ui/display/mojo/display_struct_traits_unittest.cc
@@ -2,12 +2,18 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+#include <memory>
+
+#include "base/macros.h"
#include "base/message_loop/message_loop.h"
#include "mojo/public/cpp/bindings/binding_set.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "ui/display/display.h"
#include "ui/display/display_layout.h"
+#include "ui/display/mojo/display_mode_struct_traits.h"
+#include "ui/display/mojo/display_snapshot_mojo.h"
#include "ui/display/mojo/display_struct_traits_test.mojom.h"
+#include "ui/display/types/display_constants.h"
#include "ui/display/types/display_mode.h"
#include "ui/gfx/geometry/rect.h"
#include "ui/gfx/geometry/size.h"
@@ -41,6 +47,12 @@ class DisplayStructTraitsTest : public testing::Test,
callback.Run(std::move(in));
}
+ void EchoDisplaySnapshotMojo(
+ std::unique_ptr<DisplaySnapshotMojo> in,
+ const EchoDisplaySnapshotMojoCallback& callback) override {
+ callback.Run(std::move(in));
+ }
+
void EchoDisplayPlacement(
const DisplayPlacement& in,
const EchoDisplayPlacementCallback& callback) override {
@@ -108,12 +120,12 @@ TEST_F(DisplayStructTraitsTest, SetAllDisplayValues) {
}
TEST_F(DisplayStructTraitsTest, DefaultDisplayMode) {
+ // Prepare sample input with random values
std::unique_ptr<DisplayMode> input =
base::MakeUnique<DisplayMode>(gfx::Size(1024, 768), true, 61.0);
mojom::DisplayStructTraitsTestPtr proxy = GetTraitsTestProxy();
std::unique_ptr<DisplayMode> output;
-
proxy->EchoDisplayMode(input->Clone(), &output);
// We want to test each component individually to make sure each data member
@@ -219,4 +231,89 @@ TEST_F(DisplayStructTraitsTest, DisplayLayoutTwoMirrored) {
CheckDisplayLayoutsEqual(*input, *output);
}
+static bool compareDisplayMode(const DisplayMode& display_mode_a,
+ const DisplayMode& display_mode_b) {
+ if ((display_mode_a.size() != display_mode_b.size()) ||
+ (display_mode_a.is_interlaced() != display_mode_b.is_interlaced()) ||
+ (display_mode_a.refresh_rate() != display_mode_b.refresh_rate()))
+ return false;
+ return true;
+}
+
+TEST_F(DisplayStructTraitsTest, DefaultDisplaySnapshotMojo) {
+ mojom::DisplayStructTraitsTestPtr proxy = GetTraitsTestProxy();
+
+ // prepare sample input with random values
+ int64_t display_id = 7;
+ const gfx::Point origin(3, 12);
+ const gfx::Size physical_size(15, 29);
+ DisplayConnectionType type = display::DISPLAY_CONNECTION_TYPE_HDMI;
+ bool is_aspect_preserving_scaling = true;
+ bool has_overscan = true;
+ bool has_color_correction_matrix = true;
+ std::string display_name("whatever display_name");
+
+ base::FilePath::StringType string_type_path = FILE_PATH_LITERAL("a/b/c");
+ const base::FilePath::StringPieceType string_piece_path(string_type_path);
+ const base::FilePath sys_path(string_piece_path);
+
+ int64_t product_id = 19;
+
+ DisplayMode display_mode_1(gfx::Size(11, 12), true, 111.0);
+ DisplayMode display_current_mode(gfx::Size(22, 23), true, 222.0);
+ DisplayMode display_native_mode(gfx::Size(33, 34), true, 333.0);
+ DisplayMode display_mode_2(gfx::Size(44, 45), true, 444.0);
+
+ display::DisplaySnapshot::DisplayModeList modes;
+ modes.reserve(4);
+ modes.push_back(display_mode_1.Clone());
+ modes.push_back(display_current_mode.Clone());
+ modes.push_back(display_native_mode.Clone());
+ modes.push_back(display_mode_2.Clone());
+
+ const DisplayMode* current_mode = modes[1].get();
+ const DisplayMode* native_mode = modes[2].get();
+
+ display::DisplaySnapshot::DisplayModeList expected_modes;
+ expected_modes.reserve(4);
+ expected_modes.push_back(display_mode_1.Clone());
+ expected_modes.push_back(display_current_mode.Clone());
+ expected_modes.push_back(display_native_mode.Clone());
+ expected_modes.push_back(display_mode_2.Clone());
+
+ const std::vector<uint8_t> edid{1, 2, 4, 5};
+ std::unique_ptr<DisplaySnapshotMojo> input =
+ base::MakeUnique<DisplaySnapshotMojo>(
+ display_id, origin, physical_size, type, is_aspect_preserving_scaling,
+ has_overscan, has_color_correction_matrix, display_name, sys_path,
+ product_id, std::move(modes), edid, current_mode, native_mode);
+ std::unique_ptr<DisplaySnapshotMojo> output;
+ proxy->EchoDisplaySnapshotMojo(std::move(input), &output);
+
+ // We want to test each component individually to make sure each data member
+ // was correctly serialized and deserialized.
+ EXPECT_EQ(display_id, output->display_id());
+ EXPECT_EQ(origin, output->origin());
+ EXPECT_EQ(physical_size, output->physical_size());
+ EXPECT_EQ(type, output->type());
+ EXPECT_EQ(is_aspect_preserving_scaling,
+ output->is_aspect_preserving_scaling());
+ EXPECT_EQ(has_overscan, output->has_overscan());
+ EXPECT_EQ(has_color_correction_matrix, output->has_color_correction_matrix());
+ EXPECT_EQ(display_name, output->display_name());
+ EXPECT_EQ(sys_path, output->sys_path());
+ EXPECT_EQ(product_id, output->product_id());
+
+ EXPECT_EQ(4, (int)output->modes().size());
+ for (int i = 0; i < (int)expected_modes.size(); i++) {
+ EXPECT_EQ(true, compareDisplayMode(*expected_modes[i].get(),
+ *output->modes()[i].get()));
+ }
+ EXPECT_EQ(edid, output->edid());
+ EXPECT_EQ(true,
+ compareDisplayMode(display_current_mode, *output->current_mode()));
+ EXPECT_EQ(true,
+ compareDisplayMode(display_native_mode, *output->native_mode()));
+}
+
} // namespace display

Powered by Google App Engine
This is Rietveld 408576698