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

Unified Diff: cc/scrollbar_layer_unittest.cc

Issue 11941010: Fix scrollbars missing after lost context (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 11 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/scrollbar_layer.cc ('k') | cc/test/fake_scrollbar_layer.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/scrollbar_layer_unittest.cc
diff --git a/cc/scrollbar_layer_unittest.cc b/cc/scrollbar_layer_unittest.cc
index e6a7bff0b3067757693a358b602684fbf7b6c92b..b9be950f15b6473ab3b951c67d6c0285e5bdc955 100644
--- a/cc/scrollbar_layer_unittest.cc
+++ b/cc/scrollbar_layer_unittest.cc
@@ -9,12 +9,14 @@
#include "cc/single_thread_proxy.h"
#include "cc/test/fake_impl_proxy.h"
#include "cc/test/fake_layer_tree_host_impl.h"
+#include "cc/test/fake_scrollbar_layer.h"
#include "cc/test/fake_scrollbar_theme_painter.h"
#include "cc/test/fake_web_graphics_context_3d.h"
#include "cc/test/fake_web_scrollbar.h"
#include "cc/test/fake_web_scrollbar_theme_geometry.h"
#include "cc/test/layer_tree_test_common.h"
#include "cc/tree_synchronizer.h"
+#include "gpu/GLES2/gl2extchromium.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "third_party/WebKit/Source/Platform/chromium/public/WebScrollbar.h"
#include "third_party/WebKit/Source/Platform/chromium/public/WebScrollbarThemeGeometry.h"
@@ -194,5 +196,71 @@ TEST_F(ScrollbarLayerTestMaxTextureSize, runTest) {
runTest(true);
}
+class ScrollbarLayerLostContext : public ThreadedTest {
danakj 2013/01/18 05:07:49 Can you stick this in layer_tree_host_unittest_con
piman 2013/01/18 23:10:08 Done.
+public:
+ ScrollbarLayerLostContext() : m_commits(0), m_context(NULL) {}
+
+ virtual void beginTest() OVERRIDE
+ {
+ m_layerTreeHost->initializeRendererIfNeeded();
danakj 2013/01/18 05:07:49 this should be done by base classes already, shoul
piman 2013/01/18 23:10:08 Done.
+
+ m_scrollLayer = Layer::create();
+ m_scrollbarLayer = FakeScrollbarLayer::Create(false, true, m_scrollLayer->id());
+ m_scrollbarLayer->setBounds(gfx::Size(10, 100));
+ m_layerTreeHost->rootLayer()->addChild(m_scrollbarLayer);
+ m_layerTreeHost->rootLayer()->addChild(m_scrollLayer);
+ postSetNeedsCommitToMainThread();
+ }
+
+ virtual void afterTest() OVERRIDE
+ {
+ }
+
+ virtual void commitCompleteOnThread(LayerTreeHostImpl* impl) OVERRIDE
+ {
+ ++m_commits;
+ switch(m_commits) {
+ case 1:
+ // First (regular) update, we should upload 2 resources (thumb, and
+ // backtrack).
+ EXPECT_EQ(1, m_scrollbarLayer->update_count());
+ EXPECT_EQ(0, m_scrollbarLayer->last_update_full_upload_size());
+ EXPECT_EQ(2, m_scrollbarLayer->last_update_partial_upload_size());
+ loseContext();
+ break;
+ case 2:
+ // Second update, after the lost context, we should still upload 2
+ // resources even if the contents haven't changed.
+ EXPECT_EQ(2, m_scrollbarLayer->update_count());
+ EXPECT_EQ(0, m_scrollbarLayer->last_update_full_upload_size());
+ EXPECT_EQ(2, m_scrollbarLayer->last_update_partial_upload_size());
+ endTest();
+ break;
+ }
+ }
+
+ virtual scoped_ptr<OutputSurface> createOutputSurface() OVERRIDE {
+ DCHECK(!m_context);
+ scoped_ptr<OutputSurface> outputSurface = TestHooks::createOutputSurface();
+ m_context = outputSurface->Context3D();
+ return outputSurface.Pass();
+ }
+
+private:
+ void loseContext() {
+ DCHECK(m_context);
+ m_context->loseContextCHROMIUM(GL_GUILTY_CONTEXT_RESET_ARB,
+ GL_INNOCENT_CONTEXT_RESET_ARB);
+ m_context = NULL;
+ }
+
+ int m_commits;
+ WebKit::WebGraphicsContext3D* m_context;
+ scoped_refptr<FakeScrollbarLayer> m_scrollbarLayer;
+ scoped_refptr<Layer> m_scrollLayer;
+};
+
+SINGLE_AND_MULTI_THREAD_TEST_F(ScrollbarLayerLostContext)
+
} // namespace
} // namespace cc
« no previous file with comments | « cc/scrollbar_layer.cc ('k') | cc/test/fake_scrollbar_layer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698