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 5c944a873520c586a091e20533a75de75f076c1d..87aaeb109e4266fe252ff3839bcef8cd05863cb9 100644 |
--- a/gpu/command_buffer/client/gles2_implementation_unittest.cc |
+++ b/gpu/command_buffer/client/gles2_implementation_unittest.cc |
@@ -93,7 +93,8 @@ class MockTransferBuffer : public TransferBufferInterface { |
CommandBuffer* command_buffer, |
unsigned int size, |
unsigned int result_size, |
- unsigned int alignment) |
+ unsigned int alignment, |
+ bool initialize_fail) |
: command_buffer_(command_buffer), |
size_(size), |
result_size_(result_size), |
@@ -102,7 +103,8 @@ class MockTransferBuffer : public TransferBufferInterface { |
expected_buffer_index_(0), |
last_alloc_(NULL), |
expected_offset_(result_size), |
- actual_offset_(result_size) { |
+ actual_offset_(result_size), |
+ initialize_fail_(initialize_fail) { |
// We have to allocate the buffers here because |
// we need to know their address before GLES2Implementation::Initialize |
// is called. |
@@ -220,6 +222,7 @@ class MockTransferBuffer : public TransferBufferInterface { |
void* last_alloc_; |
uint32 expected_offset_; |
uint32 actual_offset_; |
+ bool initialize_fail_; |
DISALLOW_COPY_AND_ASSIGN(MockTransferBuffer); |
}; |
@@ -234,7 +237,7 @@ bool MockTransferBuffer::Initialize( |
// Just check they match. |
return size_ == starting_buffer_size && |
result_size_ == result_size && |
- alignment_ == alignment; |
+ alignment_ == alignment && !initialize_fail_; |
}; |
int MockTransferBuffer::GetShmId() { |
@@ -394,7 +397,8 @@ class GLES2ImplementationTest : public testing::Test { |
bool Initialize(ShareGroup* share_group, |
bool bind_generates_resource_client, |
bool bind_generates_resource_service, |
- bool lose_context_when_out_of_memory) { |
+ bool lose_context_when_out_of_memory, |
+ bool transfer_buffer_initialize_fail) { |
command_buffer_.reset(new StrictMock<MockClientCommandBuffer>()); |
if (!command_buffer_->Initialize()) |
return false; |
@@ -403,7 +407,8 @@ class GLES2ImplementationTest : public testing::Test { |
new MockTransferBuffer(command_buffer_.get(), |
kTransferBufferSize, |
GLES2Implementation::kStartingOffset, |
- GLES2Implementation::kAlignment)); |
+ GLES2Implementation::kAlignment, |
+ transfer_buffer_initialize_fail)); |
helper_.reset(new GLES2CmdHelper(command_buffer())); |
helper_->Initialize(kCommandBufferSizeBytes); |
@@ -522,11 +527,13 @@ class GLES2ImplementationTest : public testing::Test { |
ContextInitOptions() |
: bind_generates_resource_client(true), |
bind_generates_resource_service(true), |
- lose_context_when_out_of_memory(false) {} |
+ lose_context_when_out_of_memory(false), |
+ transfer_buffer_initialize_fail(false) {} |
bool bind_generates_resource_client; |
bool bind_generates_resource_service; |
bool lose_context_when_out_of_memory; |
+ bool transfer_buffer_initialize_fail; |
}; |
bool Initialize(const ContextInitOptions& init_options) { |
@@ -538,7 +545,8 @@ class GLES2ImplementationTest : public testing::Test { |
share_group_.get(), |
init_options.bind_generates_resource_client, |
init_options.bind_generates_resource_service, |
- init_options.lose_context_when_out_of_memory)) |
+ init_options.lose_context_when_out_of_memory, |
+ init_options.transfer_buffer_initialize_fail)) |
success = false; |
} |
@@ -3302,6 +3310,12 @@ TEST_F(GLES2ImplementationManualInitTest, FailInitOnBGRMismatch2) { |
EXPECT_FALSE(Initialize(init_options)); |
} |
+TEST_F(GLES2ImplementationManualInitTest, FailInitOnTransferBufferFail) { |
+ ContextInitOptions init_options; |
+ init_options.transfer_buffer_initialize_fail = true; |
+ EXPECT_FALSE(Initialize(init_options)); |
+} |
+ |
#include "gpu/command_buffer/client/gles2_implementation_unittest_autogen.h" |
} // namespace gles2 |