Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / cc / test / fake_tile_manager.cc
1 // Copyright 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "cc/test/fake_tile_manager.h"
6
7 #include <deque>
8
9 #include "base/lazy_instance.h"
10 #include "cc/resources/rasterizer.h"
11
12 namespace cc {
13
14 namespace {
15
16 class FakeRasterizerImpl : public Rasterizer, public RasterizerTaskClient {
17  public:
18   // Overridden from Rasterizer:
19   virtual void SetClient(RasterizerClient* client) OVERRIDE {}
20   virtual void Shutdown() OVERRIDE {}
21   virtual void ScheduleTasks(RasterTaskQueue* queue) OVERRIDE {
22     for (RasterTaskQueue::Item::Vector::const_iterator it =
23              queue->items.begin();
24          it != queue->items.end();
25          ++it) {
26       RasterTask* task = it->task;
27
28       task->WillSchedule();
29       task->ScheduleOnOriginThread(this);
30       task->DidSchedule();
31
32       completed_tasks_.push_back(task);
33     }
34   }
35   virtual void CheckForCompletedTasks() OVERRIDE {
36     for (RasterTask::Vector::iterator it = completed_tasks_.begin();
37          it != completed_tasks_.end();
38          ++it) {
39       RasterTask* task = it->get();
40
41       task->WillComplete();
42       task->CompleteOnOriginThread(this);
43       task->DidComplete();
44
45       task->RunReplyOnOriginThread();
46     }
47     completed_tasks_.clear();
48   }
49
50   // Overridden from RasterizerTaskClient:
51   virtual SkCanvas* AcquireCanvasForRaster(RasterTask* task) OVERRIDE {
52     return NULL;
53   }
54   virtual void ReleaseCanvasForRaster(RasterTask* task) OVERRIDE {}
55
56  private:
57   RasterTask::Vector completed_tasks_;
58 };
59 base::LazyInstance<FakeRasterizerImpl> g_fake_rasterizer =
60     LAZY_INSTANCE_INITIALIZER;
61
62 }  // namespace
63
64 FakeTileManager::FakeTileManager(TileManagerClient* client)
65     : TileManager(client,
66                   NULL,
67                   g_fake_rasterizer.Pointer(),
68                   g_fake_rasterizer.Pointer(),
69                   true,
70                   NULL) {}
71
72 FakeTileManager::FakeTileManager(TileManagerClient* client,
73                                  ResourcePool* resource_pool)
74     : TileManager(client,
75                   resource_pool,
76                   g_fake_rasterizer.Pointer(),
77                   g_fake_rasterizer.Pointer(),
78                   true,
79                   NULL) {}
80
81 FakeTileManager::FakeTileManager(TileManagerClient* client,
82                                  ResourcePool* resource_pool,
83                                  bool allow_on_demand_raster)
84     : TileManager(client,
85                   resource_pool,
86                   g_fake_rasterizer.Pointer(),
87                   g_fake_rasterizer.Pointer(),
88                   allow_on_demand_raster,
89                   NULL) {}
90
91 FakeTileManager::~FakeTileManager() {}
92
93 void FakeTileManager::AssignMemoryToTiles(
94     const GlobalStateThatImpactsTilePriority& state) {
95   tiles_for_raster.clear();
96   all_tiles.Clear();
97
98   SetGlobalStateForTesting(state);
99   GetTilesWithAssignedBins(&all_tiles);
100   AssignGpuMemoryToTiles(&all_tiles, &tiles_for_raster);
101 }
102
103 bool FakeTileManager::HasBeenAssignedMemory(Tile* tile) {
104   return std::find(tiles_for_raster.begin(),
105                    tiles_for_raster.end(),
106                    tile) != tiles_for_raster.end();
107 }
108
109 void FakeTileManager::DidFinishRunningTasksForTesting() {
110   DidFinishRunningTasks();
111 }
112
113 void FakeTileManager::Release(Tile* tile) {
114   TileManager::Release(tile);
115   CleanUpReleasedTiles();
116 }
117
118 }  // namespace cc