Index: cc/CCTextureUpdateControllerTest.cpp |
diff --git a/cc/CCTextureUpdateControllerTest.cpp b/cc/CCTextureUpdateControllerTest.cpp |
index d2a6fcf6f5cc2b7199e9477e40d4217a0c896b65..2ed0e59908fb4650a8b118aa336834d36c9f17a6 100644 |
--- a/cc/CCTextureUpdateControllerTest.cpp |
+++ b/cc/CCTextureUpdateControllerTest.cpp |
@@ -521,23 +521,11 @@ TEST_F(CCTextureUpdateControllerTest, TripleUpdateFinalUpdateAllPartial) |
EXPECT_EQ(kFullUploads + kPartialUploads, m_numTotalUploads); |
} |
-class FakeCCTextureUpdateControllerClient : public WebCore::CCTextureUpdateControllerClient { |
-public: |
- FakeCCTextureUpdateControllerClient() { reset(); } |
- void reset() { m_completedCalled = false; } |
- bool completedCalled() const { return m_completedCalled; } |
- |
- virtual void updateTexturesCompleted() OVERRIDE { m_completedCalled = true; } |
- |
-protected: |
- bool m_completedCalled; |
-}; |
- |
class FakeCCTextureUpdateController : public WebCore::CCTextureUpdateController { |
public: |
- static PassOwnPtr<FakeCCTextureUpdateController> create(WebCore::CCTextureUpdateControllerClient* client, WebCore::CCThread* thread, PassOwnPtr<CCTextureUpdateQueue> queue, CCResourceProvider* resourceProvider, TextureCopier* copier, TextureUploader* uploader) |
+ static PassOwnPtr<FakeCCTextureUpdateController> create(WebCore::CCThread* thread, PassOwnPtr<CCTextureUpdateQueue> queue, CCResourceProvider* resourceProvider, TextureCopier* copier, TextureUploader* uploader) |
{ |
- return adoptPtr(new FakeCCTextureUpdateController(client, thread, queue, resourceProvider, copier, uploader)); |
+ return adoptPtr(new FakeCCTextureUpdateController(thread, queue, resourceProvider, copier, uploader)); |
} |
void setMonotonicTimeNow(double time) { m_monotonicTimeNow = time; } |
@@ -548,8 +536,8 @@ public: |
virtual size_t updateMoreTexturesSize() const OVERRIDE { return m_updateMoreTexturesSize; } |
protected: |
- FakeCCTextureUpdateController(WebCore::CCTextureUpdateControllerClient* client, WebCore::CCThread* thread, PassOwnPtr<CCTextureUpdateQueue> queue, CCResourceProvider* resourceProvider, TextureCopier* copier, TextureUploader* uploader) |
- : WebCore::CCTextureUpdateController(client, thread, queue, resourceProvider, copier, uploader) |
+ FakeCCTextureUpdateController(WebCore::CCThread* thread, PassOwnPtr<CCTextureUpdateQueue> queue, CCResourceProvider* resourceProvider, TextureCopier* copier, TextureUploader* uploader) |
+ : WebCore::CCTextureUpdateController(thread, queue, resourceProvider, copier, uploader) |
, m_monotonicTimeNow(0) |
, m_updateMoreTexturesTime(0) |
, m_updateMoreTexturesSize(0) { } |
@@ -559,17 +547,8 @@ protected: |
size_t m_updateMoreTexturesSize; |
}; |
-static void runPendingTasks(FakeCCThread* thread, FakeCCTextureUpdateController* controller) |
-{ |
- while (thread->hasPendingTask()) { |
- controller->setMonotonicTimeNow(controller->monotonicTimeNow() + thread->pendingDelayMs() / 1000.0); |
- thread->runPendingTask(); |
- } |
-} |
- |
TEST_F(CCTextureUpdateControllerTest, UpdateMoreTextures) |
{ |
- FakeCCTextureUpdateControllerClient client; |
FakeCCThread thread; |
setMaxUploadCountPerUpdate(1); |
@@ -577,34 +556,39 @@ TEST_F(CCTextureUpdateControllerTest, UpdateMoreTextures) |
appendPartialUploadsToUpdateQueue(0); |
DebugScopedSetImplThread implThread; |
- OwnPtr<FakeCCTextureUpdateController> controller(FakeCCTextureUpdateController::create(&client, &thread, m_queue.release(), m_resourceProvider.get(), &m_copier, &m_uploader)); |
+ OwnPtr<FakeCCTextureUpdateController> controller(FakeCCTextureUpdateController::create(&thread, m_queue.release(), m_resourceProvider.get(), &m_copier, &m_uploader)); |
controller->setMonotonicTimeNow(0); |
controller->setUpdateMoreTexturesTime(0.1); |
controller->setUpdateMoreTexturesSize(1); |
// Not enough time for any updates. |
controller->updateMoreTextures(0.09); |
- runPendingTasks(&thread, controller.get()); |
+ EXPECT_FALSE(thread.hasPendingTask()); |
EXPECT_EQ(0, m_numBeginUploads); |
EXPECT_EQ(0, m_numEndUploads); |
+ thread.reset(); |
controller->setMonotonicTimeNow(0); |
controller->setUpdateMoreTexturesTime(0.1); |
controller->setUpdateMoreTexturesSize(1); |
// Only enough time for 1 update. |
controller->updateMoreTextures(0.12); |
- runPendingTasks(&thread, controller.get()); |
+ EXPECT_TRUE(thread.hasPendingTask()); |
+ controller->setMonotonicTimeNow(thread.pendingDelayMs() / 1000.0); |
+ thread.runPendingTask(); |
EXPECT_EQ(1, m_numBeginUploads); |
EXPECT_EQ(1, m_numEndUploads); |
EXPECT_EQ(1, m_numTotalUploads); |
+ thread.reset(); |
controller->setMonotonicTimeNow(0); |
controller->setUpdateMoreTexturesTime(0.1); |
controller->setUpdateMoreTexturesSize(1); |
// Enough time for 2 updates. |
controller->updateMoreTextures(0.22); |
- runPendingTasks(&thread, controller.get()); |
- EXPECT_TRUE(client.completedCalled()); |
+ EXPECT_TRUE(thread.hasPendingTask()); |
+ controller->setMonotonicTimeNow(controller->monotonicTimeNow() + thread.pendingDelayMs() / 1000.0); |
+ thread.runPendingTask(); |
EXPECT_EQ(3, m_numBeginUploads); |
EXPECT_EQ(3, m_numEndUploads); |
EXPECT_EQ(3, m_numTotalUploads); |
@@ -612,7 +596,6 @@ TEST_F(CCTextureUpdateControllerTest, UpdateMoreTextures) |
TEST_F(CCTextureUpdateControllerTest, NoMoreUpdates) |
{ |
- FakeCCTextureUpdateControllerClient client; |
FakeCCThread thread; |
setMaxUploadCountPerUpdate(1); |
@@ -620,26 +603,30 @@ TEST_F(CCTextureUpdateControllerTest, NoMoreUpdates) |
appendPartialUploadsToUpdateQueue(0); |
DebugScopedSetImplThread implThread; |
- OwnPtr<FakeCCTextureUpdateController> controller(FakeCCTextureUpdateController::create(&client, &thread, m_queue.release(), m_resourceProvider.get(), &m_copier, &m_uploader)); |
+ OwnPtr<FakeCCTextureUpdateController> controller(FakeCCTextureUpdateController::create(&thread, m_queue.release(), m_resourceProvider.get(), &m_copier, &m_uploader)); |
controller->setMonotonicTimeNow(0); |
controller->setUpdateMoreTexturesTime(0.1); |
controller->setUpdateMoreTexturesSize(1); |
// Enough time for 3 updates but only 2 necessary. |
controller->updateMoreTextures(0.31); |
- runPendingTasks(&thread, controller.get()); |
- EXPECT_TRUE(client.completedCalled()); |
+ EXPECT_TRUE(thread.hasPendingTask()); |
+ controller->setMonotonicTimeNow(controller->monotonicTimeNow() + thread.pendingDelayMs() / 1000.0); |
+ thread.runPendingTask(); |
+ EXPECT_TRUE(thread.hasPendingTask()); |
+ controller->setMonotonicTimeNow(controller->monotonicTimeNow() + thread.pendingDelayMs() / 1000.0); |
+ thread.runPendingTask(); |
EXPECT_EQ(2, m_numBeginUploads); |
EXPECT_EQ(2, m_numEndUploads); |
EXPECT_EQ(2, m_numTotalUploads); |
+ thread.reset(); |
controller->setMonotonicTimeNow(0); |
controller->setUpdateMoreTexturesTime(0.1); |
controller->setUpdateMoreTexturesSize(1); |
// Enough time for updates but no more updates left. |
controller->updateMoreTextures(0.31); |
- runPendingTasks(&thread, controller.get()); |
- EXPECT_TRUE(client.completedCalled()); |
+ EXPECT_FALSE(thread.hasPendingTask()); |
EXPECT_EQ(2, m_numBeginUploads); |
EXPECT_EQ(2, m_numEndUploads); |
EXPECT_EQ(2, m_numTotalUploads); |
@@ -647,7 +634,6 @@ TEST_F(CCTextureUpdateControllerTest, NoMoreUpdates) |
TEST_F(CCTextureUpdateControllerTest, UpdatesCompleteInFiniteTime) |
{ |
- FakeCCTextureUpdateControllerClient client; |
FakeCCThread thread; |
setMaxUploadCountPerUpdate(1); |
@@ -655,22 +641,25 @@ TEST_F(CCTextureUpdateControllerTest, UpdatesCompleteInFiniteTime) |
appendPartialUploadsToUpdateQueue(0); |
DebugScopedSetImplThread implThread; |
- OwnPtr<FakeCCTextureUpdateController> controller(FakeCCTextureUpdateController::create(&client, &thread, m_queue.release(), m_resourceProvider.get(), &m_copier, &m_uploader)); |
+ OwnPtr<FakeCCTextureUpdateController> controller(FakeCCTextureUpdateController::create(&thread, m_queue.release(), m_resourceProvider.get(), &m_copier, &m_uploader)); |
controller->setMonotonicTimeNow(0); |
controller->setUpdateMoreTexturesTime(0.5); |
controller->setUpdateMoreTexturesSize(1); |
for (int i = 0; i < 100; i++) { |
- if (client.completedCalled()) |
+ if (!controller->hasMoreUpdates()) |
break; |
// Not enough time for any updates. |
controller->updateMoreTextures(0.4); |
- runPendingTasks(&thread, controller.get()); |
+ |
+ if (thread.hasPendingTask()) { |
+ controller->setMonotonicTimeNow(controller->monotonicTimeNow() + thread.pendingDelayMs() / 1000.0); |
+ thread.runPendingTask(); |
+ } |
} |
- EXPECT_TRUE(client.completedCalled()); |
EXPECT_EQ(2, m_numBeginUploads); |
EXPECT_EQ(2, m_numEndUploads); |
EXPECT_EQ(2, m_numTotalUploads); |