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

Unified Diff: cc/layer_tree_host_unittest.cc

Issue 11662003: cc: Put context-loss tests in layer_tree_host_unittest_context.cc (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: 80cols Created 7 years, 12 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
« no previous file with comments | « cc/layer_tree_host_impl_unittest.cc ('k') | cc/layer_tree_host_unittest_context.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/layer_tree_host_unittest.cc
diff --git a/cc/layer_tree_host_unittest.cc b/cc/layer_tree_host_unittest.cc
index 7e43aed6296592fe1f20e024c30f328f3f8d601e..dd7bb1d973b80058eaef6a6a0dcb2e6d6e012e27 100644
--- a/cc/layer_tree_host_unittest.cc
+++ b/cc/layer_tree_host_unittest.cc
@@ -1009,7 +1009,10 @@ public:
m_layer = FakeContentLayer::Create(&m_client);
m_layer->setBounds(gfx::Size(10, 20));
- m_scrollbar = FakeScrollbarLayer::Create(true, m_layer->id());
+ bool paint_scrollbar = true;
+ bool has_thumb = false;
+ m_scrollbar = FakeScrollbarLayer::Create(
+ paint_scrollbar, has_thumb, m_layer->id());
m_scrollbar->setPosition(gfx::Point(0, 10));
m_scrollbar->setBounds(gfx::Size(10, 10));
@@ -1130,13 +1133,16 @@ public:
m_child->setPosition(gfx::Point(0, 10));
m_child->setBounds(gfx::Size(3, 10));
- m_scrollbarWithPaints =
- FakeScrollbarLayer::Create(true, m_parent->id());
+ bool paint_scrollbar = true;
+ bool has_thumb = false;
+ m_scrollbarWithPaints = FakeScrollbarLayer::Create(
+ paint_scrollbar, has_thumb, m_parent->id());
m_scrollbarWithPaints->setPosition(gfx::Point(3, 10));
m_scrollbarWithPaints->setBounds(gfx::Size(3, 10));
- m_scrollbarWithoutPaints =
- FakeScrollbarLayer::Create(false, m_parent->id());
+ paint_scrollbar = false;
+ m_scrollbarWithoutPaints = FakeScrollbarLayer::Create(
+ paint_scrollbar, has_thumb, m_parent->id());
m_scrollbarWithoutPaints->setPosition(gfx::Point(6, 10));
m_scrollbarWithoutPaints->setBounds(gfx::Size(3, 10));
@@ -1306,74 +1312,6 @@ TEST_F(LayerTreeHostTestAtomicCommitWithPartialUpdate, runMultiThread)
runTest(true);
}
-// A loseOutputSurface(1) should lead to a didRecreateOutputSurface(true)
-class LayerTreeHostTestSetSingleLostContext : public LayerTreeHostTest {
-public:
- LayerTreeHostTestSetSingleLostContext()
- {
- }
-
- virtual void beginTest() OVERRIDE
- {
- postSetNeedsCommitToMainThread();
- }
-
- virtual void didCommitAndDrawFrame() OVERRIDE
- {
- m_layerTreeHost->loseOutputSurface(1);
- }
-
- virtual void didRecreateOutputSurface(bool succeeded) OVERRIDE
- {
- EXPECT_TRUE(succeeded);
- endTest();
- }
-
- virtual void afterTest() OVERRIDE
- {
- }
-};
-
-TEST_F(LayerTreeHostTestSetSingleLostContext, runMultiThread)
-{
- runTest(true);
-}
-
-// A loseOutputSurface(10) should lead to a didRecreateOutputSurface(false), and
-// a finishAllRendering() should not hang.
-class LayerTreeHostTestSetRepeatedLostContext : public LayerTreeHostTest {
-public:
- LayerTreeHostTestSetRepeatedLostContext()
- {
- }
-
- virtual void beginTest() OVERRIDE
- {
- postSetNeedsCommitToMainThread();
- }
-
- virtual void didCommitAndDrawFrame() OVERRIDE
- {
- m_layerTreeHost->loseOutputSurface(10);
- }
-
- virtual void didRecreateOutputSurface(bool succeeded) OVERRIDE
- {
- EXPECT_FALSE(succeeded);
- m_layerTreeHost->finishAllRendering();
- endTest();
- }
-
- virtual void afterTest() OVERRIDE
- {
- }
-};
-
-TEST_F(LayerTreeHostTestSetRepeatedLostContext, runMultiThread)
-{
- runTest(true);
-}
-
class LayerTreeHostTestFinishAllRendering : public LayerTreeHostTest {
public:
LayerTreeHostTestFinishAllRendering()
@@ -1749,176 +1687,6 @@ TEST_F(LayerTreeHostTestEvictTextures, runMultiThread)
runTest(true);
}
-class LayerTreeHostTestLostContextAfterEvictTextures : public LayerTreeHostTest {
-public:
- LayerTreeHostTestLostContextAfterEvictTextures()
- : m_layer(EvictionTestLayer::create())
- , m_implForEvictTextures(0)
- , m_numCommits(0)
- {
- }
-
- virtual void beginTest() OVERRIDE
- {
- m_layerTreeHost->setRootLayer(m_layer);
- m_layerTreeHost->setViewportSize(gfx::Size(10, 20), gfx::Size(10, 20));
-
- gfx::Transform identityMatrix;
- setLayerPropertiesForTesting(m_layer.get(), 0, identityMatrix, gfx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(10, 20), true);
-
- postSetNeedsCommitToMainThread();
- }
-
- void postEvictTextures()
- {
- if (implThread()) {
- implThread()->postTask(base::Bind(&LayerTreeHostTestLostContextAfterEvictTextures::evictTexturesOnImplThread,
- base::Unretained(this)));
- } else {
- DebugScopedSetImplThread impl(proxy());
- evictTexturesOnImplThread();
- }
- }
-
- void evictTexturesOnImplThread()
- {
- DCHECK(m_implForEvictTextures);
- m_implForEvictTextures->enforceManagedMemoryPolicy(ManagedMemoryPolicy(0));
- }
-
- // Commit 1: Just commit and draw normally, then at the end, set ourselves
- // invisible (to prevent a commit that would recreate textures after
- // eviction, before the context recovery), and post a task that will evict
- // textures, then cause the context to be lost, and then set ourselves
- // visible again (to allow commits, since that's what causes context
- // recovery in single thread).
- virtual void didCommitAndDrawFrame() OVERRIDE
- {
- ++m_numCommits;
- switch (m_numCommits) {
- case 1:
- EXPECT_TRUE(m_layer->haveBackingTexture());
- m_layerTreeHost->setVisible(false);
- postEvictTextures();
- m_layerTreeHost->loseOutputSurface(1);
- m_layerTreeHost->setVisible(true);
- break;
- default:
- break;
- }
- }
-
- virtual void commitCompleteOnThread(LayerTreeHostImpl* impl) OVERRIDE
- {
- m_implForEvictTextures = impl;
- }
-
- virtual void didRecreateOutputSurface(bool succeeded) OVERRIDE
- {
- EXPECT_TRUE(succeeded);
- endTest();
- }
-
- virtual void afterTest() OVERRIDE
- {
- }
-
-private:
- FakeContentLayerClient m_client;
- scoped_refptr<EvictionTestLayer> m_layer;
- LayerTreeHostImpl* m_implForEvictTextures;
- int m_numCommits;
-};
-
-SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostTestLostContextAfterEvictTextures)
-
-class FakeWebGraphicsContext3DWithEndQueryCausingLostContext : public FakeWebGraphicsContext3D {
-public:
- static scoped_ptr<FakeWebGraphicsContext3DWithEndQueryCausingLostContext> create(Attributes attrs)
- {
- return make_scoped_ptr(new FakeWebGraphicsContext3DWithEndQueryCausingLostContext(attrs));
- }
-
- virtual void setContextLostCallback(WebGraphicsContextLostCallback* callback) { m_contextLostCallback = callback; }
- virtual bool isContextLost() { return m_isContextLost; }
-
- virtual void beginQueryEXT(WebKit::WGC3Denum, WebKit::WebGLId) { }
- virtual void endQueryEXT(WebKit::WGC3Denum)
- {
- // Lose context.
- if (!m_isContextLost) {
- m_contextLostCallback->onContextLost();
- m_isContextLost = true;
- }
- }
- virtual void getQueryObjectuivEXT(WebKit::WebGLId, WebKit::WGC3Denum pname, WebKit::WGC3Duint* params)
- {
- // Context is lost. We need to behave as if result is available.
- if (pname == GL_QUERY_RESULT_AVAILABLE_EXT)
- *params = 1;
- }
-
-private:
- explicit FakeWebGraphicsContext3DWithEndQueryCausingLostContext(Attributes attrs)
- : FakeWebGraphicsContext3D(attrs)
- , m_contextLostCallback(0)
- , m_isContextLost(false) { }
-
- WebGraphicsContextLostCallback* m_contextLostCallback;
- bool m_isContextLost;
-};
-
-class LayerTreeHostTestLostContextWhileUpdatingResources : public LayerTreeHostTest {
-public:
- LayerTreeHostTestLostContextWhileUpdatingResources()
- : m_parent(ContentLayerWithUpdateTracking::create(&m_client))
- , m_numChildren(50)
- {
- for (int i = 0; i < m_numChildren; i++)
- m_children.push_back(ContentLayerWithUpdateTracking::create(&m_client));
- }
-
- virtual void beginTest()
- {
- m_layerTreeHost->setRootLayer(m_parent);
- m_layerTreeHost->setViewportSize(gfx::Size(m_numChildren, 1), gfx::Size(m_numChildren, 1));
-
- gfx::Transform identityMatrix;
- setLayerPropertiesForTesting(m_parent.get(), 0, identityMatrix, gfx::PointF(0, 0), gfx::PointF(0, 0), gfx::Size(m_numChildren, 1), true);
- for (int i = 0; i < m_numChildren; i++)
- setLayerPropertiesForTesting(m_children[i].get(), m_parent.get(), identityMatrix, gfx::PointF(0, 0), gfx::PointF(i, 0), gfx::Size(1, 1), false);
-
- postSetNeedsCommitToMainThread();
- }
-
- virtual void commitCompleteOnThread(LayerTreeHostImpl* impl)
- {
- endTest();
- }
-
- virtual void layout()
- {
- m_parent->setNeedsDisplay();
- for (int i = 0; i < m_numChildren; i++)
- m_children[i]->setNeedsDisplay();
- }
-
- virtual void afterTest()
- {
- }
-
-private:
- FakeContentLayerClient m_client;
- scoped_refptr<ContentLayerWithUpdateTracking> m_parent;
- int m_numChildren;
- std::vector<scoped_refptr<ContentLayerWithUpdateTracking> > m_children;
-};
-
-TEST_F(LayerTreeHostTestLostContextWhileUpdatingResources, runMultiThread)
-{
- runTest(true);
-}
-
class LayerTreeHostTestContinuousCommit : public LayerTreeHostTest {
public:
LayerTreeHostTestContinuousCommit()
« no previous file with comments | « cc/layer_tree_host_impl_unittest.cc ('k') | cc/layer_tree_host_unittest_context.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698