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

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

Issue 2425113002: Fix the linear-rgb canvas color space so that it renders (Closed)
Patch Set: 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 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
91 }; 91 };
92 92
93 } // anonymous namespace 93 } // anonymous namespace
94 94
95 class Canvas2DLayerBridgeTest : public Test { 95 class Canvas2DLayerBridgeTest : public Test {
96 public: 96 public:
97 PassRefPtr<Canvas2DLayerBridge> makeBridge( 97 PassRefPtr<Canvas2DLayerBridge> makeBridge(
98 std::unique_ptr<FakeWebGraphicsContext3DProvider> provider, 98 std::unique_ptr<FakeWebGraphicsContext3DProvider> provider,
99 const IntSize& size, 99 const IntSize& size,
100 Canvas2DLayerBridge::AccelerationMode accelerationMode) { 100 Canvas2DLayerBridge::AccelerationMode accelerationMode) {
101 RefPtr<Canvas2DLayerBridge> bridge = adoptRef(new Canvas2DLayerBridge( 101 RefPtr<Canvas2DLayerBridge> bridge = adoptRef(
102 std::move(provider), size, 0, NonOpaque, accelerationMode, nullptr)); 102 new Canvas2DLayerBridge(std::move(provider), size, 0, NonOpaque,
103 accelerationMode, nullptr, kN32_SkColorType));
103 bridge->dontUseIdleSchedulingForTesting(); 104 bridge->dontUseIdleSchedulingForTesting();
104 return bridge.release(); 105 return bridge.release();
105 } 106 }
106 107
107 protected: 108 protected:
108 void fullLifecycleTest() { 109 void fullLifecycleTest() {
109 FakeGLES2Interface gl; 110 FakeGLES2Interface gl;
110 std::unique_ptr<FakeWebGraphicsContext3DProvider> contextProvider = 111 std::unique_ptr<FakeWebGraphicsContext3DProvider> contextProvider =
111 wrapUnique(new FakeWebGraphicsContext3DProvider(&gl)); 112 wrapUnique(new FakeWebGraphicsContext3DProvider(&gl));
112 113
113 Canvas2DLayerBridgePtr bridge(adoptRef(new Canvas2DLayerBridge( 114 Canvas2DLayerBridgePtr bridge(adoptRef(new Canvas2DLayerBridge(
114 std::move(contextProvider), IntSize(300, 150), 0, NonOpaque, 115 std::move(contextProvider), IntSize(300, 150), 0, NonOpaque,
115 Canvas2DLayerBridge::DisableAcceleration, nullptr))); 116 Canvas2DLayerBridge::DisableAcceleration, nullptr, kN32_SkColorType)));
116 117
117 const GrGLTextureInfo* textureInfo = skia::GrBackendObjectToGrGLTextureInfo( 118 const GrGLTextureInfo* textureInfo = skia::GrBackendObjectToGrGLTextureInfo(
118 bridge->newImageSnapshot(PreferAcceleration, SnapshotReasonUnitTests) 119 bridge->newImageSnapshot(PreferAcceleration, SnapshotReasonUnitTests)
119 ->getTextureHandle(true)); 120 ->getTextureHandle(true));
120 EXPECT_EQ(textureInfo, nullptr); 121 EXPECT_EQ(textureInfo, nullptr);
121 bridge.clear(); 122 bridge.clear();
122 } 123 }
123 124
124 void fallbackToSoftwareIfContextLost() { 125 void fallbackToSoftwareIfContextLost() {
125 FakeGLES2Interface gl; 126 FakeGLES2Interface gl;
126 std::unique_ptr<FakeWebGraphicsContext3DProvider> contextProvider = 127 std::unique_ptr<FakeWebGraphicsContext3DProvider> contextProvider =
127 wrapUnique(new FakeWebGraphicsContext3DProvider(&gl)); 128 wrapUnique(new FakeWebGraphicsContext3DProvider(&gl));
128 129
129 gl.setIsContextLost(true); 130 gl.setIsContextLost(true);
130 Canvas2DLayerBridgePtr bridge(adoptRef(new Canvas2DLayerBridge( 131 Canvas2DLayerBridgePtr bridge(adoptRef(new Canvas2DLayerBridge(
131 std::move(contextProvider), IntSize(300, 150), 0, NonOpaque, 132 std::move(contextProvider), IntSize(300, 150), 0, NonOpaque,
132 Canvas2DLayerBridge::EnableAcceleration, nullptr))); 133 Canvas2DLayerBridge::EnableAcceleration, nullptr, kN32_SkColorType)));
133 EXPECT_TRUE(bridge->checkSurfaceValid()); 134 EXPECT_TRUE(bridge->checkSurfaceValid());
134 EXPECT_FALSE(bridge->isAccelerated()); 135 EXPECT_FALSE(bridge->isAccelerated());
135 } 136 }
136 137
137 void fallbackToSoftwareOnFailedTextureAlloc() { 138 void fallbackToSoftwareOnFailedTextureAlloc() {
138 { 139 {
139 // No fallback case. 140 // No fallback case.
140 FakeGLES2Interface gl; 141 FakeGLES2Interface gl;
141 std::unique_ptr<FakeWebGraphicsContext3DProvider> contextProvider = 142 std::unique_ptr<FakeWebGraphicsContext3DProvider> contextProvider =
142 wrapUnique(new FakeWebGraphicsContext3DProvider(&gl)); 143 wrapUnique(new FakeWebGraphicsContext3DProvider(&gl));
143 Canvas2DLayerBridgePtr bridge(adoptRef(new Canvas2DLayerBridge( 144 Canvas2DLayerBridgePtr bridge(adoptRef(new Canvas2DLayerBridge(
144 std::move(contextProvider), IntSize(300, 150), 0, NonOpaque, 145 std::move(contextProvider), IntSize(300, 150), 0, NonOpaque,
145 Canvas2DLayerBridge::EnableAcceleration, nullptr))); 146 Canvas2DLayerBridge::EnableAcceleration, nullptr, kN32_SkColorType)));
146 EXPECT_TRUE(bridge->checkSurfaceValid()); 147 EXPECT_TRUE(bridge->checkSurfaceValid());
147 EXPECT_TRUE(bridge->isAccelerated()); 148 EXPECT_TRUE(bridge->isAccelerated());
148 sk_sp<SkImage> snapshot = 149 sk_sp<SkImage> snapshot =
149 bridge->newImageSnapshot(PreferAcceleration, SnapshotReasonUnitTests); 150 bridge->newImageSnapshot(PreferAcceleration, SnapshotReasonUnitTests);
150 EXPECT_TRUE(bridge->isAccelerated()); 151 EXPECT_TRUE(bridge->isAccelerated());
151 EXPECT_TRUE(snapshot->isTextureBacked()); 152 EXPECT_TRUE(snapshot->isTextureBacked());
152 } 153 }
153 154
154 { 155 {
155 // Fallback case. 156 // Fallback case.
156 FakeGLES2Interface gl; 157 FakeGLES2Interface gl;
157 std::unique_ptr<FakeWebGraphicsContext3DProvider> contextProvider = 158 std::unique_ptr<FakeWebGraphicsContext3DProvider> contextProvider =
158 wrapUnique(new FakeWebGraphicsContext3DProvider(&gl)); 159 wrapUnique(new FakeWebGraphicsContext3DProvider(&gl));
159 GrContext* gr = contextProvider->grContext(); 160 GrContext* gr = contextProvider->grContext();
160 Canvas2DLayerBridgePtr bridge(adoptRef(new Canvas2DLayerBridge( 161 Canvas2DLayerBridgePtr bridge(adoptRef(new Canvas2DLayerBridge(
161 std::move(contextProvider), IntSize(300, 150), 0, NonOpaque, 162 std::move(contextProvider), IntSize(300, 150), 0, NonOpaque,
162 Canvas2DLayerBridge::EnableAcceleration, nullptr))); 163 Canvas2DLayerBridge::EnableAcceleration, nullptr, kN32_SkColorType)));
163 EXPECT_TRUE(bridge->checkSurfaceValid()); 164 EXPECT_TRUE(bridge->checkSurfaceValid());
164 EXPECT_TRUE(bridge->isAccelerated()); // We don't yet know that 165 EXPECT_TRUE(bridge->isAccelerated()); // We don't yet know that
165 // allocation will fail. 166 // allocation will fail.
166 // This will cause SkSurface_Gpu creation to fail without 167 // This will cause SkSurface_Gpu creation to fail without
167 // Canvas2DLayerBridge otherwise detecting that anything was disabled. 168 // Canvas2DLayerBridge otherwise detecting that anything was disabled.
168 gr->abandonContext(); 169 gr->abandonContext();
169 sk_sp<SkImage> snapshot = 170 sk_sp<SkImage> snapshot =
170 bridge->newImageSnapshot(PreferAcceleration, SnapshotReasonUnitTests); 171 bridge->newImageSnapshot(PreferAcceleration, SnapshotReasonUnitTests);
171 EXPECT_FALSE(bridge->isAccelerated()); 172 EXPECT_FALSE(bridge->isAccelerated());
172 EXPECT_FALSE(snapshot->isTextureBacked()); 173 EXPECT_FALSE(snapshot->isTextureBacked());
173 } 174 }
174 } 175 }
175 176
176 void noDrawOnContextLostTest() { 177 void noDrawOnContextLostTest() {
177 FakeGLES2Interface gl; 178 FakeGLES2Interface gl;
178 std::unique_ptr<FakeWebGraphicsContext3DProvider> contextProvider = 179 std::unique_ptr<FakeWebGraphicsContext3DProvider> contextProvider =
179 wrapUnique(new FakeWebGraphicsContext3DProvider(&gl)); 180 wrapUnique(new FakeWebGraphicsContext3DProvider(&gl));
180 181
181 Canvas2DLayerBridgePtr bridge(adoptRef(new Canvas2DLayerBridge( 182 Canvas2DLayerBridgePtr bridge(adoptRef(new Canvas2DLayerBridge(
182 std::move(contextProvider), IntSize(300, 150), 0, NonOpaque, 183 std::move(contextProvider), IntSize(300, 150), 0, NonOpaque,
183 Canvas2DLayerBridge::ForceAccelerationForTesting, nullptr))); 184 Canvas2DLayerBridge::ForceAccelerationForTesting, nullptr,
185 kN32_SkColorType)));
184 EXPECT_TRUE(bridge->checkSurfaceValid()); 186 EXPECT_TRUE(bridge->checkSurfaceValid());
185 SkPaint paint; 187 SkPaint paint;
186 uint32_t genID = bridge->getOrCreateSurface()->generationID(); 188 uint32_t genID = bridge->getOrCreateSurface()->generationID();
187 bridge->canvas()->drawRect(SkRect::MakeXYWH(0, 0, 1, 1), paint); 189 bridge->canvas()->drawRect(SkRect::MakeXYWH(0, 0, 1, 1), paint);
188 EXPECT_EQ(genID, bridge->getOrCreateSurface()->generationID()); 190 EXPECT_EQ(genID, bridge->getOrCreateSurface()->generationID());
189 gl.setIsContextLost(true); 191 gl.setIsContextLost(true);
190 EXPECT_EQ(genID, bridge->getOrCreateSurface()->generationID()); 192 EXPECT_EQ(genID, bridge->getOrCreateSurface()->generationID());
191 bridge->canvas()->drawRect(SkRect::MakeXYWH(0, 0, 1, 1), paint); 193 bridge->canvas()->drawRect(SkRect::MakeXYWH(0, 0, 1, 1), paint);
192 EXPECT_EQ(genID, bridge->getOrCreateSurface()->generationID()); 194 EXPECT_EQ(genID, bridge->getOrCreateSurface()->generationID());
193 // This results in the internal surface being torn down in response to the 195 // This results in the internal surface being torn down in response to the
194 // context loss. 196 // context loss.
195 EXPECT_FALSE(bridge->checkSurfaceValid()); 197 EXPECT_FALSE(bridge->checkSurfaceValid());
196 EXPECT_EQ(nullptr, bridge->getOrCreateSurface()); 198 EXPECT_EQ(nullptr, bridge->getOrCreateSurface());
197 // The following passes by not crashing 199 // The following passes by not crashing
198 bridge->canvas()->drawRect(SkRect::MakeXYWH(0, 0, 1, 1), paint); 200 bridge->canvas()->drawRect(SkRect::MakeXYWH(0, 0, 1, 1), paint);
199 bridge->flush(); 201 bridge->flush();
200 } 202 }
201 203
202 void prepareMailboxWhenContextIsLost() { 204 void prepareMailboxWhenContextIsLost() {
203 FakeGLES2Interface gl; 205 FakeGLES2Interface gl;
204 std::unique_ptr<FakeWebGraphicsContext3DProvider> contextProvider = 206 std::unique_ptr<FakeWebGraphicsContext3DProvider> contextProvider =
205 wrapUnique(new FakeWebGraphicsContext3DProvider(&gl)); 207 wrapUnique(new FakeWebGraphicsContext3DProvider(&gl));
206 Canvas2DLayerBridgePtr bridge(adoptRef(new Canvas2DLayerBridge( 208 Canvas2DLayerBridgePtr bridge(adoptRef(new Canvas2DLayerBridge(
207 std::move(contextProvider), IntSize(300, 150), 0, NonOpaque, 209 std::move(contextProvider), IntSize(300, 150), 0, NonOpaque,
208 Canvas2DLayerBridge::ForceAccelerationForTesting, nullptr))); 210 Canvas2DLayerBridge::ForceAccelerationForTesting, nullptr,
211 kN32_SkColorType)));
209 212
210 // TODO(junov): The PrepareTextureMailbox() method will fail a DCHECK if we 213 // TODO(junov): The PrepareTextureMailbox() method will fail a DCHECK if we
211 // don't do this before calling it the first time when the context is lost. 214 // don't do this before calling it the first time when the context is lost.
212 bridge->prepareSurfaceForPaintingIfNeeded(); 215 bridge->prepareSurfaceForPaintingIfNeeded();
213 216
214 // When the context is lost we are not sure if we should still be producing 217 // When the context is lost we are not sure if we should still be producing
215 // GL frames for the compositor or not, so fail to generate frames. 218 // GL frames for the compositor or not, so fail to generate frames.
216 gl.setIsContextLost(true); 219 gl.setIsContextLost(true);
217 220
218 cc::TextureMailbox textureMailbox; 221 cc::TextureMailbox textureMailbox;
219 std::unique_ptr<cc::SingleReleaseCallback> releaseCallback; 222 std::unique_ptr<cc::SingleReleaseCallback> releaseCallback;
220 EXPECT_FALSE( 223 EXPECT_FALSE(
221 bridge->PrepareTextureMailbox(&textureMailbox, &releaseCallback)); 224 bridge->PrepareTextureMailbox(&textureMailbox, &releaseCallback));
222 } 225 }
223 226
224 void prepareMailboxAndLoseResourceTest() { 227 void prepareMailboxAndLoseResourceTest() {
225 // Prepare a mailbox, then report the resource as lost. 228 // Prepare a mailbox, then report the resource as lost.
226 // This test passes by not crashing and not triggering assertions. 229 // This test passes by not crashing and not triggering assertions.
227 { 230 {
228 FakeGLES2Interface gl; 231 FakeGLES2Interface gl;
229 std::unique_ptr<FakeWebGraphicsContext3DProvider> contextProvider = 232 std::unique_ptr<FakeWebGraphicsContext3DProvider> contextProvider =
230 wrapUnique(new FakeWebGraphicsContext3DProvider(&gl)); 233 wrapUnique(new FakeWebGraphicsContext3DProvider(&gl));
231 Canvas2DLayerBridgePtr bridge(adoptRef(new Canvas2DLayerBridge( 234 Canvas2DLayerBridgePtr bridge(adoptRef(new Canvas2DLayerBridge(
232 std::move(contextProvider), IntSize(300, 150), 0, NonOpaque, 235 std::move(contextProvider), IntSize(300, 150), 0, NonOpaque,
233 Canvas2DLayerBridge::ForceAccelerationForTesting, nullptr))); 236 Canvas2DLayerBridge::ForceAccelerationForTesting, nullptr,
237 kN32_SkColorType)));
234 238
235 cc::TextureMailbox textureMailbox; 239 cc::TextureMailbox textureMailbox;
236 std::unique_ptr<cc::SingleReleaseCallback> releaseCallback; 240 std::unique_ptr<cc::SingleReleaseCallback> releaseCallback;
237 EXPECT_TRUE( 241 EXPECT_TRUE(
238 bridge->PrepareTextureMailbox(&textureMailbox, &releaseCallback)); 242 bridge->PrepareTextureMailbox(&textureMailbox, &releaseCallback));
239 243
240 bool lostResource = true; 244 bool lostResource = true;
241 releaseCallback->Run(gpu::SyncToken(), lostResource); 245 releaseCallback->Run(gpu::SyncToken(), lostResource);
242 } 246 }
243 247
244 // Retry with mailbox released while bridge destruction is in progress. 248 // Retry with mailbox released while bridge destruction is in progress.
245 { 249 {
246 FakeGLES2Interface gl; 250 FakeGLES2Interface gl;
247 std::unique_ptr<FakeWebGraphicsContext3DProvider> contextProvider = 251 std::unique_ptr<FakeWebGraphicsContext3DProvider> contextProvider =
248 wrapUnique(new FakeWebGraphicsContext3DProvider(&gl)); 252 wrapUnique(new FakeWebGraphicsContext3DProvider(&gl));
249 253
250 cc::TextureMailbox textureMailbox; 254 cc::TextureMailbox textureMailbox;
251 std::unique_ptr<cc::SingleReleaseCallback> releaseCallback; 255 std::unique_ptr<cc::SingleReleaseCallback> releaseCallback;
252 256
253 { 257 {
254 Canvas2DLayerBridgePtr bridge(adoptRef(new Canvas2DLayerBridge( 258 Canvas2DLayerBridgePtr bridge(adoptRef(new Canvas2DLayerBridge(
255 std::move(contextProvider), IntSize(300, 150), 0, NonOpaque, 259 std::move(contextProvider), IntSize(300, 150), 0, NonOpaque,
256 Canvas2DLayerBridge::ForceAccelerationForTesting, nullptr))); 260 Canvas2DLayerBridge::ForceAccelerationForTesting, nullptr,
261 kN32_SkColorType)));
257 bridge->PrepareTextureMailbox(&textureMailbox, &releaseCallback); 262 bridge->PrepareTextureMailbox(&textureMailbox, &releaseCallback);
258 // |bridge| goes out of scope and would normally be destroyed, but 263 // |bridge| goes out of scope and would normally be destroyed, but
259 // object is kept alive by self references. 264 // object is kept alive by self references.
260 } 265 }
261 266
262 // This should cause the bridge to be destroyed. 267 // This should cause the bridge to be destroyed.
263 bool lostResource = true; 268 bool lostResource = true;
264 // Before fixing crbug.com/411864, the following line would cause a memory 269 // 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 270 // use after free that sometimes caused a crash in normal builds and
266 // crashed consistently with ASAN. 271 // crashed consistently with ASAN.
267 releaseCallback->Run(gpu::SyncToken(), lostResource); 272 releaseCallback->Run(gpu::SyncToken(), lostResource);
268 } 273 }
269 } 274 }
270 275
271 void accelerationHintTest() { 276 void accelerationHintTest() {
272 { 277 {
273 FakeGLES2Interface gl; 278 FakeGLES2Interface gl;
274 std::unique_ptr<FakeWebGraphicsContext3DProvider> contextProvider = 279 std::unique_ptr<FakeWebGraphicsContext3DProvider> contextProvider =
275 wrapUnique(new FakeWebGraphicsContext3DProvider(&gl)); 280 wrapUnique(new FakeWebGraphicsContext3DProvider(&gl));
276 Canvas2DLayerBridgePtr bridge(adoptRef(new Canvas2DLayerBridge( 281 Canvas2DLayerBridgePtr bridge(adoptRef(new Canvas2DLayerBridge(
277 std::move(contextProvider), IntSize(300, 300), 0, NonOpaque, 282 std::move(contextProvider), IntSize(300, 300), 0, NonOpaque,
278 Canvas2DLayerBridge::EnableAcceleration, nullptr))); 283 Canvas2DLayerBridge::EnableAcceleration, nullptr, kN32_SkColorType)));
279 SkPaint paint; 284 SkPaint paint;
280 bridge->canvas()->drawRect(SkRect::MakeXYWH(0, 0, 1, 1), paint); 285 bridge->canvas()->drawRect(SkRect::MakeXYWH(0, 0, 1, 1), paint);
281 sk_sp<SkImage> image = 286 sk_sp<SkImage> image =
282 bridge->newImageSnapshot(PreferAcceleration, SnapshotReasonUnitTests); 287 bridge->newImageSnapshot(PreferAcceleration, SnapshotReasonUnitTests);
283 EXPECT_TRUE(bridge->checkSurfaceValid()); 288 EXPECT_TRUE(bridge->checkSurfaceValid());
284 EXPECT_TRUE(bridge->isAccelerated()); 289 EXPECT_TRUE(bridge->isAccelerated());
285 } 290 }
286 291
287 { 292 {
288 FakeGLES2Interface gl; 293 FakeGLES2Interface gl;
289 std::unique_ptr<FakeWebGraphicsContext3DProvider> contextProvider = 294 std::unique_ptr<FakeWebGraphicsContext3DProvider> contextProvider =
290 wrapUnique(new FakeWebGraphicsContext3DProvider(&gl)); 295 wrapUnique(new FakeWebGraphicsContext3DProvider(&gl));
291 Canvas2DLayerBridgePtr bridge(adoptRef(new Canvas2DLayerBridge( 296 Canvas2DLayerBridgePtr bridge(adoptRef(new Canvas2DLayerBridge(
292 std::move(contextProvider), IntSize(300, 300), 0, NonOpaque, 297 std::move(contextProvider), IntSize(300, 300), 0, NonOpaque,
293 Canvas2DLayerBridge::EnableAcceleration, nullptr))); 298 Canvas2DLayerBridge::EnableAcceleration, nullptr, kN32_SkColorType)));
294 SkPaint paint; 299 SkPaint paint;
295 bridge->canvas()->drawRect(SkRect::MakeXYWH(0, 0, 1, 1), paint); 300 bridge->canvas()->drawRect(SkRect::MakeXYWH(0, 0, 1, 1), paint);
296 sk_sp<SkImage> image = bridge->newImageSnapshot(PreferNoAcceleration, 301 sk_sp<SkImage> image = bridge->newImageSnapshot(PreferNoAcceleration,
297 SnapshotReasonUnitTests); 302 SnapshotReasonUnitTests);
298 EXPECT_TRUE(bridge->checkSurfaceValid()); 303 EXPECT_TRUE(bridge->checkSurfaceValid());
299 EXPECT_FALSE(bridge->isAccelerated()); 304 EXPECT_FALSE(bridge->isAccelerated());
300 } 305 }
301 } 306 }
302 }; 307 };
303 308
(...skipping 906 matching lines...) Expand 10 before | Expand all | Expand 10 after
1210 EXPECT_FALSE( 1215 EXPECT_FALSE(
1211 bridge->PrepareTextureMailbox(&textureMailbox, &releaseCallback)); 1216 bridge->PrepareTextureMailbox(&textureMailbox, &releaseCallback));
1212 EXPECT_TRUE(bridge->checkSurfaceValid()); 1217 EXPECT_TRUE(bridge->checkSurfaceValid());
1213 1218
1214 // Tear down the bridge on the thread so that 'bridge' can go out of scope 1219 // Tear down the bridge on the thread so that 'bridge' can go out of scope
1215 // without crashing due to thread checks 1220 // without crashing due to thread checks
1216 postAndWaitDestroyBridgeTask(BLINK_FROM_HERE, testThread.get(), &bridge); 1221 postAndWaitDestroyBridgeTask(BLINK_FROM_HERE, testThread.get(), &bridge);
1217 } 1222 }
1218 1223
1219 } // namespace blink 1224 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698