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

Unified Diff: ui/views/mus/display_list_unittest.cc

Issue 1984393002: Refactors std::vector<Display> out of ScreenMus (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix deps and DEPS Created 4 years, 7 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/views/mus/display_list_unittest.cc
diff --git a/ui/views/mus/display_list_unittest.cc b/ui/views/mus/display_list_unittest.cc
new file mode 100644
index 0000000000000000000000000000000000000000..93cdc81e608b0e8d46f78eea2be6cd9a74f01f96
--- /dev/null
+++ b/ui/views/mus/display_list_unittest.cc
@@ -0,0 +1,113 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "ui/views/mus/display_list.h"
+
+#include <string>
+#include <vector>
+
+#include "base/strings/string_number_conversions.h"
+#include "testing/gtest/include/gtest/gtest.h"
+#include "ui/display/display.h"
+#include "ui/display/display_observer.h"
+
+using display::Display;
+
+namespace views {
+namespace {
+
+class DisplayObserverImpl : public display::DisplayObserver {
+ public:
+ DisplayObserverImpl() {}
+ ~DisplayObserverImpl() override {}
+
+ std::string GetAndClearChanges() {
+ std::string changes;
+ std::swap(changes, changes_);
+ return changes;
+ }
+
+ private:
+ static void AddPartChange(uint32_t changed,
+ uint32_t part,
+ const std::string& description,
+ std::string* changed_string) {
+ if ((changed & part) != part)
+ return;
+
+ *changed_string += " ";
+ *changed_string += description;
+ }
+
+ void AddChange(const std::string& change) {
+ if (!changes_.empty())
+ changes_ += "\n";
+ changes_ += change;
+ }
+
+ void OnDisplayAdded(const Display& new_display) override {
+ AddChange("Added id=" + base::Int64ToString(new_display.id()));
+ }
+ void OnDisplayRemoved(const Display& old_display) override {
+ AddChange("Removed id=" + base::Int64ToString(old_display.id()));
+ }
+ void OnDisplayMetricsChanged(const Display& display,
+ uint32_t changed_metrics) override {
+ std::string parts;
+ AddPartChange(changed_metrics, DISPLAY_METRIC_BOUNDS, "bounds", &parts);
+ AddPartChange(changed_metrics, DISPLAY_METRIC_WORK_AREA, "work_area",
+ &parts);
+ AddPartChange(changed_metrics, DISPLAY_METRIC_DEVICE_SCALE_FACTOR,
+ "scale_factor", &parts);
+ AddPartChange(changed_metrics, DISPLAY_METRIC_ROTATION, "rotation", &parts);
+ AddPartChange(changed_metrics, DISPLAY_METRIC_PRIMARY, "primary", &parts);
+
+ AddChange("Changed id=" + base::Int64ToString(display.id()) + parts);
+ }
+
+ std::string changes_;
+
+ DISALLOW_COPY_AND_ASSIGN(DisplayObserverImpl);
+};
+
+TEST(DisplayListTest, AddUpdateRemove) {
+ DisplayList display_list;
+ DisplayObserverImpl observer;
+ display_list.AddObserver(&observer);
+ display_list.AddDisplay(display::Display(2, gfx::Rect(0, 0, 801, 802)),
+ DisplayList::Type::PRIMARY);
+ EXPECT_EQ("Added id=2", observer.GetAndClearChanges());
+
+ // Update the bounds.
+ {
+ display::Display updated_display = *(display_list.displays().begin());
+ updated_display.set_bounds(gfx::Rect(0, 0, 803, 802));
+ display_list.UpdateDisplay(updated_display, DisplayList::Type::PRIMARY);
+ EXPECT_EQ("Changed id=2 bounds", observer.GetAndClearChanges());
+ }
+
+ // Add another.
+ display_list.AddDisplay(display::Display(3, gfx::Rect(0, 0, 809, 802)),
+ DisplayList::Type::NOT_PRIMARY);
+ EXPECT_EQ("Added id=3", observer.GetAndClearChanges());
+ ASSERT_EQ(2u, display_list.displays().size());
+ EXPECT_EQ(2, display_list.displays()[0].id());
+ EXPECT_EQ(3, display_list.displays()[1].id());
+ EXPECT_EQ(2, display_list.GetPrimaryDisplayIterator()->id());
+
+ // Make the second the primary.
+ display_list.UpdateDisplay(display_list.displays()[1],
+ DisplayList::Type::PRIMARY);
+ EXPECT_EQ("Changed id=3 primary", observer.GetAndClearChanges());
+ EXPECT_EQ(3, display_list.GetPrimaryDisplayIterator()->id());
+
+ // Delete the first.
+ display_list.RemoveDisplay(2);
+ ASSERT_EQ(1u, display_list.displays().size());
+ EXPECT_EQ("Removed id=2", observer.GetAndClearChanges());
+ EXPECT_EQ(3, display_list.GetPrimaryDisplayIterator()->id());
+}
+
+} // namespace
+} // namespace views

Powered by Google App Engine
This is Rietveld 408576698