Index: cc/resources/tile_task_worker_pool_unittest.cc |
diff --git a/cc/resources/tile_task_worker_pool_unittest.cc b/cc/resources/tile_task_worker_pool_unittest.cc |
index d7cb155ef956c0cd06fd780e57df27916d05f77a..72f9d2097a50ff324b06095d3ae9f15ea682dac9 100644 |
--- a/cc/resources/tile_task_worker_pool_unittest.cc |
+++ b/cc/resources/tile_task_worker_pool_unittest.cc |
@@ -28,6 +28,7 @@ |
#include "cc/test/test_gpu_memory_buffer_manager.h" |
#include "cc/test/test_shared_bitmap_manager.h" |
#include "cc/test/test_web_graphics_context_3d.h" |
+#include "gpu/GLES2/gl2extchromium.h" |
#include "testing/gtest/include/gtest/gtest.h" |
namespace cc { |
@@ -275,6 +276,14 @@ class TileTaskWorkerPoolTest |
return completed_tasks_; |
} |
+ void LoseContext(ContextProvider* context_provider) { |
+ if (!context_provider) |
+ return; |
+ context_provider->ContextGL()->LoseContextCHROMIUM( |
+ GL_GUILTY_CONTEXT_RESET_ARB, GL_INNOCENT_CONTEXT_RESET_ARB); |
+ context_provider->ContextGL()->Flush(); |
+ } |
+ |
private: |
void Create3dOutputSurfaceAndResourceProvider() { |
output_surface_ = FakeOutputSurface::Create3d( |
@@ -404,6 +413,21 @@ TEST_P(TileTaskWorkerPoolTest, LargeResources) { |
RunMessageLoopUntilAllTasksHaveCompleted(); |
} |
+TEST_P(TileTaskWorkerPoolTest, LostContext) { |
+ LoseContext(output_surface_->context_provider()); |
+ LoseContext(output_surface_->worker_context_provider()); |
+ |
+ AppendTask(0u); |
+ AppendTask(1u); |
+ ScheduleTasks(); |
+ |
+ RunMessageLoopUntilAllTasksHaveCompleted(); |
+ |
+ ASSERT_EQ(2u, completed_tasks().size()); |
+ EXPECT_FALSE(completed_tasks()[0].canceled); |
+ EXPECT_FALSE(completed_tasks()[1].canceled); |
+} |
+ |
INSTANTIATE_TEST_CASE_P( |
TileTaskWorkerPoolTests, |
TileTaskWorkerPoolTest, |