Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / cc / test / fake_tile_manager.cc
index cba9db4..d15819d 100644 (file)
 #include "cc/test/fake_tile_manager.h"
 
 #include <deque>
-#include <limits>
 
-#include "cc/resources/raster_worker_pool.h"
+#include "base/lazy_instance.h"
+#include "cc/resources/rasterizer.h"
 
 namespace cc {
 
 namespace {
 
-class FakeRasterWorkerPool : public RasterWorkerPool {
+class FakeRasterizerImpl : public Rasterizer, public RasterizerTaskClient {
  public:
-  FakeRasterWorkerPool() : RasterWorkerPool(NULL, NULL) {}
-
-  // Overridden from RasterWorkerPool:
-  virtual void ScheduleTasks(RasterTask::Queue* queue) OVERRIDE {
-    for (RasterTaskQueueIterator it(queue); it; ++it) {
-      internal::RasterWorkerPoolTask* task = *it;
-
+  // Overridden from Rasterizer:
+  virtual void SetClient(RasterizerClient* client) OVERRIDE {}
+  virtual void Shutdown() OVERRIDE {}
+  virtual void ScheduleTasks(RasterTaskQueue* queue) OVERRIDE {
+    for (RasterTaskQueue::Item::Vector::const_iterator it =
+             queue->items.begin();
+         it != queue->items.end();
+         ++it) {
+      RasterTask* task = it->task;
+
+      task->WillSchedule();
+      task->ScheduleOnOriginThread(this);
       task->DidSchedule();
 
       completed_tasks_.push_back(task);
     }
   }
   virtual void CheckForCompletedTasks() OVERRIDE {
-    while (!completed_tasks_.empty()) {
-      internal::WorkerPoolTask* task = completed_tasks_.front().get();
+    for (RasterTask::Vector::iterator it = completed_tasks_.begin();
+         it != completed_tasks_.end();
+         ++it) {
+      RasterTask* task = it->get();
 
       task->WillComplete();
+      task->CompleteOnOriginThread(this);
       task->DidComplete();
-      task->RunReplyOnOriginThread();
 
-      completed_tasks_.pop_front();
+      task->RunReplyOnOriginThread();
     }
-  }
-  virtual GLenum GetResourceTarget() const OVERRIDE {
-    return GL_TEXTURE_2D;
-  }
-  virtual ResourceFormat GetResourceFormat() const OVERRIDE {
-    return RGBA_8888;
+    completed_tasks_.clear();
   }
 
-  // Overridden from internal::WorkerPoolTaskClient:
-  virtual SkCanvas* AcquireCanvasForRaster(internal::RasterWorkerPoolTask* task)
-      OVERRIDE {
+  // Overridden from RasterizerTaskClient:
+  virtual SkCanvas* AcquireCanvasForRaster(RasterTask* task) OVERRIDE {
     return NULL;
   }
-  virtual void OnRasterCompleted(internal::RasterWorkerPoolTask* task,
-                                 const PicturePileImpl::Analysis& analysis)
-      OVERRIDE {}
-  virtual void OnImageDecodeCompleted(internal::WorkerPoolTask* task) OVERRIDE {
-  }
+  virtual void ReleaseCanvasForRaster(RasterTask* task) OVERRIDE {}
 
  private:
-  // Overridden from RasterWorkerPool:
-  virtual void OnRasterTasksFinished() OVERRIDE {}
-  virtual void OnRasterTasksRequiredForActivationFinished() OVERRIDE {}
-
-  TaskDeque completed_tasks_;
+  RasterTask::Vector completed_tasks_;
 };
+base::LazyInstance<FakeRasterizerImpl> g_fake_rasterizer =
+    LAZY_INSTANCE_INITIALIZER;
 
 }  // namespace
 
 FakeTileManager::FakeTileManager(TileManagerClient* client)
     : TileManager(client,
+                  base::MessageLoopProxy::current(),
                   NULL,
-                  NULL,
-                  make_scoped_ptr<RasterWorkerPool>(new FakeRasterWorkerPool),
-                  make_scoped_ptr<RasterWorkerPool>(new FakeRasterWorkerPool),
-                  std::numeric_limits<unsigned>::max(),
-                  NULL,
-                  true) {}
+                  g_fake_rasterizer.Pointer(),
+                  NULL) {}
 
 FakeTileManager::FakeTileManager(TileManagerClient* client,
-                                 ResourceProvider* resource_provider)
+                                 ResourcePool* resource_pool)
     : TileManager(client,
-                  resource_provider,
-                  NULL,
-                  make_scoped_ptr<RasterWorkerPool>(new FakeRasterWorkerPool),
-                  make_scoped_ptr<RasterWorkerPool>(new FakeRasterWorkerPool),
-                  std::numeric_limits<unsigned>::max(),
-                  NULL,
-                  true) {}
-
-FakeTileManager::FakeTileManager(TileManagerClient* client,
-                                 ResourceProvider* resource_provider,
-                                 bool allow_on_demand_raster)
-    : TileManager(client,
-                  resource_provider,
-                  NULL,
-                  make_scoped_ptr<RasterWorkerPool>(new FakeRasterWorkerPool),
-                  make_scoped_ptr<RasterWorkerPool>(new FakeRasterWorkerPool),
-                  std::numeric_limits<unsigned>::max(),
-                  NULL,
-                  allow_on_demand_raster) {}
-
-FakeTileManager::FakeTileManager(TileManagerClient* client,
-                                 ResourceProvider* resource_provider,
-                                 size_t raster_task_limit_bytes)
-    : TileManager(client,
-                  resource_provider,
-                  NULL,
-                  make_scoped_ptr<RasterWorkerPool>(new FakeRasterWorkerPool),
-                  make_scoped_ptr<RasterWorkerPool>(new FakeRasterWorkerPool),
-                  raster_task_limit_bytes,
-                  NULL,
-                  true) {}
+                  base::MessageLoopProxy::current(),
+                  resource_pool,
+                  g_fake_rasterizer.Pointer(),
+                  NULL) {}
 
 FakeTileManager::~FakeTileManager() {}
 
@@ -135,6 +100,8 @@ void FakeTileManager::DidFinishRunningTasksForTesting() {
 
 void FakeTileManager::Release(Tile* tile) {
   TileManager::Release(tile);
+
+  FreeResourcesForReleasedTiles();
   CleanUpReleasedTiles();
 }