// 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/test/fake_tile_manager.h" #include #include #include #include #include "base/lazy_instance.h" #include "base/thread_task_runner_handle.h" #include "cc/raster/raster_buffer.h" #include "cc/raster/tile_task_runner.h" namespace cc { namespace { class FakeTileTaskRunnerImpl : public TileTaskRunner, public TileTaskClient { public: // Overridden from TileTaskRunner: void Shutdown() override {} void ScheduleTasks(TaskGraph* graph) override { for (const auto& node : graph->nodes) { RasterTask* task = static_cast(node.task); task->WillSchedule(); task->ScheduleOnOriginThread(this); task->DidSchedule(); completed_tasks_.push_back(task); } } void CheckForCompletedTasks() override { for (RasterTask::Vector::iterator it = completed_tasks_.begin(); it != completed_tasks_.end(); ++it) { RasterTask* task = it->get(); task->WillComplete(); task->CompleteOnOriginThread(this); task->DidComplete(); } completed_tasks_.clear(); } ResourceFormat GetResourceFormat(bool must_support_alpha) const override { return RGBA_8888; } bool GetResourceRequiresSwizzle(bool must_support_alpha) const override { return !PlatformColor::SameComponentOrder( GetResourceFormat(must_support_alpha)); } // Overridden from TileTaskClient: scoped_ptr AcquireBufferForRaster( const Resource* resource, uint64_t resource_content_id, uint64_t previous_content_id) override { return nullptr; } void ReleaseBufferForRaster(scoped_ptr buffer) override {} private: RasterTask::Vector completed_tasks_; }; base::LazyInstance g_fake_tile_task_runner = LAZY_INSTANCE_INITIALIZER; } // namespace FakeTileManager::FakeTileManager(TileManagerClient* client) : TileManager(client, base::ThreadTaskRunnerHandle::Get(), std::numeric_limits::max(), false /* use_partial_raster */) { SetResources(nullptr, g_fake_tile_task_runner.Pointer(), std::numeric_limits::max(), false /* use_gpu_rasterization */); } FakeTileManager::FakeTileManager(TileManagerClient* client, ResourcePool* resource_pool) : TileManager(client, base::ThreadTaskRunnerHandle::Get(), std::numeric_limits::max(), false /* use_partial_raster */) { SetResources(resource_pool, g_fake_tile_task_runner.Pointer(), std::numeric_limits::max(), false /* use_gpu_rasterization */); } FakeTileManager::~FakeTileManager() {} bool FakeTileManager::HasBeenAssignedMemory(Tile* tile) { return std::find(tiles_for_raster.begin(), tiles_for_raster.end(), tile) != tiles_for_raster.end(); } void FakeTileManager::Release(Tile* tile) { TileManager::Release(tile); FreeResourcesForReleasedTiles(); CleanUpReleasedTiles(); } } // namespace cc