| Index: gpu/command_buffer/service/gles2_cmd_decoder_unittest_2_autogen.h
 | 
| diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_2_autogen.h b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_2_autogen.h
 | 
| index 8670cbc31a6523eed8b1fb968f9148a2faa311bc..a5831d6c8df847ed317f8d919908d90ef4353000 100644
 | 
| --- a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_2_autogen.h
 | 
| +++ b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_2_autogen.h
 | 
| @@ -12,6 +12,8 @@
 | 
|  #ifndef GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_DECODER_UNITTEST_2_AUTOGEN_H_
 | 
|  #define GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_DECODER_UNITTEST_2_AUTOGEN_H_
 | 
|  
 | 
| +// TODO(gman): GetUniformLocation
 | 
| +
 | 
|  TEST_P(GLES2DecoderTest2, GetVertexAttribfvValidArgs) {
 | 
|    SpecializedSetup<cmds::GetVertexAttribfv, 0>(true);
 | 
|    typedef cmds::GetVertexAttribfv::Result Result;
 | 
| @@ -540,7 +542,70 @@ TEST_P(GLES2DecoderTest2, ScissorInvalidArgs3_0) {
 | 
|  }
 | 
|  // TODO(gman): ShaderBinary
 | 
|  
 | 
| -// TODO(gman): ShaderSourceBucket
 | 
| +TEST_P(GLES2DecoderTest2, ShaderSourceBucketValidArgs) {
 | 
| +  const uint32 kBucketId = 123;
 | 
| +  const char kSource0[] = "hello";
 | 
| +  const char* kSource[] = {kSource0};
 | 
| +  const char kValidStrEnd = 0;
 | 
| +  SetBucketAsCStrings(kBucketId, 1, kSource, 1, kValidStrEnd);
 | 
| +  cmds::ShaderSourceBucket cmd;
 | 
| +  cmd.Init(client_shader_id_, kBucketId);
 | 
| +  decoder_->set_unsafe_es3_apis_enabled(true);
 | 
| +  EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
 | 
| +}
 | 
| +
 | 
| +TEST_P(GLES2DecoderTest2, ShaderSourceBucketInvalidArgs) {
 | 
| +  const uint32 kBucketId = 123;
 | 
| +  const char kSource0[] = "hello";
 | 
| +  const char* kSource[] = {kSource0};
 | 
| +  const char kValidStrEnd = 0;
 | 
| +  decoder_->set_unsafe_es3_apis_enabled(true);
 | 
| +  cmds::ShaderSourceBucket cmd;
 | 
| +  // Test no bucket.
 | 
| +  cmd.Init(client_shader_id_, kBucketId);
 | 
| +  EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
 | 
| +  // Test invalid client.
 | 
| +  SetBucketAsCStrings(kBucketId, 1, kSource, 1, kValidStrEnd);
 | 
| +  cmd.Init(kInvalidClientId, kBucketId);
 | 
| +  EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
 | 
| +  EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
 | 
| +}
 | 
| +
 | 
| +TEST_P(GLES2DecoderTest2, ShaderSourceBucketInvalidHeader) {
 | 
| +  const uint32 kBucketId = 123;
 | 
| +  const char kSource0[] = "hello";
 | 
| +  const char* kSource[] = {kSource0};
 | 
| +  const char kValidStrEnd = 0;
 | 
| +  const GLsizei kCount = static_cast<GLsizei>(arraysize(kSource));
 | 
| +  const GLsizei kTests[] = {
 | 
| +      kCount, 0, std::numeric_limits<GLsizei>::max(), -1, kCount,
 | 
| +  };
 | 
| +  decoder_->set_unsafe_es3_apis_enabled(true);
 | 
| +  for (size_t ii = 0; ii < arraysize(kTests); ++ii) {
 | 
| +    SetBucketAsCStrings(kBucketId, 1, kSource, kTests[ii], kValidStrEnd);
 | 
| +    cmds::ShaderSourceBucket cmd;
 | 
| +    cmd.Init(client_shader_id_, kBucketId);
 | 
| +    if (kTests[ii] == kCount) {
 | 
| +      EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
 | 
| +    } else {
 | 
| +      EXPECT_EQ(error::kInvalidArguments, ExecuteCmd(cmd));
 | 
| +    }
 | 
| +  }
 | 
| +  EXPECT_EQ(GL_NO_ERROR, GetGLError());
 | 
| +}
 | 
| +
 | 
| +TEST_P(GLES2DecoderTest2, ShaderSourceBucketInvalidStringEnding) {
 | 
| +  const uint32 kBucketId = 123;
 | 
| +  const char kSource0[] = "hello";
 | 
| +  const char* kSource[] = {kSource0};
 | 
| +  const char kInvalidStrEnd = '*';
 | 
| +  SetBucketAsCStrings(kBucketId, 1, kSource, 1, kInvalidStrEnd);
 | 
| +  cmds::ShaderSourceBucket cmd;
 | 
| +  cmd.Init(client_shader_id_, kBucketId);
 | 
| +  decoder_->set_unsafe_es3_apis_enabled(true);
 | 
| +  EXPECT_EQ(error::kInvalidArguments, ExecuteCmd(cmd));
 | 
| +  EXPECT_EQ(GL_NO_ERROR, GetGLError());
 | 
| +}
 | 
|  
 | 
|  TEST_P(GLES2DecoderTest2, StencilFuncValidArgs) {
 | 
|    EXPECT_CALL(*gl_, StencilFunc(GL_NEVER, 2, 3));
 | 
| @@ -1421,6 +1486,4 @@ TEST_P(GLES2DecoderTest2, VertexAttribI4uivImmediateValidArgs) {
 | 
|  }
 | 
|  // TODO(gman): VertexAttribIPointer
 | 
|  
 | 
| -// TODO(gman): VertexAttribPointer
 | 
| -
 | 
|  #endif  // GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_DECODER_UNITTEST_2_AUTOGEN_H_
 | 
| 
 |