| // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 |  | 
 | #include "gpu/command_buffer/service/context_group.h" | 
 |  | 
 | #include "base/memory/scoped_ptr.h" | 
 | #include "gpu/command_buffer/service/gles2_cmd_decoder_mock.h" | 
 | #include "gpu/command_buffer/service/gpu_service_test.h" | 
 | #include "gpu/command_buffer/service/mailbox_manager.h" | 
 | #include "gpu/command_buffer/service/test_helper.h" | 
 | #include "gpu/command_buffer/service/texture_manager.h" | 
 | #include "testing/gtest/include/gtest/gtest.h" | 
 | #include "ui/gl/gl_mock.h" | 
 |  | 
 | using ::testing::_; | 
 | using ::testing::DoAll; | 
 | using ::testing::HasSubstr; | 
 | using ::testing::InSequence; | 
 | using ::testing::MatcherCast; | 
 | using ::testing::Not; | 
 | using ::testing::Pointee; | 
 | using ::testing::Return; | 
 | using ::testing::SetArrayArgument; | 
 | using ::testing::SetArgumentPointee; | 
 | using ::testing::StrEq; | 
 |  | 
 | namespace gpu { | 
 | namespace gles2 { | 
 |  | 
 | class ContextGroupTest : public GpuServiceTest { | 
 |  public: | 
 |   static const bool kBindGeneratesResource = false; | 
 |  | 
 |   ContextGroupTest() {} | 
 |  | 
 |  protected: | 
 |   void SetUp() override { | 
 |     GpuServiceTest::SetUp(); | 
 |     decoder_.reset(new MockGLES2Decoder()); | 
 |     group_ = scoped_refptr<ContextGroup>( | 
 |         new ContextGroup(NULL, NULL, NULL, NULL, kBindGeneratesResource)); | 
 |   } | 
 |  | 
 |   scoped_ptr<MockGLES2Decoder> decoder_; | 
 |   scoped_refptr<ContextGroup> group_; | 
 | }; | 
 |  | 
 | TEST_F(ContextGroupTest, Basic) { | 
 |   // Test it starts off uninitialized. | 
 |   EXPECT_EQ(0u, group_->max_vertex_attribs()); | 
 |   EXPECT_EQ(0u, group_->max_texture_units()); | 
 |   EXPECT_EQ(0u, group_->max_texture_image_units()); | 
 |   EXPECT_EQ(0u, group_->max_vertex_texture_image_units()); | 
 |   EXPECT_EQ(0u, group_->max_fragment_uniform_vectors()); | 
 |   EXPECT_EQ(0u, group_->max_varying_vectors()); | 
 |   EXPECT_EQ(0u, group_->max_vertex_uniform_vectors()); | 
 |   EXPECT_TRUE(group_->buffer_manager() == NULL); | 
 |   EXPECT_TRUE(group_->framebuffer_manager() == NULL); | 
 |   EXPECT_TRUE(group_->renderbuffer_manager() == NULL); | 
 |   EXPECT_TRUE(group_->texture_manager() == NULL); | 
 |   EXPECT_TRUE(group_->program_manager() == NULL); | 
 |   EXPECT_TRUE(group_->shader_manager() == NULL); | 
 | } | 
 |  | 
 | TEST_F(ContextGroupTest, InitializeNoExtensions) { | 
 |   TestHelper::SetupContextGroupInitExpectations( | 
 |       gl_.get(), DisallowedFeatures(), "", "", kBindGeneratesResource); | 
 |   group_->Initialize(decoder_.get(), DisallowedFeatures()); | 
 |   EXPECT_EQ(static_cast<uint32>(TestHelper::kNumVertexAttribs), | 
 |             group_->max_vertex_attribs()); | 
 |   EXPECT_EQ(static_cast<uint32>(TestHelper::kNumTextureUnits), | 
 |             group_->max_texture_units()); | 
 |   EXPECT_EQ(static_cast<uint32>(TestHelper::kMaxTextureImageUnits), | 
 |             group_->max_texture_image_units()); | 
 |   EXPECT_EQ(static_cast<uint32>(TestHelper::kMaxVertexTextureImageUnits), | 
 |              group_->max_vertex_texture_image_units()); | 
 |   EXPECT_EQ(static_cast<uint32>(TestHelper::kMaxFragmentUniformVectors), | 
 |             group_->max_fragment_uniform_vectors()); | 
 |   EXPECT_EQ(static_cast<uint32>(TestHelper::kMaxVaryingVectors), | 
 |             group_->max_varying_vectors()); | 
 |   EXPECT_EQ(static_cast<uint32>(TestHelper::kMaxVertexUniformVectors), | 
 |             group_->max_vertex_uniform_vectors()); | 
 |   EXPECT_TRUE(group_->buffer_manager() != NULL); | 
 |   EXPECT_TRUE(group_->framebuffer_manager() != NULL); | 
 |   EXPECT_TRUE(group_->renderbuffer_manager() != NULL); | 
 |   EXPECT_TRUE(group_->texture_manager() != NULL); | 
 |   EXPECT_TRUE(group_->program_manager() != NULL); | 
 |   EXPECT_TRUE(group_->shader_manager() != NULL); | 
 |  | 
 |   group_->Destroy(decoder_.get(), false); | 
 |   EXPECT_TRUE(group_->buffer_manager() == NULL); | 
 |   EXPECT_TRUE(group_->framebuffer_manager() == NULL); | 
 |   EXPECT_TRUE(group_->renderbuffer_manager() == NULL); | 
 |   EXPECT_TRUE(group_->texture_manager() == NULL); | 
 |   EXPECT_TRUE(group_->program_manager() == NULL); | 
 |   EXPECT_TRUE(group_->shader_manager() == NULL); | 
 | } | 
 |  | 
 | TEST_F(ContextGroupTest, MultipleContexts) { | 
 |   scoped_ptr<MockGLES2Decoder> decoder2_(new MockGLES2Decoder()); | 
 |   TestHelper::SetupContextGroupInitExpectations( | 
 |       gl_.get(), DisallowedFeatures(), "", "", kBindGeneratesResource); | 
 |   group_->Initialize(decoder_.get(), DisallowedFeatures()); | 
 |   group_->Initialize(decoder2_.get(), DisallowedFeatures()); | 
 |  | 
 |   EXPECT_TRUE(group_->buffer_manager() != NULL); | 
 |   EXPECT_TRUE(group_->framebuffer_manager() != NULL); | 
 |   EXPECT_TRUE(group_->renderbuffer_manager() != NULL); | 
 |   EXPECT_TRUE(group_->texture_manager() != NULL); | 
 |   EXPECT_TRUE(group_->program_manager() != NULL); | 
 |   EXPECT_TRUE(group_->shader_manager() != NULL); | 
 |  | 
 |   group_->Destroy(decoder_.get(), false); | 
 |  | 
 |   EXPECT_TRUE(group_->buffer_manager() != NULL); | 
 |   EXPECT_TRUE(group_->framebuffer_manager() != NULL); | 
 |   EXPECT_TRUE(group_->renderbuffer_manager() != NULL); | 
 |   EXPECT_TRUE(group_->texture_manager() != NULL); | 
 |   EXPECT_TRUE(group_->program_manager() != NULL); | 
 |   EXPECT_TRUE(group_->shader_manager() != NULL); | 
 |  | 
 |   group_->Destroy(decoder2_.get(), false); | 
 |  | 
 |   EXPECT_TRUE(group_->buffer_manager() == NULL); | 
 |   EXPECT_TRUE(group_->framebuffer_manager() == NULL); | 
 |   EXPECT_TRUE(group_->renderbuffer_manager() == NULL); | 
 |   EXPECT_TRUE(group_->texture_manager() == NULL); | 
 |   EXPECT_TRUE(group_->program_manager() == NULL); | 
 |   EXPECT_TRUE(group_->shader_manager() == NULL); | 
 | } | 
 |  | 
 | }  // namespace gles2 | 
 | }  // namespace gpu | 
 |  | 
 |  |