OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2012 Google Inc. All rights reserved. | 2 * Copyright (C) 2012 Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
(...skipping 25 matching lines...) Expand all Loading... |
36 #include <gmock/gmock.h> | 36 #include <gmock/gmock.h> |
37 #include <gtest/gtest.h> | 37 #include <gtest/gtest.h> |
38 | 38 |
39 using namespace blink; | 39 using namespace blink; |
40 using testing::InSequence; | 40 using testing::InSequence; |
41 using testing::Return; | 41 using testing::Return; |
42 using testing::Test; | 42 using testing::Test; |
43 | 43 |
44 namespace { | 44 namespace { |
45 | 45 |
46 class MockWebGraphicsContext3DProvider : public blink::WebGraphicsContext3DProvi
der { | 46 class MockWebGraphicsContext3DProvider : public WebGraphicsContext3DProvider { |
47 public: | 47 public: |
48 MockWebGraphicsContext3DProvider(blink::WebGraphicsContext3D* context3d) | 48 MockWebGraphicsContext3DProvider(WebGraphicsContext3D* context3d) |
49 : m_context3d(context3d) { } | 49 : m_context3d(context3d) { } |
50 | 50 |
51 blink::WebGraphicsContext3D* context3d() | 51 WebGraphicsContext3D* context3d() |
52 { | 52 { |
53 return m_context3d; | 53 return m_context3d; |
54 } | 54 } |
55 | 55 |
56 GrContext* grContext() | 56 GrContext* grContext() |
57 { | 57 { |
58 return 0; | 58 return 0; |
59 } | 59 } |
60 | 60 |
61 private: | 61 private: |
62 blink::WebGraphicsContext3D* m_context3d; | 62 WebGraphicsContext3D* m_context3d; |
63 }; | 63 }; |
64 | 64 |
65 class FakeCanvas2DLayerBridge : public Canvas2DLayerBridge { | 65 class FakeCanvas2DLayerBridge : public Canvas2DLayerBridge { |
66 public: | 66 public: |
67 FakeCanvas2DLayerBridge(blink::WebGraphicsContext3D* context, PassOwnPtr<SkD
eferredCanvas> canvas, PassRefPtr<SkSurface> surface) | 67 FakeCanvas2DLayerBridge(WebGraphicsContext3D* context, PassOwnPtr<SkDeferred
Canvas> canvas, PassRefPtr<SkSurface> surface) |
68 : Canvas2DLayerBridge(adoptPtr(new MockWebGraphicsContext3DProvider(cont
ext)), canvas, surface, 0, NonOpaque) | 68 : Canvas2DLayerBridge(adoptPtr(new MockWebGraphicsContext3DProvider(cont
ext)), canvas, surface, 0, NonOpaque) |
69 , m_freeableBytes(0) | 69 , m_freeableBytes(0) |
70 , m_freeMemoryIfPossibleCount(0) | 70 , m_freeMemoryIfPossibleCount(0) |
71 , m_flushCount(0) | 71 , m_flushCount(0) |
72 { | 72 { |
73 } | 73 } |
74 | 74 |
75 virtual size_t storageAllocatedForRecording() OVERRIDE | 75 virtual size_t storageAllocatedForRecording() OVERRIDE |
76 { | 76 { |
77 // Because the fake layer has no canvas to query, just | 77 // Because the fake layer has no canvas to query, just |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
128 | 128 |
129 } // unnamed namespace | 129 } // unnamed namespace |
130 | 130 |
131 class Canvas2DLayerManagerTest : public Test { | 131 class Canvas2DLayerManagerTest : public Test { |
132 protected: | 132 protected: |
133 void storageAllocationTrackingTest() | 133 void storageAllocationTrackingTest() |
134 { | 134 { |
135 Canvas2DLayerManager& manager = Canvas2DLayerManager::get(); | 135 Canvas2DLayerManager& manager = Canvas2DLayerManager::get(); |
136 manager.init(10, 10); | 136 manager.init(10, 10); |
137 { | 137 { |
138 OwnPtr<blink::MockWebGraphicsContext3D> webContext = adoptPtr(new bl
ink::MockWebGraphicsContext3D); | 138 OwnPtr<MockWebGraphicsContext3D> webContext = adoptPtr(new MockWebGr
aphicsContext3D); |
139 RefPtr<SkSurface> surface1 = adoptRef(SkSurface::NewRasterPMColor(1,
1)); | 139 RefPtr<SkSurface> surface1 = adoptRef(SkSurface::NewRasterPMColor(1,
1)); |
140 OwnPtr<SkDeferredCanvas> canvas1 = adoptPtr(SkDeferredCanvas::Create
(surface1.get())); | 140 OwnPtr<SkDeferredCanvas> canvas1 = adoptPtr(SkDeferredCanvas::Create
(surface1.get())); |
141 FakeCanvas2DLayerBridgePtr layer1(adoptRef(new FakeCanvas2DLayerBrid
ge(webContext.get(), canvas1.release(), surface1.release()))); | 141 FakeCanvas2DLayerBridgePtr layer1(adoptRef(new FakeCanvas2DLayerBrid
ge(webContext.get(), canvas1.release(), surface1.release()))); |
142 EXPECT_EQ((size_t)0, manager.m_bytesAllocated); | 142 EXPECT_EQ((size_t)0, manager.m_bytesAllocated); |
143 layer1->storageAllocatedForRecordingChanged(1); | 143 layer1->storageAllocatedForRecordingChanged(1); |
144 EXPECT_EQ((size_t)1, manager.m_bytesAllocated); | 144 EXPECT_EQ((size_t)1, manager.m_bytesAllocated); |
145 // Test allocation increase | 145 // Test allocation increase |
146 layer1->storageAllocatedForRecordingChanged(2); | 146 layer1->storageAllocatedForRecordingChanged(2); |
147 EXPECT_EQ((size_t)2, manager.m_bytesAllocated); | 147 EXPECT_EQ((size_t)2, manager.m_bytesAllocated); |
148 // Test allocation decrease | 148 // Test allocation decrease |
149 layer1->storageAllocatedForRecordingChanged(1); | 149 layer1->storageAllocatedForRecordingChanged(1); |
150 EXPECT_EQ((size_t)1, manager.m_bytesAllocated); | 150 EXPECT_EQ((size_t)1, manager.m_bytesAllocated); |
151 { | 151 { |
152 RefPtr<SkSurface> surface2 = adoptRef(SkSurface::NewRasterPMColo
r(1, 1)); | 152 RefPtr<SkSurface> surface2 = adoptRef(SkSurface::NewRasterPMColo
r(1, 1)); |
153 OwnPtr<SkDeferredCanvas> canvas2 = adoptPtr(SkDeferredCanvas::Cr
eate(surface2.get())); | 153 OwnPtr<SkDeferredCanvas> canvas2 = adoptPtr(SkDeferredCanvas::Cr
eate(surface2.get())); |
154 FakeCanvas2DLayerBridgePtr layer2(adoptRef(new FakeCanvas2DLayer
Bridge(webContext.get(), canvas2.release(), surface2.release()))); | 154 FakeCanvas2DLayerBridgePtr layer2(adoptRef(new FakeCanvas2DLayer
Bridge(webContext.get(), canvas2.release(), surface2.release()))); |
155 EXPECT_EQ((size_t)1, manager.m_bytesAllocated); | 155 EXPECT_EQ((size_t)1, manager.m_bytesAllocated); |
156 // verify multi-layer allocation tracking | 156 // verify multi-layer allocation tracking |
157 layer2->storageAllocatedForRecordingChanged(2); | 157 layer2->storageAllocatedForRecordingChanged(2); |
158 EXPECT_EQ((size_t)3, manager.m_bytesAllocated); | 158 EXPECT_EQ((size_t)3, manager.m_bytesAllocated); |
159 } | 159 } |
160 // Verify tracking after destruction | 160 // Verify tracking after destruction |
161 EXPECT_EQ((size_t)1, manager.m_bytesAllocated); | 161 EXPECT_EQ((size_t)1, manager.m_bytesAllocated); |
162 } | 162 } |
163 } | 163 } |
164 | 164 |
165 void evictionTest() | 165 void evictionTest() |
166 { | 166 { |
167 OwnPtr<blink::MockWebGraphicsContext3D> webContext = adoptPtr(new blink:
:MockWebGraphicsContext3D); | 167 OwnPtr<MockWebGraphicsContext3D> webContext = adoptPtr(new MockWebGraphi
csContext3D); |
168 Canvas2DLayerManager& manager = Canvas2DLayerManager::get(); | 168 Canvas2DLayerManager& manager = Canvas2DLayerManager::get(); |
169 manager.init(10, 5); | 169 manager.init(10, 5); |
170 RefPtr<SkSurface> surface = adoptRef(SkSurface::NewRasterPMColor(1, 1)); | 170 RefPtr<SkSurface> surface = adoptRef(SkSurface::NewRasterPMColor(1, 1)); |
171 OwnPtr<SkDeferredCanvas> canvas = adoptPtr(SkDeferredCanvas::Create(surf
ace.get())); | 171 OwnPtr<SkDeferredCanvas> canvas = adoptPtr(SkDeferredCanvas::Create(surf
ace.get())); |
172 FakeCanvas2DLayerBridgePtr layer(adoptRef(new FakeCanvas2DLayerBridge(we
bContext.get(), canvas.release(), surface.release()))); | 172 FakeCanvas2DLayerBridgePtr layer(adoptRef(new FakeCanvas2DLayerBridge(we
bContext.get(), canvas.release(), surface.release()))); |
173 layer->fakeFreeableBytes(10); | 173 layer->fakeFreeableBytes(10); |
174 layer->storageAllocatedForRecordingChanged(8); // under the max | 174 layer->storageAllocatedForRecordingChanged(8); // under the max |
175 EXPECT_EQ(0, layer->m_freeMemoryIfPossibleCount); | 175 EXPECT_EQ(0, layer->m_freeMemoryIfPossibleCount); |
176 layer->storageAllocatedForRecordingChanged(12); // over the max | 176 layer->storageAllocatedForRecordingChanged(12); // over the max |
177 EXPECT_EQ(1, layer->m_freeMemoryIfPossibleCount); | 177 EXPECT_EQ(1, layer->m_freeMemoryIfPossibleCount); |
178 EXPECT_EQ((size_t)3, layer->m_freeableBytes); | 178 EXPECT_EQ((size_t)3, layer->m_freeableBytes); |
179 EXPECT_EQ(0, layer->m_flushCount); // eviction succeeded without trigger
ing a flush | 179 EXPECT_EQ(0, layer->m_flushCount); // eviction succeeded without trigger
ing a flush |
180 EXPECT_EQ((size_t)5, layer->bytesAllocated()); | 180 EXPECT_EQ((size_t)5, layer->bytesAllocated()); |
181 } | 181 } |
182 | 182 |
183 void hiddenCanvasTest() | 183 void hiddenCanvasTest() |
184 { | 184 { |
185 OwnPtr<blink::MockWebGraphicsContext3D> webContext = adoptPtr(new blink:
:MockWebGraphicsContext3D); | 185 OwnPtr<MockWebGraphicsContext3D> webContext = adoptPtr(new MockWebGraphi
csContext3D); |
186 Canvas2DLayerManager& manager = Canvas2DLayerManager::get(); | 186 Canvas2DLayerManager& manager = Canvas2DLayerManager::get(); |
187 manager.init(20, 5); | 187 manager.init(20, 5); |
188 RefPtr<SkSurface> surface = adoptRef(SkSurface::NewRasterPMColor(1, 1)); | 188 RefPtr<SkSurface> surface = adoptRef(SkSurface::NewRasterPMColor(1, 1)); |
189 OwnPtr<SkDeferredCanvas> canvas = adoptPtr(SkDeferredCanvas::Create(surf
ace.get())); | 189 OwnPtr<SkDeferredCanvas> canvas = adoptPtr(SkDeferredCanvas::Create(surf
ace.get())); |
190 FakeCanvas2DLayerBridgePtr layer(adoptRef(new FakeCanvas2DLayerBridge(we
bContext.get(), canvas.release(), surface.release()))); | 190 FakeCanvas2DLayerBridgePtr layer(adoptRef(new FakeCanvas2DLayerBridge(we
bContext.get(), canvas.release(), surface.release()))); |
191 layer->fakeFreeableBytes(5); | 191 layer->fakeFreeableBytes(5); |
192 layer->storageAllocatedForRecordingChanged(10); | 192 layer->storageAllocatedForRecordingChanged(10); |
193 EXPECT_EQ(0, layer->m_freeMemoryIfPossibleCount); | 193 EXPECT_EQ(0, layer->m_freeMemoryIfPossibleCount); |
194 EXPECT_EQ(0, layer->m_flushCount); | 194 EXPECT_EQ(0, layer->m_flushCount); |
195 EXPECT_EQ((size_t)10, layer->bytesAllocated()); | 195 EXPECT_EQ((size_t)10, layer->bytesAllocated()); |
196 layer->setIsHidden(true); | 196 layer->setIsHidden(true); |
197 EXPECT_EQ(1, layer->m_freeMemoryIfPossibleCount); | 197 EXPECT_EQ(1, layer->m_freeMemoryIfPossibleCount); |
198 EXPECT_EQ((size_t)0, layer->m_freeableBytes); | 198 EXPECT_EQ((size_t)0, layer->m_freeableBytes); |
199 EXPECT_EQ((size_t)0, layer->bytesAllocated()); | 199 EXPECT_EQ((size_t)0, layer->bytesAllocated()); |
200 EXPECT_EQ(1, layer->m_flushCount); | 200 EXPECT_EQ(1, layer->m_flushCount); |
201 } | 201 } |
202 | 202 |
203 void addRemoveLayerTest() | 203 void addRemoveLayerTest() |
204 { | 204 { |
205 OwnPtr<blink::MockWebGraphicsContext3D> webContext = adoptPtr(new blink:
:MockWebGraphicsContext3D); | 205 OwnPtr<MockWebGraphicsContext3D> webContext = adoptPtr(new MockWebGraphi
csContext3D); |
206 Canvas2DLayerManager& manager = Canvas2DLayerManager::get(); | 206 Canvas2DLayerManager& manager = Canvas2DLayerManager::get(); |
207 manager.init(10, 5); | 207 manager.init(10, 5); |
208 RefPtr<SkSurface> surface = adoptRef(SkSurface::NewRasterPMColor(1, 1)); | 208 RefPtr<SkSurface> surface = adoptRef(SkSurface::NewRasterPMColor(1, 1)); |
209 OwnPtr<SkDeferredCanvas> canvas = adoptPtr(SkDeferredCanvas::Create(surf
ace.get())); | 209 OwnPtr<SkDeferredCanvas> canvas = adoptPtr(SkDeferredCanvas::Create(surf
ace.get())); |
210 FakeCanvas2DLayerBridgePtr layer(adoptRef(new FakeCanvas2DLayerBridge(we
bContext.get(), canvas.release(), surface.release()))); | 210 FakeCanvas2DLayerBridgePtr layer(adoptRef(new FakeCanvas2DLayerBridge(we
bContext.get(), canvas.release(), surface.release()))); |
211 EXPECT_FALSE(manager.isInList(layer.get())); | 211 EXPECT_FALSE(manager.isInList(layer.get())); |
212 layer->storageAllocatedForRecordingChanged(5); | 212 layer->storageAllocatedForRecordingChanged(5); |
213 EXPECT_TRUE(manager.isInList(layer.get())); | 213 EXPECT_TRUE(manager.isInList(layer.get())); |
214 layer->storageAllocatedForRecordingChanged(0); | 214 layer->storageAllocatedForRecordingChanged(0); |
215 EXPECT_FALSE(manager.isInList(layer.get())); | 215 EXPECT_FALSE(manager.isInList(layer.get())); |
216 } | 216 } |
217 | 217 |
218 void flushEvictionTest() | 218 void flushEvictionTest() |
219 { | 219 { |
220 OwnPtr<blink::MockWebGraphicsContext3D> webContext = adoptPtr(new blink:
:MockWebGraphicsContext3D); | 220 OwnPtr<MockWebGraphicsContext3D> webContext = adoptPtr(new MockWebGraphi
csContext3D); |
221 Canvas2DLayerManager& manager = Canvas2DLayerManager::get(); | 221 Canvas2DLayerManager& manager = Canvas2DLayerManager::get(); |
222 manager.init(10, 5); | 222 manager.init(10, 5); |
223 RefPtr<SkSurface> surface = adoptRef(SkSurface::NewRasterPMColor(1, 1)); | 223 RefPtr<SkSurface> surface = adoptRef(SkSurface::NewRasterPMColor(1, 1)); |
224 OwnPtr<SkDeferredCanvas> canvas = adoptPtr(SkDeferredCanvas::Create(surf
ace.get())); | 224 OwnPtr<SkDeferredCanvas> canvas = adoptPtr(SkDeferredCanvas::Create(surf
ace.get())); |
225 FakeCanvas2DLayerBridgePtr layer(adoptRef(new FakeCanvas2DLayerBridge(we
bContext.get(), canvas.release(), surface.release()))); | 225 FakeCanvas2DLayerBridgePtr layer(adoptRef(new FakeCanvas2DLayerBridge(we
bContext.get(), canvas.release(), surface.release()))); |
226 layer->fakeFreeableBytes(1); // Not enough freeable bytes, will cause ag
gressive eviction by flushing | 226 layer->fakeFreeableBytes(1); // Not enough freeable bytes, will cause ag
gressive eviction by flushing |
227 layer->storageAllocatedForRecordingChanged(8); // under the max | 227 layer->storageAllocatedForRecordingChanged(8); // under the max |
228 EXPECT_EQ(0, layer->m_freeMemoryIfPossibleCount); | 228 EXPECT_EQ(0, layer->m_freeMemoryIfPossibleCount); |
229 layer->storageAllocatedForRecordingChanged(12); // over the max | 229 layer->storageAllocatedForRecordingChanged(12); // over the max |
230 EXPECT_EQ(2, layer->m_freeMemoryIfPossibleCount); // Two tries, one befo
re flush, one after flush | 230 EXPECT_EQ(2, layer->m_freeMemoryIfPossibleCount); // Two tries, one befo
re flush, one after flush |
231 EXPECT_EQ((size_t)5, layer->m_freeableBytes); | 231 EXPECT_EQ((size_t)5, layer->m_freeableBytes); |
232 EXPECT_EQ(1, layer->m_flushCount); // flush was attempted | 232 EXPECT_EQ(1, layer->m_flushCount); // flush was attempted |
233 EXPECT_EQ((size_t)5, layer->bytesAllocated()); | 233 EXPECT_EQ((size_t)5, layer->bytesAllocated()); |
234 EXPECT_TRUE(manager.isInList(layer.get())); | 234 EXPECT_TRUE(manager.isInList(layer.get())); |
235 } | 235 } |
236 | 236 |
237 void doDeferredFrameTestTask(FakeCanvas2DLayerBridge* layer, bool skipComman
ds) | 237 void doDeferredFrameTestTask(FakeCanvas2DLayerBridge* layer, bool skipComman
ds) |
238 { | 238 { |
239 EXPECT_FALSE(Canvas2DLayerManager::get().m_taskObserverActive); | 239 EXPECT_FALSE(Canvas2DLayerManager::get().m_taskObserverActive); |
240 layer->finalizeFrame(); | 240 layer->finalizeFrame(); |
241 layer->storageAllocatedForRecordingChanged(1); | 241 layer->storageAllocatedForRecordingChanged(1); |
242 EXPECT_TRUE(Canvas2DLayerManager::get().m_taskObserverActive); | 242 EXPECT_TRUE(Canvas2DLayerManager::get().m_taskObserverActive); |
243 if (skipCommands) { | 243 if (skipCommands) { |
244 layer->finalizeFrame(); | 244 layer->finalizeFrame(); |
245 layer->skippedPendingDrawCommands(); | 245 layer->skippedPendingDrawCommands(); |
246 } | 246 } |
247 blink::Platform::current()->currentThread()->exitRunLoop(); | 247 Platform::current()->currentThread()->exitRunLoop(); |
248 } | 248 } |
249 | 249 |
250 class DeferredFrameTestTask : public blink::WebThread::Task { | 250 class DeferredFrameTestTask : public WebThread::Task { |
251 public: | 251 public: |
252 DeferredFrameTestTask(Canvas2DLayerManagerTest* test, FakeCanvas2DLayerB
ridge* layer, bool skipCommands) | 252 DeferredFrameTestTask(Canvas2DLayerManagerTest* test, FakeCanvas2DLayerB
ridge* layer, bool skipCommands) |
253 { | 253 { |
254 m_test = test; | 254 m_test = test; |
255 m_layer = layer; | 255 m_layer = layer; |
256 m_skipCommands = skipCommands; | 256 m_skipCommands = skipCommands; |
257 } | 257 } |
258 | 258 |
259 virtual void run() OVERRIDE | 259 virtual void run() OVERRIDE |
260 { | 260 { |
261 m_test->doDeferredFrameTestTask(m_layer, m_skipCommands); | 261 m_test->doDeferredFrameTestTask(m_layer, m_skipCommands); |
262 } | 262 } |
263 private: | 263 private: |
264 Canvas2DLayerManagerTest* m_test; | 264 Canvas2DLayerManagerTest* m_test; |
265 FakeCanvas2DLayerBridge* m_layer; | 265 FakeCanvas2DLayerBridge* m_layer; |
266 bool m_skipCommands; | 266 bool m_skipCommands; |
267 }; | 267 }; |
268 | 268 |
269 void deferredFrameTest() | 269 void deferredFrameTest() |
270 { | 270 { |
271 OwnPtr<blink::MockWebGraphicsContext3D> webContext = adoptPtr(new blink:
:MockWebGraphicsContext3D); | 271 OwnPtr<MockWebGraphicsContext3D> webContext = adoptPtr(new MockWebGraphi
csContext3D); |
272 Canvas2DLayerManager::get().init(10, 10); | 272 Canvas2DLayerManager::get().init(10, 10); |
273 RefPtr<SkSurface> surface = adoptRef(SkSurface::NewRasterPMColor(1, 1)); | 273 RefPtr<SkSurface> surface = adoptRef(SkSurface::NewRasterPMColor(1, 1)); |
274 OwnPtr<SkDeferredCanvas> canvas = adoptPtr(SkDeferredCanvas::Create(surf
ace.get())); | 274 OwnPtr<SkDeferredCanvas> canvas = adoptPtr(SkDeferredCanvas::Create(surf
ace.get())); |
275 FakeCanvas2DLayerBridgePtr layer(adoptRef(new FakeCanvas2DLayerBridge(we
bContext.get(), canvas.release(), surface.release()))); | 275 FakeCanvas2DLayerBridgePtr layer(adoptRef(new FakeCanvas2DLayerBridge(we
bContext.get(), canvas.release(), surface.release()))); |
276 blink::Platform::current()->currentThread()->postTask(new DeferredFrameT
estTask(this, layer.get(), true)); | 276 Platform::current()->currentThread()->postTask(new DeferredFrameTestTask
(this, layer.get(), true)); |
277 blink::Platform::current()->currentThread()->enterRunLoop(); | 277 Platform::current()->currentThread()->enterRunLoop(); |
278 // Verify that didProcessTask was called upon completion | 278 // Verify that didProcessTask was called upon completion |
279 EXPECT_FALSE(Canvas2DLayerManager::get().m_taskObserverActive); | 279 EXPECT_FALSE(Canvas2DLayerManager::get().m_taskObserverActive); |
280 // Verify that no flush was performed because frame is fresh | 280 // Verify that no flush was performed because frame is fresh |
281 EXPECT_EQ(0, layer->m_flushCount); | 281 EXPECT_EQ(0, layer->m_flushCount); |
282 | 282 |
283 // Verify that no flushes are triggered as long as frame are fresh | 283 // Verify that no flushes are triggered as long as frame are fresh |
284 blink::Platform::current()->currentThread()->postTask(new DeferredFrameT
estTask(this, layer.get(), true)); | 284 Platform::current()->currentThread()->postTask(new DeferredFrameTestTask
(this, layer.get(), true)); |
285 blink::Platform::current()->currentThread()->enterRunLoop(); | 285 Platform::current()->currentThread()->enterRunLoop(); |
286 EXPECT_FALSE(Canvas2DLayerManager::get().m_taskObserverActive); | 286 EXPECT_FALSE(Canvas2DLayerManager::get().m_taskObserverActive); |
287 EXPECT_EQ(0, layer->m_flushCount); | 287 EXPECT_EQ(0, layer->m_flushCount); |
288 | 288 |
289 blink::Platform::current()->currentThread()->postTask(new DeferredFrameT
estTask(this, layer.get(), true)); | 289 Platform::current()->currentThread()->postTask(new DeferredFrameTestTask
(this, layer.get(), true)); |
290 blink::Platform::current()->currentThread()->enterRunLoop(); | 290 Platform::current()->currentThread()->enterRunLoop(); |
291 EXPECT_FALSE(Canvas2DLayerManager::get().m_taskObserverActive); | 291 EXPECT_FALSE(Canvas2DLayerManager::get().m_taskObserverActive); |
292 EXPECT_EQ(0, layer->m_flushCount); | 292 EXPECT_EQ(0, layer->m_flushCount); |
293 | 293 |
294 // Verify that a flush is triggered when queue is accumulating a multi-f
rame backlog. | 294 // Verify that a flush is triggered when queue is accumulating a multi-f
rame backlog. |
295 blink::Platform::current()->currentThread()->postTask(new DeferredFrameT
estTask(this, layer.get(), false)); | 295 Platform::current()->currentThread()->postTask(new DeferredFrameTestTask
(this, layer.get(), false)); |
296 blink::Platform::current()->currentThread()->enterRunLoop(); | 296 Platform::current()->currentThread()->enterRunLoop(); |
297 EXPECT_FALSE(Canvas2DLayerManager::get().m_taskObserverActive); | 297 EXPECT_FALSE(Canvas2DLayerManager::get().m_taskObserverActive); |
298 EXPECT_EQ(1, layer->m_flushCount); | 298 EXPECT_EQ(1, layer->m_flushCount); |
299 | 299 |
300 blink::Platform::current()->currentThread()->postTask(new DeferredFrameT
estTask(this, layer.get(), false)); | 300 Platform::current()->currentThread()->postTask(new DeferredFrameTestTask
(this, layer.get(), false)); |
301 blink::Platform::current()->currentThread()->enterRunLoop(); | 301 Platform::current()->currentThread()->enterRunLoop(); |
302 EXPECT_FALSE(Canvas2DLayerManager::get().m_taskObserverActive); | 302 EXPECT_FALSE(Canvas2DLayerManager::get().m_taskObserverActive); |
303 EXPECT_EQ(2, layer->m_flushCount); | 303 EXPECT_EQ(2, layer->m_flushCount); |
304 } | 304 } |
305 }; | 305 }; |
306 | 306 |
307 namespace { | 307 namespace { |
308 | 308 |
309 TEST_F(Canvas2DLayerManagerTest, testStorageAllocationTracking) | 309 TEST_F(Canvas2DLayerManagerTest, testStorageAllocationTracking) |
310 { | 310 { |
311 storageAllocationTrackingTest(); | 311 storageAllocationTrackingTest(); |
(...skipping 19 matching lines...) Expand all Loading... |
331 hiddenCanvasTest(); | 331 hiddenCanvasTest(); |
332 } | 332 } |
333 | 333 |
334 TEST_F(Canvas2DLayerManagerTest, testAddRemoveLayer) | 334 TEST_F(Canvas2DLayerManagerTest, testAddRemoveLayer) |
335 { | 335 { |
336 addRemoveLayerTest(); | 336 addRemoveLayerTest(); |
337 } | 337 } |
338 | 338 |
339 } // unnamed namespace | 339 } // unnamed namespace |
340 | 340 |
OLD | NEW |