Index: content/browser/frame_host/render_widget_host_view_child_frame_unittest.cc |
diff --git a/content/browser/frame_host/render_widget_host_view_child_frame_unittest.cc b/content/browser/frame_host/render_widget_host_view_child_frame_unittest.cc |
index 2075199deb31f46930b554605806ad9692d98185..52638a9d9d269e6d7630ab773c7c09ca729ea02f 100644 |
--- a/content/browser/frame_host/render_widget_host_view_child_frame_unittest.cc |
+++ b/content/browser/frame_host/render_widget_host_view_child_frame_unittest.cc |
@@ -33,6 +33,11 @@ |
namespace content { |
namespace { |
+ |
+const cc::LocalSurfaceId kArbitraryLocalSurfaceId( |
+ 1, |
+ base::UnguessableToken::Deserialize(2, 3)); |
+ |
class MockRenderWidgetHostDelegate : public RenderWidgetHostDelegate { |
public: |
MockRenderWidgetHostDelegate() {} |
@@ -107,6 +112,10 @@ class RenderWidgetHostViewChildFrameTest : public testing::Test { |
return cc::SurfaceId(view_->frame_sink_id_, view_->local_surface_id_); |
} |
+ cc::LocalSurfaceId GetLocalSurfaceId() const { |
+ return view_->local_surface_id_; |
+ } |
+ |
void ClearCompositorSurfaceIfNecessary() { |
view_->ClearCompositorSurfaceIfNecessary(); |
} |
@@ -161,12 +170,14 @@ TEST_F(RenderWidgetHostViewChildFrameTest, MAYBE_SwapCompositorFrame) { |
gfx::Size view_size(100, 100); |
gfx::Rect view_rect(view_size); |
float scale_factor = 1.f; |
+ cc::LocalSurfaceId local_surface_id(1, base::UnguessableToken::Create()); |
view_->SetSize(view_size); |
view_->Show(); |
view_->OnSwapCompositorFrame( |
- 0, CreateDelegatedFrame(scale_factor, view_size, view_rect)); |
+ 0, local_surface_id, |
+ CreateDelegatedFrame(scale_factor, view_size, view_rect)); |
cc::SurfaceId id = GetSurfaceId(); |
if (id.is_valid()) { |
@@ -187,9 +198,8 @@ TEST_F(RenderWidgetHostViewChildFrameTest, MAYBE_SwapCompositorFrame) { |
} |
} |
-// Check that frame eviction does not trigger allocation of a new local surface |
-// id. |
-TEST_F(RenderWidgetHostViewChildFrameTest, FrameEvictionKeepsLocalSurfaceId) { |
+// Check that the same local surface id can be used after frame eviction. |
+TEST_F(RenderWidgetHostViewChildFrameTest, FrameEviction) { |
gfx::Size view_size(100, 100); |
gfx::Rect view_rect(view_size); |
float scale_factor = 1.f; |
@@ -197,26 +207,25 @@ TEST_F(RenderWidgetHostViewChildFrameTest, FrameEvictionKeepsLocalSurfaceId) { |
view_->SetSize(view_size); |
view_->Show(); |
- // Submit a frame. Remember the local surface id and check that has_frame() |
- // returns true. |
+ // Submit a frame. |
view_->OnSwapCompositorFrame( |
- 0, CreateDelegatedFrame(scale_factor, view_size, view_rect)); |
+ 0, kArbitraryLocalSurfaceId, |
+ CreateDelegatedFrame(scale_factor, view_size, view_rect)); |
- cc::SurfaceId surface_id = GetSurfaceId(); |
- EXPECT_TRUE(surface_id.is_valid()); |
+ EXPECT_EQ(kArbitraryLocalSurfaceId, GetLocalSurfaceId()); |
EXPECT_TRUE(view_->has_frame()); |
- // Evict the frame. The surface id must remain the same but has_frame() should |
- // return false. |
+ // Evict the frame. has_frame() should return false. |
ClearCompositorSurfaceIfNecessary(); |
- EXPECT_EQ(surface_id, GetSurfaceId()); |
+ EXPECT_EQ(kArbitraryLocalSurfaceId, GetLocalSurfaceId()); |
EXPECT_FALSE(view_->has_frame()); |
- // Submit another frame. Since it has the same size and scale as the first |
- // one, the same surface id must be used. has_frame() must return true. |
+ // Submit another frame with the same local surface id. The same id should be |
+ // usable. |
view_->OnSwapCompositorFrame( |
- 0, CreateDelegatedFrame(scale_factor, view_size, view_rect)); |
- EXPECT_EQ(surface_id, GetSurfaceId()); |
+ 0, kArbitraryLocalSurfaceId, |
+ CreateDelegatedFrame(scale_factor, view_size, view_rect)); |
+ EXPECT_EQ(kArbitraryLocalSurfaceId, GetLocalSurfaceId()); |
EXPECT_TRUE(view_->has_frame()); |
} |