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

Unified Diff: ui/aura/mus/window_tree_client_unittest.cc

Issue 2790673003: Aura-Mus: Enable Surface Synchronization behind flag (Closed)
Patch Set: Added unit test Created 3 years, 9 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/aura/mus/window_tree_client_unittest.cc
diff --git a/ui/aura/mus/window_tree_client_unittest.cc b/ui/aura/mus/window_tree_client_unittest.cc
index 5d8ed27de137ba92a423aed57848b3a36a7a1869..cfb6be87b0d257baf782b4bc6eae55ba291a51e7 100644
--- a/ui/aura/mus/window_tree_client_unittest.cc
+++ b/ui/aura/mus/window_tree_client_unittest.cc
@@ -223,6 +223,41 @@ TEST_F(WindowTreeClientWmTest, SetBoundsFailedLocalSurfaceId) {
EXPECT_FALSE(window_mus->GetLocalSurfaceId().is_valid());
}
+// Verifies that a ClientSurfaceEmbedder is created for a window once it has
+// a bounds, a valid FrameSinkId and is visible.
+TEST_F(WindowTreeClientWmTest, ClientSurfaceEmbedderOnValidEmbedding) {
+ Window window(nullptr);
+ // TOP_LEVEL_IN_WM and EMBED_IN_OWNER windows allocate cc::LocalSurfaceIds
+ // when their sizes change.
+ window.SetProperty(aura::client::kEmbedType,
+ aura::client::WindowEmbedType::EMBED_IN_OWNER);
+ window.Init(ui::LAYER_NOT_DRAWN);
+
+ const gfx::Rect new_bounds(gfx::Rect(0, 0, 100, 100));
+ ASSERT_NE(new_bounds, window.bounds());
+ window.SetBounds(new_bounds);
+ EXPECT_EQ(new_bounds, window.bounds());
+ WindowMus* window_mus = WindowMus::Get(&window);
+ ASSERT_NE(nullptr, window_mus);
+ EXPECT_TRUE(window_mus->GetLocalSurfaceId().is_valid());
+
+ // An ClientSurfaceEmbedder isn't created UNTIL the window is visible and has
+ // a valid FrameSinkId.
+ WindowPortMus* window_port_mus = WindowPortMus::Get(&window);
+ ASSERT_NE(nullptr, window_port_mus);
+ EXPECT_EQ(nullptr, window_port_mus->client_surface_embedder());
+
+ // The window is now visible, but doesn't yet have a FrameSinkId.
+ window.Show();
+ EXPECT_EQ(nullptr, window_port_mus->client_surface_embedder());
+
+ // Now that the window has a valid FrameSinkId, it can embed the client in a
+ // CompositorFrame.
+ window_tree_client()->OnFrameSinkIdAllocated(server_id(&window),
+ cc::FrameSinkId(1, 1));
+ EXPECT_NE(nullptr, window_port_mus->client_surface_embedder());
+}
+
// Verifies that the cc::LocalSurfaceId generated by an embedder changes when
// the size changes, but not when the position changes.
TEST_F(WindowTreeClientWmTest, SetBoundsLocalSurfaceIdChanges) {

Powered by Google App Engine
This is Rietveld 408576698