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

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

Issue 1981823002: Remove OwnPtr::release() calls in platform/ (part 1). (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 7 months 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 143 matching lines...) Expand 10 before | Expand all | Expand 10 after
154 { 154 {
155 return adoptRef(new Canvas2DLayerBridge(std::move(provider), size, 0, No nOpaque, accelerationMode)); 155 return adoptRef(new Canvas2DLayerBridge(std::move(provider), size, 0, No nOpaque, accelerationMode));
156 } 156 }
157 157
158 protected: 158 protected:
159 void fullLifecycleTest() 159 void fullLifecycleTest()
160 { 160 {
161 FakeGLES2Interface gl; 161 FakeGLES2Interface gl;
162 OwnPtr<FakeWebGraphicsContext3DProvider> contextProvider = adoptPtr(new FakeWebGraphicsContext3DProvider(&gl)); 162 OwnPtr<FakeWebGraphicsContext3DProvider> contextProvider = adoptPtr(new FakeWebGraphicsContext3DProvider(&gl));
163 163
164 Canvas2DLayerBridgePtr bridge(adoptRef(new Canvas2DLayerBridge(contextPr ovider.release(), IntSize(300, 150), 0, NonOpaque, Canvas2DLayerBridge::DisableA cceleration))); 164 Canvas2DLayerBridgePtr bridge(adoptRef(new Canvas2DLayerBridge(std::move (contextProvider), IntSize(300, 150), 0, NonOpaque, Canvas2DLayerBridge::Disable Acceleration)));
165 165
166 const GrGLTextureInfo* textureInfo = skia::GrBackendObjectToGrGLTextureI nfo(bridge->newImageSnapshot(PreferAcceleration, SnapshotReasonUnknown)->getText ureHandle(true)); 166 const GrGLTextureInfo* textureInfo = skia::GrBackendObjectToGrGLTextureI nfo(bridge->newImageSnapshot(PreferAcceleration, SnapshotReasonUnknown)->getText ureHandle(true));
167 EXPECT_EQ(textureInfo, nullptr); 167 EXPECT_EQ(textureInfo, nullptr);
168 bridge.clear(); 168 bridge.clear();
169 } 169 }
170 170
171 void fallbackToSoftwareIfContextLost() 171 void fallbackToSoftwareIfContextLost()
172 { 172 {
173 FakeGLES2Interface gl; 173 FakeGLES2Interface gl;
174 OwnPtr<FakeWebGraphicsContext3DProvider> contextProvider = adoptPtr(new FakeWebGraphicsContext3DProvider(&gl)); 174 OwnPtr<FakeWebGraphicsContext3DProvider> contextProvider = adoptPtr(new FakeWebGraphicsContext3DProvider(&gl));
175 175
176 gl.setIsContextLost(true); 176 gl.setIsContextLost(true);
177 Canvas2DLayerBridgePtr bridge(adoptRef(new Canvas2DLayerBridge(contextPr ovider.release(), IntSize(300, 150), 0, NonOpaque, Canvas2DLayerBridge::EnableAc celeration))); 177 Canvas2DLayerBridgePtr bridge(adoptRef(new Canvas2DLayerBridge(std::move (contextProvider), IntSize(300, 150), 0, NonOpaque, Canvas2DLayerBridge::EnableA cceleration)));
178 EXPECT_TRUE(bridge->checkSurfaceValid()); 178 EXPECT_TRUE(bridge->checkSurfaceValid());
179 EXPECT_FALSE(bridge->isAccelerated()); 179 EXPECT_FALSE(bridge->isAccelerated());
180 } 180 }
181 181
182 void fallbackToSoftwareOnFailedTextureAlloc() 182 void fallbackToSoftwareOnFailedTextureAlloc()
183 { 183 {
184 { 184 {
185 // No fallback case. 185 // No fallback case.
186 FakeGLES2Interface gl; 186 FakeGLES2Interface gl;
187 OwnPtr<FakeWebGraphicsContext3DProvider> contextProvider = adoptPtr( new FakeWebGraphicsContext3DProvider(&gl)); 187 OwnPtr<FakeWebGraphicsContext3DProvider> contextProvider = adoptPtr( new FakeWebGraphicsContext3DProvider(&gl));
188 Canvas2DLayerBridgePtr bridge(adoptRef(new Canvas2DLayerBridge(conte xtProvider.release(), IntSize(300, 150), 0, NonOpaque, Canvas2DLayerBridge::Enab leAcceleration))); 188 Canvas2DLayerBridgePtr bridge(adoptRef(new Canvas2DLayerBridge(std:: move(contextProvider), IntSize(300, 150), 0, NonOpaque, Canvas2DLayerBridge::Ena bleAcceleration)));
189 EXPECT_TRUE(bridge->checkSurfaceValid()); 189 EXPECT_TRUE(bridge->checkSurfaceValid());
190 EXPECT_TRUE(bridge->isAccelerated()); 190 EXPECT_TRUE(bridge->isAccelerated());
191 RefPtr<SkImage> snapshot = bridge->newImageSnapshot(PreferAccelerati on, SnapshotReasonUnknown); 191 RefPtr<SkImage> snapshot = bridge->newImageSnapshot(PreferAccelerati on, SnapshotReasonUnknown);
192 EXPECT_TRUE(bridge->isAccelerated()); 192 EXPECT_TRUE(bridge->isAccelerated());
193 EXPECT_TRUE(snapshot->isTextureBacked()); 193 EXPECT_TRUE(snapshot->isTextureBacked());
194 } 194 }
195 195
196 { 196 {
197 // Fallback case. 197 // Fallback case.
198 FakeGLES2Interface gl; 198 FakeGLES2Interface gl;
199 OwnPtr<FakeWebGraphicsContext3DProvider> contextProvider = adoptPtr( new FakeWebGraphicsContext3DProvider(&gl)); 199 OwnPtr<FakeWebGraphicsContext3DProvider> contextProvider = adoptPtr( new FakeWebGraphicsContext3DProvider(&gl));
200 GrContext* gr = contextProvider->grContext(); 200 GrContext* gr = contextProvider->grContext();
201 Canvas2DLayerBridgePtr bridge(adoptRef(new Canvas2DLayerBridge(conte xtProvider.release(), IntSize(300, 150), 0, NonOpaque, Canvas2DLayerBridge::Enab leAcceleration))); 201 Canvas2DLayerBridgePtr bridge(adoptRef(new Canvas2DLayerBridge(std:: move(contextProvider), IntSize(300, 150), 0, NonOpaque, Canvas2DLayerBridge::Ena bleAcceleration)));
202 EXPECT_TRUE(bridge->checkSurfaceValid()); 202 EXPECT_TRUE(bridge->checkSurfaceValid());
203 EXPECT_TRUE(bridge->isAccelerated()); // We don't yet know that allo cation will fail 203 EXPECT_TRUE(bridge->isAccelerated()); // We don't yet know that allo cation will fail
204 // This will cause SkSurface_Gpu creation to fail without 204 // This will cause SkSurface_Gpu creation to fail without
205 // Canvas2DLayerBridge otherwise detecting that anything was disable d. 205 // Canvas2DLayerBridge otherwise detecting that anything was disable d.
206 gr->abandonContext(); 206 gr->abandonContext();
207 RefPtr<SkImage> snapshot = bridge->newImageSnapshot(PreferAccelerati on, SnapshotReasonUnknown); 207 RefPtr<SkImage> snapshot = bridge->newImageSnapshot(PreferAccelerati on, SnapshotReasonUnknown);
208 EXPECT_FALSE(bridge->isAccelerated()); 208 EXPECT_FALSE(bridge->isAccelerated());
209 EXPECT_FALSE(snapshot->isTextureBacked()); 209 EXPECT_FALSE(snapshot->isTextureBacked());
210 } 210 }
211 } 211 }
212 212
213 void noDrawOnContextLostTest() 213 void noDrawOnContextLostTest()
214 { 214 {
215 FakeGLES2Interface gl; 215 FakeGLES2Interface gl;
216 OwnPtr<FakeWebGraphicsContext3DProvider> contextProvider = adoptPtr(new FakeWebGraphicsContext3DProvider(&gl)); 216 OwnPtr<FakeWebGraphicsContext3DProvider> contextProvider = adoptPtr(new FakeWebGraphicsContext3DProvider(&gl));
217 217
218 Canvas2DLayerBridgePtr bridge(adoptRef(new Canvas2DLayerBridge(contextPr ovider.release(), IntSize(300, 150), 0, NonOpaque, Canvas2DLayerBridge::ForceAcc elerationForTesting))); 218 Canvas2DLayerBridgePtr bridge(adoptRef(new Canvas2DLayerBridge(std::move (contextProvider), IntSize(300, 150), 0, NonOpaque, Canvas2DLayerBridge::ForceAc celerationForTesting)));
219 EXPECT_TRUE(bridge->checkSurfaceValid()); 219 EXPECT_TRUE(bridge->checkSurfaceValid());
220 SkPaint paint; 220 SkPaint paint;
221 uint32_t genID = bridge->getOrCreateSurface()->generationID(); 221 uint32_t genID = bridge->getOrCreateSurface()->generationID();
222 bridge->canvas()->drawRect(SkRect::MakeXYWH(0, 0, 1, 1), paint); 222 bridge->canvas()->drawRect(SkRect::MakeXYWH(0, 0, 1, 1), paint);
223 EXPECT_EQ(genID, bridge->getOrCreateSurface()->generationID()); 223 EXPECT_EQ(genID, bridge->getOrCreateSurface()->generationID());
224 gl.setIsContextLost(true); 224 gl.setIsContextLost(true);
225 EXPECT_EQ(genID, bridge->getOrCreateSurface()->generationID()); 225 EXPECT_EQ(genID, bridge->getOrCreateSurface()->generationID());
226 bridge->canvas()->drawRect(SkRect::MakeXYWH(0, 0, 1, 1), paint); 226 bridge->canvas()->drawRect(SkRect::MakeXYWH(0, 0, 1, 1), paint);
227 EXPECT_EQ(genID, bridge->getOrCreateSurface()->generationID()); 227 EXPECT_EQ(genID, bridge->getOrCreateSurface()->generationID());
228 // This results in the internal surface being torn down in response to t he context loss. 228 // This results in the internal surface being torn down in response to t he context loss.
229 EXPECT_FALSE(bridge->checkSurfaceValid()); 229 EXPECT_FALSE(bridge->checkSurfaceValid());
230 EXPECT_EQ(nullptr, bridge->getOrCreateSurface()); 230 EXPECT_EQ(nullptr, bridge->getOrCreateSurface());
231 // The following passes by not crashing 231 // The following passes by not crashing
232 bridge->canvas()->drawRect(SkRect::MakeXYWH(0, 0, 1, 1), paint); 232 bridge->canvas()->drawRect(SkRect::MakeXYWH(0, 0, 1, 1), paint);
233 bridge->flush(); 233 bridge->flush();
234 } 234 }
235 235
236 void prepareMailboxWithBitmapTest() 236 void prepareMailboxWithBitmapTest()
237 { 237 {
238 FakeGLES2Interface gl; 238 FakeGLES2Interface gl;
239 OwnPtr<FakeWebGraphicsContext3DProvider> contextProvider = adoptPtr(new FakeWebGraphicsContext3DProvider(&gl)); 239 OwnPtr<FakeWebGraphicsContext3DProvider> contextProvider = adoptPtr(new FakeWebGraphicsContext3DProvider(&gl));
240 Canvas2DLayerBridgePtr bridge(adoptRef(new Canvas2DLayerBridge(contextPr ovider.release(), IntSize(300, 150), 0, NonOpaque, Canvas2DLayerBridge::ForceAcc elerationForTesting))); 240 Canvas2DLayerBridgePtr bridge(adoptRef(new Canvas2DLayerBridge(std::move (contextProvider), IntSize(300, 150), 0, NonOpaque, Canvas2DLayerBridge::ForceAc celerationForTesting)));
241 bridge->m_lastImageId = 1; 241 bridge->m_lastImageId = 1;
242 242
243 NullWebExternalBitmap bitmap; 243 NullWebExternalBitmap bitmap;
244 bridge->prepareMailbox(0, &bitmap); 244 bridge->prepareMailbox(0, &bitmap);
245 EXPECT_EQ(0u, bridge->m_lastImageId); 245 EXPECT_EQ(0u, bridge->m_lastImageId);
246 } 246 }
247 247
248 void prepareMailboxAndLoseResourceTest() 248 void prepareMailboxAndLoseResourceTest()
249 { 249 {
250 bool lostResource = true; 250 bool lostResource = true;
251 251
252 // Prepare a mailbox, then report the resource as lost. 252 // Prepare a mailbox, then report the resource as lost.
253 // This test passes by not crashing and not triggering assertions. 253 // This test passes by not crashing and not triggering assertions.
254 { 254 {
255 FakeGLES2Interface gl; 255 FakeGLES2Interface gl;
256 OwnPtr<FakeWebGraphicsContext3DProvider> contextProvider = adoptPtr( new FakeWebGraphicsContext3DProvider(&gl)); 256 OwnPtr<FakeWebGraphicsContext3DProvider> contextProvider = adoptPtr( new FakeWebGraphicsContext3DProvider(&gl));
257 Canvas2DLayerBridgePtr bridge(adoptRef(new Canvas2DLayerBridge(conte xtProvider.release(), IntSize(300, 150), 0, NonOpaque, Canvas2DLayerBridge::Forc eAccelerationForTesting))); 257 Canvas2DLayerBridgePtr bridge(adoptRef(new Canvas2DLayerBridge(std:: move(contextProvider), IntSize(300, 150), 0, NonOpaque, Canvas2DLayerBridge::For ceAccelerationForTesting)));
258 WebExternalTextureMailbox mailbox; 258 WebExternalTextureMailbox mailbox;
259 bridge->prepareMailbox(&mailbox, 0); 259 bridge->prepareMailbox(&mailbox, 0);
260 bridge->mailboxReleased(mailbox, lostResource); 260 bridge->mailboxReleased(mailbox, lostResource);
261 } 261 }
262 262
263 // Retry with mailbox released while bridge destruction is in progress. 263 // Retry with mailbox released while bridge destruction is in progress.
264 { 264 {
265 FakeGLES2Interface gl; 265 FakeGLES2Interface gl;
266 OwnPtr<FakeWebGraphicsContext3DProvider> contextProvider = adoptPtr( new FakeWebGraphicsContext3DProvider(&gl)); 266 OwnPtr<FakeWebGraphicsContext3DProvider> contextProvider = adoptPtr( new FakeWebGraphicsContext3DProvider(&gl));
267 WebExternalTextureMailbox mailbox; 267 WebExternalTextureMailbox mailbox;
268 Canvas2DLayerBridge* rawBridge; 268 Canvas2DLayerBridge* rawBridge;
269 { 269 {
270 Canvas2DLayerBridgePtr bridge(adoptRef(new Canvas2DLayerBridge(c ontextProvider.release(), IntSize(300, 150), 0, NonOpaque, Canvas2DLayerBridge:: ForceAccelerationForTesting))); 270 Canvas2DLayerBridgePtr bridge(adoptRef(new Canvas2DLayerBridge(s td::move(contextProvider), IntSize(300, 150), 0, NonOpaque, Canvas2DLayerBridge: :ForceAccelerationForTesting)));
271 bridge->prepareMailbox(&mailbox, 0); 271 bridge->prepareMailbox(&mailbox, 0);
272 rawBridge = bridge.get(); 272 rawBridge = bridge.get();
273 } // bridge goes out of scope, but object is kept alive by self refe rences. 273 } // bridge goes out of scope, but object is kept alive by self refe rences.
274 // Before fixing crbug.com/411864, the following line you cause a me mory use after free 274 // Before fixing crbug.com/411864, the following line you cause a me mory use after free
275 // that sometimes causes a crash in normal builds and crashes consis tently with ASAN. 275 // that sometimes causes a crash in normal builds and crashes consis tently with ASAN.
276 rawBridge->mailboxReleased(mailbox, lostResource); // This should se lf-destruct the bridge. 276 rawBridge->mailboxReleased(mailbox, lostResource); // This should se lf-destruct the bridge.
277 } 277 }
278 } 278 }
279 279
280 void accelerationHintTest() 280 void accelerationHintTest()
281 { 281 {
282 { 282 {
283 FakeGLES2Interface gl; 283 FakeGLES2Interface gl;
284 OwnPtr<FakeWebGraphicsContext3DProvider> contextProvider = adoptPtr( new FakeWebGraphicsContext3DProvider(&gl)); 284 OwnPtr<FakeWebGraphicsContext3DProvider> contextProvider = adoptPtr( new FakeWebGraphicsContext3DProvider(&gl));
285 Canvas2DLayerBridgePtr bridge(adoptRef(new Canvas2DLayerBridge(conte xtProvider.release(), IntSize(300, 300), 0, NonOpaque, Canvas2DLayerBridge::Enab leAcceleration))); 285 Canvas2DLayerBridgePtr bridge(adoptRef(new Canvas2DLayerBridge(std:: move(contextProvider), IntSize(300, 300), 0, NonOpaque, Canvas2DLayerBridge::Ena bleAcceleration)));
286 SkPaint paint; 286 SkPaint paint;
287 bridge->canvas()->drawRect(SkRect::MakeXYWH(0, 0, 1, 1), paint); 287 bridge->canvas()->drawRect(SkRect::MakeXYWH(0, 0, 1, 1), paint);
288 RefPtr<SkImage> image = bridge->newImageSnapshot(PreferAcceleration, SnapshotReasonUnknown); 288 RefPtr<SkImage> image = bridge->newImageSnapshot(PreferAcceleration, SnapshotReasonUnknown);
289 EXPECT_TRUE(bridge->checkSurfaceValid()); 289 EXPECT_TRUE(bridge->checkSurfaceValid());
290 EXPECT_TRUE(bridge->isAccelerated()); 290 EXPECT_TRUE(bridge->isAccelerated());
291 } 291 }
292 292
293 { 293 {
294 FakeGLES2Interface gl; 294 FakeGLES2Interface gl;
295 OwnPtr<FakeWebGraphicsContext3DProvider> contextProvider = adoptPtr( new FakeWebGraphicsContext3DProvider(&gl)); 295 OwnPtr<FakeWebGraphicsContext3DProvider> contextProvider = adoptPtr( new FakeWebGraphicsContext3DProvider(&gl));
296 Canvas2DLayerBridgePtr bridge(adoptRef(new Canvas2DLayerBridge(conte xtProvider.release(), IntSize(300, 300), 0, NonOpaque, Canvas2DLayerBridge::Enab leAcceleration))); 296 Canvas2DLayerBridgePtr bridge(adoptRef(new Canvas2DLayerBridge(std:: move(contextProvider), IntSize(300, 300), 0, NonOpaque, Canvas2DLayerBridge::Ena bleAcceleration)));
297 SkPaint paint; 297 SkPaint paint;
298 bridge->canvas()->drawRect(SkRect::MakeXYWH(0, 0, 1, 1), paint); 298 bridge->canvas()->drawRect(SkRect::MakeXYWH(0, 0, 1, 1), paint);
299 RefPtr<SkImage> image = bridge->newImageSnapshot(PreferNoAcceleratio n, SnapshotReasonUnknown); 299 RefPtr<SkImage> image = bridge->newImageSnapshot(PreferNoAcceleratio n, SnapshotReasonUnknown);
300 EXPECT_TRUE(bridge->checkSurfaceValid()); 300 EXPECT_TRUE(bridge->checkSurfaceValid());
301 EXPECT_FALSE(bridge->isAccelerated()); 301 EXPECT_FALSE(bridge->isAccelerated());
302 } 302 }
303 } 303 }
304 }; 304 };
305 305
306 TEST_F(Canvas2DLayerBridgeTest, FullLifecycleSingleThreaded) 306 TEST_F(Canvas2DLayerBridgeTest, FullLifecycleSingleThreaded)
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
341 class MockLogger : public Canvas2DLayerBridge::Logger { 341 class MockLogger : public Canvas2DLayerBridge::Logger {
342 public: 342 public:
343 MOCK_METHOD1(reportHibernationEvent, void(Canvas2DLayerBridge::HibernationEv ent)); 343 MOCK_METHOD1(reportHibernationEvent, void(Canvas2DLayerBridge::HibernationEv ent));
344 MOCK_METHOD0(didStartHibernating, void()); 344 MOCK_METHOD0(didStartHibernating, void());
345 virtual ~MockLogger() { } 345 virtual ~MockLogger() { }
346 }; 346 };
347 347
348 void runCreateBridgeTask(Canvas2DLayerBridgePtr* bridgePtr, gpu::gles2::GLES2Int erface* gl, Canvas2DLayerBridgeTest* testHost, WaitableEvent* doneEvent) 348 void runCreateBridgeTask(Canvas2DLayerBridgePtr* bridgePtr, gpu::gles2::GLES2Int erface* gl, Canvas2DLayerBridgeTest* testHost, WaitableEvent* doneEvent)
349 { 349 {
350 OwnPtr<FakeWebGraphicsContext3DProvider> contextProvider = adoptPtr(new Fake WebGraphicsContext3DProvider(gl)); 350 OwnPtr<FakeWebGraphicsContext3DProvider> contextProvider = adoptPtr(new Fake WebGraphicsContext3DProvider(gl));
351 *bridgePtr = testHost->makeBridge(contextProvider.release(), IntSize(300, 30 0), Canvas2DLayerBridge::EnableAcceleration); 351 *bridgePtr = testHost->makeBridge(std::move(contextProvider), IntSize(300, 3 00), Canvas2DLayerBridge::EnableAcceleration);
352 // draw+flush to trigger the creation of a GPU surface 352 // draw+flush to trigger the creation of a GPU surface
353 (*bridgePtr)->didDraw(FloatRect(0, 0, 1, 1)); 353 (*bridgePtr)->didDraw(FloatRect(0, 0, 1, 1));
354 (*bridgePtr)->finalizeFrame(FloatRect(0, 0, 1, 1)); 354 (*bridgePtr)->finalizeFrame(FloatRect(0, 0, 1, 1));
355 (*bridgePtr)->flush(); 355 (*bridgePtr)->flush();
356 doneEvent->signal(); 356 doneEvent->signal();
357 } 357 }
358 358
359 void postAndWaitCreateBridgeTask(const WebTraceLocation& location, WebThread* te stThread, Canvas2DLayerBridgePtr* bridgePtr, gpu::gles2::GLES2Interface* gl, Can vas2DLayerBridgeTest* testHost) 359 void postAndWaitCreateBridgeTask(const WebTraceLocation& location, WebThread* te stThread, Canvas2DLayerBridgePtr* bridgePtr, gpu::gles2::GLES2Interface* gl, Can vas2DLayerBridgeTest* testHost)
360 { 360 {
361 OwnPtr<WaitableEvent> bridgeCreatedEvent = adoptPtr(new WaitableEvent()); 361 OwnPtr<WaitableEvent> bridgeCreatedEvent = adoptPtr(new WaitableEvent());
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
440 OwnPtr<WebThread> testThread = adoptPtr(Platform::current()->createThread("T estThread")); 440 OwnPtr<WebThread> testThread = adoptPtr(Platform::current()->createThread("T estThread"));
441 441
442 // The Canvas2DLayerBridge has to be created on the thread that will use it 442 // The Canvas2DLayerBridge has to be created on the thread that will use it
443 // to avoid WeakPtr thread check issues. 443 // to avoid WeakPtr thread check issues.
444 Canvas2DLayerBridgePtr bridge; 444 Canvas2DLayerBridgePtr bridge;
445 postAndWaitCreateBridgeTask(BLINK_FROM_HERE, testThread.get(), &bridge, &gl, this); 445 postAndWaitCreateBridgeTask(BLINK_FROM_HERE, testThread.get(), &bridge, &gl, this);
446 446
447 // Register an alternate Logger for tracking hibernation events 447 // Register an alternate Logger for tracking hibernation events
448 OwnPtr<MockLogger> mockLogger = adoptPtr(new MockLogger); 448 OwnPtr<MockLogger> mockLogger = adoptPtr(new MockLogger);
449 MockLogger* mockLoggerPtr = mockLogger.get(); 449 MockLogger* mockLoggerPtr = mockLogger.get();
450 bridge->setLoggerForTesting(mockLogger.release()); 450 bridge->setLoggerForTesting(std::move(mockLogger));
451 451
452 // Test entering hibernation 452 // Test entering hibernation
453 OwnPtr<WaitableEvent> hibernationStartedEvent = adoptPtr(new WaitableEvent() ); 453 OwnPtr<WaitableEvent> hibernationStartedEvent = adoptPtr(new WaitableEvent() );
454 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent(Canvas2DLayerBridge::Hibe rnationScheduled)); 454 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent(Canvas2DLayerBridge::Hibe rnationScheduled));
455 EXPECT_CALL(*mockLoggerPtr, didStartHibernating()) 455 EXPECT_CALL(*mockLoggerPtr, didStartHibernating())
456 .WillOnce(testing::Invoke(hibernationStartedEvent.get(), &WaitableEvent: :signal)); 456 .WillOnce(testing::Invoke(hibernationStartedEvent.get(), &WaitableEvent: :signal));
457 postSetIsHiddenTask(BLINK_FROM_HERE, testThread.get(), bridge.get(), true); 457 postSetIsHiddenTask(BLINK_FROM_HERE, testThread.get(), bridge.get(), true);
458 hibernationStartedEvent->wait(); 458 hibernationStartedEvent->wait();
459 ::testing::Mock::VerifyAndClearExpectations(mockLoggerPtr); 459 ::testing::Mock::VerifyAndClearExpectations(mockLoggerPtr);
460 EXPECT_FALSE(bridge->isAccelerated()); 460 EXPECT_FALSE(bridge->isAccelerated());
(...skipping 23 matching lines...) Expand all
484 OwnPtr<WebThread> testThread = adoptPtr(Platform::current()->createThread("T estThread")); 484 OwnPtr<WebThread> testThread = adoptPtr(Platform::current()->createThread("T estThread"));
485 485
486 // The Canvas2DLayerBridge has to be created on the thread that will use it 486 // The Canvas2DLayerBridge has to be created on the thread that will use it
487 // to avoid WeakPtr thread check issues. 487 // to avoid WeakPtr thread check issues.
488 Canvas2DLayerBridgePtr bridge; 488 Canvas2DLayerBridgePtr bridge;
489 postAndWaitCreateBridgeTask(BLINK_FROM_HERE, testThread.get(), &bridge, &gl, this); 489 postAndWaitCreateBridgeTask(BLINK_FROM_HERE, testThread.get(), &bridge, &gl, this);
490 490
491 // Register an alternate Logger for tracking hibernation events 491 // Register an alternate Logger for tracking hibernation events
492 OwnPtr<MockLogger> mockLogger = adoptPtr(new MockLogger); 492 OwnPtr<MockLogger> mockLogger = adoptPtr(new MockLogger);
493 MockLogger* mockLoggerPtr = mockLogger.get(); 493 MockLogger* mockLoggerPtr = mockLogger.get();
494 bridge->setLoggerForTesting(mockLogger.release()); 494 bridge->setLoggerForTesting(std::move(mockLogger));
495 495
496 // Test entering hibernation 496 // Test entering hibernation
497 OwnPtr<WaitableEvent> hibernationStartedEvent = adoptPtr(new WaitableEvent() ); 497 OwnPtr<WaitableEvent> hibernationStartedEvent = adoptPtr(new WaitableEvent() );
498 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent(Canvas2DLayerBridge::Hibe rnationScheduled)); 498 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent(Canvas2DLayerBridge::Hibe rnationScheduled));
499 EXPECT_CALL(*mockLoggerPtr, didStartHibernating()) 499 EXPECT_CALL(*mockLoggerPtr, didStartHibernating())
500 .WillOnce(testing::Invoke(hibernationStartedEvent.get(), &WaitableEvent: :signal)); 500 .WillOnce(testing::Invoke(hibernationStartedEvent.get(), &WaitableEvent: :signal));
501 postSetIsHiddenTask(BLINK_FROM_HERE, testThread.get(), bridge.get(), true); 501 postSetIsHiddenTask(BLINK_FROM_HERE, testThread.get(), bridge.get(), true);
502 // Toggle visibility before the idle tasks that enters hibernation gets a 502 // Toggle visibility before the idle tasks that enters hibernation gets a
503 // chance to run. 503 // chance to run.
504 postSetIsHiddenTask(BLINK_FROM_HERE, testThread.get(), bridge.get(), false); 504 postSetIsHiddenTask(BLINK_FROM_HERE, testThread.get(), bridge.get(), false);
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
537 Canvas2DLayerBridgePtr bridge; 537 Canvas2DLayerBridgePtr bridge;
538 postAndWaitCreateBridgeTask(BLINK_FROM_HERE, testThread.get(), &bridge, &gl, this); 538 postAndWaitCreateBridgeTask(BLINK_FROM_HERE, testThread.get(), &bridge, &gl, this);
539 bridge->disableDeferral(DisableDeferralReasonUnknown); 539 bridge->disableDeferral(DisableDeferralReasonUnknown);
540 MockImageBuffer mockImageBuffer; 540 MockImageBuffer mockImageBuffer;
541 EXPECT_CALL(mockImageBuffer, resetCanvas(_)).Times(AnyNumber()); 541 EXPECT_CALL(mockImageBuffer, resetCanvas(_)).Times(AnyNumber());
542 bridge->setImageBuffer(&mockImageBuffer); 542 bridge->setImageBuffer(&mockImageBuffer);
543 543
544 // Register an alternate Logger for tracking hibernation events 544 // Register an alternate Logger for tracking hibernation events
545 OwnPtr<MockLogger> mockLogger = adoptPtr(new MockLogger); 545 OwnPtr<MockLogger> mockLogger = adoptPtr(new MockLogger);
546 MockLogger* mockLoggerPtr = mockLogger.get(); 546 MockLogger* mockLoggerPtr = mockLogger.get();
547 bridge->setLoggerForTesting(mockLogger.release()); 547 bridge->setLoggerForTesting(std::move(mockLogger));
548 548
549 // Test entering hibernation 549 // Test entering hibernation
550 OwnPtr<WaitableEvent> hibernationStartedEvent = adoptPtr(new WaitableEvent() ); 550 OwnPtr<WaitableEvent> hibernationStartedEvent = adoptPtr(new WaitableEvent() );
551 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent(Canvas2DLayerBridge::Hibe rnationScheduled)); 551 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent(Canvas2DLayerBridge::Hibe rnationScheduled));
552 EXPECT_CALL(*mockLoggerPtr, didStartHibernating()) 552 EXPECT_CALL(*mockLoggerPtr, didStartHibernating())
553 .WillOnce(testing::Invoke(hibernationStartedEvent.get(), &WaitableEvent: :signal)); 553 .WillOnce(testing::Invoke(hibernationStartedEvent.get(), &WaitableEvent: :signal));
554 postSetIsHiddenTask(BLINK_FROM_HERE, testThread.get(), bridge.get(), true); 554 postSetIsHiddenTask(BLINK_FROM_HERE, testThread.get(), bridge.get(), true);
555 hibernationStartedEvent->wait(); 555 hibernationStartedEvent->wait();
556 ::testing::Mock::VerifyAndClearExpectations(mockLoggerPtr); 556 ::testing::Mock::VerifyAndClearExpectations(mockLoggerPtr);
557 ::testing::Mock::VerifyAndClearExpectations(&mockImageBuffer); 557 ::testing::Mock::VerifyAndClearExpectations(&mockImageBuffer);
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
603 OwnPtr<WebThread> testThread = adoptPtr(Platform::current()->createThread("T estThread")); 603 OwnPtr<WebThread> testThread = adoptPtr(Platform::current()->createThread("T estThread"));
604 604
605 // The Canvas2DLayerBridge has to be created on the thread that will use it 605 // The Canvas2DLayerBridge has to be created on the thread that will use it
606 // to avoid WeakPtr thread check issues. 606 // to avoid WeakPtr thread check issues.
607 Canvas2DLayerBridgePtr bridge; 607 Canvas2DLayerBridgePtr bridge;
608 postAndWaitCreateBridgeTask(BLINK_FROM_HERE, testThread.get(), &bridge, &gl, this); 608 postAndWaitCreateBridgeTask(BLINK_FROM_HERE, testThread.get(), &bridge, &gl, this);
609 609
610 // Register an alternate Logger for tracking hibernation events 610 // Register an alternate Logger for tracking hibernation events
611 OwnPtr<MockLogger> mockLogger = adoptPtr(new MockLogger); 611 OwnPtr<MockLogger> mockLogger = adoptPtr(new MockLogger);
612 MockLogger* mockLoggerPtr = mockLogger.get(); 612 MockLogger* mockLoggerPtr = mockLogger.get();
613 bridge->setLoggerForTesting(mockLogger.release()); 613 bridge->setLoggerForTesting(std::move(mockLogger));
614 614
615 // Test entering hibernation 615 // Test entering hibernation
616 OwnPtr<WaitableEvent> hibernationStartedEvent = adoptPtr(new WaitableEvent() ); 616 OwnPtr<WaitableEvent> hibernationStartedEvent = adoptPtr(new WaitableEvent() );
617 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent(Canvas2DLayerBridge::Hibe rnationScheduled)); 617 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent(Canvas2DLayerBridge::Hibe rnationScheduled));
618 EXPECT_CALL(*mockLoggerPtr, didStartHibernating()) 618 EXPECT_CALL(*mockLoggerPtr, didStartHibernating())
619 .WillOnce(testing::Invoke(hibernationStartedEvent.get(), &WaitableEvent: :signal)); 619 .WillOnce(testing::Invoke(hibernationStartedEvent.get(), &WaitableEvent: :signal));
620 postSetIsHiddenTask(BLINK_FROM_HERE, testThread.get(), bridge.get(), true); 620 postSetIsHiddenTask(BLINK_FROM_HERE, testThread.get(), bridge.get(), true);
621 hibernationStartedEvent->wait(); 621 hibernationStartedEvent->wait();
622 ::testing::Mock::VerifyAndClearExpectations(mockLoggerPtr); 622 ::testing::Mock::VerifyAndClearExpectations(mockLoggerPtr);
623 EXPECT_FALSE(bridge->isAccelerated()); 623 EXPECT_FALSE(bridge->isAccelerated());
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
658 Canvas2DLayerBridgePtr bridge; 658 Canvas2DLayerBridgePtr bridge;
659 postAndWaitCreateBridgeTask(BLINK_FROM_HERE, testThread.get(), &bridge, &gl, this); 659 postAndWaitCreateBridgeTask(BLINK_FROM_HERE, testThread.get(), &bridge, &gl, this);
660 MockImageBuffer mockImageBuffer; 660 MockImageBuffer mockImageBuffer;
661 EXPECT_CALL(mockImageBuffer, resetCanvas(_)).Times(AnyNumber()); 661 EXPECT_CALL(mockImageBuffer, resetCanvas(_)).Times(AnyNumber());
662 bridge->setImageBuffer(&mockImageBuffer); 662 bridge->setImageBuffer(&mockImageBuffer);
663 bridge->disableDeferral(DisableDeferralReasonUnknown); 663 bridge->disableDeferral(DisableDeferralReasonUnknown);
664 664
665 // Register an alternate Logger for tracking hibernation events 665 // Register an alternate Logger for tracking hibernation events
666 OwnPtr<MockLogger> mockLogger = adoptPtr(new MockLogger); 666 OwnPtr<MockLogger> mockLogger = adoptPtr(new MockLogger);
667 MockLogger* mockLoggerPtr = mockLogger.get(); 667 MockLogger* mockLoggerPtr = mockLogger.get();
668 bridge->setLoggerForTesting(mockLogger.release()); 668 bridge->setLoggerForTesting(std::move(mockLogger));
669 669
670 // Test entering hibernation 670 // Test entering hibernation
671 OwnPtr<WaitableEvent> hibernationStartedEvent = adoptPtr(new WaitableEvent() ); 671 OwnPtr<WaitableEvent> hibernationStartedEvent = adoptPtr(new WaitableEvent() );
672 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent(Canvas2DLayerBridge::Hibe rnationScheduled)); 672 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent(Canvas2DLayerBridge::Hibe rnationScheduled));
673 EXPECT_CALL(*mockLoggerPtr, didStartHibernating()) 673 EXPECT_CALL(*mockLoggerPtr, didStartHibernating())
674 .WillOnce(testing::Invoke(hibernationStartedEvent.get(), &WaitableEvent: :signal)); 674 .WillOnce(testing::Invoke(hibernationStartedEvent.get(), &WaitableEvent: :signal));
675 postSetIsHiddenTask(BLINK_FROM_HERE, testThread.get(), bridge.get(), true); 675 postSetIsHiddenTask(BLINK_FROM_HERE, testThread.get(), bridge.get(), true);
676 hibernationStartedEvent->wait(); 676 hibernationStartedEvent->wait();
677 ::testing::Mock::VerifyAndClearExpectations(mockLoggerPtr); 677 ::testing::Mock::VerifyAndClearExpectations(mockLoggerPtr);
678 ::testing::Mock::VerifyAndClearExpectations(&mockImageBuffer); 678 ::testing::Mock::VerifyAndClearExpectations(&mockImageBuffer);
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
718 // to avoid WeakPtr thread check issues. 718 // to avoid WeakPtr thread check issues.
719 Canvas2DLayerBridgePtr bridge; 719 Canvas2DLayerBridgePtr bridge;
720 postAndWaitCreateBridgeTask(BLINK_FROM_HERE, testThread.get(), &bridge, &gl, this); 720 postAndWaitCreateBridgeTask(BLINK_FROM_HERE, testThread.get(), &bridge, &gl, this);
721 MockImageBuffer mockImageBuffer; 721 MockImageBuffer mockImageBuffer;
722 EXPECT_CALL(mockImageBuffer, resetCanvas(_)).Times(AnyNumber()); 722 EXPECT_CALL(mockImageBuffer, resetCanvas(_)).Times(AnyNumber());
723 bridge->setImageBuffer(&mockImageBuffer); 723 bridge->setImageBuffer(&mockImageBuffer);
724 724
725 // Register an alternate Logger for tracking hibernation events 725 // Register an alternate Logger for tracking hibernation events
726 OwnPtr<MockLogger> mockLogger = adoptPtr(new MockLogger); 726 OwnPtr<MockLogger> mockLogger = adoptPtr(new MockLogger);
727 MockLogger* mockLoggerPtr = mockLogger.get(); 727 MockLogger* mockLoggerPtr = mockLogger.get();
728 bridge->setLoggerForTesting(mockLogger.release()); 728 bridge->setLoggerForTesting(std::move(mockLogger));
729 729
730 // Test entering hibernation 730 // Test entering hibernation
731 OwnPtr<WaitableEvent> hibernationStartedEvent = adoptPtr(new WaitableEvent() ); 731 OwnPtr<WaitableEvent> hibernationStartedEvent = adoptPtr(new WaitableEvent() );
732 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent(Canvas2DLayerBridge::Hibe rnationScheduled)); 732 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent(Canvas2DLayerBridge::Hibe rnationScheduled));
733 EXPECT_CALL(*mockLoggerPtr, didStartHibernating()) 733 EXPECT_CALL(*mockLoggerPtr, didStartHibernating())
734 .WillOnce(testing::Invoke(hibernationStartedEvent.get(), &WaitableEvent: :signal)); 734 .WillOnce(testing::Invoke(hibernationStartedEvent.get(), &WaitableEvent: :signal));
735 postSetIsHiddenTask(BLINK_FROM_HERE, testThread.get(), bridge.get(), true); 735 postSetIsHiddenTask(BLINK_FROM_HERE, testThread.get(), bridge.get(), true);
736 hibernationStartedEvent->wait(); 736 hibernationStartedEvent->wait();
737 ::testing::Mock::VerifyAndClearExpectations(mockLoggerPtr); 737 ::testing::Mock::VerifyAndClearExpectations(mockLoggerPtr);
738 ::testing::Mock::VerifyAndClearExpectations(&mockImageBuffer); 738 ::testing::Mock::VerifyAndClearExpectations(&mockImageBuffer);
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
775 OwnPtr<WebThread> testThread = adoptPtr(Platform::current()->createThread("T estThread")); 775 OwnPtr<WebThread> testThread = adoptPtr(Platform::current()->createThread("T estThread"));
776 776
777 // The Canvas2DLayerBridge has to be created on the thread that will use it 777 // The Canvas2DLayerBridge has to be created on the thread that will use it
778 // to avoid WeakPtr thread check issues. 778 // to avoid WeakPtr thread check issues.
779 Canvas2DLayerBridgePtr bridge; 779 Canvas2DLayerBridgePtr bridge;
780 postAndWaitCreateBridgeTask(BLINK_FROM_HERE, testThread.get(), &bridge, &gl, this); 780 postAndWaitCreateBridgeTask(BLINK_FROM_HERE, testThread.get(), &bridge, &gl, this);
781 781
782 // Register an alternate Logger for tracking hibernation events 782 // Register an alternate Logger for tracking hibernation events
783 OwnPtr<MockLogger> mockLogger = adoptPtr(new MockLogger); 783 OwnPtr<MockLogger> mockLogger = adoptPtr(new MockLogger);
784 MockLogger* mockLoggerPtr = mockLogger.get(); 784 MockLogger* mockLoggerPtr = mockLogger.get();
785 bridge->setLoggerForTesting(mockLogger.release()); 785 bridge->setLoggerForTesting(std::move(mockLogger));
786 786
787 // Test entering hibernation 787 // Test entering hibernation
788 OwnPtr<WaitableEvent> hibernationStartedEvent = adoptPtr(new WaitableEvent() ); 788 OwnPtr<WaitableEvent> hibernationStartedEvent = adoptPtr(new WaitableEvent() );
789 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent(Canvas2DLayerBridge::Hibe rnationScheduled)); 789 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent(Canvas2DLayerBridge::Hibe rnationScheduled));
790 EXPECT_CALL(*mockLoggerPtr, didStartHibernating()) 790 EXPECT_CALL(*mockLoggerPtr, didStartHibernating())
791 .WillOnce(testing::Invoke(hibernationStartedEvent.get(), &WaitableEvent: :signal)); 791 .WillOnce(testing::Invoke(hibernationStartedEvent.get(), &WaitableEvent: :signal));
792 postSetIsHiddenTask(BLINK_FROM_HERE, testThread.get(), bridge.get(), true); 792 postSetIsHiddenTask(BLINK_FROM_HERE, testThread.get(), bridge.get(), true);
793 hibernationStartedEvent->wait(); 793 hibernationStartedEvent->wait();
794 ::testing::Mock::VerifyAndClearExpectations(mockLoggerPtr); 794 ::testing::Mock::VerifyAndClearExpectations(mockLoggerPtr);
795 EXPECT_FALSE(bridge->isAccelerated()); 795 EXPECT_FALSE(bridge->isAccelerated());
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
828 OwnPtr<WebThread> testThread = adoptPtr(Platform::current()->createThread("T estThread")); 828 OwnPtr<WebThread> testThread = adoptPtr(Platform::current()->createThread("T estThread"));
829 829
830 // The Canvas2DLayerBridge has to be created on the thread that will use it 830 // The Canvas2DLayerBridge has to be created on the thread that will use it
831 // to avoid WeakPtr thread check issues. 831 // to avoid WeakPtr thread check issues.
832 Canvas2DLayerBridgePtr bridge; 832 Canvas2DLayerBridgePtr bridge;
833 postAndWaitCreateBridgeTask(BLINK_FROM_HERE, testThread.get(), &bridge, &gl, this); 833 postAndWaitCreateBridgeTask(BLINK_FROM_HERE, testThread.get(), &bridge, &gl, this);
834 834
835 // Register an alternate Logger for tracking hibernation events 835 // Register an alternate Logger for tracking hibernation events
836 OwnPtr<MockLogger> mockLogger = adoptPtr(new MockLogger); 836 OwnPtr<MockLogger> mockLogger = adoptPtr(new MockLogger);
837 MockLogger* mockLoggerPtr = mockLogger.get(); 837 MockLogger* mockLoggerPtr = mockLogger.get();
838 bridge->setLoggerForTesting(mockLogger.release()); 838 bridge->setLoggerForTesting(std::move(mockLogger));
839 839
840 // Test entering hibernation 840 // Test entering hibernation
841 OwnPtr<WaitableEvent> hibernationScheduledEvent = adoptPtr(new WaitableEvent ()); 841 OwnPtr<WaitableEvent> hibernationScheduledEvent = adoptPtr(new WaitableEvent ());
842 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent(Canvas2DLayerBridge::Hibe rnationScheduled)); 842 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent(Canvas2DLayerBridge::Hibe rnationScheduled));
843 postSetIsHiddenTask(BLINK_FROM_HERE, testThread.get(), bridge.get(), true, h ibernationScheduledEvent.get()); 843 postSetIsHiddenTask(BLINK_FROM_HERE, testThread.get(), bridge.get(), true, h ibernationScheduledEvent.get());
844 postDestroyBridgeTask(BLINK_FROM_HERE, testThread.get(), &bridge); 844 postDestroyBridgeTask(BLINK_FROM_HERE, testThread.get(), &bridge);
845 // In production, we would expect a 845 // In production, we would expect a
846 // HibernationAbortedDueToDestructionWhileHibernatePending event to be 846 // HibernationAbortedDueToDestructionWhileHibernatePending event to be
847 // fired, but that signal is lost in the unit test due to no longer having 847 // fired, but that signal is lost in the unit test due to no longer having
848 // a bridge to hold the mockLogger. 848 // a bridge to hold the mockLogger.
(...skipping 19 matching lines...) Expand all
868 OwnPtr<WebThread> testThread = adoptPtr(Platform::current()->createThread("T estThread")); 868 OwnPtr<WebThread> testThread = adoptPtr(Platform::current()->createThread("T estThread"));
869 869
870 // The Canvas2DLayerBridge has to be created on the thread that will use it 870 // The Canvas2DLayerBridge has to be created on the thread that will use it
871 // to avoid WeakPtr thread check issues. 871 // to avoid WeakPtr thread check issues.
872 Canvas2DLayerBridgePtr bridge; 872 Canvas2DLayerBridgePtr bridge;
873 postAndWaitCreateBridgeTask(BLINK_FROM_HERE, testThread.get(), &bridge, &gl, this); 873 postAndWaitCreateBridgeTask(BLINK_FROM_HERE, testThread.get(), &bridge, &gl, this);
874 874
875 // Register an alternate Logger for tracking hibernation events 875 // Register an alternate Logger for tracking hibernation events
876 OwnPtr<MockLogger> mockLogger = adoptPtr(new MockLogger); 876 OwnPtr<MockLogger> mockLogger = adoptPtr(new MockLogger);
877 MockLogger* mockLoggerPtr = mockLogger.get(); 877 MockLogger* mockLoggerPtr = mockLogger.get();
878 bridge->setLoggerForTesting(mockLogger.release()); 878 bridge->setLoggerForTesting(std::move(mockLogger));
879 879
880 // Test entering hibernation 880 // Test entering hibernation
881 OwnPtr<WaitableEvent> hibernationAbortedEvent = adoptPtr(new WaitableEvent() ); 881 OwnPtr<WaitableEvent> hibernationAbortedEvent = adoptPtr(new WaitableEvent() );
882 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent(Canvas2DLayerBridge::Hibe rnationScheduled)); 882 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent(Canvas2DLayerBridge::Hibe rnationScheduled));
883 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent(Canvas2DLayerBridge::Hibe rnationAbortedDueToPendingDestruction)) 883 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent(Canvas2DLayerBridge::Hibe rnationAbortedDueToPendingDestruction))
884 .WillOnce(testing::InvokeWithoutArgs(hibernationAbortedEvent.get(), &Wai tableEvent::signal)); 884 .WillOnce(testing::InvokeWithoutArgs(hibernationAbortedEvent.get(), &Wai tableEvent::signal));
885 postSetIsHiddenTask(BLINK_FROM_HERE, testThread.get(), bridge.get(), true); 885 postSetIsHiddenTask(BLINK_FROM_HERE, testThread.get(), bridge.get(), true);
886 testThread->getWebTaskRunner()->postTask(BLINK_FROM_HERE, threadSafeBind(&Ca nvas2DLayerBridge::beginDestruction, AllowCrossThreadAccess(bridge.get()))); 886 testThread->getWebTaskRunner()->postTask(BLINK_FROM_HERE, threadSafeBind(&Ca nvas2DLayerBridge::beginDestruction, AllowCrossThreadAccess(bridge.get())));
887 hibernationAbortedEvent->wait(); 887 hibernationAbortedEvent->wait();
888 888
(...skipping 13 matching lines...) Expand all
902 OwnPtr<WebThread> testThread = adoptPtr(Platform::current()->createThread("T estThread")); 902 OwnPtr<WebThread> testThread = adoptPtr(Platform::current()->createThread("T estThread"));
903 903
904 // The Canvas2DLayerBridge has to be created on the thread that will use it 904 // The Canvas2DLayerBridge has to be created on the thread that will use it
905 // to avoid WeakPtr thread check issues. 905 // to avoid WeakPtr thread check issues.
906 Canvas2DLayerBridgePtr bridge; 906 Canvas2DLayerBridgePtr bridge;
907 postAndWaitCreateBridgeTask(BLINK_FROM_HERE, testThread.get(), &bridge, &gl, this); 907 postAndWaitCreateBridgeTask(BLINK_FROM_HERE, testThread.get(), &bridge, &gl, this);
908 908
909 // Register an alternate Logger for tracking hibernation events 909 // Register an alternate Logger for tracking hibernation events
910 OwnPtr<MockLogger> mockLogger = adoptPtr(new MockLogger); 910 OwnPtr<MockLogger> mockLogger = adoptPtr(new MockLogger);
911 MockLogger* mockLoggerPtr = mockLogger.get(); 911 MockLogger* mockLoggerPtr = mockLogger.get();
912 bridge->setLoggerForTesting(mockLogger.release()); 912 bridge->setLoggerForTesting(std::move(mockLogger));
913 913
914 // Test entering hibernation 914 // Test entering hibernation
915 OwnPtr<WaitableEvent> hibernationAbortedEvent = adoptPtr(new WaitableEvent() ); 915 OwnPtr<WaitableEvent> hibernationAbortedEvent = adoptPtr(new WaitableEvent() );
916 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent(Canvas2DLayerBridge::Hibe rnationScheduled)); 916 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent(Canvas2DLayerBridge::Hibe rnationScheduled));
917 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent(Canvas2DLayerBridge::Hibe rnationAbortedDueToVisibilityChange)) 917 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent(Canvas2DLayerBridge::Hibe rnationAbortedDueToVisibilityChange))
918 .WillOnce(testing::InvokeWithoutArgs(hibernationAbortedEvent.get(), &Wai tableEvent::signal)); 918 .WillOnce(testing::InvokeWithoutArgs(hibernationAbortedEvent.get(), &Wai tableEvent::signal));
919 postSetIsHiddenTask(BLINK_FROM_HERE, testThread.get(), bridge.get(), true); 919 postSetIsHiddenTask(BLINK_FROM_HERE, testThread.get(), bridge.get(), true);
920 postSetIsHiddenTask(BLINK_FROM_HERE, testThread.get(), bridge.get(), false); 920 postSetIsHiddenTask(BLINK_FROM_HERE, testThread.get(), bridge.get(), false);
921 hibernationAbortedEvent->wait(); 921 hibernationAbortedEvent->wait();
922 ::testing::Mock::VerifyAndClearExpectations(mockLoggerPtr); 922 ::testing::Mock::VerifyAndClearExpectations(mockLoggerPtr);
(...skipping 16 matching lines...) Expand all
939 OwnPtr<WebThread> testThread = adoptPtr(Platform::current()->createThread("T estThread")); 939 OwnPtr<WebThread> testThread = adoptPtr(Platform::current()->createThread("T estThread"));
940 940
941 // The Canvas2DLayerBridge has to be created on the thread that will use it 941 // The Canvas2DLayerBridge has to be created on the thread that will use it
942 // to avoid WeakPtr thread check issues. 942 // to avoid WeakPtr thread check issues.
943 Canvas2DLayerBridgePtr bridge; 943 Canvas2DLayerBridgePtr bridge;
944 postAndWaitCreateBridgeTask(BLINK_FROM_HERE, testThread.get(), &bridge, &gl, this); 944 postAndWaitCreateBridgeTask(BLINK_FROM_HERE, testThread.get(), &bridge, &gl, this);
945 945
946 // Register an alternate Logger for tracking hibernation events 946 // Register an alternate Logger for tracking hibernation events
947 OwnPtr<MockLogger> mockLogger = adoptPtr(new MockLogger); 947 OwnPtr<MockLogger> mockLogger = adoptPtr(new MockLogger);
948 MockLogger* mockLoggerPtr = mockLogger.get(); 948 MockLogger* mockLoggerPtr = mockLogger.get();
949 bridge->setLoggerForTesting(mockLogger.release()); 949 bridge->setLoggerForTesting(std::move(mockLogger));
950 950
951 gl.setIsContextLost(true); 951 gl.setIsContextLost(true);
952 // Test entering hibernation 952 // Test entering hibernation
953 OwnPtr<WaitableEvent> hibernationAbortedEvent = adoptPtr(new WaitableEvent() ); 953 OwnPtr<WaitableEvent> hibernationAbortedEvent = adoptPtr(new WaitableEvent() );
954 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent(Canvas2DLayerBridge::Hibe rnationScheduled)); 954 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent(Canvas2DLayerBridge::Hibe rnationScheduled));
955 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent(Canvas2DLayerBridge::Hibe rnationAbortedDueGpuContextLoss)) 955 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent(Canvas2DLayerBridge::Hibe rnationAbortedDueGpuContextLoss))
956 .WillOnce(testing::InvokeWithoutArgs(hibernationAbortedEvent.get(), &Wai tableEvent::signal)); 956 .WillOnce(testing::InvokeWithoutArgs(hibernationAbortedEvent.get(), &Wai tableEvent::signal));
957 postSetIsHiddenTask(BLINK_FROM_HERE, testThread.get(), bridge.get(), true); 957 postSetIsHiddenTask(BLINK_FROM_HERE, testThread.get(), bridge.get(), true);
958 hibernationAbortedEvent->wait(); 958 hibernationAbortedEvent->wait();
959 ::testing::Mock::VerifyAndClearExpectations(mockLoggerPtr); 959 ::testing::Mock::VerifyAndClearExpectations(mockLoggerPtr);
(...skipping 14 matching lines...) Expand all
974 OwnPtr<WebThread> testThread = adoptPtr(Platform::current()->createThread("T estThread")); 974 OwnPtr<WebThread> testThread = adoptPtr(Platform::current()->createThread("T estThread"));
975 975
976 // The Canvas2DLayerBridge has to be created on the thread that will use it 976 // The Canvas2DLayerBridge has to be created on the thread that will use it
977 // to avoid WeakPtr thread check issues. 977 // to avoid WeakPtr thread check issues.
978 Canvas2DLayerBridgePtr bridge; 978 Canvas2DLayerBridgePtr bridge;
979 postAndWaitCreateBridgeTask(BLINK_FROM_HERE, testThread.get(), &bridge, &gl, this); 979 postAndWaitCreateBridgeTask(BLINK_FROM_HERE, testThread.get(), &bridge, &gl, this);
980 980
981 // Register an alternate Logger for tracking hibernation events 981 // Register an alternate Logger for tracking hibernation events
982 OwnPtr<MockLogger> mockLogger = adoptPtr(new MockLogger); 982 OwnPtr<MockLogger> mockLogger = adoptPtr(new MockLogger);
983 MockLogger* mockLoggerPtr = mockLogger.get(); 983 MockLogger* mockLoggerPtr = mockLogger.get();
984 bridge->setLoggerForTesting(mockLogger.release()); 984 bridge->setLoggerForTesting(std::move(mockLogger));
985 985
986 // Test entering hibernation 986 // Test entering hibernation
987 OwnPtr<WaitableEvent> hibernationStartedEvent = adoptPtr(new WaitableEvent() ); 987 OwnPtr<WaitableEvent> hibernationStartedEvent = adoptPtr(new WaitableEvent() );
988 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent(Canvas2DLayerBridge::Hibe rnationScheduled)); 988 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent(Canvas2DLayerBridge::Hibe rnationScheduled));
989 EXPECT_CALL(*mockLoggerPtr, didStartHibernating()) 989 EXPECT_CALL(*mockLoggerPtr, didStartHibernating())
990 .WillOnce(testing::Invoke(hibernationStartedEvent.get(), &WaitableEvent: :signal)); 990 .WillOnce(testing::Invoke(hibernationStartedEvent.get(), &WaitableEvent: :signal));
991 postSetIsHiddenTask(BLINK_FROM_HERE, testThread.get(), bridge.get(), true); 991 postSetIsHiddenTask(BLINK_FROM_HERE, testThread.get(), bridge.get(), true);
992 hibernationStartedEvent->wait(); 992 hibernationStartedEvent->wait();
993 ::testing::Mock::VerifyAndClearExpectations(mockLoggerPtr); 993 ::testing::Mock::VerifyAndClearExpectations(mockLoggerPtr);
994 994
(...skipping 18 matching lines...) Expand all
1013 OwnPtr<WebThread> testThread = adoptPtr(Platform::current()->createThread("T estThread")); 1013 OwnPtr<WebThread> testThread = adoptPtr(Platform::current()->createThread("T estThread"));
1014 1014
1015 // The Canvas2DLayerBridge has to be created on the thread that will use it 1015 // The Canvas2DLayerBridge has to be created on the thread that will use it
1016 // to avoid WeakPtr thread check issues. 1016 // to avoid WeakPtr thread check issues.
1017 Canvas2DLayerBridgePtr bridge; 1017 Canvas2DLayerBridgePtr bridge;
1018 postAndWaitCreateBridgeTask(BLINK_FROM_HERE, testThread.get(), &bridge, &gl, this); 1018 postAndWaitCreateBridgeTask(BLINK_FROM_HERE, testThread.get(), &bridge, &gl, this);
1019 1019
1020 // Register an alternate Logger for tracking hibernation events 1020 // Register an alternate Logger for tracking hibernation events
1021 OwnPtr<MockLogger> mockLogger = adoptPtr(new MockLogger); 1021 OwnPtr<MockLogger> mockLogger = adoptPtr(new MockLogger);
1022 MockLogger* mockLoggerPtr = mockLogger.get(); 1022 MockLogger* mockLoggerPtr = mockLogger.get();
1023 bridge->setLoggerForTesting(mockLogger.release()); 1023 bridge->setLoggerForTesting(std::move(mockLogger));
1024 1024
1025 // Test entering hibernation 1025 // Test entering hibernation
1026 OwnPtr<WaitableEvent> hibernationStartedEvent = adoptPtr(new WaitableEvent() ); 1026 OwnPtr<WaitableEvent> hibernationStartedEvent = adoptPtr(new WaitableEvent() );
1027 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent(Canvas2DLayerBridge::Hibe rnationScheduled)); 1027 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent(Canvas2DLayerBridge::Hibe rnationScheduled));
1028 EXPECT_CALL(*mockLoggerPtr, didStartHibernating()) 1028 EXPECT_CALL(*mockLoggerPtr, didStartHibernating())
1029 .WillOnce(testing::Invoke(hibernationStartedEvent.get(), &WaitableEvent: :signal)); 1029 .WillOnce(testing::Invoke(hibernationStartedEvent.get(), &WaitableEvent: :signal));
1030 postSetIsHiddenTask(BLINK_FROM_HERE, testThread.get(), bridge.get(), true); 1030 postSetIsHiddenTask(BLINK_FROM_HERE, testThread.get(), bridge.get(), true);
1031 hibernationStartedEvent->wait(); 1031 hibernationStartedEvent->wait();
1032 ::testing::Mock::VerifyAndClearExpectations(mockLoggerPtr); 1032 ::testing::Mock::VerifyAndClearExpectations(mockLoggerPtr);
1033 1033
1034 // Rendering in the background -> temp switch to SW 1034 // Rendering in the background -> temp switch to SW
1035 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent(Canvas2DLayerBridge::Hibe rnationEndedWithSwitchToBackgroundRendering)); 1035 EXPECT_CALL(*mockLoggerPtr, reportHibernationEvent(Canvas2DLayerBridge::Hibe rnationEndedWithSwitchToBackgroundRendering));
1036 postAndWaitRenderingTask(BLINK_FROM_HERE, testThread.get(), bridge.get()); 1036 postAndWaitRenderingTask(BLINK_FROM_HERE, testThread.get(), bridge.get());
1037 ::testing::Mock::VerifyAndClearExpectations(mockLoggerPtr); 1037 ::testing::Mock::VerifyAndClearExpectations(mockLoggerPtr);
1038 EXPECT_FALSE(bridge->isAccelerated()); 1038 EXPECT_FALSE(bridge->isAccelerated());
1039 EXPECT_FALSE(bridge->isHibernating()); 1039 EXPECT_FALSE(bridge->isHibernating());
1040 EXPECT_TRUE(bridge->checkSurfaceValid()); 1040 EXPECT_TRUE(bridge->checkSurfaceValid());
1041 1041
1042 // Test prepareMailbox while background rendering 1042 // Test prepareMailbox while background rendering
1043 WebExternalTextureMailbox mailbox; 1043 WebExternalTextureMailbox mailbox;
1044 EXPECT_FALSE(bridge->prepareMailbox(&mailbox, 0)); 1044 EXPECT_FALSE(bridge->prepareMailbox(&mailbox, 0));
1045 EXPECT_TRUE(bridge->checkSurfaceValid()); 1045 EXPECT_TRUE(bridge->checkSurfaceValid());
1046 1046
1047 // Tear down the bridge on the thread so that 'bridge' can go out of scope 1047 // Tear down the bridge on the thread so that 'bridge' can go out of scope
1048 // without crashing due to thread checks 1048 // without crashing due to thread checks
1049 postAndWaitDestroyBridgeTask(BLINK_FROM_HERE, testThread.get(), &bridge); 1049 postAndWaitDestroyBridgeTask(BLINK_FROM_HERE, testThread.get(), &bridge);
1050 } 1050 }
1051 1051
1052 } // namespace blink 1052 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698