Index: services/ui/demo/mus_demo_unittests.cc |
diff --git a/services/ui/demo/mus_demo_unittests.cc b/services/ui/demo/mus_demo_unittests.cc |
index 9fdb8107a2c0aff014de2d237164dce0aaecd753..827e92520e567371b008e7fac58373a76ccfeef9 100644 |
--- a/services/ui/demo/mus_demo_unittests.cc |
+++ b/services/ui/demo/mus_demo_unittests.cc |
@@ -18,8 +18,10 @@ namespace { |
const char kTestAppName[] = "mus_demo_unittests"; |
-void RunCallback(bool* success, const base::Closure& callback, bool result) { |
- *success = result; |
+void RunCallback(uint64_t* root_window_count, |
+ const base::Closure& callback, |
+ uint64_t result) { |
+ *root_window_count = result; |
callback.Run(); |
} |
@@ -33,6 +35,26 @@ class MusDemoTest : public service_manager::test::ServiceTest { |
ServiceTest::SetUp(); |
} |
+ protected: |
+ uint64_t StartDemoAndCountDrawnWindows() { |
+ connector()->Connect("mus_demo"); |
+ |
+ ::ui::mojom::WindowServerTestPtr test_interface; |
+ connector()->BindInterface(ui::mojom::kServiceName, &test_interface); |
+ |
+ base::RunLoop run_loop; |
+ uint64_t root_window_count = 0; |
+ // TODO(kylechar): Fix WindowServer::CreateTreeForWindowManager so that the |
+ // WindowTree has the correct name instead of an empty name. |
+ // TODO(tonikitoo,fwang): Also fix the WindowTree name for MusDemoExternal. |
+ test_interface->EnsureClientHasDrawnRootWindows( |
+ "", // WindowTree name is empty. |
+ base::Bind(&RunCallback, &root_window_count, run_loop.QuitClosure())); |
+ run_loop.Run(); |
+ |
+ return root_window_count; |
+ } |
+ |
private: |
DISALLOW_COPY_AND_ASSIGN(MusDemoTest); |
}; |
@@ -40,21 +62,17 @@ class MusDemoTest : public service_manager::test::ServiceTest { |
} // namespace |
TEST_F(MusDemoTest, CheckMusDemoDraws) { |
- connector()->Connect("mus_demo"); |
- |
- ::ui::mojom::WindowServerTestPtr test_interface; |
- connector()->BindInterface(ui::mojom::kServiceName, &test_interface); |
- |
- base::RunLoop run_loop; |
- bool success = false; |
- // TODO(kylechar): Fix WindowServer::CreateTreeForWindowManager so that the |
- // WindowTree has the correct name instead of an empty name. |
- test_interface->EnsureClientHasDrawnWindow( |
- "", // WindowTree name is empty. |
- base::Bind(&RunCallback, &success, run_loop.QuitClosure())); |
- run_loop.Run(); |
- EXPECT_TRUE(success); |
+ EXPECT_EQ(1u, StartDemoAndCountDrawnWindows()); |
+} |
+ |
+#if defined(USE_OZONE) && !defined(OS_CHROMEOS) |
+TEST_F(MusDemoTest, CheckMusDemoMultipleWindows) { |
+ uint64_t expected_root_window_count = 5; |
+ base::CommandLine::ForCurrentProcess()->AppendSwitchASCII( |
+ "external-window-count", std::to_string(expected_root_window_count)); |
+ EXPECT_EQ(expected_root_window_count, StartDemoAndCountDrawnWindows()); |
} |
+#endif // defined(USE_OZONE) && !defined(OS_CHROMEOS) |
} // namespace demo |
} // namespace ui |