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

Side by Side Diff: third_party/WebKit/Source/modules/fetch/BodyStreamBufferTest.cpp

Issue 2141383002: [Fetch API] Remove HandleScope to protect local handles (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix Created 4 years, 5 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 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "modules/fetch/BodyStreamBuffer.h" 5 #include "modules/fetch/BodyStreamBuffer.h"
6 6
7 #include "core/html/FormData.h" 7 #include "core/html/FormData.h"
8 #include "core/testing/DummyPageHolder.h" 8 #include "core/testing/DummyPageHolder.h"
9 #include "modules/fetch/DataConsumerHandleTestUtil.h" 9 #include "modules/fetch/DataConsumerHandleTestUtil.h"
10 #include "modules/fetch/FetchBlobDataConsumerHandle.h" 10 #include "modules/fetch/FetchBlobDataConsumerHandle.h"
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
75 if (block.HasCaught()) { 75 if (block.HasCaught()) {
76 ADD_FAILURE() << toCoreString(block.Exception()->ToString(getScriptS tate()->isolate())).utf8().data(); 76 ADD_FAILURE() << toCoreString(block.Exception()->ToString(getScriptS tate()->isolate())).utf8().data();
77 block.ReThrow(); 77 block.ReThrow();
78 } 78 }
79 return r; 79 return r;
80 } 80 }
81 }; 81 };
82 82
83 TEST_F(BodyStreamBufferTest, Tee) 83 TEST_F(BodyStreamBufferTest, Tee)
84 { 84 {
85 ScriptState::Scope scope(getScriptState());
85 Checkpoint checkpoint; 86 Checkpoint checkpoint;
86 MockFetchDataLoaderClient* client1 = MockFetchDataLoaderClient::create(); 87 MockFetchDataLoaderClient* client1 = MockFetchDataLoaderClient::create();
87 MockFetchDataLoaderClient* client2 = MockFetchDataLoaderClient::create(); 88 MockFetchDataLoaderClient* client2 = MockFetchDataLoaderClient::create();
88 89
89 InSequence s; 90 InSequence s;
90 EXPECT_CALL(checkpoint, Call(1)); 91 EXPECT_CALL(checkpoint, Call(1));
91 EXPECT_CALL(*client1, didFetchDataLoadedString(String("hello, world"))); 92 EXPECT_CALL(*client1, didFetchDataLoadedString(String("hello, world")));
92 EXPECT_CALL(checkpoint, Call(2)); 93 EXPECT_CALL(checkpoint, Call(2));
93 EXPECT_CALL(checkpoint, Call(3)); 94 EXPECT_CALL(checkpoint, Call(3));
94 EXPECT_CALL(*client2, didFetchDataLoadedString(String("hello, world"))); 95 EXPECT_CALL(*client2, didFetchDataLoadedString(String("hello, world")));
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
167 checkpoint.Call(2); 168 checkpoint.Call(2);
168 169
169 new2->startLoading(FetchDataLoader::createLoaderAsString(), client2); 170 new2->startLoading(FetchDataLoader::createLoaderAsString(), client2);
170 checkpoint.Call(3); 171 checkpoint.Call(3);
171 testing::runPendingTasks(); 172 testing::runPendingTasks();
172 checkpoint.Call(4); 173 checkpoint.Call(4);
173 } 174 }
174 175
175 TEST_F(BodyStreamBufferTest, DrainAsBlobDataHandle) 176 TEST_F(BodyStreamBufferTest, DrainAsBlobDataHandle)
176 { 177 {
178 ScriptState::Scope scope(getScriptState());
177 std::unique_ptr<BlobData> data = BlobData::create(); 179 std::unique_ptr<BlobData> data = BlobData::create();
178 data->appendText("hello", false); 180 data->appendText("hello", false);
179 auto size = data->length(); 181 auto size = data->length();
180 RefPtr<BlobDataHandle> blobDataHandle = BlobDataHandle::create(std::move(dat a), size); 182 RefPtr<BlobDataHandle> blobDataHandle = BlobDataHandle::create(std::move(dat a), size);
181 BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), FetchBlobD ataConsumerHandle::create(getExecutionContext(), blobDataHandle, new FakeLoaderF actory)); 183 BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), FetchBlobD ataConsumerHandle::create(getExecutionContext(), blobDataHandle, new FakeLoaderF actory));
182 184
183 EXPECT_FALSE(buffer->isStreamLocked()); 185 EXPECT_FALSE(buffer->isStreamLocked());
184 EXPECT_FALSE(buffer->isStreamDisturbed()); 186 EXPECT_FALSE(buffer->isStreamDisturbed());
185 EXPECT_FALSE(buffer->hasPendingActivity()); 187 EXPECT_FALSE(buffer->hasPendingActivity());
186 RefPtr<BlobDataHandle> outputBlobDataHandle = buffer->drainAsBlobDataHandle( FetchDataConsumerHandle::Reader::AllowBlobWithInvalidSize); 188 RefPtr<BlobDataHandle> outputBlobDataHandle = buffer->drainAsBlobDataHandle( FetchDataConsumerHandle::Reader::AllowBlobWithInvalidSize);
187 189
188 EXPECT_TRUE(buffer->isStreamLocked()); 190 EXPECT_TRUE(buffer->isStreamLocked());
189 EXPECT_TRUE(buffer->isStreamDisturbed()); 191 EXPECT_TRUE(buffer->isStreamDisturbed());
190 EXPECT_FALSE(buffer->hasPendingActivity()); 192 EXPECT_FALSE(buffer->hasPendingActivity());
191 EXPECT_EQ(blobDataHandle, outputBlobDataHandle); 193 EXPECT_EQ(blobDataHandle, outputBlobDataHandle);
192 } 194 }
193 195
194 TEST_F(BodyStreamBufferTest, DrainAsBlobDataHandleReturnsNull) 196 TEST_F(BodyStreamBufferTest, DrainAsBlobDataHandleReturnsNull)
195 { 197 {
198 ScriptState::Scope scope(getScriptState());
196 // This handle is not drainable. 199 // This handle is not drainable.
197 std::unique_ptr<FetchDataConsumerHandle> handle = createFetchDataConsumerHan dleFromWebHandle(createWaitingDataConsumerHandle()); 200 std::unique_ptr<FetchDataConsumerHandle> handle = createFetchDataConsumerHan dleFromWebHandle(createWaitingDataConsumerHandle());
198 BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), std::move( handle)); 201 BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), std::move( handle));
199 202
200 EXPECT_FALSE(buffer->isStreamLocked()); 203 EXPECT_FALSE(buffer->isStreamLocked());
201 EXPECT_FALSE(buffer->isStreamDisturbed()); 204 EXPECT_FALSE(buffer->isStreamDisturbed());
202 EXPECT_FALSE(buffer->hasPendingActivity()); 205 EXPECT_FALSE(buffer->hasPendingActivity());
203 206
204 EXPECT_FALSE(buffer->drainAsBlobDataHandle(FetchDataConsumerHandle::Reader:: AllowBlobWithInvalidSize)); 207 EXPECT_FALSE(buffer->drainAsBlobDataHandle(FetchDataConsumerHandle::Reader:: AllowBlobWithInvalidSize));
205 208
(...skipping 16 matching lines...) Expand all
222 EXPECT_FALSE(buffer->drainAsBlobDataHandle(FetchDataConsumerHandle::Reader:: AllowBlobWithInvalidSize)); 225 EXPECT_FALSE(buffer->drainAsBlobDataHandle(FetchDataConsumerHandle::Reader:: AllowBlobWithInvalidSize));
223 226
224 EXPECT_FALSE(buffer->hasPendingActivity()); 227 EXPECT_FALSE(buffer->hasPendingActivity());
225 EXPECT_FALSE(buffer->isStreamLocked()); 228 EXPECT_FALSE(buffer->isStreamLocked());
226 EXPECT_FALSE(buffer->isStreamDisturbed()); 229 EXPECT_FALSE(buffer->isStreamDisturbed());
227 EXPECT_TRUE(buffer->isStreamReadable()); 230 EXPECT_TRUE(buffer->isStreamReadable());
228 } 231 }
229 232
230 TEST_F(BodyStreamBufferTest, DrainAsFormData) 233 TEST_F(BodyStreamBufferTest, DrainAsFormData)
231 { 234 {
235 ScriptState::Scope scope(getScriptState());
232 FormData* data = FormData::create(UTF8Encoding()); 236 FormData* data = FormData::create(UTF8Encoding());
233 data->append("name1", "value1"); 237 data->append("name1", "value1");
234 data->append("name2", "value2"); 238 data->append("name2", "value2");
235 RefPtr<EncodedFormData> inputFormData = data->encodeMultiPartFormData(); 239 RefPtr<EncodedFormData> inputFormData = data->encodeMultiPartFormData();
236 240
237 BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), FetchFormD ataConsumerHandle::create(getExecutionContext(), inputFormData)); 241 BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), FetchFormD ataConsumerHandle::create(getExecutionContext(), inputFormData));
238 242
239 EXPECT_FALSE(buffer->isStreamLocked()); 243 EXPECT_FALSE(buffer->isStreamLocked());
240 EXPECT_FALSE(buffer->isStreamDisturbed()); 244 EXPECT_FALSE(buffer->isStreamDisturbed());
241 EXPECT_FALSE(buffer->hasPendingActivity()); 245 EXPECT_FALSE(buffer->hasPendingActivity());
242 RefPtr<EncodedFormData> outputFormData = buffer->drainAsFormData(); 246 RefPtr<EncodedFormData> outputFormData = buffer->drainAsFormData();
243 247
244 EXPECT_TRUE(buffer->isStreamLocked()); 248 EXPECT_TRUE(buffer->isStreamLocked());
245 EXPECT_TRUE(buffer->isStreamDisturbed()); 249 EXPECT_TRUE(buffer->isStreamDisturbed());
246 EXPECT_FALSE(buffer->hasPendingActivity()); 250 EXPECT_FALSE(buffer->hasPendingActivity());
247 EXPECT_EQ(outputFormData->flattenToString(), inputFormData->flattenToString( )); 251 EXPECT_EQ(outputFormData->flattenToString(), inputFormData->flattenToString( ));
248 } 252 }
249 253
250 TEST_F(BodyStreamBufferTest, DrainAsFormDataReturnsNull) 254 TEST_F(BodyStreamBufferTest, DrainAsFormDataReturnsNull)
251 { 255 {
256 ScriptState::Scope scope(getScriptState());
252 // This handle is not drainable. 257 // This handle is not drainable.
253 std::unique_ptr<FetchDataConsumerHandle> handle = createFetchDataConsumerHan dleFromWebHandle(createWaitingDataConsumerHandle()); 258 std::unique_ptr<FetchDataConsumerHandle> handle = createFetchDataConsumerHan dleFromWebHandle(createWaitingDataConsumerHandle());
254 BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), std::move( handle)); 259 BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), std::move( handle));
255 260
256 EXPECT_FALSE(buffer->isStreamLocked()); 261 EXPECT_FALSE(buffer->isStreamLocked());
257 EXPECT_FALSE(buffer->isStreamDisturbed()); 262 EXPECT_FALSE(buffer->isStreamDisturbed());
258 EXPECT_FALSE(buffer->hasPendingActivity()); 263 EXPECT_FALSE(buffer->hasPendingActivity());
259 264
260 EXPECT_FALSE(buffer->drainAsFormData()); 265 EXPECT_FALSE(buffer->drainAsFormData());
261 266
(...skipping 16 matching lines...) Expand all
278 EXPECT_FALSE(buffer->drainAsFormData()); 283 EXPECT_FALSE(buffer->drainAsFormData());
279 284
280 EXPECT_FALSE(buffer->hasPendingActivity()); 285 EXPECT_FALSE(buffer->hasPendingActivity());
281 EXPECT_FALSE(buffer->isStreamLocked()); 286 EXPECT_FALSE(buffer->isStreamLocked());
282 EXPECT_FALSE(buffer->isStreamDisturbed()); 287 EXPECT_FALSE(buffer->isStreamDisturbed());
283 EXPECT_TRUE(buffer->isStreamReadable()); 288 EXPECT_TRUE(buffer->isStreamReadable());
284 } 289 }
285 290
286 TEST_F(BodyStreamBufferTest, LoadBodyStreamBufferAsArrayBuffer) 291 TEST_F(BodyStreamBufferTest, LoadBodyStreamBufferAsArrayBuffer)
287 { 292 {
293 ScriptState::Scope scope(getScriptState());
288 Checkpoint checkpoint; 294 Checkpoint checkpoint;
289 MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create(); 295 MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create();
290 DOMArrayBuffer* arrayBuffer = nullptr; 296 DOMArrayBuffer* arrayBuffer = nullptr;
291 297
292 InSequence s; 298 InSequence s;
293 EXPECT_CALL(checkpoint, Call(1)); 299 EXPECT_CALL(checkpoint, Call(1));
294 EXPECT_CALL(*client, didFetchDataLoadedArrayBufferMock(_)).WillOnce(SaveArg< 0>(&arrayBuffer)); 300 EXPECT_CALL(*client, didFetchDataLoadedArrayBufferMock(_)).WillOnce(SaveArg< 0>(&arrayBuffer));
295 EXPECT_CALL(checkpoint, Call(2)); 301 EXPECT_CALL(checkpoint, Call(2));
296 302
297 std::unique_ptr<ReplayingHandle> handle = ReplayingHandle::create(); 303 std::unique_ptr<ReplayingHandle> handle = ReplayingHandle::create();
(...skipping 12 matching lines...) Expand all
310 316
311 EXPECT_TRUE(buffer->isStreamLocked()); 317 EXPECT_TRUE(buffer->isStreamLocked());
312 EXPECT_TRUE(buffer->isStreamDisturbed()); 318 EXPECT_TRUE(buffer->isStreamDisturbed());
313 EXPECT_FALSE(buffer->hasPendingActivity()); 319 EXPECT_FALSE(buffer->hasPendingActivity());
314 ASSERT_TRUE(arrayBuffer); 320 ASSERT_TRUE(arrayBuffer);
315 EXPECT_EQ("hello", String(static_cast<const char*>(arrayBuffer->data()), arr ayBuffer->byteLength())); 321 EXPECT_EQ("hello", String(static_cast<const char*>(arrayBuffer->data()), arr ayBuffer->byteLength()));
316 } 322 }
317 323
318 TEST_F(BodyStreamBufferTest, LoadBodyStreamBufferAsBlob) 324 TEST_F(BodyStreamBufferTest, LoadBodyStreamBufferAsBlob)
319 { 325 {
326 ScriptState::Scope scope(getScriptState());
320 Checkpoint checkpoint; 327 Checkpoint checkpoint;
321 MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create(); 328 MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create();
322 RefPtr<BlobDataHandle> blobDataHandle; 329 RefPtr<BlobDataHandle> blobDataHandle;
323 330
324 InSequence s; 331 InSequence s;
325 EXPECT_CALL(checkpoint, Call(1)); 332 EXPECT_CALL(checkpoint, Call(1));
326 EXPECT_CALL(*client, didFetchDataLoadedBlobHandleMock(_)).WillOnce(SaveArg<0 >(&blobDataHandle)); 333 EXPECT_CALL(*client, didFetchDataLoadedBlobHandleMock(_)).WillOnce(SaveArg<0 >(&blobDataHandle));
327 EXPECT_CALL(checkpoint, Call(2)); 334 EXPECT_CALL(checkpoint, Call(2));
328 335
329 std::unique_ptr<ReplayingHandle> handle = ReplayingHandle::create(); 336 std::unique_ptr<ReplayingHandle> handle = ReplayingHandle::create();
(...skipping 11 matching lines...) Expand all
341 checkpoint.Call(2); 348 checkpoint.Call(2);
342 349
343 EXPECT_TRUE(buffer->isStreamLocked()); 350 EXPECT_TRUE(buffer->isStreamLocked());
344 EXPECT_TRUE(buffer->isStreamDisturbed()); 351 EXPECT_TRUE(buffer->isStreamDisturbed());
345 EXPECT_FALSE(buffer->hasPendingActivity()); 352 EXPECT_FALSE(buffer->hasPendingActivity());
346 EXPECT_EQ(5u, blobDataHandle->size()); 353 EXPECT_EQ(5u, blobDataHandle->size());
347 } 354 }
348 355
349 TEST_F(BodyStreamBufferTest, LoadBodyStreamBufferAsString) 356 TEST_F(BodyStreamBufferTest, LoadBodyStreamBufferAsString)
350 { 357 {
358 ScriptState::Scope scope(getScriptState());
351 Checkpoint checkpoint; 359 Checkpoint checkpoint;
352 MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create(); 360 MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create();
353 361
354 InSequence s; 362 InSequence s;
355 EXPECT_CALL(checkpoint, Call(1)); 363 EXPECT_CALL(checkpoint, Call(1));
356 EXPECT_CALL(*client, didFetchDataLoadedString(String("hello"))); 364 EXPECT_CALL(*client, didFetchDataLoadedString(String("hello")));
357 EXPECT_CALL(checkpoint, Call(2)); 365 EXPECT_CALL(checkpoint, Call(2));
358 366
359 std::unique_ptr<ReplayingHandle> handle = ReplayingHandle::create(); 367 std::unique_ptr<ReplayingHandle> handle = ReplayingHandle::create();
360 handle->add(Command(Command::Data, "hello")); 368 handle->add(Command(Command::Data, "hello"));
361 handle->add(Command(Command::Done)); 369 handle->add(Command(Command::Done));
362 BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), createFetc hDataConsumerHandleFromWebHandle(std::move(handle))); 370 BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), createFetc hDataConsumerHandleFromWebHandle(std::move(handle)));
363 buffer->startLoading(FetchDataLoader::createLoaderAsString(), client); 371 buffer->startLoading(FetchDataLoader::createLoaderAsString(), client);
364 372
365 EXPECT_TRUE(buffer->isStreamLocked()); 373 EXPECT_TRUE(buffer->isStreamLocked());
366 EXPECT_TRUE(buffer->isStreamDisturbed()); 374 EXPECT_TRUE(buffer->isStreamDisturbed());
367 EXPECT_TRUE(buffer->hasPendingActivity()); 375 EXPECT_TRUE(buffer->hasPendingActivity());
368 376
369 checkpoint.Call(1); 377 checkpoint.Call(1);
370 testing::runPendingTasks(); 378 testing::runPendingTasks();
371 checkpoint.Call(2); 379 checkpoint.Call(2);
372 380
373 EXPECT_TRUE(buffer->isStreamLocked()); 381 EXPECT_TRUE(buffer->isStreamLocked());
374 EXPECT_TRUE(buffer->isStreamDisturbed()); 382 EXPECT_TRUE(buffer->isStreamDisturbed());
375 EXPECT_FALSE(buffer->hasPendingActivity()); 383 EXPECT_FALSE(buffer->hasPendingActivity());
376 } 384 }
377 385
378 TEST_F(BodyStreamBufferTest, LoadClosedHandle) 386 TEST_F(BodyStreamBufferTest, LoadClosedHandle)
379 { 387 {
388 ScriptState::Scope scope(getScriptState());
380 Checkpoint checkpoint; 389 Checkpoint checkpoint;
381 MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create(); 390 MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create();
382 391
383 InSequence s; 392 InSequence s;
384 EXPECT_CALL(checkpoint, Call(1)); 393 EXPECT_CALL(checkpoint, Call(1));
385 EXPECT_CALL(*client, didFetchDataLoadedString(String(""))); 394 EXPECT_CALL(*client, didFetchDataLoadedString(String("")));
386 EXPECT_CALL(checkpoint, Call(2)); 395 EXPECT_CALL(checkpoint, Call(2));
387 396
388 BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), createFetc hDataConsumerHandleFromWebHandle(createDoneDataConsumerHandle())); 397 BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), createFetc hDataConsumerHandleFromWebHandle(createDoneDataConsumerHandle()));
389 398
(...skipping 14 matching lines...) Expand all
404 testing::runPendingTasks(); 413 testing::runPendingTasks();
405 checkpoint.Call(2); 414 checkpoint.Call(2);
406 415
407 EXPECT_TRUE(buffer->isStreamLocked()); 416 EXPECT_TRUE(buffer->isStreamLocked());
408 EXPECT_TRUE(buffer->isStreamDisturbed()); 417 EXPECT_TRUE(buffer->isStreamDisturbed());
409 EXPECT_FALSE(buffer->hasPendingActivity()); 418 EXPECT_FALSE(buffer->hasPendingActivity());
410 } 419 }
411 420
412 TEST_F(BodyStreamBufferTest, LoadErroredHandle) 421 TEST_F(BodyStreamBufferTest, LoadErroredHandle)
413 { 422 {
423 ScriptState::Scope scope(getScriptState());
414 Checkpoint checkpoint; 424 Checkpoint checkpoint;
415 MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create(); 425 MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create();
416 426
417 InSequence s; 427 InSequence s;
418 EXPECT_CALL(checkpoint, Call(1)); 428 EXPECT_CALL(checkpoint, Call(1));
419 EXPECT_CALL(*client, didFetchDataLoadFailed()); 429 EXPECT_CALL(*client, didFetchDataLoadFailed());
420 EXPECT_CALL(checkpoint, Call(2)); 430 EXPECT_CALL(checkpoint, Call(2));
421 431
422 BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), createFetc hDataConsumerHandleFromWebHandle(createUnexpectedErrorDataConsumerHandle())); 432 BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), createFetc hDataConsumerHandleFromWebHandle(createUnexpectedErrorDataConsumerHandle()));
423 433
(...skipping 13 matching lines...) Expand all
437 testing::runPendingTasks(); 447 testing::runPendingTasks();
438 checkpoint.Call(2); 448 checkpoint.Call(2);
439 449
440 EXPECT_TRUE(buffer->isStreamLocked()); 450 EXPECT_TRUE(buffer->isStreamLocked());
441 EXPECT_TRUE(buffer->isStreamDisturbed()); 451 EXPECT_TRUE(buffer->isStreamDisturbed());
442 EXPECT_FALSE(buffer->hasPendingActivity()); 452 EXPECT_FALSE(buffer->hasPendingActivity());
443 } 453 }
444 454
445 TEST_F(BodyStreamBufferTest, LoaderShouldBeKeptAliveByBodyStreamBuffer) 455 TEST_F(BodyStreamBufferTest, LoaderShouldBeKeptAliveByBodyStreamBuffer)
446 { 456 {
457 ScriptState::Scope scope(getScriptState());
447 Checkpoint checkpoint; 458 Checkpoint checkpoint;
448 MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create(); 459 MockFetchDataLoaderClient* client = MockFetchDataLoaderClient::create();
449 460
450 InSequence s; 461 InSequence s;
451 EXPECT_CALL(checkpoint, Call(1)); 462 EXPECT_CALL(checkpoint, Call(1));
452 EXPECT_CALL(*client, didFetchDataLoadedString(String("hello"))); 463 EXPECT_CALL(*client, didFetchDataLoadedString(String("hello")));
453 EXPECT_CALL(checkpoint, Call(2)); 464 EXPECT_CALL(checkpoint, Call(2));
454 465
455 std::unique_ptr<ReplayingHandle> handle = ReplayingHandle::create(); 466 std::unique_ptr<ReplayingHandle> handle = ReplayingHandle::create();
456 handle->add(Command(Command::Data, "hello")); 467 handle->add(Command(Command::Data, "hello"));
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
500 BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), std::move( handle)); 511 BodyStreamBuffer* buffer = new BodyStreamBuffer(getScriptState(), std::move( handle));
501 checkpoint.Call(1); 512 checkpoint.Call(1);
502 ScriptValue reason(getScriptState(), v8String(getScriptState()->isolate(), " reason")); 513 ScriptValue reason(getScriptState(), v8String(getScriptState()->isolate(), " reason"));
503 buffer->cancelSource(getScriptState(), reason); 514 buffer->cancelSource(getScriptState(), reason);
504 checkpoint.Call(2); 515 checkpoint.Call(2);
505 } 516 }
506 517
507 } // namespace 518 } // namespace
508 519
509 } // namespace blink 520 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698