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

Side by Side Diff: cc/trees/layer_tree_host_unittest_context.cc

Issue 85693007: cc: Defer first OutputSurface creation until client is ready (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "cc/trees/layer_tree_host.h" 5 #include "cc/trees/layer_tree_host.h"
6 6
7 #include "base/basictypes.h" 7 #include "base/basictypes.h"
8 #include "cc/layers/content_layer.h" 8 #include "cc/layers/content_layer.h"
9 #include "cc/layers/delegated_frame_provider.h" 9 #include "cc/layers/delegated_frame_provider.h"
10 #include "cc/layers/delegated_frame_resource_collection.h" 10 #include "cc/layers/delegated_frame_resource_collection.h"
(...skipping 1268 matching lines...) Expand 10 before | Expand all | Expand 10 after
1279 if (host_impl->active_tree()->source_frame_number() == 2) { 1279 if (host_impl->active_tree()->source_frame_number() == 2) {
1280 // Lose the context during draw on the second commit. This will cause 1280 // Lose the context during draw on the second commit. This will cause
1281 // a third commit to recover. 1281 // a third commit to recover.
1282 context3d_->set_times_bind_texture_succeeds(0); 1282 context3d_->set_times_bind_texture_succeeds(0);
1283 } 1283 }
1284 return true; 1284 return true;
1285 } 1285 }
1286 1286
1287 virtual scoped_ptr<OutputSurface> CreateOutputSurface( 1287 virtual scoped_ptr<OutputSurface> CreateOutputSurface(
1288 bool fallback) OVERRIDE { 1288 bool fallback) OVERRIDE {
1289 if (layer_tree_host()) { 1289 if (layer_tree_host()->source_frame_number() > 0) {
danakj 2013/11/26 16:35:15 Can you explain this one?
no sievers 2013/11/26 19:28:37 What this function was doing is return an output s
no sievers 2013/11/26 19:30:23 Actually, it's not failing the output surface crea
danakj 2013/11/26 19:44:58 Ah, right ok. Comment would be nice thanks :)
1290 lost_context_ = true; 1290 lost_context_ = true;
1291 EXPECT_EQ(layer_tree_host()->source_frame_number(), 3); 1291 EXPECT_EQ(layer_tree_host()->source_frame_number(), 3);
1292 } 1292 }
1293 return LayerTreeHostContextTest::CreateOutputSurface(fallback); 1293 return LayerTreeHostContextTest::CreateOutputSurface(fallback);
1294 } 1294 }
1295 1295
1296 virtual void DidCommitAndDrawFrame() OVERRIDE { 1296 virtual void DidCommitAndDrawFrame() OVERRIDE {
1297 ASSERT_TRUE(layer_tree_host()->hud_layer()); 1297 ASSERT_TRUE(layer_tree_host()->hud_layer());
1298 // End the test once we know the 3nd frame drew. 1298 // End the test once we know the 3nd frame drew.
1299 if (layer_tree_host()->source_frame_number() < 4) { 1299 if (layer_tree_host()->source_frame_number() < 4) {
(...skipping 455 matching lines...) Expand 10 before | Expand all | Expand 10 after
1755 EndTest(); 1755 EndTest();
1756 } 1756 }
1757 1757
1758 private: 1758 private:
1759 int failure_count_; 1759 int failure_count_;
1760 }; 1760 };
1761 1761
1762 SINGLE_AND_MULTI_THREAD_TEST_F( 1762 SINGLE_AND_MULTI_THREAD_TEST_F(
1763 LayerTreeHostContextTestFailsToCreateSurface); 1763 LayerTreeHostContextTestFailsToCreateSurface);
1764 1764
1765 // Not reusing LayerTreeTest because it expects creating LTH to always succeed.
1766 class LayerTreeHostTestCannotCreateIfCannotCreateOutputSurface
1767 : public testing::Test,
1768 public FakeLayerTreeHostClient {
1769 public:
1770 LayerTreeHostTestCannotCreateIfCannotCreateOutputSurface()
1771 : FakeLayerTreeHostClient(FakeLayerTreeHostClient::DIRECT_3D) {}
1772
1773 // FakeLayerTreeHostClient implementation.
1774 virtual scoped_ptr<OutputSurface> CreateOutputSurface(bool fallback)
1775 OVERRIDE {
1776 return scoped_ptr<OutputSurface>();
1777 }
1778
1779 void RunTest(bool threaded,
1780 bool delegating_renderer,
1781 bool impl_side_painting) {
1782 LayerTreeSettings settings;
1783 settings.impl_side_painting = impl_side_painting;
1784 if (threaded) {
1785 scoped_ptr<base::Thread> impl_thread(new base::Thread("LayerTreeTest"));
1786 ASSERT_TRUE(impl_thread->Start());
1787 ASSERT_TRUE(impl_thread->message_loop_proxy().get());
1788 scoped_ptr<LayerTreeHost> layer_tree_host = LayerTreeHost::CreateThreaded(
1789 this, NULL, settings, impl_thread->message_loop_proxy());
1790 EXPECT_FALSE(layer_tree_host);
1791 } else {
1792 scoped_ptr<LayerTreeHost> layer_tree_host =
1793 LayerTreeHost::CreateSingleThreaded(this, this, NULL, settings);
1794 EXPECT_FALSE(layer_tree_host);
1795 }
1796 }
1797 };
1798
1799 SINGLE_AND_MULTI_THREAD_TEST_F(
1800 LayerTreeHostTestCannotCreateIfCannotCreateOutputSurface);
1801
1802 class UIResourceLostTest : public LayerTreeHostContextTest { 1765 class UIResourceLostTest : public LayerTreeHostContextTest {
1803 public: 1766 public:
1804 UIResourceLostTest() : time_step_(0) {} 1767 UIResourceLostTest() : time_step_(0) {}
1805 virtual void InitializeSettings(LayerTreeSettings* settings) OVERRIDE { 1768 virtual void InitializeSettings(LayerTreeSettings* settings) OVERRIDE {
1806 settings->texture_id_allocation_chunk_size = 1; 1769 settings->texture_id_allocation_chunk_size = 1;
1807 } 1770 }
1808 virtual void BeginTest() OVERRIDE { PostSetNeedsCommitToMainThread(); } 1771 virtual void BeginTest() OVERRIDE { PostSetNeedsCommitToMainThread(); }
1809 virtual void AfterTest() OVERRIDE {} 1772 virtual void AfterTest() OVERRIDE {}
1810 1773
1811 // This is called on the main thread after each commit and 1774 // This is called on the main thread after each commit and
(...skipping 478 matching lines...) Expand 10 before | Expand all | Expand 10 after
2290 protected: 2253 protected:
2291 FakeContentLayerClient client_; 2254 FakeContentLayerClient client_;
2292 scoped_refptr<FakeContentLayer> layer_; 2255 scoped_refptr<FakeContentLayer> layer_;
2293 int num_commits_; 2256 int num_commits_;
2294 }; 2257 };
2295 2258
2296 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostContextTestSurfaceCreateCallback); 2259 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostContextTestSurfaceCreateCallback);
2297 2260
2298 } // namespace 2261 } // namespace
2299 } // namespace cc 2262 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698