| 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/resource_update_controller.h" | 5 #include "cc/resource_update_controller.h" |
| 6 | 6 |
| 7 #include "cc/prioritized_resource_manager.h" | 7 #include "cc/prioritized_resource_manager.h" |
| 8 #include "cc/single_thread_proxy.h" // For DebugScopedSetImplThread | 8 #include "cc/single_thread_proxy.h" // For DebugScopedSetImplThread |
| 9 #include "cc/test/fake_output_surface.h" | 9 #include "cc/test/fake_output_surface.h" |
| 10 #include "cc/test/fake_proxy.h" | 10 #include "cc/test/fake_proxy.h" |
| (...skipping 332 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 343 bool readyToFinalizeCalled() const { return m_readyToFinalizeCalled; } | 343 bool readyToFinalizeCalled() const { return m_readyToFinalizeCalled; } |
| 344 | 344 |
| 345 virtual void ReadyToFinalizeTextureUpdates() OVERRIDE { m_readyToFinalizeCal
led = true; } | 345 virtual void ReadyToFinalizeTextureUpdates() OVERRIDE { m_readyToFinalizeCal
led = true; } |
| 346 | 346 |
| 347 protected: | 347 protected: |
| 348 bool m_readyToFinalizeCalled; | 348 bool m_readyToFinalizeCalled; |
| 349 }; | 349 }; |
| 350 | 350 |
| 351 class FakeResourceUpdateController : public cc::ResourceUpdateController { | 351 class FakeResourceUpdateController : public cc::ResourceUpdateController { |
| 352 public: | 352 public: |
| 353 static scoped_ptr<FakeResourceUpdateController> create(cc::ResourceUpdateCon
trollerClient* client, cc::Thread* thread, scoped_ptr<ResourceUpdateQueue> queue
, ResourceProvider* resourceProvider) | 353 static scoped_ptr<FakeResourceUpdateController> Create(cc::ResourceUpdateCon
trollerClient* client, cc::Thread* thread, scoped_ptr<ResourceUpdateQueue> queue
, ResourceProvider* resourceProvider) |
| 354 { | 354 { |
| 355 return make_scoped_ptr(new FakeResourceUpdateController(client, thread,
queue.Pass(), resourceProvider)); | 355 return make_scoped_ptr(new FakeResourceUpdateController(client, thread,
queue.Pass(), resourceProvider)); |
| 356 } | 356 } |
| 357 | 357 |
| 358 void setNow(base::TimeTicks time) { m_now = time; } | 358 void setNow(base::TimeTicks time) { m_now = time; } |
| 359 virtual base::TimeTicks Now() const OVERRIDE { return m_now; } | 359 virtual base::TimeTicks Now() const OVERRIDE { return m_now; } |
| 360 void setUpdateMoreTexturesTime(base::TimeDelta time) { m_updateMoreTexturesT
ime = time; } | 360 void setUpdateMoreTexturesTime(base::TimeDelta time) { m_updateMoreTexturesT
ime = time; } |
| 361 virtual base::TimeDelta UpdateMoreTexturesTime() const OVERRIDE { return m_u
pdateMoreTexturesTime; } | 361 virtual base::TimeDelta UpdateMoreTexturesTime() const OVERRIDE { return m_u
pdateMoreTexturesTime; } |
| 362 void setUpdateMoreTexturesSize(size_t size) { m_updateMoreTexturesSize = siz
e; } | 362 void setUpdateMoreTexturesSize(size_t size) { m_updateMoreTexturesSize = siz
e; } |
| 363 virtual size_t UpdateMoreTexturesSize() const OVERRIDE { return m_updateMore
TexturesSize; } | 363 virtual size_t UpdateMoreTexturesSize() const OVERRIDE { return m_updateMore
TexturesSize; } |
| (...skipping 19 matching lines...) Expand all Loading... |
| 383 { | 383 { |
| 384 FakeResourceUpdateControllerClient client; | 384 FakeResourceUpdateControllerClient client; |
| 385 FakeThread thread; | 385 FakeThread thread; |
| 386 | 386 |
| 387 setMaxUploadCountPerUpdate(1); | 387 setMaxUploadCountPerUpdate(1); |
| 388 appendFullUploadsToUpdateQueue(3); | 388 appendFullUploadsToUpdateQueue(3); |
| 389 appendPartialUploadsToUpdateQueue(0); | 389 appendPartialUploadsToUpdateQueue(0); |
| 390 | 390 |
| 391 DebugScopedSetImplThreadAndMainThreadBlocked | 391 DebugScopedSetImplThreadAndMainThreadBlocked |
| 392 implThreadAndMainThreadBlocked(&m_proxy); | 392 implThreadAndMainThreadBlocked(&m_proxy); |
| 393 scoped_ptr<FakeResourceUpdateController> controller(FakeResourceUpdateContro
ller::create(&client, &thread, m_queue.Pass(), m_resourceProvider.get())); | 393 scoped_ptr<FakeResourceUpdateController> controller(FakeResourceUpdateContro
ller::Create(&client, &thread, m_queue.Pass(), m_resourceProvider.get())); |
| 394 | 394 |
| 395 controller->setNow( | 395 controller->setNow( |
| 396 controller->Now() + base::TimeDelta::FromMilliseconds(1)); | 396 controller->Now() + base::TimeDelta::FromMilliseconds(1)); |
| 397 controller->setUpdateMoreTexturesTime( | 397 controller->setUpdateMoreTexturesTime( |
| 398 base::TimeDelta::FromMilliseconds(100)); | 398 base::TimeDelta::FromMilliseconds(100)); |
| 399 controller->setUpdateMoreTexturesSize(1); | 399 controller->setUpdateMoreTexturesSize(1); |
| 400 // Not enough time for any updates. | 400 // Not enough time for any updates. |
| 401 controller->PerformMoreUpdates( | 401 controller->PerformMoreUpdates( |
| 402 controller->Now() + base::TimeDelta::FromMilliseconds(90)); | 402 controller->Now() + base::TimeDelta::FromMilliseconds(90)); |
| 403 EXPECT_FALSE(thread.hasPendingTask()); | 403 EXPECT_FALSE(thread.hasPendingTask()); |
| (...skipping 26 matching lines...) Expand all Loading... |
| 430 { | 430 { |
| 431 FakeResourceUpdateControllerClient client; | 431 FakeResourceUpdateControllerClient client; |
| 432 FakeThread thread; | 432 FakeThread thread; |
| 433 | 433 |
| 434 setMaxUploadCountPerUpdate(1); | 434 setMaxUploadCountPerUpdate(1); |
| 435 appendFullUploadsToUpdateQueue(2); | 435 appendFullUploadsToUpdateQueue(2); |
| 436 appendPartialUploadsToUpdateQueue(0); | 436 appendPartialUploadsToUpdateQueue(0); |
| 437 | 437 |
| 438 DebugScopedSetImplThreadAndMainThreadBlocked | 438 DebugScopedSetImplThreadAndMainThreadBlocked |
| 439 implThreadAndMainThreadBlocked(&m_proxy); | 439 implThreadAndMainThreadBlocked(&m_proxy); |
| 440 scoped_ptr<FakeResourceUpdateController> controller(FakeResourceUpdateContro
ller::create(&client, &thread, m_queue.Pass(), m_resourceProvider.get())); | 440 scoped_ptr<FakeResourceUpdateController> controller(FakeResourceUpdateContro
ller::Create(&client, &thread, m_queue.Pass(), m_resourceProvider.get())); |
| 441 | 441 |
| 442 controller->setNow( | 442 controller->setNow( |
| 443 controller->Now() + base::TimeDelta::FromMilliseconds(1)); | 443 controller->Now() + base::TimeDelta::FromMilliseconds(1)); |
| 444 controller->setUpdateMoreTexturesTime( | 444 controller->setUpdateMoreTexturesTime( |
| 445 base::TimeDelta::FromMilliseconds(100)); | 445 base::TimeDelta::FromMilliseconds(100)); |
| 446 controller->setUpdateMoreTexturesSize(1); | 446 controller->setUpdateMoreTexturesSize(1); |
| 447 // Enough time for 3 updates but only 2 necessary. | 447 // Enough time for 3 updates but only 2 necessary. |
| 448 controller->PerformMoreUpdates( | 448 controller->PerformMoreUpdates( |
| 449 controller->Now() + base::TimeDelta::FromMilliseconds(310)); | 449 controller->Now() + base::TimeDelta::FromMilliseconds(310)); |
| 450 runPendingTask(&thread, controller.get()); | 450 runPendingTask(&thread, controller.get()); |
| (...skipping 18 matching lines...) Expand all Loading... |
| 469 { | 469 { |
| 470 FakeResourceUpdateControllerClient client; | 470 FakeResourceUpdateControllerClient client; |
| 471 FakeThread thread; | 471 FakeThread thread; |
| 472 | 472 |
| 473 setMaxUploadCountPerUpdate(1); | 473 setMaxUploadCountPerUpdate(1); |
| 474 appendFullUploadsToUpdateQueue(2); | 474 appendFullUploadsToUpdateQueue(2); |
| 475 appendPartialUploadsToUpdateQueue(0); | 475 appendPartialUploadsToUpdateQueue(0); |
| 476 | 476 |
| 477 DebugScopedSetImplThreadAndMainThreadBlocked | 477 DebugScopedSetImplThreadAndMainThreadBlocked |
| 478 implThreadAndMainThreadBlocked(&m_proxy); | 478 implThreadAndMainThreadBlocked(&m_proxy); |
| 479 scoped_ptr<FakeResourceUpdateController> controller(FakeResourceUpdateContro
ller::create(&client, &thread, m_queue.Pass(), m_resourceProvider.get())); | 479 scoped_ptr<FakeResourceUpdateController> controller(FakeResourceUpdateContro
ller::Create(&client, &thread, m_queue.Pass(), m_resourceProvider.get())); |
| 480 | 480 |
| 481 controller->setNow( | 481 controller->setNow( |
| 482 controller->Now() + base::TimeDelta::FromMilliseconds(1)); | 482 controller->Now() + base::TimeDelta::FromMilliseconds(1)); |
| 483 controller->setUpdateMoreTexturesTime( | 483 controller->setUpdateMoreTexturesTime( |
| 484 base::TimeDelta::FromMilliseconds(500)); | 484 base::TimeDelta::FromMilliseconds(500)); |
| 485 controller->setUpdateMoreTexturesSize(1); | 485 controller->setUpdateMoreTexturesSize(1); |
| 486 | 486 |
| 487 for (int i = 0; i < 100; i++) { | 487 for (int i = 0; i < 100; i++) { |
| 488 if (client.readyToFinalizeCalled()) | 488 if (client.readyToFinalizeCalled()) |
| 489 break; | 489 break; |
| 490 | 490 |
| 491 // Not enough time for any updates. | 491 // Not enough time for any updates. |
| 492 controller->PerformMoreUpdates( | 492 controller->PerformMoreUpdates( |
| 493 controller->Now() + base::TimeDelta::FromMilliseconds(400)); | 493 controller->Now() + base::TimeDelta::FromMilliseconds(400)); |
| 494 | 494 |
| 495 if (thread.hasPendingTask()) | 495 if (thread.hasPendingTask()) |
| 496 runPendingTask(&thread, controller.get()); | 496 runPendingTask(&thread, controller.get()); |
| 497 } | 497 } |
| 498 | 498 |
| 499 EXPECT_FALSE(thread.hasPendingTask()); | 499 EXPECT_FALSE(thread.hasPendingTask()); |
| 500 EXPECT_TRUE(client.readyToFinalizeCalled()); | 500 EXPECT_TRUE(client.readyToFinalizeCalled()); |
| 501 EXPECT_EQ(2, m_numTotalUploads); | 501 EXPECT_EQ(2, m_numTotalUploads); |
| 502 } | 502 } |
| 503 | 503 |
| 504 } // namespace | 504 } // namespace |
| 505 } // namespace cc | 505 } // namespace cc |
| OLD | NEW |