| Index: gpu/command_buffer/service/gles2_cmd_decoder_unittest_programs.cc
|
| diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_programs.cc b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_programs.cc
|
| index e663bdf295fb72b77afa55ea9b7542cf12d4eb59..fefaacf312123e4121b5b4ef44e4a009e1bd55be 100644
|
| --- a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_programs.cc
|
| +++ b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_programs.cc
|
| @@ -693,9 +693,10 @@ TEST_P(GLES2DecoderTest, CompileShaderInvalidArgs) {
|
| TEST_P(GLES2DecoderTest, ShaderSourceBucketAndGetShaderSourceValidArgs) {
|
| const uint32 kInBucketId = 123;
|
| const uint32 kOutBucketId = 125;
|
| - const char kSource[] = "hello";
|
| - const uint32 kSourceSize = sizeof(kSource) - 1;
|
| - SetBucketAsCString(kInBucketId, kSource);
|
| + const char kSource0[] = "hello";
|
| + const char* kSource[] = { kSource0 };
|
| + const char kValidStrEnd = 0;
|
| + SetBucketAsCStrings(kInBucketId, 1, kSource, 1, kValidStrEnd);
|
| ShaderSourceBucket cmd;
|
| cmd.Init(client_shader_id_, kInBucketId);
|
| EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
|
| @@ -705,27 +706,27 @@ TEST_P(GLES2DecoderTest, ShaderSourceBucketAndGetShaderSourceValidArgs) {
|
| EXPECT_EQ(error::kNoError, ExecuteCmd(get_cmd));
|
| CommonDecoder::Bucket* bucket = decoder_->GetBucket(kOutBucketId);
|
| ASSERT_TRUE(bucket != NULL);
|
| - EXPECT_EQ(kSourceSize + 1, bucket->size());
|
| - EXPECT_EQ(
|
| - 0, memcmp(bucket->GetData(0, bucket->size()), kSource, bucket->size()));
|
| + EXPECT_EQ(sizeof(kSource0), bucket->size());
|
| + EXPECT_EQ(0, memcmp(bucket->GetData(0, bucket->size()),
|
| + kSource0, bucket->size()));
|
| }
|
|
|
| TEST_P(GLES2DecoderTest, ShaderSourceBucketInvalidArgs) {
|
| const uint32 kBucketId = 123;
|
| - const char kSource[] = "hello";
|
| - const uint32 kSourceSize = sizeof(kSource) - 1;
|
| - memcpy(shared_memory_address_, kSource, kSourceSize);
|
| + const char kSource0[] = "hello";
|
| + const char* kSource[] = { kSource0 };
|
| + const char kValidStrEnd = 0;
|
| ShaderSourceBucket cmd;
|
| // Test no bucket.
|
| - cmd.Init(client_texture_id_, kBucketId);
|
| + cmd.Init(client_shader_id_, kBucketId);
|
| EXPECT_NE(error::kNoError, ExecuteCmd(cmd));
|
| // Test invalid client.
|
| - SetBucketAsCString(kBucketId, kSource);
|
| + SetBucketAsCStrings(kBucketId, 1, kSource, 1, kValidStrEnd);
|
| cmd.Init(kInvalidClientId, kBucketId);
|
| EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
|
| EXPECT_EQ(GL_INVALID_VALUE, GetGLError());
|
| #if GLES2_TEST_SHADER_VS_PROGRAM_IDS
|
| - SetBucketAsCString(kBucketId, kSource);
|
| + SetBucketAsCStrings(kBucketId, 1, kSource);
|
| cmd.Init(
|
| client_program_id_, kBucketId);
|
| EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
|
| @@ -735,14 +736,55 @@ TEST_P(GLES2DecoderTest, ShaderSourceBucketInvalidArgs) {
|
|
|
| TEST_P(GLES2DecoderTest, ShaderSourceStripComments) {
|
| const uint32 kInBucketId = 123;
|
| - const char kSource[] = "hello/*te\ast*/world//a\ab";
|
| - SetBucketAsCString(kInBucketId, kSource);
|
| + const char kSource0[] = "hello/*te\ast*/world//a\ab";
|
| + const char* kSource[] = { kSource0 };
|
| + const char kValidStrEnd = 0;
|
| + SetBucketAsCStrings(kInBucketId, 1, kSource, 1, kValidStrEnd);
|
| ShaderSourceBucket cmd;
|
| cmd.Init(client_shader_id_, kInBucketId);
|
| EXPECT_EQ(error::kNoError, ExecuteCmd(cmd));
|
| EXPECT_EQ(GL_NO_ERROR, GetGLError());
|
| }
|
|
|
| +TEST_P(GLES2DecoderTest, ShaderSourceInvalidHeader) {
|
| + const uint32 kInBucketId = 123;
|
| + const char kSource0[] = "hello";
|
| + const char* kSource[] = { kSource0 };
|
| + const char kValidStrEnd = 0;
|
| + const GLsizei kCount = 1;
|
| + const GLsizei kTests[] = {
|
| + kCount + 1,
|
| + 0,
|
| + std::numeric_limits<GLsizei>::max(),
|
| + -1,
|
| + kCount
|
| + };
|
| + size_t kTestCount = 5;
|
| + for (size_t ii = 0; ii < kTestCount; ++ii) {
|
| + SetBucketAsCStrings(kInBucketId, 1, kSource, kTests[ii], kValidStrEnd);
|
| + ShaderSourceBucket cmd;
|
| + cmd.Init(client_shader_id_, kInBucketId);
|
| + 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(GLES2DecoderTest, ShaderSourceInvalidStringEnding) {
|
| + const uint32 kInBucketId = 123;
|
| + const char kSource0[] = "hello";
|
| + const char* kSource[] = { kSource0 };
|
| + const char kInvalidStrEnd = '*';
|
| + SetBucketAsCStrings(kInBucketId, 1, kSource, 1, kInvalidStrEnd);
|
| + ShaderSourceBucket cmd;
|
| + cmd.Init(client_shader_id_, kInBucketId);
|
| + EXPECT_EQ(error::kInvalidArguments, ExecuteCmd(cmd));
|
| + EXPECT_EQ(GL_NO_ERROR, GetGLError());
|
| +}
|
| +
|
| TEST_P(GLES2DecoderWithShaderTest, Uniform1iValidArgs) {
|
| EXPECT_CALL(*gl_, Uniform1i(kUniform1RealLocation, 2));
|
| Uniform1i cmd;
|
|
|