Index: gpu/command_buffer/service/texture_manager_unittest.cc |
diff --git a/gpu/command_buffer/service/texture_manager_unittest.cc b/gpu/command_buffer/service/texture_manager_unittest.cc |
index 3092423f0cbda7c2df56276c5fe8ac2ca41a7bfe..3266d83d8f5842d2a1eb1eaf038c30aa97305699 100644 |
--- a/gpu/command_buffer/service/texture_manager_unittest.cc |
+++ b/gpu/command_buffer/service/texture_manager_unittest.cc |
@@ -368,9 +368,16 @@ class TextureTestBase : public testing::Test { |
} |
protected: |
- void SetUpBase(MemoryTracker* memory_tracker) { |
+ void SetUpBase(MemoryTracker* memory_tracker, std::string extensions) { |
gl_.reset(new ::testing::StrictMock< ::gfx::MockGLInterface>()); |
::gfx::GLInterface::SetGLInterface(gl_.get()); |
+ |
+ if (!extensions.empty()) { |
+ TestHelper::SetupFeatureInfoInitExpectations(gl_.get(), |
+ extensions.c_str()); |
+ feature_info_->Initialize(NULL); |
+ } |
+ |
manager_.reset(new TextureManager( |
memory_tracker, feature_info_.get(), |
kMaxTextureSize, kMaxCubeMapTextureSize)); |
@@ -418,7 +425,7 @@ class TextureTestBase : public testing::Test { |
class TextureTest : public TextureTestBase { |
protected: |
virtual void SetUp() { |
- SetUpBase(NULL); |
+ SetUpBase(NULL, std::string()); |
} |
}; |
@@ -426,7 +433,7 @@ class TextureMemoryTrackerTest : public TextureTestBase { |
protected: |
virtual void SetUp() { |
mock_memory_tracker_ = new StrictMock<MockMemoryTracker>(); |
- SetUpBase(mock_memory_tracker_.get()); |
+ SetUpBase(mock_memory_tracker_.get(), std::string()); |
} |
scoped_refptr<MockMemoryTracker> mock_memory_tracker_; |
@@ -1283,7 +1290,7 @@ TEST_F(TextureTest, AddToSignature) { |
class SaveRestoreTextureTest : public TextureTest { |
public: |
virtual void SetUp() { |
- TextureTest::SetUp(); |
+ TextureTest::SetUpBase(NULL, "GL_OES_EGL_image_external"); |
manager_->CreateTexture(kClient2Id, kService2Id); |
texture2_ = manager_->GetTexture(kClient2Id); |
} |
@@ -1380,7 +1387,7 @@ class SaveRestoreTextureTest : public TextureTest { |
TextureDefinition* Save(Texture* texture) { |
EXPECT_CALL(*gl_, GenTextures(_, _)) |
- .WillOnce(SetArgumentPointee<1>(kService2Id)); |
+ .WillOnce(SetArgumentPointee<1>(kEmptyTextureServiceId)); |
TextureDefinition* definition = manager_->Save(texture); |
EXPECT_TRUE(definition != NULL); |
return definition; |
@@ -1469,6 +1476,19 @@ TEST_F(SaveRestoreTextureTest, SaveRestoreClearRectangle) { |
decoder_.get(), texture2_, GL_TEXTURE_RECTANGLE_ARB, 0)); |
} |
+TEST_F(SaveRestoreTextureTest, SaveRestoreStreamTexture) { |
+ manager_->SetTarget(texture_, GL_TEXTURE_EXTERNAL_OES); |
+ EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_EXTERNAL_OES), texture_->target()); |
+ texture_->SetStreamTexture(true); |
+ GLuint service_id = texture_->service_id(); |
+ scoped_ptr<TextureDefinition> definition(Save(texture_)); |
+ manager_->SetTarget(texture2_, GL_TEXTURE_EXTERNAL_OES); |
+ Restore(texture2_, definition.release()); |
+ EXPECT_TRUE(texture2_->IsStreamTexture()); |
+ EXPECT_TRUE(texture2_->IsImmutable()); |
+ EXPECT_EQ(service_id, texture2_->service_id()); |
+} |
+ |
TEST_F(SaveRestoreTextureTest, SaveRestoreCube) { |
manager_->SetTarget(texture_, GL_TEXTURE_CUBE_MAP); |
EXPECT_EQ(static_cast<GLenum>(GL_TEXTURE_CUBE_MAP), texture_->target()); |