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

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

Issue 2398453002: Rewrap comments to 80 columns in Source/platform/graphics/. (Closed)
Patch Set: Review feedback Created 4 years, 2 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 // Fallback case. 155 // Fallback case.
156 FakeGLES2Interface gl; 156 FakeGLES2Interface gl;
157 std::unique_ptr<FakeWebGraphicsContext3DProvider> contextProvider = 157 std::unique_ptr<FakeWebGraphicsContext3DProvider> contextProvider =
158 wrapUnique(new FakeWebGraphicsContext3DProvider(&gl)); 158 wrapUnique(new FakeWebGraphicsContext3DProvider(&gl));
159 GrContext* gr = contextProvider->grContext(); 159 GrContext* gr = contextProvider->grContext();
160 Canvas2DLayerBridgePtr bridge(adoptRef(new Canvas2DLayerBridge( 160 Canvas2DLayerBridgePtr bridge(adoptRef(new Canvas2DLayerBridge(
161 std::move(contextProvider), IntSize(300, 150), 0, NonOpaque, 161 std::move(contextProvider), IntSize(300, 150), 0, NonOpaque,
162 Canvas2DLayerBridge::EnableAcceleration, nullptr))); 162 Canvas2DLayerBridge::EnableAcceleration, nullptr)));
163 EXPECT_TRUE(bridge->checkSurfaceValid()); 163 EXPECT_TRUE(bridge->checkSurfaceValid());
164 EXPECT_TRUE( 164 EXPECT_TRUE(bridge->isAccelerated()); // We don't yet know that
165 bridge 165 // allocation will fail.
166 ->isAccelerated()); // We don't yet know that allocation will fai l
167 // This will cause SkSurface_Gpu creation to fail without 166 // This will cause SkSurface_Gpu creation to fail without
168 // Canvas2DLayerBridge otherwise detecting that anything was disabled. 167 // Canvas2DLayerBridge otherwise detecting that anything was disabled.
169 gr->abandonContext(); 168 gr->abandonContext();
170 sk_sp<SkImage> snapshot = 169 sk_sp<SkImage> snapshot =
171 bridge->newImageSnapshot(PreferAcceleration, SnapshotReasonUnitTests); 170 bridge->newImageSnapshot(PreferAcceleration, SnapshotReasonUnitTests);
172 EXPECT_FALSE(bridge->isAccelerated()); 171 EXPECT_FALSE(bridge->isAccelerated());
173 EXPECT_FALSE(snapshot->isTextureBacked()); 172 EXPECT_FALSE(snapshot->isTextureBacked());
174 } 173 }
175 } 174 }
176 175
177 void noDrawOnContextLostTest() { 176 void noDrawOnContextLostTest() {
178 FakeGLES2Interface gl; 177 FakeGLES2Interface gl;
179 std::unique_ptr<FakeWebGraphicsContext3DProvider> contextProvider = 178 std::unique_ptr<FakeWebGraphicsContext3DProvider> contextProvider =
180 wrapUnique(new FakeWebGraphicsContext3DProvider(&gl)); 179 wrapUnique(new FakeWebGraphicsContext3DProvider(&gl));
181 180
182 Canvas2DLayerBridgePtr bridge(adoptRef(new Canvas2DLayerBridge( 181 Canvas2DLayerBridgePtr bridge(adoptRef(new Canvas2DLayerBridge(
183 std::move(contextProvider), IntSize(300, 150), 0, NonOpaque, 182 std::move(contextProvider), IntSize(300, 150), 0, NonOpaque,
184 Canvas2DLayerBridge::ForceAccelerationForTesting, nullptr))); 183 Canvas2DLayerBridge::ForceAccelerationForTesting, nullptr)));
185 EXPECT_TRUE(bridge->checkSurfaceValid()); 184 EXPECT_TRUE(bridge->checkSurfaceValid());
186 SkPaint paint; 185 SkPaint paint;
187 uint32_t genID = bridge->getOrCreateSurface()->generationID(); 186 uint32_t genID = bridge->getOrCreateSurface()->generationID();
188 bridge->canvas()->drawRect(SkRect::MakeXYWH(0, 0, 1, 1), paint); 187 bridge->canvas()->drawRect(SkRect::MakeXYWH(0, 0, 1, 1), paint);
189 EXPECT_EQ(genID, bridge->getOrCreateSurface()->generationID()); 188 EXPECT_EQ(genID, bridge->getOrCreateSurface()->generationID());
190 gl.setIsContextLost(true); 189 gl.setIsContextLost(true);
191 EXPECT_EQ(genID, bridge->getOrCreateSurface()->generationID()); 190 EXPECT_EQ(genID, bridge->getOrCreateSurface()->generationID());
192 bridge->canvas()->drawRect(SkRect::MakeXYWH(0, 0, 1, 1), paint); 191 bridge->canvas()->drawRect(SkRect::MakeXYWH(0, 0, 1, 1), paint);
193 EXPECT_EQ(genID, bridge->getOrCreateSurface()->generationID()); 192 EXPECT_EQ(genID, bridge->getOrCreateSurface()->generationID());
194 // This results in the internal surface being torn down in response to the c ontext loss. 193 // This results in the internal surface being torn down in response to the
194 // context loss.
195 EXPECT_FALSE(bridge->checkSurfaceValid()); 195 EXPECT_FALSE(bridge->checkSurfaceValid());
196 EXPECT_EQ(nullptr, bridge->getOrCreateSurface()); 196 EXPECT_EQ(nullptr, bridge->getOrCreateSurface());
197 // The following passes by not crashing 197 // The following passes by not crashing
198 bridge->canvas()->drawRect(SkRect::MakeXYWH(0, 0, 1, 1), paint); 198 bridge->canvas()->drawRect(SkRect::MakeXYWH(0, 0, 1, 1), paint);
199 bridge->flush(); 199 bridge->flush();
200 } 200 }
201 201
202 void prepareMailboxWhenContextIsLost() { 202 void prepareMailboxWhenContextIsLost() {
203 FakeGLES2Interface gl; 203 FakeGLES2Interface gl;
204 std::unique_ptr<FakeWebGraphicsContext3DProvider> contextProvider = 204 std::unique_ptr<FakeWebGraphicsContext3DProvider> contextProvider =
205 wrapUnique(new FakeWebGraphicsContext3DProvider(&gl)); 205 wrapUnique(new FakeWebGraphicsContext3DProvider(&gl));
206 Canvas2DLayerBridgePtr bridge(adoptRef(new Canvas2DLayerBridge( 206 Canvas2DLayerBridgePtr bridge(adoptRef(new Canvas2DLayerBridge(
207 std::move(contextProvider), IntSize(300, 150), 0, NonOpaque, 207 std::move(contextProvider), IntSize(300, 150), 0, NonOpaque,
208 Canvas2DLayerBridge::ForceAccelerationForTesting, nullptr))); 208 Canvas2DLayerBridge::ForceAccelerationForTesting, nullptr)));
209 209
210 // TODO(junov): The PrepareTextureMailbox() method will fail a DCHECK if we don't 210 // TODO(junov): The PrepareTextureMailbox() method will fail a DCHECK if we
211 // do this before calling it the first time when the context is lost. 211 // don't do this before calling it the first time when the context is lost.
212 bridge->prepareSurfaceForPaintingIfNeeded(); 212 bridge->prepareSurfaceForPaintingIfNeeded();
213 213
214 // When the context is lost we are not sure if we should be producing GL fra mes for the 214 // When the context is lost we are not sure if we should still be producing
215 // compositor still or not, so fail to generate frames. 215 // GL frames for the compositor or not, so fail to generate frames.
216 gl.setIsContextLost(true); 216 gl.setIsContextLost(true);
217 217
218 cc::TextureMailbox textureMailbox; 218 cc::TextureMailbox textureMailbox;
219 std::unique_ptr<cc::SingleReleaseCallback> releaseCallback; 219 std::unique_ptr<cc::SingleReleaseCallback> releaseCallback;
220 EXPECT_FALSE( 220 EXPECT_FALSE(
221 bridge->PrepareTextureMailbox(&textureMailbox, &releaseCallback)); 221 bridge->PrepareTextureMailbox(&textureMailbox, &releaseCallback));
222 } 222 }
223 223
224 void prepareMailboxAndLoseResourceTest() { 224 void prepareMailboxAndLoseResourceTest() {
225 // Prepare a mailbox, then report the resource as lost. 225 // Prepare a mailbox, then report the resource as lost.
(...skipping 22 matching lines...) Expand all
248 wrapUnique(new FakeWebGraphicsContext3DProvider(&gl)); 248 wrapUnique(new FakeWebGraphicsContext3DProvider(&gl));
249 249
250 cc::TextureMailbox textureMailbox; 250 cc::TextureMailbox textureMailbox;
251 std::unique_ptr<cc::SingleReleaseCallback> releaseCallback; 251 std::unique_ptr<cc::SingleReleaseCallback> releaseCallback;
252 252
253 { 253 {
254 Canvas2DLayerBridgePtr bridge(adoptRef(new Canvas2DLayerBridge( 254 Canvas2DLayerBridgePtr bridge(adoptRef(new Canvas2DLayerBridge(
255 std::move(contextProvider), IntSize(300, 150), 0, NonOpaque, 255 std::move(contextProvider), IntSize(300, 150), 0, NonOpaque,
256 Canvas2DLayerBridge::ForceAccelerationForTesting, nullptr))); 256 Canvas2DLayerBridge::ForceAccelerationForTesting, nullptr)));
257 bridge->PrepareTextureMailbox(&textureMailbox, &releaseCallback); 257 bridge->PrepareTextureMailbox(&textureMailbox, &releaseCallback);
258 // |bridge| goes out of scope and would normally be destroyed, but objec t is kept alive by self references. 258 // |bridge| goes out of scope and would normally be destroyed, but
259 // object is kept alive by self references.
259 } 260 }
260 261
261 // Before fixing crbug.com/411864, the following line you cause a memory u se after free
262 // that sometimes causes a crash in normal builds and crashes consistently with ASAN.
263 // This should cause the bridge to be destroyed. 262 // This should cause the bridge to be destroyed.
264 bool lostResource = true; 263 bool lostResource = true;
264 // Before fixing crbug.com/411864, the following line would cause a memory
265 // use after free that sometimes caused a crash in normal builds and
266 // crashed consistently with ASAN.
265 releaseCallback->Run(gpu::SyncToken(), lostResource); 267 releaseCallback->Run(gpu::SyncToken(), lostResource);
266 } 268 }
267 } 269 }
268 270
269 void accelerationHintTest() { 271 void accelerationHintTest() {
270 { 272 {
271 FakeGLES2Interface gl; 273 FakeGLES2Interface gl;
272 std::unique_ptr<FakeWebGraphicsContext3DProvider> contextProvider = 274 std::unique_ptr<FakeWebGraphicsContext3DProvider> contextProvider =
273 wrapUnique(new FakeWebGraphicsContext3DProvider(&gl)); 275 wrapUnique(new FakeWebGraphicsContext3DProvider(&gl));
274 Canvas2DLayerBridgePtr bridge(adoptRef(new Canvas2DLayerBridge( 276 Canvas2DLayerBridgePtr bridge(adoptRef(new Canvas2DLayerBridge(
(...skipping 933 matching lines...) Expand 10 before | Expand all | Expand 10 after
1208 EXPECT_FALSE( 1210 EXPECT_FALSE(
1209 bridge->PrepareTextureMailbox(&textureMailbox, &releaseCallback)); 1211 bridge->PrepareTextureMailbox(&textureMailbox, &releaseCallback));
1210 EXPECT_TRUE(bridge->checkSurfaceValid()); 1212 EXPECT_TRUE(bridge->checkSurfaceValid());
1211 1213
1212 // Tear down the bridge on the thread so that 'bridge' can go out of scope 1214 // Tear down the bridge on the thread so that 'bridge' can go out of scope
1213 // without crashing due to thread checks 1215 // without crashing due to thread checks
1214 postAndWaitDestroyBridgeTask(BLINK_FROM_HERE, testThread.get(), &bridge); 1216 postAndWaitDestroyBridgeTask(BLINK_FROM_HERE, testThread.get(), &bridge);
1215 } 1217 }
1216 1218
1217 } // namespace blink 1219 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698