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

Unified Diff: content/browser/renderer_host/render_widget_host_view_aura_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/renderer_host/render_widget_host_view_aura_unittest.cc
diff --git a/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc b/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc
index 60cb68949001a2b13a4c6bcd1a9211c03fbba60c..ed0e490b0db220bf765e9d29d9adbe629a528cf8 100644
--- a/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc
+++ b/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc
@@ -117,6 +117,14 @@ void InstallDelegatedFrameHostClient(
namespace {
+const cc::LocalSurfaceId kArbitraryLocalSurfaceId(
+ 1,
+ base::UnguessableToken::Deserialize(2, 3));
+
+cc::LocalSurfaceId CreateLocalSurfaceId() {
+ return cc::LocalSurfaceId(1, base::UnguessableToken::Create());
+}
+
class TestOverscrollDelegate : public OverscrollControllerDelegate {
public:
explicit TestOverscrollDelegate(RenderWidgetHostView* view)
@@ -1906,13 +1914,13 @@ TEST_F(RenderWidgetHostViewAuraTest, TwoOutputSurfaces) {
cc::TransferableResource resource;
resource.id = 1;
frame.resource_list.push_back(resource);
- view_->OnSwapCompositorFrame(0, std::move(frame));
+ view_->OnSwapCompositorFrame(0, kArbitraryLocalSurfaceId, std::move(frame));
EXPECT_EQ(0u, sink_->message_count());
// Swap another CompositorFrame but this time from another
// compositor_frame_sink_id. The resources for the previous frame are old and
// should not be returned.
- view_->OnSwapCompositorFrame(1,
+ view_->OnSwapCompositorFrame(1, CreateLocalSurfaceId(),
MakeDelegatedFrame(1.f, view_size, view_rect));
EXPECT_EQ(0u, sink_->message_count());
@@ -1958,8 +1966,9 @@ TEST_F(RenderWidgetHostViewAuraTest, DISABLED_FullscreenResize) {
// Resizes are blocked until we swapped a frame of the correct size, and
// we've committed it.
view_->OnSwapCompositorFrame(
- 0, MakeDelegatedFrame(1.f, std::get<0>(params).new_size,
- gfx::Rect(std::get<0>(params).new_size)));
+ 0, kArbitraryLocalSurfaceId,
+ MakeDelegatedFrame(1.f, std::get<0>(params).new_size,
+ gfx::Rect(std::get<0>(params).new_size)));
ui::DrawWaiterForTest::WaitForCommit(
root_window->GetHost()->compositor());
}
@@ -1981,8 +1990,9 @@ TEST_F(RenderWidgetHostViewAuraTest, DISABLED_FullscreenResize) {
std::get<0>(params).screen_info.available_rect.ToString());
EXPECT_EQ("1600x1200", std::get<0>(params).new_size.ToString());
view_->OnSwapCompositorFrame(
- 0, MakeDelegatedFrame(1.f, std::get<0>(params).new_size,
- gfx::Rect(std::get<0>(params).new_size)));
+ 0, kArbitraryLocalSurfaceId,
+ MakeDelegatedFrame(1.f, std::get<0>(params).new_size,
+ gfx::Rect(std::get<0>(params).new_size)));
ui::DrawWaiterForTest::WaitForCommit(
root_window->GetHost()->compositor());
}
@@ -2006,14 +2016,15 @@ TEST_F(RenderWidgetHostViewAuraTest, SwapNotifiesWindow) {
// Delegated renderer path
EXPECT_CALL(observer, OnDelegatedFrameDamage(view_->window_, view_rect));
- view_->OnSwapCompositorFrame(
- 0, MakeDelegatedFrame(1.f, view_size, view_rect));
+ view_->OnSwapCompositorFrame(0, kArbitraryLocalSurfaceId,
+ MakeDelegatedFrame(1.f, view_size, view_rect));
testing::Mock::VerifyAndClearExpectations(&observer);
EXPECT_CALL(observer, OnDelegatedFrameDamage(view_->window_,
gfx::Rect(5, 5, 5, 5)));
view_->OnSwapCompositorFrame(
- 0, MakeDelegatedFrame(1.f, view_size, gfx::Rect(5, 5, 5, 5)));
+ 0, kArbitraryLocalSurfaceId,
+ MakeDelegatedFrame(1.f, view_size, gfx::Rect(5, 5, 5, 5)));
testing::Mock::VerifyAndClearExpectations(&observer);
view_->window_->RemoveObserver(&observer);
@@ -2032,7 +2043,7 @@ TEST_F(RenderWidgetHostViewAuraTest, MirrorLayers) {
view_->SetSize(view_size);
view_->Show();
- view_->OnSwapCompositorFrame(0,
+ view_->OnSwapCompositorFrame(0, kArbitraryLocalSurfaceId,
MakeDelegatedFrame(1.f, view_size, view_rect));
std::unique_ptr<ui::LayerTreeOwner> mirror(wm::MirrorLayers(
view_->GetNativeView(), false /* sync_bounds */));
@@ -2075,7 +2086,7 @@ TEST_F(RenderWidgetHostViewAuraTest, DelegatedFrameGutter) {
cc::CompositorFrame frame =
MakeDelegatedFrame(1.f, small_size, gfx::Rect(small_size));
frame.metadata.root_background_color = SK_ColorRED;
- view_->OnSwapCompositorFrame(0, std::move(frame));
+ view_->OnSwapCompositorFrame(0, kArbitraryLocalSurfaceId, std::move(frame));
ui::Layer* parent_layer = view_->GetNativeView()->layer();
@@ -2096,7 +2107,7 @@ TEST_F(RenderWidgetHostViewAuraTest, DelegatedFrameGutter) {
EXPECT_EQ(SK_ColorBLACK, parent_layer->children()[0]->background_color());
frame = MakeDelegatedFrame(1.f, medium_size, gfx::Rect(medium_size));
- view_->OnSwapCompositorFrame(0, std::move(frame));
+ view_->OnSwapCompositorFrame(0, kArbitraryLocalSurfaceId, std::move(frame));
EXPECT_EQ(0u, parent_layer->children().size());
view_->SetSize(large_size);
@@ -2120,7 +2131,8 @@ TEST_F(RenderWidgetHostViewAuraTest, Resize) {
view_->Show();
view_->SetSize(size1);
view_->OnSwapCompositorFrame(
- 0, MakeDelegatedFrame(1.f, size1, gfx::Rect(size1)));
+ 0, kArbitraryLocalSurfaceId,
+ MakeDelegatedFrame(1.f, size1, gfx::Rect(size1)));
ui::DrawWaiterForTest::WaitForCommit(
root_window->GetHost()->compositor());
ViewHostMsg_UpdateRect_Params update_params;
@@ -2158,7 +2170,8 @@ TEST_F(RenderWidgetHostViewAuraTest, Resize) {
// Receive a frame of the new size, should be skipped and not produce a Resize
// message.
view_->OnSwapCompositorFrame(
- 0, MakeDelegatedFrame(1.f, size3, gfx::Rect(size3)));
+ 0, kArbitraryLocalSurfaceId,
+ MakeDelegatedFrame(1.f, size3, gfx::Rect(size3)));
// Expect the frame ack;
EXPECT_EQ(1u, sink_->message_count());
EXPECT_EQ(ViewMsg_ReclaimCompositorResources::ID,
@@ -2169,7 +2182,8 @@ TEST_F(RenderWidgetHostViewAuraTest, Resize) {
// Receive a frame of the correct size, should not be skipped and, and should
// produce a Resize message after the commit.
view_->OnSwapCompositorFrame(
- 0, MakeDelegatedFrame(1.f, size2, gfx::Rect(size2)));
+ 0, kArbitraryLocalSurfaceId,
+ MakeDelegatedFrame(1.f, size2, gfx::Rect(size2)));
cc::SurfaceId surface_id = view_->surface_id();
if (!surface_id.is_valid()) {
// No frame ack yet.
@@ -2240,8 +2254,8 @@ TEST_F(RenderWidgetHostViewAuraTest, SkippedDelegatedFrames) {
// A full frame of damage.
EXPECT_CALL(observer, OnDelegatedFrameDamage(view_->window_, view_rect));
- view_->OnSwapCompositorFrame(
- 0, MakeDelegatedFrame(1.f, frame_size, view_rect));
+ view_->OnSwapCompositorFrame(0, kArbitraryLocalSurfaceId,
+ MakeDelegatedFrame(1.f, frame_size, view_rect));
testing::Mock::VerifyAndClearExpectations(&observer);
view_->RunOnCompositingDidCommit();
@@ -2250,7 +2264,8 @@ TEST_F(RenderWidgetHostViewAuraTest, SkippedDelegatedFrames) {
EXPECT_CALL(observer,
OnDelegatedFrameDamage(view_->window_, partial_view_rect));
view_->OnSwapCompositorFrame(
- 0, MakeDelegatedFrame(1.f, frame_size, partial_view_rect));
+ 0, kArbitraryLocalSurfaceId,
+ MakeDelegatedFrame(1.f, frame_size, partial_view_rect));
testing::Mock::VerifyAndClearExpectations(&observer);
view_->RunOnCompositingDidCommit();
@@ -2262,14 +2277,16 @@ TEST_F(RenderWidgetHostViewAuraTest, SkippedDelegatedFrames) {
gfx::Rect dropped_damage_rect_1(10, 20, 30, 40);
EXPECT_CALL(observer, OnDelegatedFrameDamage(_, _)).Times(0);
view_->OnSwapCompositorFrame(
- 0, MakeDelegatedFrame(1.f, frame_size, dropped_damage_rect_1));
+ 0, kArbitraryLocalSurfaceId,
+ MakeDelegatedFrame(1.f, frame_size, dropped_damage_rect_1));
testing::Mock::VerifyAndClearExpectations(&observer);
view_->RunOnCompositingDidCommit();
gfx::Rect dropped_damage_rect_2(40, 50, 10, 20);
EXPECT_CALL(observer, OnDelegatedFrameDamage(_, _)).Times(0);
view_->OnSwapCompositorFrame(
- 0, MakeDelegatedFrame(1.f, frame_size, dropped_damage_rect_2));
+ 0, kArbitraryLocalSurfaceId,
+ MakeDelegatedFrame(1.f, frame_size, dropped_damage_rect_2));
testing::Mock::VerifyAndClearExpectations(&observer);
view_->RunOnCompositingDidCommit();
@@ -2280,7 +2297,8 @@ TEST_F(RenderWidgetHostViewAuraTest, SkippedDelegatedFrames) {
EXPECT_CALL(observer,
OnDelegatedFrameDamage(view_->window_, view_rect));
view_->OnSwapCompositorFrame(
- 0, MakeDelegatedFrame(1.f, frame_size, new_damage_rect));
+ 0, kArbitraryLocalSurfaceId,
+ MakeDelegatedFrame(1.f, frame_size, new_damage_rect));
testing::Mock::VerifyAndClearExpectations(&observer);
view_->RunOnCompositingDidCommit();
@@ -2288,7 +2306,8 @@ TEST_F(RenderWidgetHostViewAuraTest, SkippedDelegatedFrames) {
EXPECT_CALL(observer,
OnDelegatedFrameDamage(view_->window_, partial_view_rect));
view_->OnSwapCompositorFrame(
- 0, MakeDelegatedFrame(1.f, frame_size, partial_view_rect));
+ 0, kArbitraryLocalSurfaceId,
+ MakeDelegatedFrame(1.f, frame_size, partial_view_rect));
testing::Mock::VerifyAndClearExpectations(&observer);
view_->RunOnCompositingDidCommit();
@@ -2304,7 +2323,8 @@ TEST_F(RenderWidgetHostViewAuraTest, SkippedDelegatedFrames) {
// This frame should not be dropped.
EXPECT_CALL(observer, OnDelegatedFrameDamage(view_->window_, view_rect));
view_->OnSwapCompositorFrame(
- 0, MakeDelegatedFrame(1.f, view_rect.size(), view_rect));
+ 0, kArbitraryLocalSurfaceId,
+ MakeDelegatedFrame(1.f, view_rect.size(), view_rect));
testing::Mock::VerifyAndClearExpectations(&observer);
view_->RunOnCompositingDidCommit();
@@ -2327,27 +2347,28 @@ TEST_F(RenderWidgetHostViewAuraTest, OutputSurfaceIdChange) {
// Swap a frame.
EXPECT_CALL(observer, OnDelegatedFrameDamage(view_->window_, view_rect));
- view_->OnSwapCompositorFrame(
- 0, MakeDelegatedFrame(1.f, frame_size, view_rect));
+ view_->OnSwapCompositorFrame(0, kArbitraryLocalSurfaceId,
+ MakeDelegatedFrame(1.f, frame_size, view_rect));
testing::Mock::VerifyAndClearExpectations(&observer);
view_->RunOnCompositingDidCommit();
// Swap a frame with a different surface id.
EXPECT_CALL(observer, OnDelegatedFrameDamage(view_->window_, view_rect));
- view_->OnSwapCompositorFrame(
- 1, MakeDelegatedFrame(1.f, frame_size, view_rect));
+ view_->OnSwapCompositorFrame(1, CreateLocalSurfaceId(),
+ MakeDelegatedFrame(1.f, frame_size, view_rect));
testing::Mock::VerifyAndClearExpectations(&observer);
view_->RunOnCompositingDidCommit();
// Swap an empty frame, with a different surface id.
view_->OnSwapCompositorFrame(
- 2, MakeDelegatedFrame(1.f, gfx::Size(), gfx::Rect()));
+ 2, CreateLocalSurfaceId(),
+ MakeDelegatedFrame(1.f, gfx::Size(), gfx::Rect()));
testing::Mock::VerifyAndClearExpectations(&observer);
view_->RunOnCompositingDidCommit();
// Swap another frame, with a different surface id.
EXPECT_CALL(observer, OnDelegatedFrameDamage(view_->window_, view_rect));
- view_->OnSwapCompositorFrame(3,
+ view_->OnSwapCompositorFrame(3, CreateLocalSurfaceId(),
MakeDelegatedFrame(1.f, frame_size, view_rect));
testing::Mock::VerifyAndClearExpectations(&observer);
view_->RunOnCompositingDidCommit();
@@ -2392,7 +2413,8 @@ TEST_F(RenderWidgetHostViewAuraTest, DiscardDelegatedFrames) {
for (size_t i = 0; i < renderer_count; ++i) {
views[i]->Show();
views[i]->OnSwapCompositorFrame(
- 1, MakeDelegatedFrame(1.f, frame_size, view_rect));
+ 1, kArbitraryLocalSurfaceId,
+ MakeDelegatedFrame(1.f, frame_size, view_rect));
EXPECT_TRUE(views[i]->HasFrameData());
views[i]->Hide();
}
@@ -2413,7 +2435,8 @@ TEST_F(RenderWidgetHostViewAuraTest, DiscardDelegatedFrames) {
// Swap a frame on it, it should evict the next LRU [1].
views[0]->OnSwapCompositorFrame(
- 1, MakeDelegatedFrame(1.f, frame_size, view_rect));
+ 1, kArbitraryLocalSurfaceId,
+ MakeDelegatedFrame(1.f, frame_size, view_rect));
EXPECT_TRUE(views[0]->HasFrameData());
EXPECT_FALSE(views[1]->HasFrameData());
// Now that [0] got a frame, it shouldn't be waiting any more.
@@ -2423,7 +2446,8 @@ TEST_F(RenderWidgetHostViewAuraTest, DiscardDelegatedFrames) {
// LRU renderer is [1], still hidden. Swap a frame on it, it should evict
// the next LRU [2].
views[1]->OnSwapCompositorFrame(
- 1, MakeDelegatedFrame(1.f, frame_size, view_rect));
+ 1, kArbitraryLocalSurfaceId,
+ MakeDelegatedFrame(1.f, frame_size, view_rect));
EXPECT_TRUE(views[0]->HasFrameData());
EXPECT_TRUE(views[1]->HasFrameData());
EXPECT_FALSE(views[2]->HasFrameData());
@@ -2440,7 +2464,8 @@ TEST_F(RenderWidgetHostViewAuraTest, DiscardDelegatedFrames) {
EXPECT_EQ(!views[i]->HasFrameData(),
views[i]->released_front_lock_active());
views[i]->OnSwapCompositorFrame(
- 1, MakeDelegatedFrame(1.f, frame_size, view_rect));
+ 1, kArbitraryLocalSurfaceId,
+ MakeDelegatedFrame(1.f, frame_size, view_rect));
// Now everyone has a frame.
EXPECT_FALSE(views[i]->released_front_lock_active());
EXPECT_TRUE(views[i]->HasFrameData());
@@ -2449,7 +2474,8 @@ TEST_F(RenderWidgetHostViewAuraTest, DiscardDelegatedFrames) {
// Swap a frame on [0], it should be evicted immediately.
views[0]->OnSwapCompositorFrame(
- 1, MakeDelegatedFrame(1.f, frame_size, view_rect));
+ 1, kArbitraryLocalSurfaceId,
+ MakeDelegatedFrame(1.f, frame_size, view_rect));
EXPECT_FALSE(views[0]->HasFrameData());
// Make [0] visible, and swap a frame on it. Nothing should be evicted
@@ -2458,7 +2484,8 @@ TEST_F(RenderWidgetHostViewAuraTest, DiscardDelegatedFrames) {
// We don't have a frame, wait.
EXPECT_TRUE(views[0]->released_front_lock_active());
views[0]->OnSwapCompositorFrame(
- 1, MakeDelegatedFrame(1.f, frame_size, view_rect));
+ 1, kArbitraryLocalSurfaceId,
+ MakeDelegatedFrame(1.f, frame_size, view_rect));
EXPECT_FALSE(views[0]->released_front_lock_active());
for (size_t i = 0; i < renderer_count; ++i)
EXPECT_TRUE(views[i]->HasFrameData());
@@ -2484,7 +2511,8 @@ TEST_F(RenderWidgetHostViewAuraTest, DiscardDelegatedFrames) {
views[1]->Show();
EXPECT_TRUE(views[1]->released_front_lock_active());
views[1]->OnSwapCompositorFrame(
- 1, MakeDelegatedFrame(1.f, size2, gfx::Rect(size2)));
+ 1, kArbitraryLocalSurfaceId,
+ MakeDelegatedFrame(1.f, size2, gfx::Rect(size2)));
EXPECT_FALSE(views[1]->released_front_lock_active());
for (size_t i = 0; i < renderer_count - 1; ++i)
@@ -2558,7 +2586,8 @@ TEST_F(RenderWidgetHostViewAuraTest, DiscardDelegatedFramesWithLocking) {
for (size_t i = 0; i < renderer_count; ++i) {
views[i]->Show();
views[i]->OnSwapCompositorFrame(
- 1, MakeDelegatedFrame(1.f, frame_size, view_rect));
+ 1, i ? CreateLocalSurfaceId() : kArbitraryLocalSurfaceId,
+ MakeDelegatedFrame(1.f, frame_size, view_rect));
EXPECT_TRUE(views[i]->HasFrameData());
}
@@ -2569,7 +2598,8 @@ TEST_F(RenderWidgetHostViewAuraTest, DiscardDelegatedFramesWithLocking) {
// If we lock [0] before hiding it, then [0] should not be evicted.
views[0]->Show();
views[0]->OnSwapCompositorFrame(
- 1, MakeDelegatedFrame(1.f, frame_size, view_rect));
+ 1, kArbitraryLocalSurfaceId,
+ MakeDelegatedFrame(1.f, frame_size, view_rect));
EXPECT_TRUE(views[0]->HasFrameData());
views[0]->GetDelegatedFrameHost()->LockResources();
views[0]->Hide();
@@ -2629,7 +2659,8 @@ TEST_F(RenderWidgetHostViewAuraTest, DiscardDelegatedFramesWithMemoryPressure) {
for (size_t i = 0; i < renderer_count; ++i) {
views[i]->Show();
views[i]->OnSwapCompositorFrame(
- 1, MakeDelegatedFrame(1.f, frame_size, view_rect));
+ 1, kArbitraryLocalSurfaceId,
+ MakeDelegatedFrame(1.f, frame_size, view_rect));
EXPECT_TRUE(views[i]->HasFrameData());
}
@@ -2658,35 +2689,6 @@ TEST_F(RenderWidgetHostViewAuraTest, DiscardDelegatedFramesWithMemoryPressure) {
}
}
-TEST_F(RenderWidgetHostViewAuraTest, SoftwareDPIChange) {
- gfx::Rect view_rect(100, 100);
- gfx::Size frame_size(100, 100);
-
- view_->InitAsChild(nullptr);
- aura::client::ParentWindowWithContext(
- view_->GetNativeView(),
- parent_view_->GetNativeView()->GetRootWindow(),
- gfx::Rect());
- view_->SetSize(view_rect.size());
- view_->Show();
-
- // With a 1x DPI UI and 1x DPI Renderer.
- view_->OnSwapCompositorFrame(
- 1, MakeDelegatedFrame(1.f, frame_size, gfx::Rect(frame_size)));
-
- cc::SurfaceId surface_id = view_->surface_id();
-
- // This frame will have the same number of physical pixels, but has a new
- // scale on it.
- view_->OnSwapCompositorFrame(
- 1, MakeDelegatedFrame(2.f, frame_size, gfx::Rect(frame_size)));
-
- // When we get a new frame with the same frame size in physical pixels, but
- // a different scale, we should generate a surface, as the final result will
- // need to be scaled differently to the screen.
- EXPECT_NE(surface_id, view_->surface_id());
-}
-
TEST_F(RenderWidgetHostViewAuraTest, SourceEventTypeExistsInLatencyInfo) {
// WHEEL source exists.
ui::ScrollEvent scroll(ui::ET_SCROLL, gfx::Point(2, 2), ui::EventTimeForNow(),
@@ -2762,7 +2764,8 @@ class RenderWidgetHostViewAuraCopyRequestTest
void OnSwapCompositorFrame() {
view_->OnSwapCompositorFrame(
- 1, MakeDelegatedFrame(1.f, view_rect_.size(), view_rect_));
+ 1, kArbitraryLocalSurfaceId,
+ MakeDelegatedFrame(1.f, view_rect_.size(), view_rect_));
cc::SurfaceId surface_id =
view_->GetDelegatedFrameHost()->SurfaceIdForTesting();
if (surface_id.is_valid())

Powered by Google App Engine
This is Rietveld 408576698