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

Unified Diff: content/browser/renderer_host/render_widget_host_view_aura_unittest.cc

Issue 2144733005: [WIP] cc: Plumb SurfaceId from clients Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Ensure only SurfaceFactoy and tests can update hierarchy Created 4 years, 5 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 2c164fbe461c2c257bb6dfabfebfec45d1398d82..4075f36f819795b693aa6cd21a67cf088e5a07e4 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
@@ -1645,7 +1645,7 @@ TEST_F(RenderWidgetHostViewAuraTest, ResettingCompositorReturnsResources) {
// Swapping a frame should trigger a swap ACK IPC because we have reset the
// compositor.
- view_->OnSwapCompositorFrame(0,
+ view_->OnSwapCompositorFrame(0, cc::SurfaceId(1, 1, 1),
MakeDelegatedFrame(1.f, view_size, view_rect));
EXPECT_EQ(1u, sink_->message_count());
{
@@ -1697,6 +1697,15 @@ TEST_F(RenderWidgetHostViewAuraTest, TwoOutputSurfaces) {
cc::SurfaceManager* manager = factory->GetSurfaceManager();
manager->AddObserver(&damage_observer);
+ // Wait for the ui::Compositor to get an OutputSurface and a SurfaceFactory.
+ // The surfaces system will then be able to install a destruction dependency
+ // between the child client and the ui::Compositor ensuring that calling
+ // SurfaceFactory::Destroy on a child surface does not immediately destroy
+ // the surface.
+ aura::Window* root_window = aura_test_helper_->root_window();
+ ui::DrawWaiterForTest::WaitForCompositingInitialized(
+ root_window->GetHost()->compositor());
+
gfx::Size view_size(100, 100);
gfx::Rect view_rect(view_size);
@@ -1708,7 +1717,7 @@ TEST_F(RenderWidgetHostViewAuraTest, TwoOutputSurfaces) {
view_->Show();
sink_->ClearMessages();
- view_->OnSwapCompositorFrame(0,
+ view_->OnSwapCompositorFrame(0, cc::SurfaceId(1, 1, 1),
MakeDelegatedFrame(1.f, view_size, view_rect));
// Accumulate some returned resources. This should not trigger an IPC.
@@ -1721,7 +1730,7 @@ TEST_F(RenderWidgetHostViewAuraTest, TwoOutputSurfaces) {
// Swap another CompositorFrame but this time from another output_surface_id.
// This should trigger a non-ACK ReclaimCompositorResources IPC.
- view_->OnSwapCompositorFrame(1,
+ view_->OnSwapCompositorFrame(1, cc::SurfaceId(1, 2, 1),
MakeDelegatedFrame(1.f, view_size, view_rect));
EXPECT_EQ(1u, sink_->message_count());
{
@@ -1776,8 +1785,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, cc::SurfaceId(1, 1, 1),
+ MakeDelegatedFrame(1.f, std::get<0>(params).new_size,
+ gfx::Rect(std::get<0>(params).new_size)));
ui::DrawWaiterForTest::WaitForCommit(
root_window->GetHost()->compositor());
}
@@ -1799,8 +1809,9 @@ TEST_F(RenderWidgetHostViewAuraTest, DISABLED_FullscreenResize) {
gfx::Rect(std::get<0>(params).screen_info.availableRect).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, cc::SurfaceId(1, 2, 1),
+ MakeDelegatedFrame(1.f, std::get<0>(params).new_size,
+ gfx::Rect(std::get<0>(params).new_size)));
ui::DrawWaiterForTest::WaitForCommit(
root_window->GetHost()->compositor());
}
@@ -1824,14 +1835,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, cc::SurfaceId(1, 1, 1),
+ 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, cc::SurfaceId(1, 1, 1),
+ MakeDelegatedFrame(1.f, view_size, gfx::Rect(5, 5, 5, 5)));
testing::Mock::VerifyAndClearExpectations(&observer);
view_->window_->RemoveObserver(&observer);
@@ -1850,7 +1862,7 @@ TEST_F(RenderWidgetHostViewAuraTest, RecreateLayers) {
view_->SetSize(view_size);
view_->Show();
- view_->OnSwapCompositorFrame(0,
+ view_->OnSwapCompositorFrame(0, cc::SurfaceId(1, 1, 1),
MakeDelegatedFrame(1.f, view_size, view_rect));
std::unique_ptr<ui::LayerTreeOwner> cloned_owner(
wm::RecreateLayers(view_->GetNativeView(), nullptr));
@@ -1885,7 +1897,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, cc::SurfaceId(1, 1, 1), std::move(frame));
ui::Layer* parent_layer = view_->GetNativeView()->layer();
@@ -1906,7 +1918,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, cc::SurfaceId(1, 1, 1), std::move(frame));
EXPECT_EQ(0u, parent_layer->children().size());
view_->SetSize(large_size);
@@ -1930,7 +1942,8 @@ TEST_F(RenderWidgetHostViewAuraTest, Resize) {
view_->Show();
view_->SetSize(size1);
view_->OnSwapCompositorFrame(
- 0, MakeDelegatedFrame(1.f, size1, gfx::Rect(size1)));
+ 0, cc::SurfaceId(1, 1, 1),
+ MakeDelegatedFrame(1.f, size1, gfx::Rect(size1)));
ui::DrawWaiterForTest::WaitForCommit(
root_window->GetHost()->compositor());
ViewHostMsg_UpdateRect_Params update_params;
@@ -1968,7 +1981,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, cc::SurfaceId(1, 1, 1),
+ MakeDelegatedFrame(1.f, size3, gfx::Rect(size3)));
// Expect the frame ack;
EXPECT_EQ(1u, sink_->message_count());
EXPECT_EQ(ViewMsg_ReclaimCompositorResources::ID,
@@ -1979,7 +1993,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, cc::SurfaceId(1, 1, 1),
+ MakeDelegatedFrame(1.f, size2, gfx::Rect(size2)));
cc::SurfaceId surface_id = view_->surface_id();
if (surface_id.is_null()) {
// No frame ack yet.
@@ -2050,8 +2065,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, cc::SurfaceId(1, 1, 1),
+ MakeDelegatedFrame(1.f, frame_size, view_rect));
testing::Mock::VerifyAndClearExpectations(&observer);
view_->RunOnCompositingDidCommit();
@@ -2060,7 +2075,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, cc::SurfaceId(1, 1, 1),
+ MakeDelegatedFrame(1.f, frame_size, partial_view_rect));
testing::Mock::VerifyAndClearExpectations(&observer);
view_->RunOnCompositingDidCommit();
@@ -2072,14 +2088,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, cc::SurfaceId(1, 1, 1),
+ 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, cc::SurfaceId(1, 1, 1),
+ MakeDelegatedFrame(1.f, frame_size, dropped_damage_rect_2));
testing::Mock::VerifyAndClearExpectations(&observer);
view_->RunOnCompositingDidCommit();
@@ -2090,7 +2108,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, cc::SurfaceId(1, 1, 1),
+ MakeDelegatedFrame(1.f, frame_size, new_damage_rect));
testing::Mock::VerifyAndClearExpectations(&observer);
view_->RunOnCompositingDidCommit();
@@ -2098,7 +2117,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, cc::SurfaceId(1, 1, 1),
+ MakeDelegatedFrame(1.f, frame_size, partial_view_rect));
testing::Mock::VerifyAndClearExpectations(&observer);
view_->RunOnCompositingDidCommit();
@@ -2114,7 +2134,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, cc::SurfaceId(1, 1, 1),
+ MakeDelegatedFrame(1.f, view_rect.size(), view_rect));
testing::Mock::VerifyAndClearExpectations(&observer);
view_->RunOnCompositingDidCommit();
@@ -2137,27 +2158,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, cc::SurfaceId(1, 1, 1),
+ 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, cc::SurfaceId(1, 2, 1),
+ 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, cc::SurfaceId(1, 3, 1),
+ 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, cc::SurfaceId(1, 4, 1),
MakeDelegatedFrame(1.f, frame_size, view_rect));
testing::Mock::VerifyAndClearExpectations(&observer);
view_->RunOnCompositingDidCommit();
@@ -2202,7 +2224,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, cc::SurfaceId(1 + i, 1, 1),
+ MakeDelegatedFrame(1.f, frame_size, view_rect));
EXPECT_TRUE(views[i]->HasFrameData());
views[i]->Hide();
}
@@ -2223,7 +2246,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, cc::SurfaceId(1, 2, 1),
+ 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.
@@ -2233,7 +2257,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, cc::SurfaceId(2, 2, 1),
+ MakeDelegatedFrame(1.f, frame_size, view_rect));
EXPECT_TRUE(views[0]->HasFrameData());
EXPECT_TRUE(views[1]->HasFrameData());
EXPECT_FALSE(views[2]->HasFrameData());
@@ -2250,7 +2275,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, cc::SurfaceId(1 + i, 1, 1),
+ 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());
@@ -2259,7 +2285,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, cc::SurfaceId(1, 1, 1),
+ 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
@@ -2268,7 +2295,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, cc::SurfaceId(1, 1, 1),
+ 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());
@@ -2294,7 +2322,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, cc::SurfaceId(2, 1, 1),
+ 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)
@@ -2368,7 +2397,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, cc::SurfaceId(i + 1, 1, 1),
+ MakeDelegatedFrame(1.f, frame_size, view_rect));
EXPECT_TRUE(views[i]->HasFrameData());
}
@@ -2379,7 +2409,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, cc::SurfaceId(1, 1, 1),
+ MakeDelegatedFrame(1.f, frame_size, view_rect));
EXPECT_TRUE(views[0]->HasFrameData());
views[0]->GetDelegatedFrameHost()->LockResources();
views[0]->Hide();
@@ -2439,7 +2470,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, cc::SurfaceId(1, 1, 1),
+ MakeDelegatedFrame(1.f, frame_size, view_rect));
EXPECT_TRUE(views[i]->HasFrameData());
}
@@ -2482,14 +2514,16 @@ TEST_F(RenderWidgetHostViewAuraTest, SoftwareDPIChange) {
// With a 1x DPI UI and 1x DPI Renderer.
view_->OnSwapCompositorFrame(
- 1, MakeDelegatedFrame(1.f, frame_size, gfx::Rect(frame_size)));
+ 1, cc::SurfaceId(1, 1, 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)));
+ 1, cc::SurfaceId(1, 2, 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
@@ -2550,7 +2584,8 @@ class RenderWidgetHostViewAuraCopyRequestTest
void OnSwapCompositorFrame() {
view_->OnSwapCompositorFrame(
- 1, MakeDelegatedFrame(1.f, view_rect_.size(), view_rect_));
+ 1, cc::SurfaceId(1, 1, 1),
+ MakeDelegatedFrame(1.f, view_rect_.size(), view_rect_));
cc::SurfaceId surface_id =
view_->GetDelegatedFrameHost()->SurfaceIdForTesting();
if (!surface_id.is_null())
@@ -4024,7 +4059,7 @@ TEST_F(RenderWidgetHostViewAuraTest, SurfaceClientIdInitialized) {
view_->InitAsChild(nullptr);
view_->Show();
view_->SetSize(size);
- view_->OnSwapCompositorFrame(0,
+ view_->OnSwapCompositorFrame(0, cc::SurfaceId(1, 1, 1),
MakeDelegatedFrame(1.f, size, gfx::Rect(size)));
EXPECT_EQ(view_->GetSurfaceClientId(), std::get<0>(params));
}

Powered by Google App Engine
This is Rietveld 408576698