Index: gpu/command_buffer/client/gles2_implementation_unittest.cc |
diff --git a/gpu/command_buffer/client/gles2_implementation_unittest.cc b/gpu/command_buffer/client/gles2_implementation_unittest.cc |
index 62f108b06d24eb5461b3cd1544140f65b03432d3..ef2efeba0f2d77c10897288996f3d8c2f7315c56 100644 |
--- a/gpu/command_buffer/client/gles2_implementation_unittest.cc |
+++ b/gpu/command_buffer/client/gles2_implementation_unittest.cc |
@@ -3884,6 +3884,36 @@ TEST_F(GLES2ImplementationTest, WaitSyncTokenCHROMIUM) { |
EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected))); |
} |
+TEST_F(GLES2ImplementationTest, WaitSyncTokenCHROMIUMErrors) { |
+ ExpectedMemoryInfo result = |
+ GetExpectedResultMemory(sizeof(cmds::GetError::Result)); |
+ EXPECT_CALL(*command_buffer(), OnFlush()) |
+ .WillRepeatedly(SetMemory(result.ptr, GLuint(GL_NO_ERROR))) |
+ .RetiresOnSaturation(); |
+ |
+ // Empty sync tokens should be produce no error and be a nop. |
+ ClearCommands(); |
+ gl_->WaitSyncTokenCHROMIUM(nullptr); |
+ EXPECT_TRUE(NoCommandsWritten()); |
+ EXPECT_EQ(static_cast<GLenum>(GL_NO_ERROR), gl_->GetError()); |
+ |
+ // Invalid sync tokens should produce no error and be a nop. |
+ ClearCommands(); |
+ gpu::SyncToken invalid_sync_token(CommandBufferNamespace::INVALID, 0, 0); |
+ gl_->WaitSyncTokenCHROMIUM(invalid_sync_token.GetConstData()); |
+ EXPECT_TRUE(NoCommandsWritten()); |
+ EXPECT_EQ(static_cast<GLenum>(GL_NO_ERROR), gl_->GetError()); |
+ |
+ // Unverified sync token should produce INVALID_OPERATION. |
+ ClearCommands(); |
+ gpu::SyncToken unverified_sync_token(CommandBufferNamespace::GPU_IO, 0, 0); |
+ EXPECT_CALL(*gpu_control_, CanWaitUnverifiedSyncToken(_)) |
+ .WillOnce(testing::Return(false)); |
+ gl_->WaitSyncTokenCHROMIUM(unverified_sync_token.GetConstData()); |
+ EXPECT_TRUE(NoCommandsWritten()); |
+ EXPECT_EQ(static_cast<GLenum>(GL_INVALID_VALUE), gl_->GetError()); |
+} |
+ |
TEST_F(GLES2ImplementationTest, IsEnabled) { |
// If we use a valid enum, its state is cached on client side, so no command |
// is actually generated, and this test will fail. |