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

Side by Side Diff: third_party/WebKit/Source/platform/graphics/Canvas2DLayerBridgeTest.cpp

Issue 2547053003: s/ passed(...) / WTF::passed(...) / to avoid future ambiguity w/ base::Passed. (Closed)
Patch Set: Rebasing... Created 4 years 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 unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2011 Google Inc. All rights reserved. 2 * Copyright (C) 2011 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 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
128 new Canvas2DLayerBridge(std::move(provider), size, 0, NonOpaque, 128 new Canvas2DLayerBridge(std::move(provider), size, 0, NonOpaque,
129 accelerationMode, nullptr, kN32_SkColorType)); 129 accelerationMode, nullptr, kN32_SkColorType));
130 bridge->dontUseIdleSchedulingForTesting(); 130 bridge->dontUseIdleSchedulingForTesting();
131 return bridge.release(); 131 return bridge.release();
132 } 132 }
133 133
134 protected: 134 protected:
135 void fullLifecycleTest() { 135 void fullLifecycleTest() {
136 FakeGLES2Interface gl; 136 FakeGLES2Interface gl;
137 std::unique_ptr<FakeWebGraphicsContext3DProvider> contextProvider = 137 std::unique_ptr<FakeWebGraphicsContext3DProvider> contextProvider =
138 wrapUnique(new FakeWebGraphicsContext3DProvider(&gl)); 138 WTF::wrapUnique(new FakeWebGraphicsContext3DProvider(&gl));
139 139
140 Canvas2DLayerBridgePtr bridge(adoptRef(new Canvas2DLayerBridge( 140 Canvas2DLayerBridgePtr bridge(adoptRef(new Canvas2DLayerBridge(
141 std::move(contextProvider), IntSize(300, 150), 0, NonOpaque, 141 std::move(contextProvider), IntSize(300, 150), 0, NonOpaque,
142 Canvas2DLayerBridge::DisableAcceleration, nullptr, kN32_SkColorType))); 142 Canvas2DLayerBridge::DisableAcceleration, nullptr, kN32_SkColorType)));
143 143
144 const GrGLTextureInfo* textureInfo = skia::GrBackendObjectToGrGLTextureInfo( 144 const GrGLTextureInfo* textureInfo = skia::GrBackendObjectToGrGLTextureInfo(
145 bridge->newImageSnapshot(PreferAcceleration, SnapshotReasonUnitTests) 145 bridge->newImageSnapshot(PreferAcceleration, SnapshotReasonUnitTests)
146 ->getTextureHandle(true)); 146 ->getTextureHandle(true));
147 EXPECT_EQ(textureInfo, nullptr); 147 EXPECT_EQ(textureInfo, nullptr);
148 bridge.clear(); 148 bridge.clear();
149 } 149 }
150 150
151 void fallbackToSoftwareIfContextLost() { 151 void fallbackToSoftwareIfContextLost() {
152 FakeGLES2Interface gl; 152 FakeGLES2Interface gl;
153 std::unique_ptr<FakeWebGraphicsContext3DProvider> contextProvider = 153 std::unique_ptr<FakeWebGraphicsContext3DProvider> contextProvider =
154 wrapUnique(new FakeWebGraphicsContext3DProvider(&gl)); 154 WTF::wrapUnique(new FakeWebGraphicsContext3DProvider(&gl));
155 155
156 gl.setIsContextLost(true); 156 gl.setIsContextLost(true);
157 Canvas2DLayerBridgePtr bridge(adoptRef(new Canvas2DLayerBridge( 157 Canvas2DLayerBridgePtr bridge(adoptRef(new Canvas2DLayerBridge(
158 std::move(contextProvider), IntSize(300, 150), 0, NonOpaque, 158 std::move(contextProvider), IntSize(300, 150), 0, NonOpaque,
159 Canvas2DLayerBridge::EnableAcceleration, nullptr, kN32_SkColorType))); 159 Canvas2DLayerBridge::EnableAcceleration, nullptr, kN32_SkColorType)));
160 EXPECT_TRUE(bridge->checkSurfaceValid()); 160 EXPECT_TRUE(bridge->checkSurfaceValid());
161 EXPECT_FALSE(bridge->isAccelerated()); 161 EXPECT_FALSE(bridge->isAccelerated());
162 } 162 }
163 163
164 void fallbackToSoftwareOnFailedTextureAlloc() { 164 void fallbackToSoftwareOnFailedTextureAlloc() {
165 { 165 {
166 // No fallback case. 166 // No fallback case.
167 FakeGLES2Interface gl; 167 FakeGLES2Interface gl;
168 std::unique_ptr<FakeWebGraphicsContext3DProvider> contextProvider = 168 std::unique_ptr<FakeWebGraphicsContext3DProvider> contextProvider =
169 wrapUnique(new FakeWebGraphicsContext3DProvider(&gl)); 169 WTF::wrapUnique(new FakeWebGraphicsContext3DProvider(&gl));
170 Canvas2DLayerBridgePtr bridge(adoptRef(new Canvas2DLayerBridge( 170 Canvas2DLayerBridgePtr bridge(adoptRef(new Canvas2DLayerBridge(
171 std::move(contextProvider), IntSize(300, 150), 0, NonOpaque, 171 std::move(contextProvider), IntSize(300, 150), 0, NonOpaque,
172 Canvas2DLayerBridge::EnableAcceleration, nullptr, kN32_SkColorType))); 172 Canvas2DLayerBridge::EnableAcceleration, nullptr, kN32_SkColorType)));
173 EXPECT_TRUE(bridge->checkSurfaceValid()); 173 EXPECT_TRUE(bridge->checkSurfaceValid());
174 EXPECT_TRUE(bridge->isAccelerated()); 174 EXPECT_TRUE(bridge->isAccelerated());
175 sk_sp<SkImage> snapshot = 175 sk_sp<SkImage> snapshot =
176 bridge->newImageSnapshot(PreferAcceleration, SnapshotReasonUnitTests); 176 bridge->newImageSnapshot(PreferAcceleration, SnapshotReasonUnitTests);
177 EXPECT_TRUE(bridge->isAccelerated()); 177 EXPECT_TRUE(bridge->isAccelerated());
178 EXPECT_TRUE(snapshot->isTextureBacked()); 178 EXPECT_TRUE(snapshot->isTextureBacked());
179 } 179 }
180 180
181 { 181 {
182 // Fallback case. 182 // Fallback case.
183 FakeGLES2Interface gl; 183 FakeGLES2Interface gl;
184 std::unique_ptr<FakeWebGraphicsContext3DProvider> contextProvider = 184 std::unique_ptr<FakeWebGraphicsContext3DProvider> contextProvider =
185 wrapUnique(new FakeWebGraphicsContext3DProvider(&gl)); 185 WTF::wrapUnique(new FakeWebGraphicsContext3DProvider(&gl));
186 GrContext* gr = contextProvider->grContext(); 186 GrContext* gr = contextProvider->grContext();
187 Canvas2DLayerBridgePtr bridge(adoptRef(new Canvas2DLayerBridge( 187 Canvas2DLayerBridgePtr bridge(adoptRef(new Canvas2DLayerBridge(
188 std::move(contextProvider), IntSize(300, 150), 0, NonOpaque, 188 std::move(contextProvider), IntSize(300, 150), 0, NonOpaque,
189 Canvas2DLayerBridge::EnableAcceleration, nullptr, kN32_SkColorType))); 189 Canvas2DLayerBridge::EnableAcceleration, nullptr, kN32_SkColorType)));
190 EXPECT_TRUE(bridge->checkSurfaceValid()); 190 EXPECT_TRUE(bridge->checkSurfaceValid());
191 EXPECT_TRUE(bridge->isAccelerated()); // We don't yet know that 191 EXPECT_TRUE(bridge->isAccelerated()); // We don't yet know that
192 // allocation will fail. 192 // allocation will fail.
193 // This will cause SkSurface_Gpu creation to fail without 193 // This will cause SkSurface_Gpu creation to fail without
194 // Canvas2DLayerBridge otherwise detecting that anything was disabled. 194 // Canvas2DLayerBridge otherwise detecting that anything was disabled.
195 gr->abandonContext(); 195 gr->abandonContext();
196 sk_sp<SkImage> snapshot = 196 sk_sp<SkImage> snapshot =
197 bridge->newImageSnapshot(PreferAcceleration, SnapshotReasonUnitTests); 197 bridge->newImageSnapshot(PreferAcceleration, SnapshotReasonUnitTests);
198 EXPECT_FALSE(bridge->isAccelerated()); 198 EXPECT_FALSE(bridge->isAccelerated());
199 EXPECT_FALSE(snapshot->isTextureBacked()); 199 EXPECT_FALSE(snapshot->isTextureBacked());
200 } 200 }
201 } 201 }
202 202
203 void noDrawOnContextLostTest() { 203 void noDrawOnContextLostTest() {
204 FakeGLES2Interface gl; 204 FakeGLES2Interface gl;
205 std::unique_ptr<FakeWebGraphicsContext3DProvider> contextProvider = 205 std::unique_ptr<FakeWebGraphicsContext3DProvider> contextProvider =
206 wrapUnique(new FakeWebGraphicsContext3DProvider(&gl)); 206 WTF::wrapUnique(new FakeWebGraphicsContext3DProvider(&gl));
207 207
208 Canvas2DLayerBridgePtr bridge(adoptRef(new Canvas2DLayerBridge( 208 Canvas2DLayerBridgePtr bridge(adoptRef(new Canvas2DLayerBridge(
209 std::move(contextProvider), IntSize(300, 150), 0, NonOpaque, 209 std::move(contextProvider), IntSize(300, 150), 0, NonOpaque,
210 Canvas2DLayerBridge::ForceAccelerationForTesting, nullptr, 210 Canvas2DLayerBridge::ForceAccelerationForTesting, nullptr,
211 kN32_SkColorType))); 211 kN32_SkColorType)));
212 EXPECT_TRUE(bridge->checkSurfaceValid()); 212 EXPECT_TRUE(bridge->checkSurfaceValid());
213 SkPaint paint; 213 SkPaint paint;
214 uint32_t genID = bridge->getOrCreateSurface()->generationID(); 214 uint32_t genID = bridge->getOrCreateSurface()->generationID();
215 bridge->canvas()->drawRect(SkRect::MakeXYWH(0, 0, 1, 1), paint); 215 bridge->canvas()->drawRect(SkRect::MakeXYWH(0, 0, 1, 1), paint);
216 EXPECT_EQ(genID, bridge->getOrCreateSurface()->generationID()); 216 EXPECT_EQ(genID, bridge->getOrCreateSurface()->generationID());
217 gl.setIsContextLost(true); 217 gl.setIsContextLost(true);
218 EXPECT_EQ(genID, bridge->getOrCreateSurface()->generationID()); 218 EXPECT_EQ(genID, bridge->getOrCreateSurface()->generationID());
219 bridge->canvas()->drawRect(SkRect::MakeXYWH(0, 0, 1, 1), paint); 219 bridge->canvas()->drawRect(SkRect::MakeXYWH(0, 0, 1, 1), paint);
220 EXPECT_EQ(genID, bridge->getOrCreateSurface()->generationID()); 220 EXPECT_EQ(genID, bridge->getOrCreateSurface()->generationID());
221 // This results in the internal surface being torn down in response to the 221 // This results in the internal surface being torn down in response to the
222 // context loss. 222 // context loss.
223 EXPECT_FALSE(bridge->checkSurfaceValid()); 223 EXPECT_FALSE(bridge->checkSurfaceValid());
224 EXPECT_EQ(nullptr, bridge->getOrCreateSurface()); 224 EXPECT_EQ(nullptr, bridge->getOrCreateSurface());
225 // The following passes by not crashing 225 // The following passes by not crashing
226 bridge->canvas()->drawRect(SkRect::MakeXYWH(0, 0, 1, 1), paint); 226 bridge->canvas()->drawRect(SkRect::MakeXYWH(0, 0, 1, 1), paint);
227 bridge->flush(); 227 bridge->flush();
228 } 228 }
229 229
230 void prepareMailboxWhenContextIsLost() { 230 void prepareMailboxWhenContextIsLost() {
231 FakeGLES2Interface gl; 231 FakeGLES2Interface gl;
232 std::unique_ptr<FakeWebGraphicsContext3DProvider> contextProvider = 232 std::unique_ptr<FakeWebGraphicsContext3DProvider> contextProvider =
233 wrapUnique(new FakeWebGraphicsContext3DProvider(&gl)); 233 WTF::wrapUnique(new FakeWebGraphicsContext3DProvider(&gl));
234 Canvas2DLayerBridgePtr bridge(adoptRef(new Canvas2DLayerBridge( 234 Canvas2DLayerBridgePtr bridge(adoptRef(new Canvas2DLayerBridge(
235 std::move(contextProvider), IntSize(300, 150), 0, NonOpaque, 235 std::move(contextProvider), IntSize(300, 150), 0, NonOpaque,
236 Canvas2DLayerBridge::ForceAccelerationForTesting, nullptr, 236 Canvas2DLayerBridge::ForceAccelerationForTesting, nullptr,
237 kN32_SkColorType))); 237 kN32_SkColorType)));
238 238
239 // TODO(junov): The PrepareTextureMailbox() method will fail a DCHECK if we 239 // TODO(junov): The PrepareTextureMailbox() method will fail a DCHECK if we
240 // don't do this before calling it the first time when the context is lost. 240 // don't do this before calling it the first time when the context is lost.
241 bridge->prepareSurfaceForPaintingIfNeeded(); 241 bridge->prepareSurfaceForPaintingIfNeeded();
242 242
243 // When the context is lost we are not sure if we should still be producing 243 // When the context is lost we are not sure if we should still be producing
244 // GL frames for the compositor or not, so fail to generate frames. 244 // GL frames for the compositor or not, so fail to generate frames.
245 gl.setIsContextLost(true); 245 gl.setIsContextLost(true);
246 246
247 cc::TextureMailbox textureMailbox; 247 cc::TextureMailbox textureMailbox;
248 std::unique_ptr<cc::SingleReleaseCallback> releaseCallback; 248 std::unique_ptr<cc::SingleReleaseCallback> releaseCallback;
249 EXPECT_FALSE( 249 EXPECT_FALSE(
250 bridge->PrepareTextureMailbox(&textureMailbox, &releaseCallback)); 250 bridge->PrepareTextureMailbox(&textureMailbox, &releaseCallback));
251 } 251 }
252 252
253 void prepareMailboxAndLoseResourceTest() { 253 void prepareMailboxAndLoseResourceTest() {
254 // Prepare a mailbox, then report the resource as lost. 254 // Prepare a mailbox, then report the resource as lost.
255 // This test passes by not crashing and not triggering assertions. 255 // This test passes by not crashing and not triggering assertions.
256 { 256 {
257 FakeGLES2Interface gl; 257 FakeGLES2Interface gl;
258 std::unique_ptr<FakeWebGraphicsContext3DProvider> contextProvider = 258 std::unique_ptr<FakeWebGraphicsContext3DProvider> contextProvider =
259 wrapUnique(new FakeWebGraphicsContext3DProvider(&gl)); 259 WTF::wrapUnique(new FakeWebGraphicsContext3DProvider(&gl));
260 Canvas2DLayerBridgePtr bridge(adoptRef(new Canvas2DLayerBridge( 260 Canvas2DLayerBridgePtr bridge(adoptRef(new Canvas2DLayerBridge(
261 std::move(contextProvider), IntSize(300, 150), 0, NonOpaque, 261 std::move(contextProvider), IntSize(300, 150), 0, NonOpaque,
262 Canvas2DLayerBridge::ForceAccelerationForTesting, nullptr, 262 Canvas2DLayerBridge::ForceAccelerationForTesting, nullptr,
263 kN32_SkColorType))); 263 kN32_SkColorType)));
264 264
265 cc::TextureMailbox textureMailbox; 265 cc::TextureMailbox textureMailbox;
266 std::unique_ptr<cc::SingleReleaseCallback> releaseCallback; 266 std::unique_ptr<cc::SingleReleaseCallback> releaseCallback;
267 EXPECT_TRUE( 267 EXPECT_TRUE(
268 bridge->PrepareTextureMailbox(&textureMailbox, &releaseCallback)); 268 bridge->PrepareTextureMailbox(&textureMailbox, &releaseCallback));
269 269
270 bool lostResource = true; 270 bool lostResource = true;
271 releaseCallback->Run(gpu::SyncToken(), lostResource); 271 releaseCallback->Run(gpu::SyncToken(), lostResource);
272 } 272 }
273 273
274 // Retry with mailbox released while bridge destruction is in progress. 274 // Retry with mailbox released while bridge destruction is in progress.
275 { 275 {
276 FakeGLES2Interface gl; 276 FakeGLES2Interface gl;
277 std::unique_ptr<FakeWebGraphicsContext3DProvider> contextProvider = 277 std::unique_ptr<FakeWebGraphicsContext3DProvider> contextProvider =
278 wrapUnique(new FakeWebGraphicsContext3DProvider(&gl)); 278 WTF::wrapUnique(new FakeWebGraphicsContext3DProvider(&gl));
279 279
280 cc::TextureMailbox textureMailbox; 280 cc::TextureMailbox textureMailbox;
281 std::unique_ptr<cc::SingleReleaseCallback> releaseCallback; 281 std::unique_ptr<cc::SingleReleaseCallback> releaseCallback;
282 282
283 { 283 {
284 Canvas2DLayerBridgePtr bridge(adoptRef(new Canvas2DLayerBridge( 284 Canvas2DLayerBridgePtr bridge(adoptRef(new Canvas2DLayerBridge(
285 std::move(contextProvider), IntSize(300, 150), 0, NonOpaque, 285 std::move(contextProvider), IntSize(300, 150), 0, NonOpaque,
286 Canvas2DLayerBridge::ForceAccelerationForTesting, nullptr, 286 Canvas2DLayerBridge::ForceAccelerationForTesting, nullptr,
287 kN32_SkColorType))); 287 kN32_SkColorType)));
288 bridge->PrepareTextureMailbox(&textureMailbox, &releaseCallback); 288 bridge->PrepareTextureMailbox(&textureMailbox, &releaseCallback);
289 // |bridge| goes out of scope and would normally be destroyed, but 289 // |bridge| goes out of scope and would normally be destroyed, but
290 // object is kept alive by self references. 290 // object is kept alive by self references.
291 } 291 }
292 292
293 // This should cause the bridge to be destroyed. 293 // This should cause the bridge to be destroyed.
294 bool lostResource = true; 294 bool lostResource = true;
295 // Before fixing crbug.com/411864, the following line would cause a memory 295 // Before fixing crbug.com/411864, the following line would cause a memory
296 // use after free that sometimes caused a crash in normal builds and 296 // use after free that sometimes caused a crash in normal builds and
297 // crashed consistently with ASAN. 297 // crashed consistently with ASAN.
298 releaseCallback->Run(gpu::SyncToken(), lostResource); 298 releaseCallback->Run(gpu::SyncToken(), lostResource);
299 } 299 }
300 } 300 }
301 301
302 void accelerationHintTest() { 302 void accelerationHintTest() {
303 { 303 {
304 FakeGLES2Interface gl; 304 FakeGLES2Interface gl;
305 std::unique_ptr<FakeWebGraphicsContext3DProvider> contextProvider = 305 std::unique_ptr<FakeWebGraphicsContext3DProvider> contextProvider =
306 wrapUnique(new FakeWebGraphicsContext3DProvider(&gl)); 306 WTF::wrapUnique(new FakeWebGraphicsContext3DProvider(&gl));
307 Canvas2DLayerBridgePtr bridge(adoptRef(new Canvas2DLayerBridge( 307 Canvas2DLayerBridgePtr bridge(adoptRef(new Canvas2DLayerBridge(
308 std::move(contextProvider), IntSize(300, 300), 0, NonOpaque, 308 std::move(contextProvider), IntSize(300, 300), 0, NonOpaque,
309 Canvas2DLayerBridge::EnableAcceleration, nullptr, kN32_SkColorType))); 309 Canvas2DLayerBridge::EnableAcceleration, nullptr, kN32_SkColorType)));
310 SkPaint paint; 310 SkPaint paint;
311 bridge->canvas()->drawRect(SkRect::MakeXYWH(0, 0, 1, 1), paint); 311 bridge->canvas()->drawRect(SkRect::MakeXYWH(0, 0, 1, 1), paint);
312 sk_sp<SkImage> image = 312 sk_sp<SkImage> image =
313 bridge->newImageSnapshot(PreferAcceleration, SnapshotReasonUnitTests); 313 bridge->newImageSnapshot(PreferAcceleration, SnapshotReasonUnitTests);
314 EXPECT_TRUE(bridge->checkSurfaceValid()); 314 EXPECT_TRUE(bridge->checkSurfaceValid());
315 EXPECT_TRUE(bridge->isAccelerated()); 315 EXPECT_TRUE(bridge->isAccelerated());
316 } 316 }
317 317
318 { 318 {
319 FakeGLES2Interface gl; 319 FakeGLES2Interface gl;
320 std::unique_ptr<FakeWebGraphicsContext3DProvider> contextProvider = 320 std::unique_ptr<FakeWebGraphicsContext3DProvider> contextProvider =
321 wrapUnique(new FakeWebGraphicsContext3DProvider(&gl)); 321 WTF::wrapUnique(new FakeWebGraphicsContext3DProvider(&gl));
322 Canvas2DLayerBridgePtr bridge(adoptRef(new Canvas2DLayerBridge( 322 Canvas2DLayerBridgePtr bridge(adoptRef(new Canvas2DLayerBridge(
323 std::move(contextProvider), IntSize(300, 300), 0, NonOpaque, 323 std::move(contextProvider), IntSize(300, 300), 0, NonOpaque,
324 Canvas2DLayerBridge::EnableAcceleration, nullptr, kN32_SkColorType))); 324 Canvas2DLayerBridge::EnableAcceleration, nullptr, kN32_SkColorType)));
325 SkPaint paint; 325 SkPaint paint;
326 bridge->canvas()->drawRect(SkRect::MakeXYWH(0, 0, 1, 1), paint); 326 bridge->canvas()->drawRect(SkRect::MakeXYWH(0, 0, 1, 1), paint);
327 sk_sp<SkImage> image = bridge->newImageSnapshot(PreferNoAcceleration, 327 sk_sp<SkImage> image = bridge->newImageSnapshot(PreferNoAcceleration,
328 SnapshotReasonUnitTests); 328 SnapshotReasonUnitTests);
329 EXPECT_TRUE(bridge->checkSurfaceValid()); 329 EXPECT_TRUE(bridge->checkSurfaceValid());
330 EXPECT_FALSE(bridge->isAccelerated()); 330 EXPECT_FALSE(bridge->isAccelerated());
331 } 331 }
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
366 void(Canvas2DLayerBridge::HibernationEvent)); 366 void(Canvas2DLayerBridge::HibernationEvent));
367 MOCK_METHOD0(didStartHibernating, void()); 367 MOCK_METHOD0(didStartHibernating, void());
368 virtual ~MockLogger() {} 368 virtual ~MockLogger() {}
369 }; 369 };
370 370
371 void runCreateBridgeTask(Canvas2DLayerBridgePtr* bridgePtr, 371 void runCreateBridgeTask(Canvas2DLayerBridgePtr* bridgePtr,
372 gpu::gles2::GLES2Interface* gl, 372 gpu::gles2::GLES2Interface* gl,
373 Canvas2DLayerBridgeTest* testHost, 373 Canvas2DLayerBridgeTest* testHost,
374 WaitableEvent* doneEvent) { 374 WaitableEvent* doneEvent) {
375 std::unique_ptr<FakeWebGraphicsContext3DProvider> contextProvider = 375 std::unique_ptr<FakeWebGraphicsContext3DProvider> contextProvider =
376 makeUnique<FakeWebGraphicsContext3DProvider>(gl); 376 WTF::makeUnique<FakeWebGraphicsContext3DProvider>(gl);
377 *bridgePtr = 377 *bridgePtr =
378 testHost->makeBridge(std::move(contextProvider), IntSize(300, 300), 378 testHost->makeBridge(std::move(contextProvider), IntSize(300, 300),
379 Canvas2DLayerBridge::EnableAcceleration); 379 Canvas2DLayerBridge::EnableAcceleration);
380 // draw+flush to trigger the creation of a GPU surface 380 // draw+flush to trigger the creation of a GPU surface
381 (*bridgePtr)->didDraw(FloatRect(0, 0, 1, 1)); 381 (*bridgePtr)->didDraw(FloatRect(0, 0, 1, 1));
382 (*bridgePtr)->finalizeFrame(FloatRect(0, 0, 1, 1)); 382 (*bridgePtr)->finalizeFrame(FloatRect(0, 0, 1, 1));
383 (*bridgePtr)->flush(); 383 (*bridgePtr)->flush();
384 doneEvent->signal(); 384 doneEvent->signal();
385 } 385 }
386 386
387 void postAndWaitCreateBridgeTask(const WebTraceLocation& location, 387 void postAndWaitCreateBridgeTask(const WebTraceLocation& location,
388 WebThread* testThread, 388 WebThread* testThread,
389 Canvas2DLayerBridgePtr* bridgePtr, 389 Canvas2DLayerBridgePtr* bridgePtr,
390 gpu::gles2::GLES2Interface* gl, 390 gpu::gles2::GLES2Interface* gl,
391 Canvas2DLayerBridgeTest* testHost) { 391 Canvas2DLayerBridgeTest* testHost) {
392 std::unique_ptr<WaitableEvent> bridgeCreatedEvent = 392 std::unique_ptr<WaitableEvent> bridgeCreatedEvent =
393 makeUnique<WaitableEvent>(); 393 WTF::makeUnique<WaitableEvent>();
394 testThread->getWebTaskRunner()->postTask( 394 testThread->getWebTaskRunner()->postTask(
395 location, crossThreadBind( 395 location, crossThreadBind(
396 &runCreateBridgeTask, crossThreadUnretained(bridgePtr), 396 &runCreateBridgeTask, crossThreadUnretained(bridgePtr),
397 crossThreadUnretained(gl), crossThreadUnretained(testHost), 397 crossThreadUnretained(gl), crossThreadUnretained(testHost),
398 crossThreadUnretained(bridgeCreatedEvent.get()))); 398 crossThreadUnretained(bridgeCreatedEvent.get())));
399 bridgeCreatedEvent->wait(); 399 bridgeCreatedEvent->wait();
400 } 400 }
401 401
402 void runDestroyBridgeTask(Canvas2DLayerBridgePtr* bridgePtr, 402 void runDestroyBridgeTask(Canvas2DLayerBridgePtr* bridgePtr,
403 WaitableEvent* doneEvent) { 403 WaitableEvent* doneEvent) {
404 bridgePtr->clear(); 404 bridgePtr->clear();
405 if (doneEvent) 405 if (doneEvent)
406 doneEvent->signal(); 406 doneEvent->signal();
407 } 407 }
408 408
409 void postDestroyBridgeTask(const WebTraceLocation& location, 409 void postDestroyBridgeTask(const WebTraceLocation& location,
410 WebThread* testThread, 410 WebThread* testThread,
411 Canvas2DLayerBridgePtr* bridgePtr) { 411 Canvas2DLayerBridgePtr* bridgePtr) {
412 testThread->getWebTaskRunner()->postTask( 412 testThread->getWebTaskRunner()->postTask(
413 location, crossThreadBind(&runDestroyBridgeTask, 413 location, crossThreadBind(&runDestroyBridgeTask,
414 crossThreadUnretained(bridgePtr), nullptr)); 414 crossThreadUnretained(bridgePtr), nullptr));
415 } 415 }
416 416
417 void postAndWaitDestroyBridgeTask(const WebTraceLocation& location, 417 void postAndWaitDestroyBridgeTask(const WebTraceLocation& location,
418 WebThread* testThread, 418 WebThread* testThread,
419 Canvas2DLayerBridgePtr* bridgePtr) { 419 Canvas2DLayerBridgePtr* bridgePtr) {
420 std::unique_ptr<WaitableEvent> bridgeDestroyedEvent = 420 std::unique_ptr<WaitableEvent> bridgeDestroyedEvent =
421 makeUnique<WaitableEvent>(); 421 WTF::makeUnique<WaitableEvent>();
422 testThread->getWebTaskRunner()->postTask( 422 testThread->getWebTaskRunner()->postTask(
423 location, 423 location,
424 crossThreadBind(&runDestroyBridgeTask, crossThreadUnretained(bridgePtr), 424 crossThreadBind(&runDestroyBridgeTask, crossThreadUnretained(bridgePtr),
425 crossThreadUnretained(bridgeDestroyedEvent.get()))); 425 crossThreadUnretained(bridgeDestroyedEvent.get())));
426 bridgeDestroyedEvent->wait(); 426 bridgeDestroyedEvent->wait();
427 } 427 }
428 428
429 void runSetIsHiddenTask(Canvas2DLayerBridge* bridge, 429 void runSetIsHiddenTask(Canvas2DLayerBridge* bridge,
430 bool value, 430 bool value,
431 WaitableEvent* doneEvent) { 431 WaitableEvent* doneEvent) {
(...skipping 10 matching lines...) Expand all
442 testThread->getWebTaskRunner()->postTask( 442 testThread->getWebTaskRunner()->postTask(
443 location, 443 location,
444 crossThreadBind(&runSetIsHiddenTask, crossThreadUnretained(bridge), value, 444 crossThreadBind(&runSetIsHiddenTask, crossThreadUnretained(bridge), value,
445 crossThreadUnretained(doneEvent))); 445 crossThreadUnretained(doneEvent)));
446 } 446 }
447 447
448 void postAndWaitSetIsHiddenTask(const WebTraceLocation& location, 448 void postAndWaitSetIsHiddenTask(const WebTraceLocation& location,
449 WebThread* testThread, 449 WebThread* testThread,
450 Canvas2DLayerBridge* bridge, 450 Canvas2DLayerBridge* bridge,
451 bool value) { 451 bool value) {
452 std::unique_ptr<WaitableEvent> doneEvent = makeUnique<WaitableEvent>(); 452 std::unique_ptr<WaitableEvent> doneEvent = WTF::makeUnique<WaitableEvent>();
453 postSetIsHiddenTask(location, testThread, bridge, value, doneEvent.get()); 453 postSetIsHiddenTask(location, testThread, bridge, value, doneEvent.get());
454 doneEvent->wait(); 454 doneEvent->wait();
455 } 455 }
456 456
457 class MockImageBuffer : public ImageBuffer { 457 class MockImageBuffer : public ImageBuffer {
458 public: 458 public:
459 MockImageBuffer() 459 MockImageBuffer()
460 : ImageBuffer( 460 : ImageBuffer(WTF::wrapUnique(
461 wrapUnique(new UnacceleratedImageBufferSurface(IntSize(1, 1)))) {} 461 new UnacceleratedImageBufferSurface(IntSize(1, 1)))) {}
462 462
463 MOCK_CONST_METHOD1(resetCanvas, void(SkCanvas*)); 463 MOCK_CONST_METHOD1(resetCanvas, void(SkCanvas*));
464 464
465 virtual ~MockImageBuffer() {} 465 virtual ~MockImageBuffer() {}
466 }; 466 };
467 467
468 #if CANVAS2D_HIBERNATION_ENABLED 468 #if CANVAS2D_HIBERNATION_ENABLED
469 TEST_F(Canvas2DLayerBridgeTest, HibernationLifeCycle) 469 TEST_F(Canvas2DLayerBridgeTest, HibernationLifeCycle)
470 #else 470 #else
471 TEST_F(Canvas2DLayerBridgeTest, DISABLED_HibernationLifeCycle) 471 TEST_F(Canvas2DLayerBridgeTest, DISABLED_HibernationLifeCycle)
472 #endif 472 #endif
473 { 473 {
474 FakeGLES2Interface gl; 474 FakeGLES2Interface gl;
475 std::unique_ptr<WebThread> testThread = 475 std::unique_ptr<WebThread> testThread =
476 wrapUnique(Platform::current()->createThread("TestThread")); 476 WTF::wrapUnique(Platform::current()->createThread("TestThread"));
477 477
478 // The Canvas2DLayerBridge has to be created on the thread that will use it 478 // The Canvas2DLayerBridge has to be created on the thread that will use it
479 // to avoid WeakPtr thread check issues. 479 // to avoid WeakPtr thread check issues.
480 Canvas2DLayerBridgePtr bridge; 480 Canvas2DLayerBridgePtr bridge;
481 postAndWaitCreateBridgeTask(BLINK_FROM_HERE, testThread.get(), &bridge, &gl, 481 postAndWaitCreateBridgeTask(BLINK_FROM_HERE, testThread.get(), &bridge, &gl,
482 this); 482 this);
483 483
484 // Register an alternate Logger for tracking hibernation events 484 // Register an alternate Logger for tracking hibernation events
485 std::unique_ptr<MockLogger> mockLogger = wrapUnique(new MockLogger); 485 std::unique_ptr<MockLogger> mockLogger = WTF::wrapUnique(new MockLogger);
486 MockLogger* mockLoggerPtr = mockLogger.get(); 486 MockLogger* mockLoggerPtr = mockLogger.get();
487 bridge->setLoggerForTesting(std::move(mockLogger)); 487 bridge->setLoggerForTesting(std::move(mockLogger));
488 488
489 // Test entering hibernation 489 // Test entering hibernation
490 std::unique_ptr<WaitableEvent> hibernationStartedEvent = 490 std::unique_ptr<WaitableEvent> hibernationStartedEvent =
491 makeUnique<WaitableEvent>(); 491 WTF::makeUnique<WaitableEvent>();
492 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent( 492 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent(
493 Canvas2DLayerBridge::HibernationScheduled)); 493 Canvas2DLayerBridge::HibernationScheduled));
494 EXPECT_CALL(*mockLoggerPtr, didStartHibernating()) 494 EXPECT_CALL(*mockLoggerPtr, didStartHibernating())
495 .WillOnce(testing::Invoke(hibernationStartedEvent.get(), 495 .WillOnce(testing::Invoke(hibernationStartedEvent.get(),
496 &WaitableEvent::signal)); 496 &WaitableEvent::signal));
497 postSetIsHiddenTask(BLINK_FROM_HERE, testThread.get(), bridge.get(), true); 497 postSetIsHiddenTask(BLINK_FROM_HERE, testThread.get(), bridge.get(), true);
498 hibernationStartedEvent->wait(); 498 hibernationStartedEvent->wait();
499 ::testing::Mock::VerifyAndClearExpectations(mockLoggerPtr); 499 ::testing::Mock::VerifyAndClearExpectations(mockLoggerPtr);
500 EXPECT_FALSE(bridge->isAccelerated()); 500 EXPECT_FALSE(bridge->isAccelerated());
501 EXPECT_TRUE(bridge->isHibernating()); 501 EXPECT_TRUE(bridge->isHibernating());
(...skipping 16 matching lines...) Expand all
518 } 518 }
519 519
520 #if CANVAS2D_HIBERNATION_ENABLED 520 #if CANVAS2D_HIBERNATION_ENABLED
521 TEST_F(Canvas2DLayerBridgeTest, HibernationReEntry) 521 TEST_F(Canvas2DLayerBridgeTest, HibernationReEntry)
522 #else 522 #else
523 TEST_F(Canvas2DLayerBridgeTest, DISABLED_HibernationReEntry) 523 TEST_F(Canvas2DLayerBridgeTest, DISABLED_HibernationReEntry)
524 #endif 524 #endif
525 { 525 {
526 FakeGLES2Interface gl; 526 FakeGLES2Interface gl;
527 std::unique_ptr<WebThread> testThread = 527 std::unique_ptr<WebThread> testThread =
528 wrapUnique(Platform::current()->createThread("TestThread")); 528 WTF::wrapUnique(Platform::current()->createThread("TestThread"));
529 529
530 // The Canvas2DLayerBridge has to be created on the thread that will use it 530 // The Canvas2DLayerBridge has to be created on the thread that will use it
531 // to avoid WeakPtr thread check issues. 531 // to avoid WeakPtr thread check issues.
532 Canvas2DLayerBridgePtr bridge; 532 Canvas2DLayerBridgePtr bridge;
533 postAndWaitCreateBridgeTask(BLINK_FROM_HERE, testThread.get(), &bridge, &gl, 533 postAndWaitCreateBridgeTask(BLINK_FROM_HERE, testThread.get(), &bridge, &gl,
534 this); 534 this);
535 535
536 // Register an alternate Logger for tracking hibernation events 536 // Register an alternate Logger for tracking hibernation events
537 std::unique_ptr<MockLogger> mockLogger = wrapUnique(new MockLogger); 537 std::unique_ptr<MockLogger> mockLogger = WTF::wrapUnique(new MockLogger);
538 MockLogger* mockLoggerPtr = mockLogger.get(); 538 MockLogger* mockLoggerPtr = mockLogger.get();
539 bridge->setLoggerForTesting(std::move(mockLogger)); 539 bridge->setLoggerForTesting(std::move(mockLogger));
540 540
541 // Test entering hibernation 541 // Test entering hibernation
542 std::unique_ptr<WaitableEvent> hibernationStartedEvent = 542 std::unique_ptr<WaitableEvent> hibernationStartedEvent =
543 makeUnique<WaitableEvent>(); 543 WTF::makeUnique<WaitableEvent>();
544 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent( 544 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent(
545 Canvas2DLayerBridge::HibernationScheduled)); 545 Canvas2DLayerBridge::HibernationScheduled));
546 EXPECT_CALL(*mockLoggerPtr, didStartHibernating()) 546 EXPECT_CALL(*mockLoggerPtr, didStartHibernating())
547 .WillOnce(testing::Invoke(hibernationStartedEvent.get(), 547 .WillOnce(testing::Invoke(hibernationStartedEvent.get(),
548 &WaitableEvent::signal)); 548 &WaitableEvent::signal));
549 postSetIsHiddenTask(BLINK_FROM_HERE, testThread.get(), bridge.get(), true); 549 postSetIsHiddenTask(BLINK_FROM_HERE, testThread.get(), bridge.get(), true);
550 // Toggle visibility before the task that enters hibernation gets a 550 // Toggle visibility before the task that enters hibernation gets a
551 // chance to run. 551 // chance to run.
552 postSetIsHiddenTask(BLINK_FROM_HERE, testThread.get(), bridge.get(), false); 552 postSetIsHiddenTask(BLINK_FROM_HERE, testThread.get(), bridge.get(), false);
553 postSetIsHiddenTask(BLINK_FROM_HERE, testThread.get(), bridge.get(), true); 553 postSetIsHiddenTask(BLINK_FROM_HERE, testThread.get(), bridge.get(), true);
(...skipping 23 matching lines...) Expand all
577 #if CANVAS2D_HIBERNATION_ENABLED 577 #if CANVAS2D_HIBERNATION_ENABLED
578 TEST_F(Canvas2DLayerBridgeTest, 578 TEST_F(Canvas2DLayerBridgeTest,
579 HibernationLifeCycleWithDeferredRenderingDisabled) 579 HibernationLifeCycleWithDeferredRenderingDisabled)
580 #else 580 #else
581 TEST_F(Canvas2DLayerBridgeTest, 581 TEST_F(Canvas2DLayerBridgeTest,
582 DISABLED_HibernationLifeCycleWithDeferredRenderingDisabled) 582 DISABLED_HibernationLifeCycleWithDeferredRenderingDisabled)
583 #endif 583 #endif
584 { 584 {
585 FakeGLES2Interface gl; 585 FakeGLES2Interface gl;
586 std::unique_ptr<WebThread> testThread = 586 std::unique_ptr<WebThread> testThread =
587 wrapUnique(Platform::current()->createThread("TestThread")); 587 WTF::wrapUnique(Platform::current()->createThread("TestThread"));
588 588
589 // The Canvas2DLayerBridge has to be created on the thread that will use it 589 // The Canvas2DLayerBridge has to be created on the thread that will use it
590 // to avoid WeakPtr thread check issues. 590 // to avoid WeakPtr thread check issues.
591 Canvas2DLayerBridgePtr bridge; 591 Canvas2DLayerBridgePtr bridge;
592 postAndWaitCreateBridgeTask(BLINK_FROM_HERE, testThread.get(), &bridge, &gl, 592 postAndWaitCreateBridgeTask(BLINK_FROM_HERE, testThread.get(), &bridge, &gl,
593 this); 593 this);
594 bridge->disableDeferral(DisableDeferralReasonUnknown); 594 bridge->disableDeferral(DisableDeferralReasonUnknown);
595 MockImageBuffer mockImageBuffer; 595 MockImageBuffer mockImageBuffer;
596 EXPECT_CALL(mockImageBuffer, resetCanvas(_)).Times(AnyNumber()); 596 EXPECT_CALL(mockImageBuffer, resetCanvas(_)).Times(AnyNumber());
597 bridge->setImageBuffer(&mockImageBuffer); 597 bridge->setImageBuffer(&mockImageBuffer);
598 598
599 // Register an alternate Logger for tracking hibernation events 599 // Register an alternate Logger for tracking hibernation events
600 std::unique_ptr<MockLogger> mockLogger = wrapUnique(new MockLogger); 600 std::unique_ptr<MockLogger> mockLogger = WTF::wrapUnique(new MockLogger);
601 MockLogger* mockLoggerPtr = mockLogger.get(); 601 MockLogger* mockLoggerPtr = mockLogger.get();
602 bridge->setLoggerForTesting(std::move(mockLogger)); 602 bridge->setLoggerForTesting(std::move(mockLogger));
603 603
604 // Test entering hibernation 604 // Test entering hibernation
605 std::unique_ptr<WaitableEvent> hibernationStartedEvent = 605 std::unique_ptr<WaitableEvent> hibernationStartedEvent =
606 makeUnique<WaitableEvent>(); 606 WTF::makeUnique<WaitableEvent>();
607 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent( 607 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent(
608 Canvas2DLayerBridge::HibernationScheduled)); 608 Canvas2DLayerBridge::HibernationScheduled));
609 EXPECT_CALL(*mockLoggerPtr, didStartHibernating()) 609 EXPECT_CALL(*mockLoggerPtr, didStartHibernating())
610 .WillOnce(testing::Invoke(hibernationStartedEvent.get(), 610 .WillOnce(testing::Invoke(hibernationStartedEvent.get(),
611 &WaitableEvent::signal)); 611 &WaitableEvent::signal));
612 postSetIsHiddenTask(BLINK_FROM_HERE, testThread.get(), bridge.get(), true); 612 postSetIsHiddenTask(BLINK_FROM_HERE, testThread.get(), bridge.get(), true);
613 hibernationStartedEvent->wait(); 613 hibernationStartedEvent->wait();
614 ::testing::Mock::VerifyAndClearExpectations(mockLoggerPtr); 614 ::testing::Mock::VerifyAndClearExpectations(mockLoggerPtr);
615 ::testing::Mock::VerifyAndClearExpectations(&mockImageBuffer); 615 ::testing::Mock::VerifyAndClearExpectations(&mockImageBuffer);
616 EXPECT_FALSE(bridge->isAccelerated()); 616 EXPECT_FALSE(bridge->isAccelerated());
(...skipping 22 matching lines...) Expand all
639 void runRenderingTask(Canvas2DLayerBridge* bridge, WaitableEvent* doneEvent) { 639 void runRenderingTask(Canvas2DLayerBridge* bridge, WaitableEvent* doneEvent) {
640 bridge->didDraw(FloatRect(0, 0, 1, 1)); 640 bridge->didDraw(FloatRect(0, 0, 1, 1));
641 bridge->finalizeFrame(FloatRect(0, 0, 1, 1)); 641 bridge->finalizeFrame(FloatRect(0, 0, 1, 1));
642 bridge->flush(); 642 bridge->flush();
643 doneEvent->signal(); 643 doneEvent->signal();
644 } 644 }
645 645
646 void postAndWaitRenderingTask(const WebTraceLocation& location, 646 void postAndWaitRenderingTask(const WebTraceLocation& location,
647 WebThread* testThread, 647 WebThread* testThread,
648 Canvas2DLayerBridge* bridge) { 648 Canvas2DLayerBridge* bridge) {
649 std::unique_ptr<WaitableEvent> doneEvent = makeUnique<WaitableEvent>(); 649 std::unique_ptr<WaitableEvent> doneEvent = WTF::makeUnique<WaitableEvent>();
650 testThread->getWebTaskRunner()->postTask( 650 testThread->getWebTaskRunner()->postTask(
651 location, 651 location,
652 crossThreadBind(&runRenderingTask, crossThreadUnretained(bridge), 652 crossThreadBind(&runRenderingTask, crossThreadUnretained(bridge),
653 crossThreadUnretained(doneEvent.get()))); 653 crossThreadUnretained(doneEvent.get())));
654 doneEvent->wait(); 654 doneEvent->wait();
655 } 655 }
656 656
657 #if CANVAS2D_HIBERNATION_ENABLED && CANVAS2D_BACKGROUND_RENDER_SWITCH_TO_CPU 657 #if CANVAS2D_HIBERNATION_ENABLED && CANVAS2D_BACKGROUND_RENDER_SWITCH_TO_CPU
658 TEST_F(Canvas2DLayerBridgeTest, BackgroundRenderingWhileHibernating) 658 TEST_F(Canvas2DLayerBridgeTest, BackgroundRenderingWhileHibernating)
659 #else 659 #else
660 TEST_F(Canvas2DLayerBridgeTest, DISABLED_BackgroundRenderingWhileHibernating) 660 TEST_F(Canvas2DLayerBridgeTest, DISABLED_BackgroundRenderingWhileHibernating)
661 #endif 661 #endif
662 { 662 {
663 FakeGLES2Interface gl; 663 FakeGLES2Interface gl;
664 std::unique_ptr<WebThread> testThread = 664 std::unique_ptr<WebThread> testThread =
665 wrapUnique(Platform::current()->createThread("TestThread")); 665 WTF::wrapUnique(Platform::current()->createThread("TestThread"));
666 666
667 // The Canvas2DLayerBridge has to be created on the thread that will use it 667 // The Canvas2DLayerBridge has to be created on the thread that will use it
668 // to avoid WeakPtr thread check issues. 668 // to avoid WeakPtr thread check issues.
669 Canvas2DLayerBridgePtr bridge; 669 Canvas2DLayerBridgePtr bridge;
670 postAndWaitCreateBridgeTask(BLINK_FROM_HERE, testThread.get(), &bridge, &gl, 670 postAndWaitCreateBridgeTask(BLINK_FROM_HERE, testThread.get(), &bridge, &gl,
671 this); 671 this);
672 672
673 // Register an alternate Logger for tracking hibernation events 673 // Register an alternate Logger for tracking hibernation events
674 std::unique_ptr<MockLogger> mockLogger = wrapUnique(new MockLogger); 674 std::unique_ptr<MockLogger> mockLogger = WTF::wrapUnique(new MockLogger);
675 MockLogger* mockLoggerPtr = mockLogger.get(); 675 MockLogger* mockLoggerPtr = mockLogger.get();
676 bridge->setLoggerForTesting(std::move(mockLogger)); 676 bridge->setLoggerForTesting(std::move(mockLogger));
677 677
678 // Test entering hibernation 678 // Test entering hibernation
679 std::unique_ptr<WaitableEvent> hibernationStartedEvent = 679 std::unique_ptr<WaitableEvent> hibernationStartedEvent =
680 makeUnique<WaitableEvent>(); 680 WTF::makeUnique<WaitableEvent>();
681 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent( 681 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent(
682 Canvas2DLayerBridge::HibernationScheduled)); 682 Canvas2DLayerBridge::HibernationScheduled));
683 EXPECT_CALL(*mockLoggerPtr, didStartHibernating()) 683 EXPECT_CALL(*mockLoggerPtr, didStartHibernating())
684 .WillOnce(testing::Invoke(hibernationStartedEvent.get(), 684 .WillOnce(testing::Invoke(hibernationStartedEvent.get(),
685 &WaitableEvent::signal)); 685 &WaitableEvent::signal));
686 postSetIsHiddenTask(BLINK_FROM_HERE, testThread.get(), bridge.get(), true); 686 postSetIsHiddenTask(BLINK_FROM_HERE, testThread.get(), bridge.get(), true);
687 hibernationStartedEvent->wait(); 687 hibernationStartedEvent->wait();
688 ::testing::Mock::VerifyAndClearExpectations(mockLoggerPtr); 688 ::testing::Mock::VerifyAndClearExpectations(mockLoggerPtr);
689 EXPECT_FALSE(bridge->isAccelerated()); 689 EXPECT_FALSE(bridge->isAccelerated());
690 EXPECT_TRUE(bridge->isHibernating()); 690 EXPECT_TRUE(bridge->isHibernating());
(...skipping 28 matching lines...) Expand all
719 TEST_F(Canvas2DLayerBridgeTest, 719 TEST_F(Canvas2DLayerBridgeTest,
720 BackgroundRenderingWhileHibernatingWithDeferredRenderingDisabled) 720 BackgroundRenderingWhileHibernatingWithDeferredRenderingDisabled)
721 #else 721 #else
722 TEST_F( 722 TEST_F(
723 Canvas2DLayerBridgeTest, 723 Canvas2DLayerBridgeTest,
724 DISABLED_BackgroundRenderingWhileHibernatingWithDeferredRenderingDisabled) 724 DISABLED_BackgroundRenderingWhileHibernatingWithDeferredRenderingDisabled)
725 #endif 725 #endif
726 { 726 {
727 FakeGLES2Interface gl; 727 FakeGLES2Interface gl;
728 std::unique_ptr<WebThread> testThread = 728 std::unique_ptr<WebThread> testThread =
729 wrapUnique(Platform::current()->createThread("TestThread")); 729 WTF::wrapUnique(Platform::current()->createThread("TestThread"));
730 730
731 // The Canvas2DLayerBridge has to be created on the thread that will use it 731 // The Canvas2DLayerBridge has to be created on the thread that will use it
732 // to avoid WeakPtr thread check issues. 732 // to avoid WeakPtr thread check issues.
733 Canvas2DLayerBridgePtr bridge; 733 Canvas2DLayerBridgePtr bridge;
734 postAndWaitCreateBridgeTask(BLINK_FROM_HERE, testThread.get(), &bridge, &gl, 734 postAndWaitCreateBridgeTask(BLINK_FROM_HERE, testThread.get(), &bridge, &gl,
735 this); 735 this);
736 MockImageBuffer mockImageBuffer; 736 MockImageBuffer mockImageBuffer;
737 EXPECT_CALL(mockImageBuffer, resetCanvas(_)).Times(AnyNumber()); 737 EXPECT_CALL(mockImageBuffer, resetCanvas(_)).Times(AnyNumber());
738 bridge->setImageBuffer(&mockImageBuffer); 738 bridge->setImageBuffer(&mockImageBuffer);
739 bridge->disableDeferral(DisableDeferralReasonUnknown); 739 bridge->disableDeferral(DisableDeferralReasonUnknown);
740 740
741 // Register an alternate Logger for tracking hibernation events 741 // Register an alternate Logger for tracking hibernation events
742 std::unique_ptr<MockLogger> mockLogger = wrapUnique(new MockLogger); 742 std::unique_ptr<MockLogger> mockLogger = WTF::wrapUnique(new MockLogger);
743 MockLogger* mockLoggerPtr = mockLogger.get(); 743 MockLogger* mockLoggerPtr = mockLogger.get();
744 bridge->setLoggerForTesting(std::move(mockLogger)); 744 bridge->setLoggerForTesting(std::move(mockLogger));
745 745
746 // Test entering hibernation 746 // Test entering hibernation
747 std::unique_ptr<WaitableEvent> hibernationStartedEvent = 747 std::unique_ptr<WaitableEvent> hibernationStartedEvent =
748 makeUnique<WaitableEvent>(); 748 WTF::makeUnique<WaitableEvent>();
749 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent( 749 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent(
750 Canvas2DLayerBridge::HibernationScheduled)); 750 Canvas2DLayerBridge::HibernationScheduled));
751 EXPECT_CALL(*mockLoggerPtr, didStartHibernating()) 751 EXPECT_CALL(*mockLoggerPtr, didStartHibernating())
752 .WillOnce(testing::Invoke(hibernationStartedEvent.get(), 752 .WillOnce(testing::Invoke(hibernationStartedEvent.get(),
753 &WaitableEvent::signal)); 753 &WaitableEvent::signal));
754 postSetIsHiddenTask(BLINK_FROM_HERE, testThread.get(), bridge.get(), true); 754 postSetIsHiddenTask(BLINK_FROM_HERE, testThread.get(), bridge.get(), true);
755 hibernationStartedEvent->wait(); 755 hibernationStartedEvent->wait();
756 ::testing::Mock::VerifyAndClearExpectations(mockLoggerPtr); 756 ::testing::Mock::VerifyAndClearExpectations(mockLoggerPtr);
757 ::testing::Mock::VerifyAndClearExpectations(&mockImageBuffer); 757 ::testing::Mock::VerifyAndClearExpectations(&mockImageBuffer);
758 EXPECT_FALSE(bridge->isAccelerated()); 758 EXPECT_FALSE(bridge->isAccelerated());
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
791 791
792 #if CANVAS2D_HIBERNATION_ENABLED && CANVAS2D_BACKGROUND_RENDER_SWITCH_TO_CPU 792 #if CANVAS2D_HIBERNATION_ENABLED && CANVAS2D_BACKGROUND_RENDER_SWITCH_TO_CPU
793 TEST_F(Canvas2DLayerBridgeTest, DisableDeferredRenderingWhileHibernating) 793 TEST_F(Canvas2DLayerBridgeTest, DisableDeferredRenderingWhileHibernating)
794 #else 794 #else
795 TEST_F(Canvas2DLayerBridgeTest, 795 TEST_F(Canvas2DLayerBridgeTest,
796 DISABLED_DisableDeferredRenderingWhileHibernating) 796 DISABLED_DisableDeferredRenderingWhileHibernating)
797 #endif 797 #endif
798 { 798 {
799 FakeGLES2Interface gl; 799 FakeGLES2Interface gl;
800 std::unique_ptr<WebThread> testThread = 800 std::unique_ptr<WebThread> testThread =
801 wrapUnique(Platform::current()->createThread("TestThread")); 801 WTF::wrapUnique(Platform::current()->createThread("TestThread"));
802 802
803 // The Canvas2DLayerBridge has to be created on the thread that will use it 803 // The Canvas2DLayerBridge has to be created on the thread that will use it
804 // to avoid WeakPtr thread check issues. 804 // to avoid WeakPtr thread check issues.
805 Canvas2DLayerBridgePtr bridge; 805 Canvas2DLayerBridgePtr bridge;
806 postAndWaitCreateBridgeTask(BLINK_FROM_HERE, testThread.get(), &bridge, &gl, 806 postAndWaitCreateBridgeTask(BLINK_FROM_HERE, testThread.get(), &bridge, &gl,
807 this); 807 this);
808 MockImageBuffer mockImageBuffer; 808 MockImageBuffer mockImageBuffer;
809 EXPECT_CALL(mockImageBuffer, resetCanvas(_)).Times(AnyNumber()); 809 EXPECT_CALL(mockImageBuffer, resetCanvas(_)).Times(AnyNumber());
810 bridge->setImageBuffer(&mockImageBuffer); 810 bridge->setImageBuffer(&mockImageBuffer);
811 811
812 // Register an alternate Logger for tracking hibernation events 812 // Register an alternate Logger for tracking hibernation events
813 std::unique_ptr<MockLogger> mockLogger = wrapUnique(new MockLogger); 813 std::unique_ptr<MockLogger> mockLogger = WTF::wrapUnique(new MockLogger);
814 MockLogger* mockLoggerPtr = mockLogger.get(); 814 MockLogger* mockLoggerPtr = mockLogger.get();
815 bridge->setLoggerForTesting(std::move(mockLogger)); 815 bridge->setLoggerForTesting(std::move(mockLogger));
816 816
817 // Test entering hibernation 817 // Test entering hibernation
818 std::unique_ptr<WaitableEvent> hibernationStartedEvent = 818 std::unique_ptr<WaitableEvent> hibernationStartedEvent =
819 makeUnique<WaitableEvent>(); 819 WTF::makeUnique<WaitableEvent>();
820 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent( 820 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent(
821 Canvas2DLayerBridge::HibernationScheduled)); 821 Canvas2DLayerBridge::HibernationScheduled));
822 EXPECT_CALL(*mockLoggerPtr, didStartHibernating()) 822 EXPECT_CALL(*mockLoggerPtr, didStartHibernating())
823 .WillOnce(testing::Invoke(hibernationStartedEvent.get(), 823 .WillOnce(testing::Invoke(hibernationStartedEvent.get(),
824 &WaitableEvent::signal)); 824 &WaitableEvent::signal));
825 postSetIsHiddenTask(BLINK_FROM_HERE, testThread.get(), bridge.get(), true); 825 postSetIsHiddenTask(BLINK_FROM_HERE, testThread.get(), bridge.get(), true);
826 hibernationStartedEvent->wait(); 826 hibernationStartedEvent->wait();
827 ::testing::Mock::VerifyAndClearExpectations(mockLoggerPtr); 827 ::testing::Mock::VerifyAndClearExpectations(mockLoggerPtr);
828 ::testing::Mock::VerifyAndClearExpectations(&mockImageBuffer); 828 ::testing::Mock::VerifyAndClearExpectations(&mockImageBuffer);
829 EXPECT_FALSE(bridge->isAccelerated()); 829 EXPECT_FALSE(bridge->isAccelerated());
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
861 } 861 }
862 862
863 #if CANVAS2D_HIBERNATION_ENABLED 863 #if CANVAS2D_HIBERNATION_ENABLED
864 TEST_F(Canvas2DLayerBridgeTest, TeardownWhileHibernating) 864 TEST_F(Canvas2DLayerBridgeTest, TeardownWhileHibernating)
865 #else 865 #else
866 TEST_F(Canvas2DLayerBridgeTest, DISABLED_TeardownWhileHibernating) 866 TEST_F(Canvas2DLayerBridgeTest, DISABLED_TeardownWhileHibernating)
867 #endif 867 #endif
868 { 868 {
869 FakeGLES2Interface gl; 869 FakeGLES2Interface gl;
870 std::unique_ptr<WebThread> testThread = 870 std::unique_ptr<WebThread> testThread =
871 wrapUnique(Platform::current()->createThread("TestThread")); 871 WTF::wrapUnique(Platform::current()->createThread("TestThread"));
872 872
873 // The Canvas2DLayerBridge has to be created on the thread that will use it 873 // The Canvas2DLayerBridge has to be created on the thread that will use it
874 // to avoid WeakPtr thread check issues. 874 // to avoid WeakPtr thread check issues.
875 Canvas2DLayerBridgePtr bridge; 875 Canvas2DLayerBridgePtr bridge;
876 postAndWaitCreateBridgeTask(BLINK_FROM_HERE, testThread.get(), &bridge, &gl, 876 postAndWaitCreateBridgeTask(BLINK_FROM_HERE, testThread.get(), &bridge, &gl,
877 this); 877 this);
878 878
879 // Register an alternate Logger for tracking hibernation events 879 // Register an alternate Logger for tracking hibernation events
880 std::unique_ptr<MockLogger> mockLogger = wrapUnique(new MockLogger); 880 std::unique_ptr<MockLogger> mockLogger = WTF::wrapUnique(new MockLogger);
881 MockLogger* mockLoggerPtr = mockLogger.get(); 881 MockLogger* mockLoggerPtr = mockLogger.get();
882 bridge->setLoggerForTesting(std::move(mockLogger)); 882 bridge->setLoggerForTesting(std::move(mockLogger));
883 883
884 // Test entering hibernation 884 // Test entering hibernation
885 std::unique_ptr<WaitableEvent> hibernationStartedEvent = 885 std::unique_ptr<WaitableEvent> hibernationStartedEvent =
886 makeUnique<WaitableEvent>(); 886 WTF::makeUnique<WaitableEvent>();
887 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent( 887 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent(
888 Canvas2DLayerBridge::HibernationScheduled)); 888 Canvas2DLayerBridge::HibernationScheduled));
889 EXPECT_CALL(*mockLoggerPtr, didStartHibernating()) 889 EXPECT_CALL(*mockLoggerPtr, didStartHibernating())
890 .WillOnce(testing::Invoke(hibernationStartedEvent.get(), 890 .WillOnce(testing::Invoke(hibernationStartedEvent.get(),
891 &WaitableEvent::signal)); 891 &WaitableEvent::signal));
892 postSetIsHiddenTask(BLINK_FROM_HERE, testThread.get(), bridge.get(), true); 892 postSetIsHiddenTask(BLINK_FROM_HERE, testThread.get(), bridge.get(), true);
893 hibernationStartedEvent->wait(); 893 hibernationStartedEvent->wait();
894 ::testing::Mock::VerifyAndClearExpectations(mockLoggerPtr); 894 ::testing::Mock::VerifyAndClearExpectations(mockLoggerPtr);
895 EXPECT_FALSE(bridge->isAccelerated()); 895 EXPECT_FALSE(bridge->isAccelerated());
896 EXPECT_TRUE(bridge->isHibernating()); 896 EXPECT_TRUE(bridge->isHibernating());
897 EXPECT_TRUE(bridge->checkSurfaceValid()); 897 EXPECT_TRUE(bridge->checkSurfaceValid());
898 898
899 // Tear down the bridge while hibernating 899 // Tear down the bridge while hibernating
900 EXPECT_CALL(*mockLoggerPtr, 900 EXPECT_CALL(*mockLoggerPtr,
901 reportHibernationEvent( 901 reportHibernationEvent(
902 Canvas2DLayerBridge::HibernationEndedWithTeardown)); 902 Canvas2DLayerBridge::HibernationEndedWithTeardown));
903 postAndWaitDestroyBridgeTask(BLINK_FROM_HERE, testThread.get(), &bridge); 903 postAndWaitDestroyBridgeTask(BLINK_FROM_HERE, testThread.get(), &bridge);
904 } 904 }
905 905
906 #if CANVAS2D_HIBERNATION_ENABLED 906 #if CANVAS2D_HIBERNATION_ENABLED
907 TEST_F(Canvas2DLayerBridgeTest, SnapshotWhileHibernating) 907 TEST_F(Canvas2DLayerBridgeTest, SnapshotWhileHibernating)
908 #else 908 #else
909 TEST_F(Canvas2DLayerBridgeTest, DISABLED_SnapshotWhileHibernating) 909 TEST_F(Canvas2DLayerBridgeTest, DISABLED_SnapshotWhileHibernating)
910 #endif 910 #endif
911 { 911 {
912 FakeGLES2Interface gl; 912 FakeGLES2Interface gl;
913 std::unique_ptr<WebThread> testThread = 913 std::unique_ptr<WebThread> testThread =
914 wrapUnique(Platform::current()->createThread("TestThread")); 914 WTF::wrapUnique(Platform::current()->createThread("TestThread"));
915 915
916 // The Canvas2DLayerBridge has to be created on the thread that will use it 916 // The Canvas2DLayerBridge has to be created on the thread that will use it
917 // to avoid WeakPtr thread check issues. 917 // to avoid WeakPtr thread check issues.
918 Canvas2DLayerBridgePtr bridge; 918 Canvas2DLayerBridgePtr bridge;
919 postAndWaitCreateBridgeTask(BLINK_FROM_HERE, testThread.get(), &bridge, &gl, 919 postAndWaitCreateBridgeTask(BLINK_FROM_HERE, testThread.get(), &bridge, &gl,
920 this); 920 this);
921 921
922 // Register an alternate Logger for tracking hibernation events 922 // Register an alternate Logger for tracking hibernation events
923 std::unique_ptr<MockLogger> mockLogger = wrapUnique(new MockLogger); 923 std::unique_ptr<MockLogger> mockLogger = WTF::wrapUnique(new MockLogger);
924 MockLogger* mockLoggerPtr = mockLogger.get(); 924 MockLogger* mockLoggerPtr = mockLogger.get();
925 bridge->setLoggerForTesting(std::move(mockLogger)); 925 bridge->setLoggerForTesting(std::move(mockLogger));
926 926
927 // Test entering hibernation 927 // Test entering hibernation
928 std::unique_ptr<WaitableEvent> hibernationStartedEvent = 928 std::unique_ptr<WaitableEvent> hibernationStartedEvent =
929 makeUnique<WaitableEvent>(); 929 WTF::makeUnique<WaitableEvent>();
930 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent( 930 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent(
931 Canvas2DLayerBridge::HibernationScheduled)); 931 Canvas2DLayerBridge::HibernationScheduled));
932 EXPECT_CALL(*mockLoggerPtr, didStartHibernating()) 932 EXPECT_CALL(*mockLoggerPtr, didStartHibernating())
933 .WillOnce(testing::Invoke(hibernationStartedEvent.get(), 933 .WillOnce(testing::Invoke(hibernationStartedEvent.get(),
934 &WaitableEvent::signal)); 934 &WaitableEvent::signal));
935 postSetIsHiddenTask(BLINK_FROM_HERE, testThread.get(), bridge.get(), true); 935 postSetIsHiddenTask(BLINK_FROM_HERE, testThread.get(), bridge.get(), true);
936 hibernationStartedEvent->wait(); 936 hibernationStartedEvent->wait();
937 ::testing::Mock::VerifyAndClearExpectations(mockLoggerPtr); 937 ::testing::Mock::VerifyAndClearExpectations(mockLoggerPtr);
938 EXPECT_FALSE(bridge->isAccelerated()); 938 EXPECT_FALSE(bridge->isAccelerated());
939 EXPECT_TRUE(bridge->isHibernating()); 939 EXPECT_TRUE(bridge->isHibernating());
940 EXPECT_TRUE(bridge->checkSurfaceValid()); 940 EXPECT_TRUE(bridge->checkSurfaceValid());
941 941
942 // Take a snapshot and verify that it is not accelerated due to hibernation 942 // Take a snapshot and verify that it is not accelerated due to hibernation
943 sk_sp<SkImage> image = 943 sk_sp<SkImage> image =
944 bridge->newImageSnapshot(PreferAcceleration, SnapshotReasonUnitTests); 944 bridge->newImageSnapshot(PreferAcceleration, SnapshotReasonUnitTests);
945 EXPECT_FALSE(image->isTextureBacked()); 945 EXPECT_FALSE(image->isTextureBacked());
946 image.reset(); 946 image.reset();
947 947
948 // Verify that taking a snapshot did not affect the state of bridge 948 // Verify that taking a snapshot did not affect the state of bridge
949 EXPECT_FALSE(bridge->isAccelerated()); 949 EXPECT_FALSE(bridge->isAccelerated());
950 EXPECT_TRUE(bridge->isHibernating()); 950 EXPECT_TRUE(bridge->isHibernating());
951 EXPECT_TRUE(bridge->checkSurfaceValid()); 951 EXPECT_TRUE(bridge->checkSurfaceValid());
952 952
953 // End hibernation normally 953 // End hibernation normally
954 std::unique_ptr<WaitableEvent> hibernationEndedEvent = 954 std::unique_ptr<WaitableEvent> hibernationEndedEvent =
955 makeUnique<WaitableEvent>(); 955 WTF::makeUnique<WaitableEvent>();
956 EXPECT_CALL( 956 EXPECT_CALL(
957 *mockLoggerPtr, 957 *mockLoggerPtr,
958 reportHibernationEvent(Canvas2DLayerBridge::HibernationEndedNormally)) 958 reportHibernationEvent(Canvas2DLayerBridge::HibernationEndedNormally))
959 .WillOnce(testing::InvokeWithoutArgs(hibernationEndedEvent.get(), 959 .WillOnce(testing::InvokeWithoutArgs(hibernationEndedEvent.get(),
960 &WaitableEvent::signal)); 960 &WaitableEvent::signal));
961 postSetIsHiddenTask(BLINK_FROM_HERE, testThread.get(), bridge.get(), false); 961 postSetIsHiddenTask(BLINK_FROM_HERE, testThread.get(), bridge.get(), false);
962 hibernationEndedEvent->wait(); 962 hibernationEndedEvent->wait();
963 963
964 // Tear down the bridge while hibernating 964 // Tear down the bridge while hibernating
965 postAndWaitDestroyBridgeTask(BLINK_FROM_HERE, testThread.get(), &bridge); 965 postAndWaitDestroyBridgeTask(BLINK_FROM_HERE, testThread.get(), &bridge);
966 } 966 }
967 967
968 #if CANVAS2D_HIBERNATION_ENABLED 968 #if CANVAS2D_HIBERNATION_ENABLED
969 TEST_F(Canvas2DLayerBridgeTest, TeardownWhileHibernationIsPending) 969 TEST_F(Canvas2DLayerBridgeTest, TeardownWhileHibernationIsPending)
970 #else 970 #else
971 TEST_F(Canvas2DLayerBridgeTest, DISABLED_TeardownWhileHibernationIsPending) 971 TEST_F(Canvas2DLayerBridgeTest, DISABLED_TeardownWhileHibernationIsPending)
972 #endif 972 #endif
973 { 973 {
974 FakeGLES2Interface gl; 974 FakeGLES2Interface gl;
975 std::unique_ptr<WebThread> testThread = 975 std::unique_ptr<WebThread> testThread =
976 wrapUnique(Platform::current()->createThread("TestThread")); 976 WTF::wrapUnique(Platform::current()->createThread("TestThread"));
977 977
978 // The Canvas2DLayerBridge has to be created on the thread that will use it 978 // The Canvas2DLayerBridge has to be created on the thread that will use it
979 // to avoid WeakPtr thread check issues. 979 // to avoid WeakPtr thread check issues.
980 Canvas2DLayerBridgePtr bridge; 980 Canvas2DLayerBridgePtr bridge;
981 postAndWaitCreateBridgeTask(BLINK_FROM_HERE, testThread.get(), &bridge, &gl, 981 postAndWaitCreateBridgeTask(BLINK_FROM_HERE, testThread.get(), &bridge, &gl,
982 this); 982 this);
983 983
984 // Register an alternate Logger for tracking hibernation events 984 // Register an alternate Logger for tracking hibernation events
985 std::unique_ptr<MockLogger> mockLogger = wrapUnique(new MockLogger); 985 std::unique_ptr<MockLogger> mockLogger = WTF::wrapUnique(new MockLogger);
986 MockLogger* mockLoggerPtr = mockLogger.get(); 986 MockLogger* mockLoggerPtr = mockLogger.get();
987 bridge->setLoggerForTesting(std::move(mockLogger)); 987 bridge->setLoggerForTesting(std::move(mockLogger));
988 988
989 // Test entering hibernation 989 // Test entering hibernation
990 std::unique_ptr<WaitableEvent> hibernationScheduledEvent = 990 std::unique_ptr<WaitableEvent> hibernationScheduledEvent =
991 makeUnique<WaitableEvent>(); 991 WTF::makeUnique<WaitableEvent>();
992 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent( 992 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent(
993 Canvas2DLayerBridge::HibernationScheduled)); 993 Canvas2DLayerBridge::HibernationScheduled));
994 postSetIsHiddenTask(BLINK_FROM_HERE, testThread.get(), bridge.get(), true, 994 postSetIsHiddenTask(BLINK_FROM_HERE, testThread.get(), bridge.get(), true,
995 hibernationScheduledEvent.get()); 995 hibernationScheduledEvent.get());
996 postDestroyBridgeTask(BLINK_FROM_HERE, testThread.get(), &bridge); 996 postDestroyBridgeTask(BLINK_FROM_HERE, testThread.get(), &bridge);
997 // In production, we would expect a 997 // In production, we would expect a
998 // HibernationAbortedDueToDestructionWhileHibernatePending event to be 998 // HibernationAbortedDueToDestructionWhileHibernatePending event to be
999 // fired, but that signal is lost in the unit test due to no longer having 999 // fired, but that signal is lost in the unit test due to no longer having
1000 // a bridge to hold the mockLogger. 1000 // a bridge to hold the mockLogger.
1001 hibernationScheduledEvent->wait(); 1001 hibernationScheduledEvent->wait();
1002 // Once we know the hibernation task is scheduled, we can schedule a fence. 1002 // Once we know the hibernation task is scheduled, we can schedule a fence.
1003 // Assuming tasks are guaranteed to run in the order they were 1003 // Assuming tasks are guaranteed to run in the order they were
1004 // submitted, this fence will guarantee the attempt to hibernate runs to 1004 // submitted, this fence will guarantee the attempt to hibernate runs to
1005 // completion before the thread is destroyed. 1005 // completion before the thread is destroyed.
1006 // This test passes by not crashing, which proves that the WeakPtr logic 1006 // This test passes by not crashing, which proves that the WeakPtr logic
1007 // is sound. 1007 // is sound.
1008 std::unique_ptr<WaitableEvent> fenceEvent = makeUnique<WaitableEvent>(); 1008 std::unique_ptr<WaitableEvent> fenceEvent = WTF::makeUnique<WaitableEvent>();
1009 testThread->getWebTaskRunner()->postTask( 1009 testThread->getWebTaskRunner()->postTask(
1010 BLINK_FROM_HERE, 1010 BLINK_FROM_HERE,
1011 WTF::bind(&WaitableEvent::signal, unretained(fenceEvent.get()))); 1011 WTF::bind(&WaitableEvent::signal, WTF::unretained(fenceEvent.get())));
1012 fenceEvent->wait(); 1012 fenceEvent->wait();
1013 } 1013 }
1014 1014
1015 #if CANVAS2D_HIBERNATION_ENABLED 1015 #if CANVAS2D_HIBERNATION_ENABLED
1016 TEST_F(Canvas2DLayerBridgeTest, HibernationAbortedDueToPendingTeardown) 1016 TEST_F(Canvas2DLayerBridgeTest, HibernationAbortedDueToPendingTeardown)
1017 #else 1017 #else
1018 TEST_F(Canvas2DLayerBridgeTest, DISABLED_HibernationAbortedDueToPendingTeardown) 1018 TEST_F(Canvas2DLayerBridgeTest, DISABLED_HibernationAbortedDueToPendingTeardown)
1019 #endif 1019 #endif
1020 { 1020 {
1021 FakeGLES2Interface gl; 1021 FakeGLES2Interface gl;
1022 std::unique_ptr<WebThread> testThread = 1022 std::unique_ptr<WebThread> testThread =
1023 wrapUnique(Platform::current()->createThread("TestThread")); 1023 WTF::wrapUnique(Platform::current()->createThread("TestThread"));
1024 1024
1025 // The Canvas2DLayerBridge has to be created on the thread that will use it 1025 // The Canvas2DLayerBridge has to be created on the thread that will use it
1026 // to avoid WeakPtr thread check issues. 1026 // to avoid WeakPtr thread check issues.
1027 Canvas2DLayerBridgePtr bridge; 1027 Canvas2DLayerBridgePtr bridge;
1028 postAndWaitCreateBridgeTask(BLINK_FROM_HERE, testThread.get(), &bridge, &gl, 1028 postAndWaitCreateBridgeTask(BLINK_FROM_HERE, testThread.get(), &bridge, &gl,
1029 this); 1029 this);
1030 1030
1031 // Register an alternate Logger for tracking hibernation events 1031 // Register an alternate Logger for tracking hibernation events
1032 std::unique_ptr<MockLogger> mockLogger = wrapUnique(new MockLogger); 1032 std::unique_ptr<MockLogger> mockLogger = WTF::wrapUnique(new MockLogger);
1033 MockLogger* mockLoggerPtr = mockLogger.get(); 1033 MockLogger* mockLoggerPtr = mockLogger.get();
1034 bridge->setLoggerForTesting(std::move(mockLogger)); 1034 bridge->setLoggerForTesting(std::move(mockLogger));
1035 1035
1036 // Test entering hibernation 1036 // Test entering hibernation
1037 std::unique_ptr<WaitableEvent> hibernationAbortedEvent = 1037 std::unique_ptr<WaitableEvent> hibernationAbortedEvent =
1038 makeUnique<WaitableEvent>(); 1038 WTF::makeUnique<WaitableEvent>();
1039 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent( 1039 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent(
1040 Canvas2DLayerBridge::HibernationScheduled)); 1040 Canvas2DLayerBridge::HibernationScheduled));
1041 EXPECT_CALL( 1041 EXPECT_CALL(
1042 *mockLoggerPtr, 1042 *mockLoggerPtr,
1043 reportHibernationEvent( 1043 reportHibernationEvent(
1044 Canvas2DLayerBridge::HibernationAbortedDueToPendingDestruction)) 1044 Canvas2DLayerBridge::HibernationAbortedDueToPendingDestruction))
1045 .WillOnce(testing::InvokeWithoutArgs(hibernationAbortedEvent.get(), 1045 .WillOnce(testing::InvokeWithoutArgs(hibernationAbortedEvent.get(),
1046 &WaitableEvent::signal)); 1046 &WaitableEvent::signal));
1047 postSetIsHiddenTask(BLINK_FROM_HERE, testThread.get(), bridge.get(), true); 1047 postSetIsHiddenTask(BLINK_FROM_HERE, testThread.get(), bridge.get(), true);
1048 testThread->getWebTaskRunner()->postTask( 1048 testThread->getWebTaskRunner()->postTask(
1049 BLINK_FROM_HERE, crossThreadBind(&Canvas2DLayerBridge::beginDestruction, 1049 BLINK_FROM_HERE, crossThreadBind(&Canvas2DLayerBridge::beginDestruction,
1050 crossThreadUnretained(bridge.get()))); 1050 crossThreadUnretained(bridge.get())));
1051 hibernationAbortedEvent->wait(); 1051 hibernationAbortedEvent->wait();
1052 1052
1053 ::testing::Mock::VerifyAndClearExpectations(mockLoggerPtr); 1053 ::testing::Mock::VerifyAndClearExpectations(mockLoggerPtr);
1054 1054
1055 // Tear down bridge on thread 1055 // Tear down bridge on thread
1056 postAndWaitDestroyBridgeTask(BLINK_FROM_HERE, testThread.get(), &bridge); 1056 postAndWaitDestroyBridgeTask(BLINK_FROM_HERE, testThread.get(), &bridge);
1057 } 1057 }
1058 1058
1059 #if CANVAS2D_HIBERNATION_ENABLED 1059 #if CANVAS2D_HIBERNATION_ENABLED
1060 TEST_F(Canvas2DLayerBridgeTest, HibernationAbortedDueToVisibilityChange) 1060 TEST_F(Canvas2DLayerBridgeTest, HibernationAbortedDueToVisibilityChange)
1061 #else 1061 #else
1062 TEST_F(Canvas2DLayerBridgeTest, 1062 TEST_F(Canvas2DLayerBridgeTest,
1063 DISABLED_HibernationAbortedDueToVisibilityChange) 1063 DISABLED_HibernationAbortedDueToVisibilityChange)
1064 #endif 1064 #endif
1065 { 1065 {
1066 FakeGLES2Interface gl; 1066 FakeGLES2Interface gl;
1067 std::unique_ptr<WebThread> testThread = 1067 std::unique_ptr<WebThread> testThread =
1068 wrapUnique(Platform::current()->createThread("TestThread")); 1068 WTF::wrapUnique(Platform::current()->createThread("TestThread"));
1069 1069
1070 // The Canvas2DLayerBridge has to be created on the thread that will use it 1070 // The Canvas2DLayerBridge has to be created on the thread that will use it
1071 // to avoid WeakPtr thread check issues. 1071 // to avoid WeakPtr thread check issues.
1072 Canvas2DLayerBridgePtr bridge; 1072 Canvas2DLayerBridgePtr bridge;
1073 postAndWaitCreateBridgeTask(BLINK_FROM_HERE, testThread.get(), &bridge, &gl, 1073 postAndWaitCreateBridgeTask(BLINK_FROM_HERE, testThread.get(), &bridge, &gl,
1074 this); 1074 this);
1075 1075
1076 // Register an alternate Logger for tracking hibernation events 1076 // Register an alternate Logger for tracking hibernation events
1077 std::unique_ptr<MockLogger> mockLogger = wrapUnique(new MockLogger); 1077 std::unique_ptr<MockLogger> mockLogger = WTF::wrapUnique(new MockLogger);
1078 MockLogger* mockLoggerPtr = mockLogger.get(); 1078 MockLogger* mockLoggerPtr = mockLogger.get();
1079 bridge->setLoggerForTesting(std::move(mockLogger)); 1079 bridge->setLoggerForTesting(std::move(mockLogger));
1080 1080
1081 // Test entering hibernation 1081 // Test entering hibernation
1082 std::unique_ptr<WaitableEvent> hibernationAbortedEvent = 1082 std::unique_ptr<WaitableEvent> hibernationAbortedEvent =
1083 makeUnique<WaitableEvent>(); 1083 WTF::makeUnique<WaitableEvent>();
1084 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent( 1084 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent(
1085 Canvas2DLayerBridge::HibernationScheduled)); 1085 Canvas2DLayerBridge::HibernationScheduled));
1086 EXPECT_CALL(*mockLoggerPtr, 1086 EXPECT_CALL(*mockLoggerPtr,
1087 reportHibernationEvent( 1087 reportHibernationEvent(
1088 Canvas2DLayerBridge::HibernationAbortedDueToVisibilityChange)) 1088 Canvas2DLayerBridge::HibernationAbortedDueToVisibilityChange))
1089 .WillOnce(testing::InvokeWithoutArgs(hibernationAbortedEvent.get(), 1089 .WillOnce(testing::InvokeWithoutArgs(hibernationAbortedEvent.get(),
1090 &WaitableEvent::signal)); 1090 &WaitableEvent::signal));
1091 postSetIsHiddenTask(BLINK_FROM_HERE, testThread.get(), bridge.get(), true); 1091 postSetIsHiddenTask(BLINK_FROM_HERE, testThread.get(), bridge.get(), true);
1092 postSetIsHiddenTask(BLINK_FROM_HERE, testThread.get(), bridge.get(), false); 1092 postSetIsHiddenTask(BLINK_FROM_HERE, testThread.get(), bridge.get(), false);
1093 hibernationAbortedEvent->wait(); 1093 hibernationAbortedEvent->wait();
1094 ::testing::Mock::VerifyAndClearExpectations(mockLoggerPtr); 1094 ::testing::Mock::VerifyAndClearExpectations(mockLoggerPtr);
1095 EXPECT_TRUE(bridge->isAccelerated()); 1095 EXPECT_TRUE(bridge->isAccelerated());
1096 EXPECT_FALSE(bridge->isHibernating()); 1096 EXPECT_FALSE(bridge->isHibernating());
1097 EXPECT_TRUE(bridge->checkSurfaceValid()); 1097 EXPECT_TRUE(bridge->checkSurfaceValid());
1098 1098
1099 // Tear down the bridge on the thread so that 'bridge' can go out of scope 1099 // Tear down the bridge on the thread so that 'bridge' can go out of scope
1100 // without crashing due to thread checks 1100 // without crashing due to thread checks
1101 postAndWaitDestroyBridgeTask(BLINK_FROM_HERE, testThread.get(), &bridge); 1101 postAndWaitDestroyBridgeTask(BLINK_FROM_HERE, testThread.get(), &bridge);
1102 } 1102 }
1103 1103
1104 #if CANVAS2D_HIBERNATION_ENABLED 1104 #if CANVAS2D_HIBERNATION_ENABLED
1105 TEST_F(Canvas2DLayerBridgeTest, HibernationAbortedDueToLostContext) 1105 TEST_F(Canvas2DLayerBridgeTest, HibernationAbortedDueToLostContext)
1106 #else 1106 #else
1107 TEST_F(Canvas2DLayerBridgeTest, DISABLED_HibernationAbortedDueToLostContext) 1107 TEST_F(Canvas2DLayerBridgeTest, DISABLED_HibernationAbortedDueToLostContext)
1108 #endif 1108 #endif
1109 { 1109 {
1110 FakeGLES2Interface gl; 1110 FakeGLES2Interface gl;
1111 std::unique_ptr<WebThread> testThread = 1111 std::unique_ptr<WebThread> testThread =
1112 wrapUnique(Platform::current()->createThread("TestThread")); 1112 WTF::wrapUnique(Platform::current()->createThread("TestThread"));
1113 1113
1114 // The Canvas2DLayerBridge has to be created on the thread that will use it 1114 // The Canvas2DLayerBridge has to be created on the thread that will use it
1115 // to avoid WeakPtr thread check issues. 1115 // to avoid WeakPtr thread check issues.
1116 Canvas2DLayerBridgePtr bridge; 1116 Canvas2DLayerBridgePtr bridge;
1117 postAndWaitCreateBridgeTask(BLINK_FROM_HERE, testThread.get(), &bridge, &gl, 1117 postAndWaitCreateBridgeTask(BLINK_FROM_HERE, testThread.get(), &bridge, &gl,
1118 this); 1118 this);
1119 1119
1120 // Register an alternate Logger for tracking hibernation events 1120 // Register an alternate Logger for tracking hibernation events
1121 std::unique_ptr<MockLogger> mockLogger = wrapUnique(new MockLogger); 1121 std::unique_ptr<MockLogger> mockLogger = WTF::wrapUnique(new MockLogger);
1122 MockLogger* mockLoggerPtr = mockLogger.get(); 1122 MockLogger* mockLoggerPtr = mockLogger.get();
1123 bridge->setLoggerForTesting(std::move(mockLogger)); 1123 bridge->setLoggerForTesting(std::move(mockLogger));
1124 1124
1125 gl.setIsContextLost(true); 1125 gl.setIsContextLost(true);
1126 // Test entering hibernation 1126 // Test entering hibernation
1127 std::unique_ptr<WaitableEvent> hibernationAbortedEvent = 1127 std::unique_ptr<WaitableEvent> hibernationAbortedEvent =
1128 makeUnique<WaitableEvent>(); 1128 WTF::makeUnique<WaitableEvent>();
1129 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent( 1129 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent(
1130 Canvas2DLayerBridge::HibernationScheduled)); 1130 Canvas2DLayerBridge::HibernationScheduled));
1131 EXPECT_CALL(*mockLoggerPtr, 1131 EXPECT_CALL(*mockLoggerPtr,
1132 reportHibernationEvent( 1132 reportHibernationEvent(
1133 Canvas2DLayerBridge::HibernationAbortedDueGpuContextLoss)) 1133 Canvas2DLayerBridge::HibernationAbortedDueGpuContextLoss))
1134 .WillOnce(testing::InvokeWithoutArgs(hibernationAbortedEvent.get(), 1134 .WillOnce(testing::InvokeWithoutArgs(hibernationAbortedEvent.get(),
1135 &WaitableEvent::signal)); 1135 &WaitableEvent::signal));
1136 postSetIsHiddenTask(BLINK_FROM_HERE, testThread.get(), bridge.get(), true); 1136 postSetIsHiddenTask(BLINK_FROM_HERE, testThread.get(), bridge.get(), true);
1137 hibernationAbortedEvent->wait(); 1137 hibernationAbortedEvent->wait();
1138 ::testing::Mock::VerifyAndClearExpectations(mockLoggerPtr); 1138 ::testing::Mock::VerifyAndClearExpectations(mockLoggerPtr);
1139 EXPECT_FALSE(bridge->isHibernating()); 1139 EXPECT_FALSE(bridge->isHibernating());
1140 1140
1141 // Tear down the bridge on the thread so that 'bridge' can go out of scope 1141 // Tear down the bridge on the thread so that 'bridge' can go out of scope
1142 // without crashing due to thread checks 1142 // without crashing due to thread checks
1143 postAndWaitDestroyBridgeTask(BLINK_FROM_HERE, testThread.get(), &bridge); 1143 postAndWaitDestroyBridgeTask(BLINK_FROM_HERE, testThread.get(), &bridge);
1144 } 1144 }
1145 1145
1146 #if CANVAS2D_HIBERNATION_ENABLED 1146 #if CANVAS2D_HIBERNATION_ENABLED
1147 TEST_F(Canvas2DLayerBridgeTest, PrepareMailboxWhileHibernating) 1147 TEST_F(Canvas2DLayerBridgeTest, PrepareMailboxWhileHibernating)
1148 #else 1148 #else
1149 TEST_F(Canvas2DLayerBridgeTest, DISABLED_PrepareMailboxWhileHibernating) 1149 TEST_F(Canvas2DLayerBridgeTest, DISABLED_PrepareMailboxWhileHibernating)
1150 #endif 1150 #endif
1151 { 1151 {
1152 FakeGLES2Interface gl; 1152 FakeGLES2Interface gl;
1153 std::unique_ptr<WebThread> testThread = 1153 std::unique_ptr<WebThread> testThread =
1154 wrapUnique(Platform::current()->createThread("TestThread")); 1154 WTF::wrapUnique(Platform::current()->createThread("TestThread"));
1155 1155
1156 // The Canvas2DLayerBridge has to be created on the thread that will use it 1156 // The Canvas2DLayerBridge has to be created on the thread that will use it
1157 // to avoid WeakPtr thread check issues. 1157 // to avoid WeakPtr thread check issues.
1158 Canvas2DLayerBridgePtr bridge; 1158 Canvas2DLayerBridgePtr bridge;
1159 postAndWaitCreateBridgeTask(BLINK_FROM_HERE, testThread.get(), &bridge, &gl, 1159 postAndWaitCreateBridgeTask(BLINK_FROM_HERE, testThread.get(), &bridge, &gl,
1160 this); 1160 this);
1161 1161
1162 // Register an alternate Logger for tracking hibernation events 1162 // Register an alternate Logger for tracking hibernation events
1163 std::unique_ptr<MockLogger> mockLogger = wrapUnique(new MockLogger); 1163 std::unique_ptr<MockLogger> mockLogger = WTF::wrapUnique(new MockLogger);
1164 MockLogger* mockLoggerPtr = mockLogger.get(); 1164 MockLogger* mockLoggerPtr = mockLogger.get();
1165 bridge->setLoggerForTesting(std::move(mockLogger)); 1165 bridge->setLoggerForTesting(std::move(mockLogger));
1166 1166
1167 // Test entering hibernation 1167 // Test entering hibernation
1168 std::unique_ptr<WaitableEvent> hibernationStartedEvent = 1168 std::unique_ptr<WaitableEvent> hibernationStartedEvent =
1169 makeUnique<WaitableEvent>(); 1169 WTF::makeUnique<WaitableEvent>();
1170 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent( 1170 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent(
1171 Canvas2DLayerBridge::HibernationScheduled)); 1171 Canvas2DLayerBridge::HibernationScheduled));
1172 EXPECT_CALL(*mockLoggerPtr, didStartHibernating()) 1172 EXPECT_CALL(*mockLoggerPtr, didStartHibernating())
1173 .WillOnce(testing::Invoke(hibernationStartedEvent.get(), 1173 .WillOnce(testing::Invoke(hibernationStartedEvent.get(),
1174 &WaitableEvent::signal)); 1174 &WaitableEvent::signal));
1175 postSetIsHiddenTask(BLINK_FROM_HERE, testThread.get(), bridge.get(), true); 1175 postSetIsHiddenTask(BLINK_FROM_HERE, testThread.get(), bridge.get(), true);
1176 hibernationStartedEvent->wait(); 1176 hibernationStartedEvent->wait();
1177 ::testing::Mock::VerifyAndClearExpectations(mockLoggerPtr); 1177 ::testing::Mock::VerifyAndClearExpectations(mockLoggerPtr);
1178 1178
1179 // Test prepareMailbox while hibernating 1179 // Test prepareMailbox while hibernating
(...skipping 12 matching lines...) Expand all
1192 } 1192 }
1193 1193
1194 #if CANVAS2D_HIBERNATION_ENABLED && CANVAS2D_BACKGROUND_RENDER_SWITCH_TO_CPU 1194 #if CANVAS2D_HIBERNATION_ENABLED && CANVAS2D_BACKGROUND_RENDER_SWITCH_TO_CPU
1195 TEST_F(Canvas2DLayerBridgeTest, PrepareMailboxWhileBackgroundRendering) 1195 TEST_F(Canvas2DLayerBridgeTest, PrepareMailboxWhileBackgroundRendering)
1196 #else 1196 #else
1197 TEST_F(Canvas2DLayerBridgeTest, DISABLED_PrepareMailboxWhileBackgroundRendering) 1197 TEST_F(Canvas2DLayerBridgeTest, DISABLED_PrepareMailboxWhileBackgroundRendering)
1198 #endif 1198 #endif
1199 { 1199 {
1200 FakeGLES2Interface gl; 1200 FakeGLES2Interface gl;
1201 std::unique_ptr<WebThread> testThread = 1201 std::unique_ptr<WebThread> testThread =
1202 wrapUnique(Platform::current()->createThread("TestThread")); 1202 WTF::wrapUnique(Platform::current()->createThread("TestThread"));
1203 1203
1204 // The Canvas2DLayerBridge has to be created on the thread that will use it 1204 // The Canvas2DLayerBridge has to be created on the thread that will use it
1205 // to avoid WeakPtr thread check issues. 1205 // to avoid WeakPtr thread check issues.
1206 Canvas2DLayerBridgePtr bridge; 1206 Canvas2DLayerBridgePtr bridge;
1207 postAndWaitCreateBridgeTask(BLINK_FROM_HERE, testThread.get(), &bridge, &gl, 1207 postAndWaitCreateBridgeTask(BLINK_FROM_HERE, testThread.get(), &bridge, &gl,
1208 this); 1208 this);
1209 1209
1210 // Register an alternate Logger for tracking hibernation events 1210 // Register an alternate Logger for tracking hibernation events
1211 std::unique_ptr<MockLogger> mockLogger = wrapUnique(new MockLogger); 1211 std::unique_ptr<MockLogger> mockLogger = WTF::wrapUnique(new MockLogger);
1212 MockLogger* mockLoggerPtr = mockLogger.get(); 1212 MockLogger* mockLoggerPtr = mockLogger.get();
1213 bridge->setLoggerForTesting(std::move(mockLogger)); 1213 bridge->setLoggerForTesting(std::move(mockLogger));
1214 1214
1215 // Test entering hibernation 1215 // Test entering hibernation
1216 std::unique_ptr<WaitableEvent> hibernationStartedEvent = 1216 std::unique_ptr<WaitableEvent> hibernationStartedEvent =
1217 makeUnique<WaitableEvent>(); 1217 WTF::makeUnique<WaitableEvent>();
1218 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent( 1218 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent(
1219 Canvas2DLayerBridge::HibernationScheduled)); 1219 Canvas2DLayerBridge::HibernationScheduled));
1220 EXPECT_CALL(*mockLoggerPtr, didStartHibernating()) 1220 EXPECT_CALL(*mockLoggerPtr, didStartHibernating())
1221 .WillOnce(testing::Invoke(hibernationStartedEvent.get(), 1221 .WillOnce(testing::Invoke(hibernationStartedEvent.get(),
1222 &WaitableEvent::signal)); 1222 &WaitableEvent::signal));
1223 postSetIsHiddenTask(BLINK_FROM_HERE, testThread.get(), bridge.get(), true); 1223 postSetIsHiddenTask(BLINK_FROM_HERE, testThread.get(), bridge.get(), true);
1224 hibernationStartedEvent->wait(); 1224 hibernationStartedEvent->wait();
1225 ::testing::Mock::VerifyAndClearExpectations(mockLoggerPtr); 1225 ::testing::Mock::VerifyAndClearExpectations(mockLoggerPtr);
1226 1226
1227 // Rendering in the background -> temp switch to SW 1227 // Rendering in the background -> temp switch to SW
(...skipping 21 matching lines...) Expand all
1249 1249
1250 #if USE_IOSURFACE_FOR_2D_CANVAS 1250 #if USE_IOSURFACE_FOR_2D_CANVAS
1251 TEST_F(Canvas2DLayerBridgeTest, DeleteIOSurfaceAfterTeardown) 1251 TEST_F(Canvas2DLayerBridgeTest, DeleteIOSurfaceAfterTeardown)
1252 #else 1252 #else
1253 TEST_F(Canvas2DLayerBridgeTest, DISABLED_DeleteIOSurfaceAfterTeardown) 1253 TEST_F(Canvas2DLayerBridgeTest, DISABLED_DeleteIOSurfaceAfterTeardown)
1254 #endif 1254 #endif
1255 { 1255 {
1256 FakeGLES2InterfaceWithImageSupport gl; 1256 FakeGLES2InterfaceWithImageSupport gl;
1257 FakePlatformSupport testingPlatformSupport; 1257 FakePlatformSupport testingPlatformSupport;
1258 std::unique_ptr<FakeWebGraphicsContext3DProvider> contextProvider = 1258 std::unique_ptr<FakeWebGraphicsContext3DProvider> contextProvider =
1259 wrapUnique(new FakeWebGraphicsContext3DProvider(&gl)); 1259 WTF::wrapUnique(new FakeWebGraphicsContext3DProvider(&gl));
1260 1260
1261 cc::TextureMailbox textureMailbox; 1261 cc::TextureMailbox textureMailbox;
1262 std::unique_ptr<cc::SingleReleaseCallback> releaseCallback; 1262 std::unique_ptr<cc::SingleReleaseCallback> releaseCallback;
1263 1263
1264 { 1264 {
1265 Canvas2DLayerBridgePtr bridge(adoptRef(new Canvas2DLayerBridge( 1265 Canvas2DLayerBridgePtr bridge(adoptRef(new Canvas2DLayerBridge(
1266 std::move(contextProvider), IntSize(300, 150), 0, NonOpaque, 1266 std::move(contextProvider), IntSize(300, 150), 0, NonOpaque,
1267 Canvas2DLayerBridge::ForceAccelerationForTesting, nullptr, 1267 Canvas2DLayerBridge::ForceAccelerationForTesting, nullptr,
1268 kN32_SkColorType))); 1268 kN32_SkColorType)));
1269 bridge->PrepareTextureMailbox(&textureMailbox, &releaseCallback); 1269 bridge->PrepareTextureMailbox(&textureMailbox, &releaseCallback);
1270 } 1270 }
1271 1271
1272 bool lostResource = false; 1272 bool lostResource = false;
1273 releaseCallback->Run(gpu::SyncToken(), lostResource); 1273 releaseCallback->Run(gpu::SyncToken(), lostResource);
1274 1274
1275 EXPECT_EQ(1u, gl.createImageCount()); 1275 EXPECT_EQ(1u, gl.createImageCount());
1276 EXPECT_EQ(1u, gl.destroyImageCount()); 1276 EXPECT_EQ(1u, gl.destroyImageCount());
1277 } 1277 }
1278 1278
1279 } // namespace blink 1279 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698