| Index: cc/trees/layer_tree_host_unittest_context.cc
|
| diff --git a/cc/trees/layer_tree_host_unittest_context.cc b/cc/trees/layer_tree_host_unittest_context.cc
|
| index 2d23d755f768384b95ce6bf614c0ab3014a233c9..24ffcd46e4e3a933a2089b59773c81211692600f 100644
|
| --- a/cc/trees/layer_tree_host_unittest_context.cc
|
| +++ b/cc/trees/layer_tree_host_unittest_context.cc
|
| @@ -19,6 +19,7 @@
|
| #include "cc/layers/video_layer_impl.h"
|
| #include "cc/output/filter_operations.h"
|
| #include "cc/resources/single_release_callback.h"
|
| +#include "cc/test/failure_output_surface.h"
|
| #include "cc/test/fake_content_layer.h"
|
| #include "cc/test/fake_content_layer_client.h"
|
| #include "cc/test/fake_content_layer_impl.h"
|
| @@ -81,12 +82,11 @@ class LayerTreeHostContextTest : public LayerTreeTest {
|
| return TestWebGraphicsContext3D::Create();
|
| }
|
|
|
| - scoped_ptr<FakeOutputSurface> CreateFakeOutputSurface(
|
| - bool fallback) override {
|
| + scoped_ptr<FakeOutputSurface> CreateFakeOutputSurface() override {
|
| if (times_to_fail_create_) {
|
| --times_to_fail_create_;
|
| ExpectCreateToFail();
|
| - return nullptr;
|
| + return make_scoped_ptr(new FailureOutputSurface(delegating_renderer()));
|
| }
|
|
|
| scoped_ptr<TestWebGraphicsContext3D> context3d = CreateContext3d();
|
| @@ -174,22 +174,22 @@ class LayerTreeHostContextTestLostContextSucceeds
|
|
|
| void BeginTest() override { PostSetNeedsCommitToMainThread(); }
|
|
|
| - void RequestNewOutputSurface(bool fallback) override {
|
| + void RequestNewOutputSurface() override {
|
| if (async_output_surface_creation_) {
|
| MainThreadTaskRunner()->PostTask(
|
| - FROM_HERE,
|
| - base::Bind(&LayerTreeHostContextTestLostContextSucceeds::
|
| - CreateAndSetOutputSurface,
|
| - base::Unretained(this),
|
| - fallback));
|
| + FROM_HERE, base::Bind(&LayerTreeHostContextTestLostContextSucceeds::
|
| + CreateAndSetOutputSurface,
|
| + base::Unretained(this)));
|
| } else {
|
| - CreateAndSetOutputSurface(fallback);
|
| + CreateAndSetOutputSurface();
|
| }
|
| }
|
|
|
| - void CreateAndSetOutputSurface(bool fallback) {
|
| - layer_tree_host()->SetOutputSurface(
|
| - LayerTreeHostContextTest::CreateOutputSurface(fallback));
|
| + void CreateAndSetOutputSurface() {
|
| + scoped_ptr<OutputSurface> surface(
|
| + LayerTreeHostContextTest::CreateOutputSurface());
|
| + CHECK(surface);
|
| + layer_tree_host()->SetOutputSurface(surface.Pass());
|
| }
|
|
|
| void DidInitializeOutputSurface() override {
|
| @@ -364,7 +364,7 @@ class LayerTreeHostClientNotReadyDoesNotCreateOutputSurface
|
| EndTest();
|
| }
|
|
|
| - scoped_ptr<OutputSurface> CreateOutputSurface(bool fallback) override {
|
| + scoped_ptr<OutputSurface> CreateOutputSurface() override {
|
| EXPECT_TRUE(false);
|
| return nullptr;
|
| }
|
| @@ -387,7 +387,7 @@ class MultipleCompositeDoesNotCreateOutputSurface
|
| settings->single_thread_proxy_scheduler = false;
|
| }
|
|
|
| - void RequestNewOutputSurface(bool fallback) override {
|
| + void RequestNewOutputSurface() override {
|
| EXPECT_GE(1, ++request_count_);
|
| EndTest();
|
| }
|
| @@ -397,7 +397,7 @@ class MultipleCompositeDoesNotCreateOutputSurface
|
| layer_tree_host()->Composite(base::TimeTicks());
|
| }
|
|
|
| - scoped_ptr<OutputSurface> CreateOutputSurface(bool fallback) override {
|
| + scoped_ptr<OutputSurface> CreateOutputSurface() override {
|
| EXPECT_TRUE(false);
|
| return nullptr;
|
| }
|
| @@ -421,13 +421,12 @@ class FailedCreateDoesNotCreateExtraOutputSurface
|
| settings->single_thread_proxy_scheduler = false;
|
| }
|
|
|
| - void RequestNewOutputSurface(bool fallback) override {
|
| + void RequestNewOutputSurface() override {
|
| if (request_count_ == 0) {
|
| ExpectCreateToFail();
|
| - layer_tree_host()->SetOutputSurface(nullptr);
|
| + layer_tree_host()->SetOutputSurface(
|
| + make_scoped_ptr(new FailureOutputSurface(false)));
|
| }
|
| - EXPECT_GE(2, ++request_count_);
|
| - EndTest();
|
| }
|
|
|
| void BeginTest() override {
|
| @@ -435,13 +434,14 @@ class FailedCreateDoesNotCreateExtraOutputSurface
|
| layer_tree_host()->Composite(base::TimeTicks());
|
| }
|
|
|
| - scoped_ptr<OutputSurface> CreateOutputSurface(bool fallback) override {
|
| - EXPECT_TRUE(false);
|
| - return nullptr;
|
| - }
|
| -
|
| void DidInitializeOutputSurface() override { EXPECT_TRUE(false); }
|
|
|
| + void DidFailToInitializeOutputSurface() override {
|
| + LayerTreeHostContextTest::DidFailToInitializeOutputSurface();
|
| + EXPECT_GE(2, ++request_count_);
|
| + EndTest();
|
| + }
|
| +
|
| void AfterTest() override {}
|
|
|
| int request_count_;
|
| @@ -459,19 +459,18 @@ class LayerTreeHostContextTestCommitAfterDelayedOutputSurface
|
| settings->single_thread_proxy_scheduler = false;
|
| }
|
|
|
| - void RequestNewOutputSurface(bool fallback) override {
|
| + void RequestNewOutputSurface() override {
|
| MainThreadTaskRunner()->PostTask(
|
| FROM_HERE,
|
| base::Bind(&LayerTreeHostContextTestCommitAfterDelayedOutputSurface::
|
| CreateAndSetOutputSurface,
|
| - base::Unretained(this),
|
| - fallback));
|
| + base::Unretained(this)));
|
| }
|
|
|
| - void CreateAndSetOutputSurface(bool fallback) {
|
| + void CreateAndSetOutputSurface() {
|
| creating_output_ = true;
|
| layer_tree_host()->SetOutputSurface(
|
| - LayerTreeHostContextTest::CreateOutputSurface(fallback));
|
| + LayerTreeHostContextTest::CreateOutputSurface());
|
| }
|
|
|
| void BeginTest() override { layer_tree_host()->Composite(base::TimeTicks()); }
|
| @@ -499,9 +498,9 @@ class LayerTreeHostContextTestAvoidUnnecessaryComposite
|
| settings->single_thread_proxy_scheduler = false;
|
| }
|
|
|
| - void RequestNewOutputSurface(bool fallback) override {
|
| + void RequestNewOutputSurface() override {
|
| layer_tree_host()->SetOutputSurface(
|
| - LayerTreeHostContextTest::CreateOutputSurface(fallback));
|
| + LayerTreeHostContextTest::CreateOutputSurface());
|
| EndTest();
|
| }
|
|
|
| @@ -579,35 +578,16 @@ class LayerTreeHostContextTestLostContextSucceedsWithContent
|
| SINGLE_AND_MULTI_THREAD_TEST_F(
|
| LayerTreeHostContextTestLostContextSucceedsWithContent);
|
|
|
| -class LayerTreeHostContextTestCreateOutputSurfaceFails
|
| +class LayerTreeHostContextTestCreateOutputSurfaceFailsOnce
|
| : public LayerTreeHostContextTest {
|
| public:
|
| - // Run a test that initially fails OutputSurface creation |times_to_fail|
|
| - // times. If |expect_fallback_attempt| is |true|, an attempt to create a
|
| - // fallback/software OutputSurface is expected to occur.
|
| - LayerTreeHostContextTestCreateOutputSurfaceFails(int times_to_fail,
|
| - bool expect_fallback_attempt)
|
| - : times_to_fail_(times_to_fail),
|
| - expect_fallback_attempt_(expect_fallback_attempt),
|
| - did_attempt_fallback_(false),
|
| - times_initialized_(0) {
|
| + LayerTreeHostContextTestCreateOutputSurfaceFailsOnce()
|
| + : times_to_fail_(1), times_initialized_(0) {
|
| times_to_fail_create_ = times_to_fail_;
|
| }
|
|
|
| void BeginTest() override { PostSetNeedsCommitToMainThread(); }
|
|
|
| - scoped_ptr<FakeOutputSurface> CreateFakeOutputSurface(
|
| - bool fallback) override {
|
| - scoped_ptr<FakeOutputSurface> surface =
|
| - LayerTreeHostContextTest::CreateFakeOutputSurface(fallback);
|
| -
|
| - if (surface)
|
| - EXPECT_EQ(times_to_fail_, times_create_failed_);
|
| -
|
| - did_attempt_fallback_ = fallback;
|
| - return surface.Pass();
|
| - }
|
| -
|
| void DidInitializeOutputSurface() override { times_initialized_++; }
|
|
|
| void DrawLayersOnThread(LayerTreeHostImpl* host_impl) override { EndTest(); }
|
| @@ -615,38 +595,16 @@ class LayerTreeHostContextTestCreateOutputSurfaceFails
|
| void AfterTest() override {
|
| EXPECT_EQ(times_to_fail_, times_create_failed_);
|
| EXPECT_NE(0, times_initialized_);
|
| - EXPECT_EQ(expect_fallback_attempt_, did_attempt_fallback_);
|
| }
|
|
|
| private:
|
| int times_to_fail_;
|
| - bool expect_fallback_attempt_;
|
| - bool did_attempt_fallback_;
|
| int times_initialized_;
|
| };
|
|
|
| -class LayerTreeHostContextTestCreateOutputSurfaceFailsOnce
|
| - : public LayerTreeHostContextTestCreateOutputSurfaceFails {
|
| - public:
|
| - LayerTreeHostContextTestCreateOutputSurfaceFailsOnce()
|
| - : LayerTreeHostContextTestCreateOutputSurfaceFails(1, false) {}
|
| -};
|
| -
|
| SINGLE_AND_MULTI_THREAD_TEST_F(
|
| LayerTreeHostContextTestCreateOutputSurfaceFailsOnce);
|
|
|
| -// After 4 failures we expect an attempt to create a fallback/software
|
| -// OutputSurface.
|
| -class LayerTreeHostContextTestCreateOutputSurfaceFailsWithFallback
|
| - : public LayerTreeHostContextTestCreateOutputSurfaceFails {
|
| - public:
|
| - LayerTreeHostContextTestCreateOutputSurfaceFailsWithFallback()
|
| - : LayerTreeHostContextTestCreateOutputSurfaceFails(4, true) {}
|
| -};
|
| -
|
| -SINGLE_AND_MULTI_THREAD_TEST_F(
|
| - LayerTreeHostContextTestCreateOutputSurfaceFailsWithFallback);
|
| -
|
| class LayerTreeHostContextTestLostContextAndEvictTextures
|
| : public LayerTreeHostContextTest {
|
| public:
|
| @@ -1176,15 +1134,14 @@ class LayerTreeHostContextTestDontUseLostResources
|
| return draw_result;
|
| }
|
|
|
| - scoped_ptr<FakeOutputSurface> CreateFakeOutputSurface(
|
| - bool fallback) override {
|
| + scoped_ptr<FakeOutputSurface> CreateFakeOutputSurface() override {
|
| // This will get called twice:
|
| // First when we create the initial output surface...
|
| if (layer_tree_host()->source_frame_number() > 0) {
|
| // ... and then again after we forced the context to be lost.
|
| lost_context_ = true;
|
| }
|
| - return LayerTreeHostContextTest::CreateFakeOutputSurface(fallback);
|
| + return LayerTreeHostContextTest::CreateFakeOutputSurface();
|
| }
|
|
|
| void DidCommitAndDrawFrame() override {
|
|
|