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

Unified Diff: cc/resources/resource_update_controller_unittest.cc

Issue 1057283003: Remove parts of //cc we aren't using (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 9 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/resources/resource_update_controller.cc ('k') | cc/resources/resource_update_queue.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/resources/resource_update_controller_unittest.cc
diff --git a/cc/resources/resource_update_controller_unittest.cc b/cc/resources/resource_update_controller_unittest.cc
deleted file mode 100644
index 1aa0902d469932c0ea6eb4c2598574c4c40ae666..0000000000000000000000000000000000000000
--- a/cc/resources/resource_update_controller_unittest.cc
+++ /dev/null
@@ -1,516 +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 "cc/resources/resource_update_controller.h"
-
-#include "base/test/test_simple_task_runner.h"
-#include "cc/resources/prioritized_resource_manager.h"
-#include "cc/test/fake_output_surface.h"
-#include "cc/test/fake_output_surface_client.h"
-#include "cc/test/fake_proxy.h"
-#include "cc/test/scheduler_test_common.h"
-#include "cc/test/test_shared_bitmap_manager.h"
-#include "cc/test/test_web_graphics_context_3d.h"
-#include "cc/test/tiled_layer_test_common.h"
-#include "cc/trees/single_thread_proxy.h" // For DebugScopedSetImplThread
-#include "testing/gtest/include/gtest/gtest.h"
-#include "third_party/khronos/GLES2/gl2ext.h"
-
-using testing::Test;
-
-namespace cc {
-namespace {
-
-const int kFlushPeriodFull = 4;
-const int kFlushPeriodPartial = kFlushPeriodFull;
-
-class ResourceUpdateControllerTest;
-
-class WebGraphicsContext3DForUploadTest : public TestWebGraphicsContext3D {
- public:
- explicit WebGraphicsContext3DForUploadTest(ResourceUpdateControllerTest* test)
- : test_(test) {}
-
- void flush() override;
- void shallowFlushCHROMIUM() override;
- void texSubImage2D(GLenum target,
- GLint level,
- GLint xoffset,
- GLint yoffset,
- GLsizei width,
- GLsizei height,
- GLenum format,
- GLenum type,
- const void* pixels) override;
-
- void getQueryObjectuivEXT(GLuint id, GLenum pname, GLuint* value) override;
-
- private:
- ResourceUpdateControllerTest* test_;
-};
-
-class ResourceUpdateControllerTest : public Test {
- public:
- ResourceUpdateControllerTest()
- : proxy_(),
- queue_(make_scoped_ptr(new ResourceUpdateQueue)),
- resource_manager_(PrioritizedResourceManager::Create(&proxy_)),
- query_results_available_(0),
- full_upload_count_expected_(0),
- partial_count_expected_(0),
- total_upload_count_expected_(0),
- max_upload_count_per_update_(0),
- num_consecutive_flushes_(0),
- num_dangling_uploads_(0),
- num_total_uploads_(0),
- num_total_flushes_(0) {}
-
- ~ResourceUpdateControllerTest() override {
- DebugScopedSetImplThreadAndMainThreadBlocked
- impl_thread_and_main_thread_blocked(&proxy_);
- resource_manager_->ClearAllMemory(resource_provider_.get());
- }
-
- public:
- void OnFlush() {
- // Check for back-to-back flushes.
- EXPECT_EQ(0, num_consecutive_flushes_) << "Back-to-back flushes detected.";
-
- num_dangling_uploads_ = 0;
- num_consecutive_flushes_++;
- num_total_flushes_++;
- }
-
- void OnUpload() {
- // Check for too many consecutive uploads
- if (num_total_uploads_ < full_upload_count_expected_) {
- EXPECT_LT(num_dangling_uploads_, kFlushPeriodFull)
- << "Too many consecutive full uploads detected.";
- } else {
- EXPECT_LT(num_dangling_uploads_, kFlushPeriodPartial)
- << "Too many consecutive partial uploads detected.";
- }
-
- num_consecutive_flushes_ = 0;
- num_dangling_uploads_++;
- num_total_uploads_++;
- }
-
- bool IsQueryResultAvailable() {
- if (!query_results_available_)
- return false;
-
- query_results_available_--;
- return true;
- }
-
- protected:
- void SetUp() override {
- bitmap_.allocN32Pixels(300, 150);
-
- for (int i = 0; i < 4; i++) {
- textures_[i] = PrioritizedResource::Create(resource_manager_.get(),
- gfx::Size(300, 150),
- RGBA_8888);
- textures_[i]->
- set_request_priority(PriorityCalculator::VisiblePriority(true));
- }
- resource_manager_->PrioritizeTextures();
-
- output_surface_ = FakeOutputSurface::Create3d(
- scoped_ptr<TestWebGraphicsContext3D>(
- new WebGraphicsContext3DForUploadTest(this)));
- CHECK(output_surface_->BindToClient(&output_surface_client_));
-
- shared_bitmap_manager_.reset(new TestSharedBitmapManager());
- resource_provider_ = ResourceProvider::Create(output_surface_.get(),
- shared_bitmap_manager_.get(),
- NULL,
- NULL,
- 0,
- false,
- 1);
- }
-
- void AppendFullUploadsOfIndexedTextureToUpdateQueue(int count,
- int texture_index) {
- full_upload_count_expected_ += count;
- total_upload_count_expected_ += count;
-
- const gfx::Rect rect(0, 0, 300, 150);
- const ResourceUpdate upload = ResourceUpdate::Create(
- textures_[texture_index].get(), &bitmap_, rect, rect, gfx::Vector2d());
- for (int i = 0; i < count; i++)
- queue_->AppendFullUpload(upload);
- }
-
- void AppendFullUploadsToUpdateQueue(int count) {
- AppendFullUploadsOfIndexedTextureToUpdateQueue(count, 0);
- }
-
- void AppendPartialUploadsOfIndexedTextureToUpdateQueue(int count,
- int texture_index) {
- partial_count_expected_ += count;
- total_upload_count_expected_ += count;
-
- const gfx::Rect rect(0, 0, 100, 100);
- const ResourceUpdate upload = ResourceUpdate::Create(
- textures_[texture_index].get(), &bitmap_, rect, rect, gfx::Vector2d());
- for (int i = 0; i < count; i++)
- queue_->AppendPartialUpload(upload);
- }
-
- void AppendPartialUploadsToUpdateQueue(int count) {
- AppendPartialUploadsOfIndexedTextureToUpdateQueue(count, 0);
- }
-
- void SetMaxUploadCountPerUpdate(int count) {
- max_upload_count_per_update_ = count;
- }
-
- void UpdateTextures() {
- DebugScopedSetImplThreadAndMainThreadBlocked
- impl_thread_and_main_thread_blocked(&proxy_);
- scoped_ptr<ResourceUpdateController> update_controller =
- ResourceUpdateController::Create(NULL,
- proxy_.ImplThreadTaskRunner(),
- queue_.Pass(),
- resource_provider_.get());
- update_controller->Finalize();
- }
-
- void MakeQueryResultAvailable() { query_results_available_++; }
-
- protected:
- // Classes required to interact and test the ResourceUpdateController
- FakeProxy proxy_;
- FakeOutputSurfaceClient output_surface_client_;
- scoped_ptr<OutputSurface> output_surface_;
- scoped_ptr<SharedBitmapManager> shared_bitmap_manager_;
- scoped_ptr<ResourceProvider> resource_provider_;
- scoped_ptr<ResourceUpdateQueue> queue_;
- scoped_ptr<PrioritizedResource> textures_[4];
- scoped_ptr<PrioritizedResourceManager> resource_manager_;
- SkBitmap bitmap_;
- int query_results_available_;
-
- // Properties / expectations of this test
- int full_upload_count_expected_;
- int partial_count_expected_;
- int total_upload_count_expected_;
- int max_upload_count_per_update_;
-
- // Dynamic properties of this test
- int num_consecutive_flushes_;
- int num_dangling_uploads_;
- int num_total_uploads_;
- int num_total_flushes_;
-};
-
-void WebGraphicsContext3DForUploadTest::flush() { test_->OnFlush(); }
-
-void WebGraphicsContext3DForUploadTest::shallowFlushCHROMIUM() {
- test_->OnFlush();
-}
-
-void WebGraphicsContext3DForUploadTest::texSubImage2D(GLenum target,
- GLint level,
- GLint xoffset,
- GLint yoffset,
- GLsizei width,
- GLsizei height,
- GLenum format,
- GLenum type,
- const void* pixels) {
- test_->OnUpload();
-}
-
-void WebGraphicsContext3DForUploadTest::getQueryObjectuivEXT(GLuint id,
- GLenum pname,
- GLuint* params) {
- if (pname == GL_QUERY_RESULT_AVAILABLE_EXT)
- *params = test_->IsQueryResultAvailable();
-}
-
-// ZERO UPLOADS TESTS
-TEST_F(ResourceUpdateControllerTest, ZeroUploads) {
- AppendFullUploadsToUpdateQueue(0);
- AppendPartialUploadsToUpdateQueue(0);
- UpdateTextures();
-
- EXPECT_EQ(0, num_total_flushes_);
- EXPECT_EQ(0, num_total_uploads_);
-}
-
-// ONE UPLOAD TESTS
-TEST_F(ResourceUpdateControllerTest, OneFullUpload) {
- AppendFullUploadsToUpdateQueue(1);
- AppendPartialUploadsToUpdateQueue(0);
- UpdateTextures();
-
- EXPECT_EQ(1, num_total_flushes_);
- EXPECT_EQ(1, num_total_uploads_);
- EXPECT_EQ(0, num_dangling_uploads_)
- << "Last upload wasn't followed by a flush.";
-}
-
-TEST_F(ResourceUpdateControllerTest, OnePartialUpload) {
- AppendFullUploadsToUpdateQueue(0);
- AppendPartialUploadsToUpdateQueue(1);
- UpdateTextures();
-
- EXPECT_EQ(1, num_total_flushes_);
- EXPECT_EQ(1, num_total_uploads_);
- EXPECT_EQ(0, num_dangling_uploads_)
- << "Last upload wasn't followed by a flush.";
-}
-
-TEST_F(ResourceUpdateControllerTest, OneFullOnePartialUpload) {
- AppendFullUploadsToUpdateQueue(1);
- AppendPartialUploadsToUpdateQueue(1);
- UpdateTextures();
-
- EXPECT_EQ(1, num_total_flushes_);
- EXPECT_EQ(2, num_total_uploads_);
- EXPECT_EQ(0, num_dangling_uploads_)
- << "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 full_upload_flush_multipler = 7;
-const int full_count = full_upload_flush_multipler * kFlushPeriodFull;
-
-const int partial_upload_flush_multipler = 11;
-const int partial_count =
- partial_upload_flush_multipler * kFlushPeriodPartial;
-
-TEST_F(ResourceUpdateControllerTest, ManyFullUploads) {
- AppendFullUploadsToUpdateQueue(full_count);
- AppendPartialUploadsToUpdateQueue(0);
- UpdateTextures();
-
- EXPECT_EQ(full_upload_flush_multipler, num_total_flushes_);
- EXPECT_EQ(full_count, num_total_uploads_);
- EXPECT_EQ(0, num_dangling_uploads_)
- << "Last upload wasn't followed by a flush.";
-}
-
-TEST_F(ResourceUpdateControllerTest, ManyPartialUploads) {
- AppendFullUploadsToUpdateQueue(0);
- AppendPartialUploadsToUpdateQueue(partial_count);
- UpdateTextures();
-
- EXPECT_EQ(partial_upload_flush_multipler, num_total_flushes_);
- EXPECT_EQ(partial_count, num_total_uploads_);
- EXPECT_EQ(0, num_dangling_uploads_)
- << "Last upload wasn't followed by a flush.";
-}
-
-TEST_F(ResourceUpdateControllerTest, ManyFullManyPartialUploads) {
- AppendFullUploadsToUpdateQueue(full_count);
- AppendPartialUploadsToUpdateQueue(partial_count);
- UpdateTextures();
-
- EXPECT_EQ(full_upload_flush_multipler + partial_upload_flush_multipler,
- num_total_flushes_);
- EXPECT_EQ(full_count + partial_count, num_total_uploads_);
- EXPECT_EQ(0, num_dangling_uploads_)
- << "Last upload wasn't followed by a flush.";
-}
-
-class FakeResourceUpdateControllerClient
- : public ResourceUpdateControllerClient {
- public:
- FakeResourceUpdateControllerClient() { Reset(); }
- void Reset() { ready_to_finalize_called_ = false; }
- bool ReadyToFinalizeCalled() const { return ready_to_finalize_called_; }
-
- void ReadyToFinalizeTextureUpdates() override {
- ready_to_finalize_called_ = true;
- }
-
- protected:
- bool ready_to_finalize_called_;
-};
-
-class FakeResourceUpdateController : public ResourceUpdateController {
- public:
- static scoped_ptr<FakeResourceUpdateController> Create(
- ResourceUpdateControllerClient* client,
- base::TestSimpleTaskRunner* task_runner,
- scoped_ptr<ResourceUpdateQueue> queue,
- ResourceProvider* resource_provider) {
- return make_scoped_ptr(new FakeResourceUpdateController(
- client, task_runner, queue.Pass(), resource_provider));
- }
-
- void SetNow(base::TimeTicks time) { now_ = time; }
- base::TimeTicks Now() const { return now_; }
- void SetUpdateTextureTime(base::TimeDelta time) {
- update_textures_time_ = time;
- }
- base::TimeTicks UpdateMoreTexturesCompletionTime() override {
- size_t total_updates =
- resource_provider_->NumBlockingUploads() + update_more_textures_size_;
- return now_ + total_updates * update_textures_time_;
- }
- void SetUpdateMoreTexturesSize(size_t size) {
- update_more_textures_size_ = size;
- }
- size_t UpdateMoreTexturesSize() const override {
- return update_more_textures_size_;
- }
-
- protected:
- FakeResourceUpdateController(ResourceUpdateControllerClient* client,
- base::TestSimpleTaskRunner* task_runner,
- scoped_ptr<ResourceUpdateQueue> queue,
- ResourceProvider* resource_provider)
- : ResourceUpdateController(
- client, task_runner, queue.Pass(), resource_provider),
- resource_provider_(resource_provider),
- update_more_textures_size_(0) {}
-
- ResourceProvider* resource_provider_;
- base::TimeTicks now_;
- base::TimeDelta update_textures_time_;
- size_t update_more_textures_size_;
-};
-
-static void RunPendingTask(base::TestSimpleTaskRunner* task_runner,
- FakeResourceUpdateController* controller) {
- EXPECT_TRUE(task_runner->HasPendingTask());
- controller->SetNow(controller->Now() + task_runner->NextPendingTaskDelay());
- task_runner->RunPendingTasks();
-}
-
-TEST_F(ResourceUpdateControllerTest, UpdateMoreTextures) {
- FakeResourceUpdateControllerClient client;
- scoped_refptr<base::TestSimpleTaskRunner> task_runner =
- new base::TestSimpleTaskRunner;
-
- SetMaxUploadCountPerUpdate(1);
- AppendFullUploadsToUpdateQueue(3);
- AppendPartialUploadsToUpdateQueue(0);
-
- DebugScopedSetImplThreadAndMainThreadBlocked
- impl_thread_and_main_thread_blocked(&proxy_);
- scoped_ptr<FakeResourceUpdateController> controller(
- FakeResourceUpdateController::Create(&client,
- task_runner.get(),
- queue_.Pass(),
- resource_provider_.get()));
-
- controller->SetNow(controller->Now() + base::TimeDelta::FromMilliseconds(1));
- controller->SetUpdateTextureTime(base::TimeDelta::FromMilliseconds(100));
- controller->SetUpdateMoreTexturesSize(1);
- // Not enough time for any updates.
- controller->PerformMoreUpdates(controller->Now() +
- base::TimeDelta::FromMilliseconds(90));
- EXPECT_FALSE(task_runner->HasPendingTask());
-
- controller->SetUpdateTextureTime(base::TimeDelta::FromMilliseconds(100));
- controller->SetUpdateMoreTexturesSize(1);
- // Only enough time for 1 update.
- controller->PerformMoreUpdates(controller->Now() +
- base::TimeDelta::FromMilliseconds(120));
- EXPECT_FALSE(task_runner->HasPendingTask());
- EXPECT_EQ(1, num_total_uploads_);
-
- // Complete one upload.
- MakeQueryResultAvailable();
-
- controller->SetUpdateTextureTime(base::TimeDelta::FromMilliseconds(100));
- controller->SetUpdateMoreTexturesSize(1);
- // Enough time for 2 updates.
- controller->PerformMoreUpdates(controller->Now() +
- base::TimeDelta::FromMilliseconds(220));
- RunPendingTask(task_runner.get(), controller.get());
- EXPECT_FALSE(task_runner->HasPendingTask());
- EXPECT_TRUE(client.ReadyToFinalizeCalled());
- EXPECT_EQ(3, num_total_uploads_);
-}
-
-TEST_F(ResourceUpdateControllerTest, NoMoreUpdates) {
- FakeResourceUpdateControllerClient client;
- scoped_refptr<base::TestSimpleTaskRunner> task_runner =
- new base::TestSimpleTaskRunner;
-
- SetMaxUploadCountPerUpdate(1);
- AppendFullUploadsToUpdateQueue(2);
- AppendPartialUploadsToUpdateQueue(0);
-
- DebugScopedSetImplThreadAndMainThreadBlocked
- impl_thread_and_main_thread_blocked(&proxy_);
- scoped_ptr<FakeResourceUpdateController> controller(
- FakeResourceUpdateController::Create(&client,
- task_runner.get(),
- queue_.Pass(),
- resource_provider_.get()));
-
- controller->SetNow(controller->Now() + base::TimeDelta::FromMilliseconds(1));
- controller->SetUpdateTextureTime(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(task_runner.get(), controller.get());
- EXPECT_FALSE(task_runner->HasPendingTask());
- EXPECT_TRUE(client.ReadyToFinalizeCalled());
- EXPECT_EQ(2, num_total_uploads_);
-
- client.Reset();
- controller->SetUpdateTextureTime(base::TimeDelta::FromMilliseconds(100));
- controller->SetUpdateMoreTexturesSize(1);
- // Enough time for updates but no more updates left.
- controller->PerformMoreUpdates(controller->Now() +
- base::TimeDelta::FromMilliseconds(310));
-
- // ReadyToFinalizeTextureUpdates should only be called once.
- EXPECT_FALSE(task_runner->HasPendingTask());
- EXPECT_FALSE(client.ReadyToFinalizeCalled());
- EXPECT_EQ(2, num_total_uploads_);
-}
-
-TEST_F(ResourceUpdateControllerTest, UpdatesCompleteInFiniteTime) {
- FakeResourceUpdateControllerClient client;
- scoped_refptr<base::TestSimpleTaskRunner> task_runner =
- new base::TestSimpleTaskRunner;
-
- SetMaxUploadCountPerUpdate(1);
- AppendFullUploadsToUpdateQueue(2);
- AppendPartialUploadsToUpdateQueue(0);
-
- DebugScopedSetImplThreadAndMainThreadBlocked
- impl_thread_and_main_thread_blocked(&proxy_);
- scoped_ptr<FakeResourceUpdateController> controller(
- FakeResourceUpdateController::Create(&client,
- task_runner.get(),
- queue_.Pass(),
- resource_provider_.get()));
-
- controller->SetNow(controller->Now() + base::TimeDelta::FromMilliseconds(1));
- controller->SetUpdateTextureTime(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 (task_runner->HasPendingTask())
- RunPendingTask(task_runner.get(), controller.get());
- }
-
- EXPECT_FALSE(task_runner->HasPendingTask());
- EXPECT_TRUE(client.ReadyToFinalizeCalled());
- EXPECT_EQ(2, num_total_uploads_);
-}
-
-} // namespace
-} // namespace cc
« no previous file with comments | « cc/resources/resource_update_controller.cc ('k') | cc/resources/resource_update_queue.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698