| Index: gpu/command_buffer/service/gpu_scheduler_unittest.cc | 
| =================================================================== | 
| --- gpu/command_buffer/service/gpu_scheduler_unittest.cc	(revision 93137) | 
| +++ gpu/command_buffer/service/gpu_scheduler_unittest.cc	(working copy) | 
| @@ -44,7 +44,7 @@ | 
| ON_CALL(*command_buffer_.get(), GetState()) | 
| .WillByDefault(Return(default_state)); | 
|  | 
| -    async_api_.reset(new StrictMock<AsyncAPIMock>); | 
| +    async_api_.reset(new StrictMock<SpecializedDoCommandAsyncAPIMock>); | 
|  | 
| decoder_ = new gles2::MockGLES2Decoder(); | 
|  | 
| @@ -55,9 +55,10 @@ | 
| 0, | 
| async_api_.get()); | 
|  | 
| -    scheduler_.reset(gpu::GpuScheduler::CreateForTests(command_buffer_.get(), | 
| -                                                       decoder_, | 
| -                                                       parser_)); | 
| +    scheduler_.reset(new GpuScheduler(command_buffer_.get(), | 
| +                                      decoder_, | 
| +                                      parser_, | 
| +                                      2)); | 
|  | 
| EXPECT_CALL(*decoder_, Destroy()) | 
| .Times(1) | 
| @@ -96,7 +97,7 @@ | 
| EXPECT_CALL(*command_buffer_, SetParseError(_)) | 
| .Times(0); | 
|  | 
| -  scheduler_->PutChanged(); | 
| +  scheduler_->PutChanged(true); | 
| } | 
|  | 
| TEST_F(GpuSchedulerTest, ProcessesOneCommand) { | 
| @@ -118,7 +119,7 @@ | 
| EXPECT_CALL(*command_buffer_, SetParseError(_)) | 
| .Times(0); | 
|  | 
| -  scheduler_->PutChanged(); | 
| +  scheduler_->PutChanged(true); | 
| } | 
|  | 
| TEST_F(GpuSchedulerTest, ProcessesTwoCommands) { | 
| @@ -143,7 +144,7 @@ | 
| .WillOnce(Return(error::kNoError)); | 
| EXPECT_CALL(*command_buffer_, SetGetOffset(3)); | 
|  | 
| -  scheduler_->PutChanged(); | 
| +  scheduler_->PutChanged(true); | 
| } | 
|  | 
| TEST_F(GpuSchedulerTest, SchedulerSetsTheGLContext) { | 
| @@ -156,9 +157,50 @@ | 
| EXPECT_CALL(*command_buffer_, GetState()) | 
| .WillRepeatedly(Return(state)); | 
|  | 
| -  scheduler_->PutChanged(); | 
| +  scheduler_->PutChanged(true); | 
| } | 
|  | 
| +TEST_F(GpuSchedulerTest, PostsTaskToFinishRemainingCommands) { | 
| +  unsigned int pauseCmd = SpecializedDoCommandAsyncAPIMock::kTestQuantumCommand; | 
| +  CommandHeader* header = reinterpret_cast<CommandHeader*>(&buffer_[0]); | 
| +  header[0].command = 7; | 
| +  header[0].size = 2; | 
| +  buffer_[1] = 123; | 
| +  header[2].command = pauseCmd; | 
| +  header[2].size = 1; | 
| +  header[3].command = 9; | 
| +  header[3].size = 1; | 
| + | 
| +  CommandBuffer::State state; | 
| + | 
| +  state.put_offset = 4; | 
| +  EXPECT_CALL(*command_buffer_, GetState()) | 
| +    .WillRepeatedly(Return(state)); | 
| + | 
| +  EXPECT_CALL(*async_api_, DoCommand(7, 1, &buffer_[0])) | 
| +    .WillOnce(Return(error::kNoError)); | 
| +  EXPECT_CALL(*command_buffer_, SetGetOffset(2)); | 
| + | 
| +  EXPECT_CALL(*async_api_, DoCommand(pauseCmd, 0, &buffer_[2])) | 
| +    .WillOnce(Return(error::kNoError)); | 
| +  EXPECT_CALL(*command_buffer_, SetGetOffset(3)); | 
| + | 
| +  scheduler_->PutChanged(true); | 
| + | 
| +  // ProcessCommands is called a second time when the pending task is run. | 
| + | 
| +  state.put_offset = 4; | 
| +  EXPECT_CALL(*command_buffer_, GetState()) | 
| +    .WillRepeatedly(Return(state)); | 
| + | 
| +  EXPECT_CALL(*async_api_, DoCommand(9, 0, &buffer_[3])) | 
| +    .WillOnce(Return(error::kNoError)); | 
| + | 
| +  EXPECT_CALL(*command_buffer_, SetGetOffset(4)); | 
| + | 
| +  MessageLoop::current()->RunAllPending(); | 
| +} | 
| + | 
| TEST_F(GpuSchedulerTest, SetsErrorCodeOnCommandBuffer) { | 
| CommandHeader* header = reinterpret_cast<CommandHeader*>(&buffer_[0]); | 
| header[0].command = 7; | 
| @@ -180,7 +222,7 @@ | 
| EXPECT_CALL(*command_buffer_, | 
| SetParseError(error::kUnknownCommand)); | 
|  | 
| -  scheduler_->PutChanged(); | 
| +  scheduler_->PutChanged(true); | 
| } | 
|  | 
| TEST_F(GpuSchedulerTest, ProcessCommandsDoesNothingAfterError) { | 
| @@ -190,7 +232,7 @@ | 
| EXPECT_CALL(*command_buffer_, GetState()) | 
| .WillRepeatedly(Return(state)); | 
|  | 
| -  scheduler_->PutChanged(); | 
| +  scheduler_->PutChanged(true); | 
| } | 
|  | 
| TEST_F(GpuSchedulerTest, CanGetAddressOfSharedMemory) { | 
|  |