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

Unified Diff: content/browser/frame_host/render_widget_host_view_child_frame_unittest.cc

Issue 2728183002: RendererCompositorFrameSink should handle local surface id allocation (Closed)
Patch Set: rebase 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: 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 bdd44705f882b5d0eb074d785e801ff64c5ce282..80d781f5a5713d475f31710e5353c79d25815c90 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();
}
@@ -164,12 +173,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()) {
@@ -190,10 +201,8 @@ TEST_F(RenderWidgetHostViewChildFrameTest, MAYBE_SwapCompositorFrame) {
}
}
-// Check that frame eviction does not trigger allocation of a new local surface
-// id.
-TEST_F(RenderWidgetHostViewChildFrameTest,
- MAYBE_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;
@@ -201,26 +210,25 @@ TEST_F(RenderWidgetHostViewChildFrameTest,
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());
}

Powered by Google App Engine
This is Rietveld 408576698