| Index: cc/layer_tree_host_unittest_context.cc
|
| diff --git a/cc/layer_tree_host_unittest_context.cc b/cc/layer_tree_host_unittest_context.cc
|
| index cf9da18e157841235735795b9c6e071adb73c733..e19b9d9596e1f0b095767f522c5fb44ca804af49 100644
|
| --- a/cc/layer_tree_host_unittest_context.cc
|
| +++ b/cc/layer_tree_host_unittest_context.cc
|
| @@ -20,6 +20,7 @@
|
| #include "cc/test/fake_content_layer_client.h"
|
| #include "cc/test/fake_content_layer_impl.h"
|
| #include "cc/test/fake_output_surface.h"
|
| +#include "cc/test/fake_scrollbar_layer.h"
|
| #include "cc/test/fake_scrollbar_theme_painter.h"
|
| #include "cc/test/fake_video_frame_provider.h"
|
| #include "cc/test/fake_web_graphics_context_3d.h"
|
| @@ -30,6 +31,7 @@
|
| #include "cc/texture_layer.h"
|
| #include "cc/video_layer.h"
|
| #include "cc/video_layer_impl.h"
|
| +#include "gpu/GLES2/gl2extchromium.h"
|
| #include "media/base/media.h"
|
|
|
| using media::VideoFrame;
|
| @@ -53,7 +55,8 @@ class LayerTreeHostContextTest : public ThreadedTest {
|
| }
|
|
|
| void LoseContext() {
|
| - context3d_->loseContextCHROMIUM();
|
| + context3d_->loseContextCHROMIUM(GL_GUILTY_CONTEXT_RESET_ARB,
|
| + GL_INNOCENT_CONTEXT_RESET_ARB);
|
| context3d_ = NULL;
|
| }
|
|
|
| @@ -803,7 +806,8 @@ class LayerTreeHostContextTestFailsImmediately :
|
| virtual scoped_ptr<FakeWebGraphicsContext3D> CreateContext3d() OVERRIDE {
|
| scoped_ptr<FakeWebGraphicsContext3D> context =
|
| LayerTreeHostContextTest::CreateContext3d();
|
| - context->loseContextCHROMIUM();
|
| + context->loseContextCHROMIUM(GL_GUILTY_CONTEXT_RESET_ARB,
|
| + GL_INNOCENT_CONTEXT_RESET_ARB);
|
| return context.Pass();
|
| }
|
|
|
| @@ -861,5 +865,53 @@ class LayerTreeHostContextTestImplSidePainting :
|
|
|
| MULTI_THREAD_TEST_F(LayerTreeHostContextTestImplSidePainting)
|
|
|
| +class ScrollbarLayerLostContext : public LayerTreeHostContextTest {
|
| + public:
|
| + ScrollbarLayerLostContext() : commits_(0) {}
|
| +
|
| + virtual void beginTest() OVERRIDE {
|
| + scoped_refptr<Layer> scroll_layer = Layer::create();
|
| + scrollbar_layer_ = FakeScrollbarLayer::Create(
|
| + false, true, scroll_layer->id());
|
| + scrollbar_layer_->setBounds(gfx::Size(10, 100));
|
| + m_layerTreeHost->rootLayer()->addChild(scrollbar_layer_);
|
| + m_layerTreeHost->rootLayer()->addChild(scroll_layer);
|
| + postSetNeedsCommitToMainThread();
|
| + }
|
| +
|
| + virtual void afterTest() OVERRIDE {
|
| + }
|
| +
|
| + virtual void commitCompleteOnThread(LayerTreeHostImpl* impl) OVERRIDE {
|
| + ++commits_;
|
| + size_t upload_count = scrollbar_layer_->last_update_full_upload_size() +
|
| + scrollbar_layer_->last_update_partial_upload_size();
|
| + switch(commits_) {
|
| + case 1:
|
| + // First (regular) update, we should upload 2 resources (thumb, and
|
| + // backtrack).
|
| + EXPECT_EQ(1, scrollbar_layer_->update_count());
|
| + EXPECT_EQ(2, upload_count);
|
| + 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, scrollbar_layer_->update_count());
|
| + EXPECT_EQ(2, upload_count);
|
| + endTest();
|
| + break;
|
| + default:
|
| + NOTREACHED();
|
| + }
|
| + }
|
| +
|
| + private:
|
| + int commits_;
|
| + scoped_refptr<FakeScrollbarLayer> scrollbar_layer_;
|
| +};
|
| +
|
| +SINGLE_AND_MULTI_THREAD_TEST_F(ScrollbarLayerLostContext)
|
| +
|
| } // namespace
|
| } // namespace cc
|
|
|