| 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 73b9c154f7aae610be5062c82d40c9e9f5e26aa9..8414337db23364bae1c89c6e665d96d6df240cc3 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
|
| @@ -27,6 +27,7 @@
|
| #include "cc/output/compositor_frame.h"
|
| #include "cc/output/compositor_frame_metadata.h"
|
| #include "cc/output/copy_output_request.h"
|
| +#include "cc/surfaces/local_surface_id_allocator.h"
|
| #include "cc/surfaces/surface.h"
|
| #include "cc/surfaces/surface_manager.h"
|
| #include "cc/test/begin_frame_args_test.h"
|
| @@ -130,10 +131,6 @@ 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)
|
| @@ -835,6 +832,8 @@ class RenderWidgetHostViewAuraTest : public testing::Test {
|
| IPC::TestSink* sink_;
|
| base::test::ScopedFeatureList feature_list_;
|
|
|
| + cc::LocalSurfaceIdAllocator local_surface_id_allocator_;
|
| +
|
| private:
|
| DISALLOW_COPY_AND_ASSIGN(RenderWidgetHostViewAuraTest);
|
| };
|
| @@ -2342,7 +2341,7 @@ TEST_F(RenderWidgetHostViewAuraTest, TwoOutputSurfaces) {
|
|
|
| // Submit another frame. The resources for the previous frame belong to the
|
| // old RendererCompositorFrameSink and should not be returned.
|
| - view_->SubmitCompositorFrame(CreateLocalSurfaceId(),
|
| + view_->SubmitCompositorFrame(local_surface_id_allocator_.GenerateId(),
|
| MakeDelegatedFrame(1.f, view_size, view_rect));
|
| EXPECT_EQ(0u, sink_->message_count());
|
|
|
| @@ -2488,6 +2487,8 @@ TEST_F(RenderWidgetHostViewAuraTest, DelegatedFrameGutter) {
|
| gfx::Size large_size(100, 100);
|
| gfx::Size small_size(40, 45);
|
| gfx::Size medium_size(40, 95);
|
| + cc::LocalSurfaceId small_id = local_surface_id_allocator_.GenerateId();
|
| + cc::LocalSurfaceId medium_id = local_surface_id_allocator_.GenerateId();
|
|
|
| // Prevent the DelegatedFrameHost from skipping frames.
|
| // XXX
|
| @@ -2502,7 +2503,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_->SubmitCompositorFrame(kArbitraryLocalSurfaceId, std::move(frame));
|
| + view_->SubmitCompositorFrame(small_id, std::move(frame));
|
|
|
| ui::Layer* parent_layer = view_->GetNativeView()->layer();
|
|
|
| @@ -2523,7 +2524,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_->SubmitCompositorFrame(kArbitraryLocalSurfaceId, std::move(frame));
|
| + view_->SubmitCompositorFrame(medium_id, std::move(frame));
|
| EXPECT_EQ(0u, parent_layer->children().size());
|
|
|
| view_->SetSize(large_size);
|
| @@ -2539,6 +2540,9 @@ TEST_F(RenderWidgetHostViewAuraTest, Resize) {
|
| gfx::Size size1(100, 100);
|
| gfx::Size size2(200, 200);
|
| gfx::Size size3(300, 300);
|
| + cc::LocalSurfaceId id1 = local_surface_id_allocator_.GenerateId();
|
| + cc::LocalSurfaceId id2 = local_surface_id_allocator_.GenerateId();
|
| + cc::LocalSurfaceId id3 = local_surface_id_allocator_.GenerateId();
|
|
|
| aura::Window* root_window = parent_view_->GetNativeView()->GetRootWindow();
|
| view_->InitAsChild(nullptr);
|
| @@ -2547,8 +2551,7 @@ TEST_F(RenderWidgetHostViewAuraTest, Resize) {
|
| view_->Show();
|
| view_->SetSize(size1);
|
| view_->SubmitCompositorFrame(
|
| - kArbitraryLocalSurfaceId,
|
| - MakeDelegatedFrame(1.f, size1, gfx::Rect(size1)));
|
| + id1, MakeDelegatedFrame(1.f, size1, gfx::Rect(size1)));
|
| ui::DrawWaiterForTest::WaitForCommit(
|
| root_window->GetHost()->compositor());
|
| ViewHostMsg_UpdateRect_Params update_params;
|
| @@ -2587,8 +2590,7 @@ TEST_F(RenderWidgetHostViewAuraTest, Resize) {
|
| // message.
|
| view_->renderer_compositor_frame_sink_->Reset();
|
| view_->SubmitCompositorFrame(
|
| - kArbitraryLocalSurfaceId,
|
| - MakeDelegatedFrame(1.f, size3, gfx::Rect(size3)));
|
| + id3, MakeDelegatedFrame(1.f, size3, gfx::Rect(size3)));
|
| view_->renderer_compositor_frame_sink_->Flush();
|
| // Expect the frame ack;
|
| EXPECT_TRUE(view_->renderer_compositor_frame_sink_->did_receive_ack());
|
| @@ -2598,8 +2600,7 @@ TEST_F(RenderWidgetHostViewAuraTest, Resize) {
|
| // produce a Resize message after the commit.
|
| view_->renderer_compositor_frame_sink_->Reset();
|
| view_->SubmitCompositorFrame(
|
| - kArbitraryLocalSurfaceId,
|
| - MakeDelegatedFrame(1.f, size2, gfx::Rect(size2)));
|
| + id2, MakeDelegatedFrame(1.f, size2, gfx::Rect(size2)));
|
| view_->renderer_compositor_frame_sink_->Flush();
|
| cc::SurfaceId surface_id = view_->surface_id();
|
| if (!surface_id.is_valid()) {
|
| @@ -2656,6 +2657,7 @@ TEST_F(RenderWidgetHostViewAuraTest, Resize) {
|
| TEST_F(RenderWidgetHostViewAuraTest, SkippedDelegatedFrames) {
|
| gfx::Rect view_rect(100, 100);
|
| gfx::Size frame_size = view_rect.size();
|
| + cc::LocalSurfaceId local_surface_id = kArbitraryLocalSurfaceId;
|
|
|
| view_->InitAsChild(nullptr);
|
| aura::client::ParentWindowWithContext(
|
| @@ -2669,7 +2671,7 @@ TEST_F(RenderWidgetHostViewAuraTest, SkippedDelegatedFrames) {
|
|
|
| // A full frame of damage.
|
| EXPECT_CALL(observer, OnDelegatedFrameDamage(view_->window_, view_rect));
|
| - view_->SubmitCompositorFrame(kArbitraryLocalSurfaceId,
|
| + view_->SubmitCompositorFrame(local_surface_id,
|
| MakeDelegatedFrame(1.f, frame_size, view_rect));
|
| testing::Mock::VerifyAndClearExpectations(&observer);
|
| view_->RunOnCompositingDidCommit();
|
| @@ -2679,8 +2681,7 @@ TEST_F(RenderWidgetHostViewAuraTest, SkippedDelegatedFrames) {
|
| EXPECT_CALL(observer,
|
| OnDelegatedFrameDamage(view_->window_, partial_view_rect));
|
| view_->SubmitCompositorFrame(
|
| - kArbitraryLocalSurfaceId,
|
| - MakeDelegatedFrame(1.f, frame_size, partial_view_rect));
|
| + local_surface_id, MakeDelegatedFrame(1.f, frame_size, partial_view_rect));
|
| testing::Mock::VerifyAndClearExpectations(&observer);
|
| view_->RunOnCompositingDidCommit();
|
|
|
| @@ -2697,7 +2698,7 @@ TEST_F(RenderWidgetHostViewAuraTest, SkippedDelegatedFrames) {
|
| gfx::Rect dropped_damage_rect_1(10, 20, 30, 40);
|
| EXPECT_CALL(observer, OnDelegatedFrameDamage(_, _)).Times(0);
|
| view_->SubmitCompositorFrame(
|
| - kArbitraryLocalSurfaceId,
|
| + local_surface_id,
|
| MakeDelegatedFrame(1.f, frame_size, dropped_damage_rect_1));
|
| testing::Mock::VerifyAndClearExpectations(&observer);
|
| view_->RunOnCompositingDidCommit();
|
| @@ -2705,7 +2706,7 @@ TEST_F(RenderWidgetHostViewAuraTest, SkippedDelegatedFrames) {
|
| gfx::Rect dropped_damage_rect_2(40, 50, 10, 20);
|
| EXPECT_CALL(observer, OnDelegatedFrameDamage(_, _)).Times(0);
|
| view_->SubmitCompositorFrame(
|
| - kArbitraryLocalSurfaceId,
|
| + local_surface_id,
|
| MakeDelegatedFrame(1.f, frame_size, dropped_damage_rect_2));
|
| testing::Mock::VerifyAndClearExpectations(&observer);
|
| view_->RunOnCompositingDidCommit();
|
| @@ -2715,13 +2716,13 @@ TEST_F(RenderWidgetHostViewAuraTest, SkippedDelegatedFrames) {
|
|
|
| // Unlock the compositor. This frame should damage everything.
|
| frame_size = view_rect.size();
|
| + local_surface_id = local_surface_id_allocator_.GenerateId();
|
|
|
| gfx::Rect new_damage_rect(5, 6, 10, 10);
|
| EXPECT_CALL(observer,
|
| OnDelegatedFrameDamage(view_->window_, view_rect));
|
| view_->SubmitCompositorFrame(
|
| - kArbitraryLocalSurfaceId,
|
| - MakeDelegatedFrame(1.f, frame_size, new_damage_rect));
|
| + local_surface_id, MakeDelegatedFrame(1.f, frame_size, new_damage_rect));
|
| // The swap unlocks the compositor.
|
| EXPECT_TRUE(view_->resize_locked());
|
| EXPECT_FALSE(view_->compositor_locked());
|
| @@ -2735,8 +2736,7 @@ TEST_F(RenderWidgetHostViewAuraTest, SkippedDelegatedFrames) {
|
| EXPECT_CALL(observer,
|
| OnDelegatedFrameDamage(view_->window_, partial_view_rect));
|
| view_->SubmitCompositorFrame(
|
| - kArbitraryLocalSurfaceId,
|
| - MakeDelegatedFrame(1.f, frame_size, partial_view_rect));
|
| + local_surface_id, MakeDelegatedFrame(1.f, frame_size, partial_view_rect));
|
| testing::Mock::VerifyAndClearExpectations(&observer);
|
| view_->RunOnCompositingDidCommit();
|
| EXPECT_FALSE(view_->resize_locked());
|
| @@ -2751,15 +2751,16 @@ TEST_F(RenderWidgetHostViewAuraTest, SkippedDelegatedFrames) {
|
|
|
| // We're never expecting empty frames, resize to something non-empty.
|
| view_rect = gfx::Rect(100, 100);
|
| + frame_size = view_rect.size();
|
| + local_surface_id = local_surface_id_allocator_.GenerateId();
|
| view_->SetSize(view_rect.size());
|
| EXPECT_TRUE(view_->resize_locked());
|
| EXPECT_TRUE(view_->compositor_locked());
|
|
|
| // This frame should not be dropped.
|
| EXPECT_CALL(observer, OnDelegatedFrameDamage(view_->window_, view_rect));
|
| - view_->SubmitCompositorFrame(
|
| - kArbitraryLocalSurfaceId,
|
| - MakeDelegatedFrame(1.f, view_rect.size(), view_rect));
|
| + view_->SubmitCompositorFrame(local_surface_id,
|
| + MakeDelegatedFrame(1.f, frame_size, view_rect));
|
| testing::Mock::VerifyAndClearExpectations(&observer);
|
| EXPECT_TRUE(view_->resize_locked());
|
| EXPECT_FALSE(view_->compositor_locked());
|
| @@ -2774,6 +2775,7 @@ TEST_F(RenderWidgetHostViewAuraTest, SkippedDelegatedFrames) {
|
| TEST_F(RenderWidgetHostViewAuraTest, ResizeAfterReceivingFrame) {
|
| gfx::Rect view_rect(100, 100);
|
| gfx::Size frame_size = view_rect.size();
|
| + cc::LocalSurfaceId local_surface_id = kArbitraryLocalSurfaceId;
|
|
|
| view_->InitAsChild(nullptr);
|
| aura::client::ParentWindowWithContext(
|
| @@ -2787,7 +2789,7 @@ TEST_F(RenderWidgetHostViewAuraTest, ResizeAfterReceivingFrame) {
|
| // A frame of initial size.
|
| EXPECT_CALL(observer, OnDelegatedFrameDamage(view_->window_, view_rect));
|
| view_->SubmitCompositorFrame(
|
| - kArbitraryLocalSurfaceId,
|
| + local_surface_id,
|
| MakeDelegatedFrame(1.f, frame_size, gfx::Rect(frame_size)));
|
| testing::Mock::VerifyAndClearExpectations(&observer);
|
| view_->RunOnCompositingDidCommit();
|
| @@ -2795,7 +2797,7 @@ TEST_F(RenderWidgetHostViewAuraTest, ResizeAfterReceivingFrame) {
|
| // A frame of initial size arrives, but we don't commit in the UI yet.
|
| EXPECT_CALL(observer, OnDelegatedFrameDamage(view_->window_, _));
|
| view_->SubmitCompositorFrame(
|
| - kArbitraryLocalSurfaceId,
|
| + local_surface_id,
|
| MakeDelegatedFrame(1.f, frame_size, gfx::Rect(frame_size)));
|
| testing::Mock::VerifyAndClearExpectations(&observer);
|
|
|
| @@ -2810,7 +2812,7 @@ TEST_F(RenderWidgetHostViewAuraTest, ResizeAfterReceivingFrame) {
|
|
|
| EXPECT_CALL(observer, OnDelegatedFrameDamage(_, _)).Times(0);
|
| view_->SubmitCompositorFrame(
|
| - kArbitraryLocalSurfaceId,
|
| + local_surface_id,
|
| MakeDelegatedFrame(1.f, frame_size, gfx::Rect(frame_size)));
|
| testing::Mock::VerifyAndClearExpectations(&observer);
|
|
|
| @@ -2825,15 +2827,16 @@ TEST_F(RenderWidgetHostViewAuraTest, ResizeAfterReceivingFrame) {
|
|
|
| EXPECT_CALL(observer, OnDelegatedFrameDamage(_, _)).Times(0);
|
| view_->SubmitCompositorFrame(
|
| - kArbitraryLocalSurfaceId,
|
| + local_surface_id,
|
| MakeDelegatedFrame(1.f, frame_size, gfx::Rect(frame_size)));
|
| testing::Mock::VerifyAndClearExpectations(&observer);
|
|
|
| // A frame arrives of the new size, which will be accepted.
|
| frame_size = view_rect.size();
|
| + local_surface_id = local_surface_id_allocator_.GenerateId();
|
| EXPECT_CALL(observer, OnDelegatedFrameDamage(view_->window_, _));
|
| view_->SubmitCompositorFrame(
|
| - kArbitraryLocalSurfaceId,
|
| + local_surface_id,
|
| MakeDelegatedFrame(1.f, frame_size, gfx::Rect(frame_size)));
|
| // Receiving the frame unlocks the compositor so it can commit.
|
| EXPECT_TRUE(view_->resize_locked());
|
| @@ -2924,7 +2927,7 @@ TEST_F(RenderWidgetHostViewAuraTest, OutputSurfaceIdChange) {
|
|
|
| // Submit a frame from the new RendererCompositorFrameSink.
|
| EXPECT_CALL(observer, OnDelegatedFrameDamage(view_->window_, view_rect));
|
| - view_->SubmitCompositorFrame(CreateLocalSurfaceId(),
|
| + view_->SubmitCompositorFrame(local_surface_id_allocator_.GenerateId(),
|
| MakeDelegatedFrame(1.f, frame_size, view_rect));
|
| testing::Mock::VerifyAndClearExpectations(&observer);
|
| view_->RunOnCompositingDidCommit();
|
| @@ -2934,7 +2937,7 @@ TEST_F(RenderWidgetHostViewAuraTest, OutputSurfaceIdChange) {
|
|
|
| // Submit a frame from the new RendererCompositorFrameSink.
|
| view_->SubmitCompositorFrame(
|
| - CreateLocalSurfaceId(),
|
| + local_surface_id_allocator_.GenerateId(),
|
| MakeDelegatedFrame(1.f, gfx::Size(), gfx::Rect()));
|
| testing::Mock::VerifyAndClearExpectations(&observer);
|
| view_->RunOnCompositingDidCommit();
|
| @@ -2944,7 +2947,7 @@ TEST_F(RenderWidgetHostViewAuraTest, OutputSurfaceIdChange) {
|
|
|
| // Swap another frame, with a different surface id.
|
| EXPECT_CALL(observer, OnDelegatedFrameDamage(view_->window_, view_rect));
|
| - view_->SubmitCompositorFrame(CreateLocalSurfaceId(),
|
| + view_->SubmitCompositorFrame(local_surface_id_allocator_.GenerateId(),
|
| MakeDelegatedFrame(1.f, frame_size, view_rect));
|
| testing::Mock::VerifyAndClearExpectations(&observer);
|
| view_->RunOnCompositingDidCommit();
|
| @@ -3083,14 +3086,14 @@ TEST_F(RenderWidgetHostViewAuraTest, DiscardDelegatedFrames) {
|
| views[1]->Hide();
|
| EXPECT_TRUE(views[1]->HasFrameData());
|
| gfx::Size size2(200, 200);
|
| + cc::LocalSurfaceId id2 = local_surface_id_allocator_.GenerateId();
|
| views[1]->SetSize(size2);
|
| EXPECT_FALSE(views[1]->HasFrameData());
|
| // Show it, it should block until we give it a frame.
|
| views[1]->Show();
|
| EXPECT_TRUE(views[1]->released_front_lock_active());
|
| views[1]->SubmitCompositorFrame(
|
| - kArbitraryLocalSurfaceId,
|
| - MakeDelegatedFrame(1.f, size2, gfx::Rect(size2)));
|
| + id2, 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)
|
| @@ -3165,7 +3168,7 @@ TEST_F(RenderWidgetHostViewAuraTest, DiscardDelegatedFramesWithLocking) {
|
| for (size_t i = 0; i < renderer_count; ++i) {
|
| views[i]->Show();
|
| views[i]->SubmitCompositorFrame(
|
| - i ? CreateLocalSurfaceId() : kArbitraryLocalSurfaceId,
|
| + i ? local_surface_id_allocator_.GenerateId() : kArbitraryLocalSurfaceId,
|
| MakeDelegatedFrame(1.f, frame_size, view_rect));
|
| EXPECT_TRUE(views[i]->HasFrameData());
|
| }
|
| @@ -3311,6 +3314,7 @@ class LastObserverTracker : public cc::FakeExternalBeginFrameSource::Client {
|
| TEST_F(RenderWidgetHostViewAuraTest, ForwardsBeginFrameAcks) {
|
| gfx::Rect view_rect(100, 100);
|
| gfx::Size frame_size = view_rect.size();
|
| + cc::LocalSurfaceId local_surface_id = kArbitraryLocalSurfaceId;
|
|
|
| view_->InitAsChild(nullptr);
|
| aura::client::ParentWindowWithContext(
|
| @@ -3344,7 +3348,7 @@ TEST_F(RenderWidgetHostViewAuraTest, ForwardsBeginFrameAcks) {
|
| cc::BeginFrameAck ack(source_id, 5, 4, true);
|
| cc::CompositorFrame frame = MakeDelegatedFrame(1.f, frame_size, view_rect);
|
| frame.metadata.begin_frame_ack = ack;
|
| - view_->SubmitCompositorFrame(kArbitraryLocalSurfaceId, std::move(frame));
|
| + view_->SubmitCompositorFrame(local_surface_id, std::move(frame));
|
| view_->RunOnCompositingDidCommit();
|
| EXPECT_EQ(ack, source.LastAckForObserver(observer_tracker.last_observer_));
|
| }
|
| @@ -3377,7 +3381,7 @@ TEST_F(RenderWidgetHostViewAuraTest, ForwardsBeginFrameAcks) {
|
| cc::CompositorFrame frame =
|
| MakeDelegatedFrame(1.f, frame_size, dropped_damage_rect);
|
| frame.metadata.begin_frame_ack = ack;
|
| - view_->SubmitCompositorFrame(kArbitraryLocalSurfaceId, std::move(frame));
|
| + view_->SubmitCompositorFrame(local_surface_id, std::move(frame));
|
| view_->RunOnCompositingDidCommit();
|
| ack.latest_confirmed_sequence_number = 4;
|
| ack.has_damage = false;
|
| @@ -3400,7 +3404,7 @@ TEST_F(RenderWidgetHostViewAuraTest, ForwardsBeginFrameAcks) {
|
| cc::CompositorFrame frame =
|
| MakeDelegatedFrame(1.f, frame_size, dropped_damage_rect);
|
| frame.metadata.begin_frame_ack = ack;
|
| - view_->SubmitCompositorFrame(kArbitraryLocalSurfaceId, std::move(frame));
|
| + view_->SubmitCompositorFrame(local_surface_id, std::move(frame));
|
| view_->RunOnCompositingDidCommit();
|
| ack.latest_confirmed_sequence_number =
|
| cc::BeginFrameArgs::kInvalidFrameNumber;
|
| @@ -3424,6 +3428,7 @@ TEST_F(RenderWidgetHostViewAuraTest, ForwardsBeginFrameAcks) {
|
|
|
| // Unlock the compositor again with a new CompositorFrame of correct size.
|
| frame_size = view_rect.size();
|
| + local_surface_id = local_surface_id_allocator_.GenerateId();
|
|
|
| {
|
| cc::BeginFrameArgs args = cc::CreateBeginFrameArgsForTesting(
|
| @@ -3434,7 +3439,7 @@ TEST_F(RenderWidgetHostViewAuraTest, ForwardsBeginFrameAcks) {
|
| cc::BeginFrameAck ack(source_id, 12, 12, true);
|
| cc::CompositorFrame frame = MakeDelegatedFrame(1.f, frame_size, view_rect);
|
| frame.metadata.begin_frame_ack = ack;
|
| - view_->SubmitCompositorFrame(kArbitraryLocalSurfaceId, std::move(frame));
|
| + view_->SubmitCompositorFrame(local_surface_id, std::move(frame));
|
| view_->RunOnCompositingDidCommit();
|
| EXPECT_EQ(ack, source.LastAckForObserver(observer_tracker.last_observer_));
|
| }
|
|
|