Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2233)

Unified Diff: cc/texture_update_controller_unittest.cc

Issue 11270047: cc: Rename TextureUpdate to ResourceUpdate. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Sort includes and forward declarations. Created 8 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « cc/texture_update_controller.cc ('k') | cc/texture_update_queue.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/texture_update_controller_unittest.cc
diff --git a/cc/texture_update_controller_unittest.cc b/cc/texture_update_controller_unittest.cc
deleted file mode 100644
index 36677c4608d2caa0adff3d9232f6ffb720c33d88..0000000000000000000000000000000000000000
--- a/cc/texture_update_controller_unittest.cc
+++ /dev/null
@@ -1,483 +0,0 @@
-// Copyright 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 "config.h"
-
-#include "cc/texture_update_controller.h"
-
-#include "cc/single_thread_proxy.h" // For DebugScopedSetImplThread
-#include "cc/test/fake_web_compositor_output_surface.h"
-#include "cc/test/fake_web_graphics_context_3d.h"
-#include "cc/test/scheduler_test_common.h"
-#include "cc/test/tiled_layer_test_common.h"
-#include "cc/test/web_compositor_initializer.h"
-#include "testing/gtest/include/gtest/gtest.h"
-#include <public/WebThread.h>
-
-using namespace cc;
-using namespace WebKit;
-using namespace WebKitTests;
-using testing::Test;
-
-
-namespace {
-
-const int kFlushPeriodFull = 4;
-const int kFlushPeriodPartial = kFlushPeriodFull;
-
-class TextureUpdateControllerTest;
-
-class WebGraphicsContext3DForUploadTest : public FakeWebGraphicsContext3D {
-public:
- WebGraphicsContext3DForUploadTest(TextureUpdateControllerTest *test)
- : m_test(test)
- , m_supportShallowFlush(true)
- { }
-
- virtual void flush(void);
- virtual void shallowFlushCHROMIUM(void);
- virtual void texSubImage2D(WGC3Denum target,
- WGC3Dint level,
- WGC3Dint xoffset,
- WGC3Dint yoffset,
- WGC3Dsizei width,
- WGC3Dsizei height,
- WGC3Denum format,
- WGC3Denum type,
- const void* pixels);
- virtual GrGLInterface* onCreateGrGLInterface() { return 0; }
-
- virtual WebString getString(WGC3Denum name)
- {
- if (m_supportShallowFlush)
- return WebString("GL_CHROMIUM_shallow_flush");
- return WebString("");
- }
-
-private:
- TextureUpdateControllerTest* m_test;
- bool m_supportShallowFlush;
-};
-
-
-class TextureUpdateControllerTest : public Test {
-public:
- TextureUpdateControllerTest()
- : m_queue(make_scoped_ptr(new TextureUpdateQueue))
- , m_textureManager(PrioritizedTextureManager::create(60*1024*1024, 1024, Renderer::ContentPool))
- , m_compositorInitializer(m_thread.get())
- , m_fullUploadCountExpected(0)
- , m_partialCountExpected(0)
- , m_totalUploadCountExpected(0)
- , m_maxUploadCountPerUpdate(0)
- , m_numConsecutiveFlushes(0)
- , m_numDanglingUploads(0)
- , m_numTotalUploads(0)
- , m_numTotalFlushes(0)
- {
- }
-
- ~TextureUpdateControllerTest()
- {
- DebugScopedSetImplThreadAndMainThreadBlocked
- implThreadAndMainThreadBlocked;
- m_textureManager->clearAllMemory(m_resourceProvider.get());
- }
-
-public:
- void onFlush()
- {
- // Check for back-to-back flushes.
- EXPECT_EQ(0, m_numConsecutiveFlushes) << "Back-to-back flushes detected.";
-
- m_numDanglingUploads = 0;
- m_numConsecutiveFlushes++;
- m_numTotalFlushes++;
- }
-
- void onUpload()
- {
- // Check for too many consecutive uploads
- if (m_numTotalUploads < m_fullUploadCountExpected)
- EXPECT_LT(m_numDanglingUploads, kFlushPeriodFull) << "Too many consecutive full uploads detected.";
- else
- EXPECT_LT(m_numDanglingUploads, kFlushPeriodPartial) << "Too many consecutive partial uploads detected.";
-
- m_numConsecutiveFlushes = 0;
- m_numDanglingUploads++;
- m_numTotalUploads++;
- }
-
-protected:
- virtual void SetUp()
- {
- m_context = FakeWebCompositorOutputSurface::create(scoped_ptr<WebKit::WebGraphicsContext3D>(new WebGraphicsContext3DForUploadTest(this)));
- m_bitmap.setConfig(SkBitmap::kARGB_8888_Config, 300, 150);
- m_bitmap.allocPixels();
-
- for (int i = 0; i < 4; i++) {
- m_textures[i] = PrioritizedTexture::create(
- m_textureManager.get(), IntSize(300, 150), GL_RGBA);
- m_textures[i]->setRequestPriority(
- PriorityCalculator::visiblePriority(true));
- }
- m_textureManager->prioritizeTextures();
-
- DebugScopedSetImplThread implThread;
- m_resourceProvider = ResourceProvider::create(m_context.get());
- }
-
-
- void appendFullUploadsOfIndexedTextureToUpdateQueue(int count, int textureIndex)
- {
- m_fullUploadCountExpected += count;
- m_totalUploadCountExpected += count;
-
- const IntRect rect(0, 0, 300, 150);
- const ResourceUpdate upload = ResourceUpdate::Create(
- m_textures[textureIndex].get(), &m_bitmap, rect, rect, IntSize());
- for (int i = 0; i < count; i++)
- m_queue->appendFullUpload(upload);
- }
-
- void appendFullUploadsToUpdateQueue(int count)
- {
- appendFullUploadsOfIndexedTextureToUpdateQueue(count, 0);
- }
-
- void appendPartialUploadsOfIndexedTextureToUpdateQueue(int count, int textureIndex)
- {
- m_partialCountExpected += count;
- m_totalUploadCountExpected += count;
-
- const IntRect rect(0, 0, 100, 100);
- const ResourceUpdate upload = ResourceUpdate::Create(
- m_textures[textureIndex].get(), &m_bitmap, rect, rect, IntSize());
- for (int i = 0; i < count; i++)
- m_queue->appendPartialUpload(upload);
- }
-
- void appendPartialUploadsToUpdateQueue(int count)
- {
- appendPartialUploadsOfIndexedTextureToUpdateQueue(count, 0);
- }
-
- void setMaxUploadCountPerUpdate(int count)
- {
- m_maxUploadCountPerUpdate = count;
- }
-
- void updateTextures()
- {
- DebugScopedSetImplThreadAndMainThreadBlocked
- implThreadAndMainThreadBlocked;
- scoped_ptr<TextureUpdateController> updateController =
- TextureUpdateController::create(
- NULL,
- Proxy::implThread(),
- m_queue.Pass(),
- m_resourceProvider.get());
- updateController->finalize();
- }
-
-protected:
- // Classes required to interact and test the TextureUpdateController
- scoped_ptr<GraphicsContext> m_context;
- scoped_ptr<ResourceProvider> m_resourceProvider;
- scoped_ptr<TextureUpdateQueue> m_queue;
- scoped_ptr<PrioritizedTexture> m_textures[4];
- scoped_ptr<WebThread> m_thread;
- WebCompositorInitializer m_compositorInitializer;
- scoped_ptr<PrioritizedTextureManager> m_textureManager;
- SkBitmap m_bitmap;
-
- // Properties / expectations of this test
- int m_fullUploadCountExpected;
- int m_partialCountExpected;
- int m_totalUploadCountExpected;
- int m_maxUploadCountPerUpdate;
-
- // Dynamic properties of this test
- int m_numConsecutiveFlushes;
- int m_numDanglingUploads;
- int m_numTotalUploads;
- int m_numTotalFlushes;
-};
-
-void WebGraphicsContext3DForUploadTest::flush(void)
-{
- m_test->onFlush();
-}
-
-void WebGraphicsContext3DForUploadTest::shallowFlushCHROMIUM(void)
-{
- m_test->onFlush();
-}
-
-void WebGraphicsContext3DForUploadTest::texSubImage2D(WGC3Denum target,
- WGC3Dint level,
- WGC3Dint xoffset,
- WGC3Dint yoffset,
- WGC3Dsizei width,
- WGC3Dsizei height,
- WGC3Denum format,
- WGC3Denum type,
- const void* pixels)
-{
- m_test->onUpload();
-}
-
-// ZERO UPLOADS TESTS
-TEST_F(TextureUpdateControllerTest, ZeroUploads)
-{
- appendFullUploadsToUpdateQueue(0);
- appendPartialUploadsToUpdateQueue(0);
- updateTextures();
-
- EXPECT_EQ(0, m_numTotalFlushes);
- EXPECT_EQ(0, m_numTotalUploads);
-}
-
-
-// ONE UPLOAD TESTS
-TEST_F(TextureUpdateControllerTest, OneFullUpload)
-{
- appendFullUploadsToUpdateQueue(1);
- appendPartialUploadsToUpdateQueue(0);
- updateTextures();
-
- EXPECT_EQ(1, m_numTotalFlushes);
- EXPECT_EQ(1, m_numTotalUploads);
- EXPECT_EQ(0, m_numDanglingUploads) << "Last upload wasn't followed by a flush.";
-}
-
-TEST_F(TextureUpdateControllerTest, OnePartialUpload)
-{
- appendFullUploadsToUpdateQueue(0);
- appendPartialUploadsToUpdateQueue(1);
- updateTextures();
-
- EXPECT_EQ(1, m_numTotalFlushes);
- EXPECT_EQ(1, m_numTotalUploads);
- EXPECT_EQ(0, m_numDanglingUploads) << "Last upload wasn't followed by a flush.";
-}
-
-TEST_F(TextureUpdateControllerTest, OneFullOnePartialUpload)
-{
- appendFullUploadsToUpdateQueue(1);
- appendPartialUploadsToUpdateQueue(1);
- updateTextures();
-
- EXPECT_EQ(1, m_numTotalFlushes);
- EXPECT_EQ(2, m_numTotalUploads);
- EXPECT_EQ(0, m_numDanglingUploads) << "Last upload wasn't followed by a flush.";
-}
-
-
-// This class of tests upload a number of textures that is a multiple of the flush period.
-const int fullUploadFlushMultipler = 7;
-const int fullCount = fullUploadFlushMultipler * kFlushPeriodFull;
-
-const int partialUploadFlushMultipler = 11;
-const int partialCount = partialUploadFlushMultipler * kFlushPeriodPartial;
-
-TEST_F(TextureUpdateControllerTest, ManyFullUploads)
-{
- appendFullUploadsToUpdateQueue(fullCount);
- appendPartialUploadsToUpdateQueue(0);
- updateTextures();
-
- EXPECT_EQ(fullUploadFlushMultipler, m_numTotalFlushes);
- EXPECT_EQ(fullCount, m_numTotalUploads);
- EXPECT_EQ(0, m_numDanglingUploads) << "Last upload wasn't followed by a flush.";
-}
-
-TEST_F(TextureUpdateControllerTest, ManyPartialUploads)
-{
- appendFullUploadsToUpdateQueue(0);
- appendPartialUploadsToUpdateQueue(partialCount);
- updateTextures();
-
- EXPECT_EQ(partialUploadFlushMultipler, m_numTotalFlushes);
- EXPECT_EQ(partialCount, m_numTotalUploads);
- EXPECT_EQ(0, m_numDanglingUploads) << "Last upload wasn't followed by a flush.";
-}
-
-TEST_F(TextureUpdateControllerTest, ManyFullManyPartialUploads)
-{
- appendFullUploadsToUpdateQueue(fullCount);
- appendPartialUploadsToUpdateQueue(partialCount);
- updateTextures();
-
- EXPECT_EQ(fullUploadFlushMultipler + partialUploadFlushMultipler, m_numTotalFlushes);
- EXPECT_EQ(fullCount + partialCount, m_numTotalUploads);
- EXPECT_EQ(0, m_numDanglingUploads) << "Last upload wasn't followed by a flush.";
-}
-
-class FakeTextureUpdateControllerClient : public cc::TextureUpdateControllerClient {
-public:
- FakeTextureUpdateControllerClient() { reset(); }
- void reset() { m_readyToFinalizeCalled = false; }
- bool readyToFinalizeCalled() const { return m_readyToFinalizeCalled; }
-
- virtual void readyToFinalizeTextureUpdates() OVERRIDE { m_readyToFinalizeCalled = true; }
-
-protected:
- bool m_readyToFinalizeCalled;
-};
-
-class FakeTextureUpdateController : public cc::TextureUpdateController {
-public:
- static scoped_ptr<FakeTextureUpdateController> create(cc::TextureUpdateControllerClient* client, cc::Thread* thread, scoped_ptr<TextureUpdateQueue> queue, ResourceProvider* resourceProvider)
- {
- return make_scoped_ptr(new FakeTextureUpdateController(client, thread, queue.Pass(), resourceProvider));
- }
-
- void setNow(base::TimeTicks time) { m_now = time; }
- virtual base::TimeTicks now() const OVERRIDE { return m_now; }
- void setUpdateMoreTexturesTime(base::TimeDelta time) { m_updateMoreTexturesTime = time; }
- virtual base::TimeDelta updateMoreTexturesTime() const OVERRIDE { return m_updateMoreTexturesTime; }
- void setUpdateMoreTexturesSize(size_t size) { m_updateMoreTexturesSize = size; }
- virtual size_t updateMoreTexturesSize() const OVERRIDE { return m_updateMoreTexturesSize; }
-
-protected:
- FakeTextureUpdateController(cc::TextureUpdateControllerClient* client, cc::Thread* thread, scoped_ptr<TextureUpdateQueue> queue, ResourceProvider* resourceProvider)
- : cc::TextureUpdateController(client, thread, queue.Pass(), resourceProvider)
- , m_updateMoreTexturesSize(0) { }
-
- base::TimeTicks m_now;
- base::TimeDelta m_updateMoreTexturesTime;
- size_t m_updateMoreTexturesSize;
-};
-
-static void runPendingTask(FakeThread* thread, FakeTextureUpdateController* controller)
-{
- EXPECT_TRUE(thread->hasPendingTask());
- controller->setNow(controller->now() + base::TimeDelta::FromMilliseconds(thread->pendingDelayMs()));
- thread->runPendingTask();
-}
-
-TEST_F(TextureUpdateControllerTest, UpdateMoreTextures)
-{
- FakeTextureUpdateControllerClient client;
- FakeThread thread;
-
- setMaxUploadCountPerUpdate(1);
- appendFullUploadsToUpdateQueue(3);
- appendPartialUploadsToUpdateQueue(0);
-
- DebugScopedSetImplThreadAndMainThreadBlocked
- implThreadAndMainThreadBlocked;
- scoped_ptr<FakeTextureUpdateController> controller(FakeTextureUpdateController::create(&client, &thread, m_queue.Pass(), m_resourceProvider.get()));
-
- controller->setNow(
- controller->now() + base::TimeDelta::FromMilliseconds(1));
- controller->setUpdateMoreTexturesTime(
- base::TimeDelta::FromMilliseconds(100));
- controller->setUpdateMoreTexturesSize(1);
- // Not enough time for any updates.
- controller->performMoreUpdates(
- controller->now() + base::TimeDelta::FromMilliseconds(90));
- EXPECT_FALSE(thread.hasPendingTask());
-
- controller->setUpdateMoreTexturesTime(
- base::TimeDelta::FromMilliseconds(100));
- controller->setUpdateMoreTexturesSize(1);
- // Only enough time for 1 update.
- controller->performMoreUpdates(
- controller->now() + base::TimeDelta::FromMilliseconds(120));
- runPendingTask(&thread, controller.get());
- EXPECT_FALSE(thread.hasPendingTask());
- EXPECT_EQ(1, m_numTotalUploads);
-
- controller->setUpdateMoreTexturesTime(
- base::TimeDelta::FromMilliseconds(100));
- controller->setUpdateMoreTexturesSize(1);
- // Enough time for 2 updates.
- controller->performMoreUpdates(
- controller->now() + base::TimeDelta::FromMilliseconds(220));
- runPendingTask(&thread, controller.get());
- runPendingTask(&thread, controller.get());
- EXPECT_FALSE(thread.hasPendingTask());
- EXPECT_TRUE(client.readyToFinalizeCalled());
- EXPECT_EQ(3, m_numTotalUploads);
-}
-
-TEST_F(TextureUpdateControllerTest, NoMoreUpdates)
-{
- FakeTextureUpdateControllerClient client;
- FakeThread thread;
-
- setMaxUploadCountPerUpdate(1);
- appendFullUploadsToUpdateQueue(2);
- appendPartialUploadsToUpdateQueue(0);
-
- DebugScopedSetImplThreadAndMainThreadBlocked
- implThreadAndMainThreadBlocked;
- scoped_ptr<FakeTextureUpdateController> controller(FakeTextureUpdateController::create(&client, &thread, m_queue.Pass(), m_resourceProvider.get()));
-
- controller->setNow(
- controller->now() + base::TimeDelta::FromMilliseconds(1));
- controller->setUpdateMoreTexturesTime(
- base::TimeDelta::FromMilliseconds(100));
- controller->setUpdateMoreTexturesSize(1);
- // Enough time for 3 updates but only 2 necessary.
- controller->performMoreUpdates(
- controller->now() + base::TimeDelta::FromMilliseconds(310));
- runPendingTask(&thread, controller.get());
- runPendingTask(&thread, controller.get());
- EXPECT_FALSE(thread.hasPendingTask());
- EXPECT_TRUE(client.readyToFinalizeCalled());
- EXPECT_EQ(2, m_numTotalUploads);
-
- controller->setUpdateMoreTexturesTime(
- base::TimeDelta::FromMilliseconds(100));
- controller->setUpdateMoreTexturesSize(1);
- // Enough time for updates but no more updates left.
- controller->performMoreUpdates(
- controller->now() + base::TimeDelta::FromMilliseconds(310));
- // 0-delay task used to call readyToFinalizeTextureUpdates().
- runPendingTask(&thread, controller.get());
- EXPECT_FALSE(thread.hasPendingTask());
- EXPECT_TRUE(client.readyToFinalizeCalled());
- EXPECT_EQ(2, m_numTotalUploads);
-}
-
-TEST_F(TextureUpdateControllerTest, UpdatesCompleteInFiniteTime)
-{
- FakeTextureUpdateControllerClient client;
- FakeThread thread;
-
- setMaxUploadCountPerUpdate(1);
- appendFullUploadsToUpdateQueue(2);
- appendPartialUploadsToUpdateQueue(0);
-
- DebugScopedSetImplThreadAndMainThreadBlocked
- implThreadAndMainThreadBlocked;
- scoped_ptr<FakeTextureUpdateController> controller(FakeTextureUpdateController::create(&client, &thread, m_queue.Pass(), m_resourceProvider.get()));
-
- controller->setNow(
- controller->now() + base::TimeDelta::FromMilliseconds(1));
- controller->setUpdateMoreTexturesTime(
- base::TimeDelta::FromMilliseconds(500));
- controller->setUpdateMoreTexturesSize(1);
-
- for (int i = 0; i < 100; i++) {
- if (client.readyToFinalizeCalled())
- break;
-
- // Not enough time for any updates.
- controller->performMoreUpdates(
- controller->now() + base::TimeDelta::FromMilliseconds(400));
-
- if (thread.hasPendingTask())
- runPendingTask(&thread, controller.get());
- }
-
- EXPECT_FALSE(thread.hasPendingTask());
- EXPECT_TRUE(client.readyToFinalizeCalled());
- EXPECT_EQ(2, m_numTotalUploads);
-}
-
-} // namespace
« no previous file with comments | « cc/texture_update_controller.cc ('k') | cc/texture_update_queue.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698