| OLD | NEW |
| 1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "cc/layers/texture_layer.h" | 5 #include "cc/layers/texture_layer.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <string> | 8 #include <string> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 44 class MockLayerTreeHost : public LayerTreeHost { | 44 class MockLayerTreeHost : public LayerTreeHost { |
| 45 public: | 45 public: |
| 46 explicit MockLayerTreeHost(LayerTreeHostClient* client) | 46 explicit MockLayerTreeHost(LayerTreeHostClient* client) |
| 47 : LayerTreeHost(client, NULL, LayerTreeSettings()) { | 47 : LayerTreeHost(client, NULL, LayerTreeSettings()) { |
| 48 Initialize(NULL); | 48 Initialize(NULL); |
| 49 } | 49 } |
| 50 | 50 |
| 51 MOCK_METHOD0(AcquireLayerTextures, void()); | 51 MOCK_METHOD0(AcquireLayerTextures, void()); |
| 52 MOCK_METHOD0(SetNeedsCommit, void()); | 52 MOCK_METHOD0(SetNeedsCommit, void()); |
| 53 MOCK_METHOD0(SetNeedsUpdateLayers, void()); | 53 MOCK_METHOD0(SetNeedsUpdateLayers, void()); |
| 54 MOCK_METHOD1(StartRateLimiter, void(WebKit::WebGraphicsContext3D* context)); | 54 MOCK_METHOD0(StartRateLimiter, void()); |
| 55 MOCK_METHOD1(StopRateLimiter, void(WebKit::WebGraphicsContext3D* context)); | 55 MOCK_METHOD0(StopRateLimiter, void()); |
| 56 }; | 56 }; |
| 57 | 57 |
| 58 class TextureLayerTest : public testing::Test { | 58 class TextureLayerTest : public testing::Test { |
| 59 public: | 59 public: |
| 60 TextureLayerTest() | 60 TextureLayerTest() |
| 61 : fake_client_( | 61 : fake_client_( |
| 62 FakeLayerTreeHostClient(FakeLayerTreeHostClient::DIRECT_3D)), | 62 FakeLayerTreeHostClient(FakeLayerTreeHostClient::DIRECT_3D)), |
| 63 host_impl_(&proxy_) {} | 63 host_impl_(&proxy_) {} |
| 64 | 64 |
| 65 protected: | 65 protected: |
| (...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 271 | 271 |
| 272 TEST_F(TextureLayerTest, RateLimiter) { | 272 TEST_F(TextureLayerTest, RateLimiter) { |
| 273 FakeTextureLayerClient client; | 273 FakeTextureLayerClient client; |
| 274 scoped_refptr<TextureLayer> test_layer = TextureLayer::CreateForMailbox( | 274 scoped_refptr<TextureLayer> test_layer = TextureLayer::CreateForMailbox( |
| 275 &client); | 275 &client); |
| 276 test_layer->SetIsDrawable(true); | 276 test_layer->SetIsDrawable(true); |
| 277 EXPECT_CALL(*layer_tree_host_, SetNeedsCommit()).Times(AnyNumber()); | 277 EXPECT_CALL(*layer_tree_host_, SetNeedsCommit()).Times(AnyNumber()); |
| 278 layer_tree_host_->SetRootLayer(test_layer); | 278 layer_tree_host_->SetRootLayer(test_layer); |
| 279 | 279 |
| 280 // Don't rate limit until we invalidate. | 280 // Don't rate limit until we invalidate. |
| 281 EXPECT_CALL(*layer_tree_host_, StartRateLimiter(_)).Times(0); | 281 EXPECT_CALL(*layer_tree_host_, StartRateLimiter()).Times(0); |
| 282 test_layer->SetRateLimitContext(true); | 282 test_layer->SetRateLimitContext(true); |
| 283 Mock::VerifyAndClearExpectations(layer_tree_host_.get()); | 283 Mock::VerifyAndClearExpectations(layer_tree_host_.get()); |
| 284 | 284 |
| 285 // Do rate limit after we invalidate. | 285 // Do rate limit after we invalidate. |
| 286 EXPECT_CALL(*layer_tree_host_, StartRateLimiter(client.Context3d())); | 286 EXPECT_CALL(*layer_tree_host_, StartRateLimiter()); |
| 287 test_layer->SetNeedsDisplay(); | 287 test_layer->SetNeedsDisplay(); |
| 288 Mock::VerifyAndClearExpectations(layer_tree_host_.get()); | 288 Mock::VerifyAndClearExpectations(layer_tree_host_.get()); |
| 289 | 289 |
| 290 // Stop rate limiter when we don't want it any more. | 290 // Stop rate limiter when we don't want it any more. |
| 291 EXPECT_CALL(*layer_tree_host_, StopRateLimiter(client.Context3d())); | 291 EXPECT_CALL(*layer_tree_host_, StopRateLimiter()); |
| 292 test_layer->SetRateLimitContext(false); | 292 test_layer->SetRateLimitContext(false); |
| 293 Mock::VerifyAndClearExpectations(layer_tree_host_.get()); | 293 Mock::VerifyAndClearExpectations(layer_tree_host_.get()); |
| 294 | 294 |
| 295 // Or we clear the client. | 295 // Or we clear the client. |
| 296 test_layer->SetRateLimitContext(true); | 296 test_layer->SetRateLimitContext(true); |
| 297 EXPECT_CALL(*layer_tree_host_, StopRateLimiter(client.Context3d())); | 297 EXPECT_CALL(*layer_tree_host_, StopRateLimiter()); |
| 298 EXPECT_CALL(*layer_tree_host_, SetNeedsCommit()).Times(AnyNumber()); | 298 EXPECT_CALL(*layer_tree_host_, SetNeedsCommit()).Times(AnyNumber()); |
| 299 test_layer->ClearClient(); | 299 test_layer->ClearClient(); |
| 300 Mock::VerifyAndClearExpectations(layer_tree_host_.get()); | 300 Mock::VerifyAndClearExpectations(layer_tree_host_.get()); |
| 301 | 301 |
| 302 // Reset to a layer with a client, that started the rate limiter. | 302 // Reset to a layer with a client, that started the rate limiter. |
| 303 test_layer = TextureLayer::CreateForMailbox( | 303 test_layer = TextureLayer::CreateForMailbox( |
| 304 &client); | 304 &client); |
| 305 test_layer->SetIsDrawable(true); | 305 test_layer->SetIsDrawable(true); |
| 306 test_layer->SetRateLimitContext(true); | 306 test_layer->SetRateLimitContext(true); |
| 307 EXPECT_CALL(*layer_tree_host_, SetNeedsCommit()).Times(AnyNumber()); | 307 EXPECT_CALL(*layer_tree_host_, SetNeedsCommit()).Times(AnyNumber()); |
| 308 layer_tree_host_->SetRootLayer(test_layer); | 308 layer_tree_host_->SetRootLayer(test_layer); |
| 309 EXPECT_CALL(*layer_tree_host_, StartRateLimiter(_)).Times(0); | 309 EXPECT_CALL(*layer_tree_host_, StartRateLimiter()).Times(0); |
| 310 Mock::VerifyAndClearExpectations(layer_tree_host_.get()); | 310 Mock::VerifyAndClearExpectations(layer_tree_host_.get()); |
| 311 EXPECT_CALL(*layer_tree_host_, StartRateLimiter(client.Context3d())); | 311 EXPECT_CALL(*layer_tree_host_, StartRateLimiter()); |
| 312 test_layer->SetNeedsDisplay(); | 312 test_layer->SetNeedsDisplay(); |
| 313 Mock::VerifyAndClearExpectations(layer_tree_host_.get()); | 313 Mock::VerifyAndClearExpectations(layer_tree_host_.get()); |
| 314 | 314 |
| 315 // Stop rate limiter when we're removed from the tree. | 315 // Stop rate limiter when we're removed from the tree. |
| 316 EXPECT_CALL(*layer_tree_host_, StopRateLimiter(client.Context3d())); | 316 EXPECT_CALL(*layer_tree_host_, StopRateLimiter()); |
| 317 layer_tree_host_->SetRootLayer(NULL); | 317 layer_tree_host_->SetRootLayer(NULL); |
| 318 Mock::VerifyAndClearExpectations(layer_tree_host_.get()); | 318 Mock::VerifyAndClearExpectations(layer_tree_host_.get()); |
| 319 } | 319 } |
| 320 | 320 |
| 321 class MockMailboxCallback { | 321 class MockMailboxCallback { |
| 322 public: | 322 public: |
| 323 MOCK_METHOD3(Release, void(const std::string& mailbox, | 323 MOCK_METHOD3(Release, void(const std::string& mailbox, |
| 324 unsigned sync_point, | 324 unsigned sync_point, |
| 325 bool lost_resource)); | 325 bool lost_resource)); |
| 326 MOCK_METHOD3(Release2, void(base::SharedMemory* shared_memory, | 326 MOCK_METHOD3(Release2, void(base::SharedMemory* shared_memory, |
| (...skipping 1855 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2182 int callback_count_; | 2182 int callback_count_; |
| 2183 scoped_refptr<Layer> root_; | 2183 scoped_refptr<Layer> root_; |
| 2184 scoped_refptr<TextureLayer> layer_; | 2184 scoped_refptr<TextureLayer> layer_; |
| 2185 }; | 2185 }; |
| 2186 | 2186 |
| 2187 SINGLE_AND_MULTI_THREAD_DIRECT_RENDERER_TEST_F( | 2187 SINGLE_AND_MULTI_THREAD_DIRECT_RENDERER_TEST_F( |
| 2188 TextureLayerWithMailboxImplThreadDeleted); | 2188 TextureLayerWithMailboxImplThreadDeleted); |
| 2189 | 2189 |
| 2190 } // namespace | 2190 } // namespace |
| 2191 } // namespace cc | 2191 } // namespace cc |
| OLD | NEW |