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

Side by Side Diff: Source/core/fetch/ResourceLoader.cpp

Issue 561813003: Prepare blink to unify definitions of load completion (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Add document.close() to scroll-left-while-loading.html Created 6 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 | Annotate | Revision Log
« no previous file with comments | « Source/core/fetch/ResourceLoader.h ('k') | Source/core/fetch/ResourceLoaderHost.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2006, 2007, 2010, 2011 Apple Inc. All rights reserved. 2 * Copyright (C) 2006, 2007, 2010, 2011 Apple Inc. All rights reserved.
3 * (C) 2007 Graham Dennis (graham.dennis@gmail.com) 3 * (C) 2007 Graham Dennis (graham.dennis@gmail.com)
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
7 * are met: 7 * are met:
8 * 8 *
9 * 1. Redistributions of source code must retain the above copyright 9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer. 10 * notice, this list of conditions and the following disclaimer.
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
95 void ResourceLoader::trace(Visitor* visitor) 95 void ResourceLoader::trace(Visitor* visitor)
96 { 96 {
97 visitor->trace(m_host); 97 visitor->trace(m_host);
98 visitor->trace(m_resource); 98 visitor->trace(m_resource);
99 } 99 }
100 100
101 void ResourceLoader::releaseResources() 101 void ResourceLoader::releaseResources()
102 { 102 {
103 ASSERT(m_state != Terminated); 103 ASSERT(m_state != Terminated);
104 ASSERT(m_notifiedLoadComplete); 104 ASSERT(m_notifiedLoadComplete);
105 m_requestCountTracker.clear(); 105 ASSERT(!m_requestCountTracker);
106 m_host->didLoadResource(m_resource); 106 m_host->didLoadResource();
107 if (m_state == Terminated) 107 if (m_state == Terminated)
108 return; 108 return;
109 m_resource->clearLoader(); 109 m_resource->clearLoader();
110 m_resource->deleteIfPossible(); 110 m_resource->deleteIfPossible();
111 m_resource = nullptr; 111 m_resource = nullptr;
112 m_host->willTerminateResourceLoader(this); 112 m_host->willTerminateResourceLoader(this);
113 113
114 ASSERT(m_state != Terminated); 114 ASSERT(m_state != Terminated);
115 115
116 // It's possible that when we release the loader, it will be 116 // It's possible that when we release the loader, it will be
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
226 226
227 void ResourceLoader::didFinishLoadingOnePart(double finishTime, int64 encodedDat aLength) 227 void ResourceLoader::didFinishLoadingOnePart(double finishTime, int64 encodedDat aLength)
228 { 228 {
229 // If load has been cancelled after finishing (which could happen with a 229 // If load has been cancelled after finishing (which could happen with a
230 // JavaScript that changes the window location), do nothing. 230 // JavaScript that changes the window location), do nothing.
231 if (m_state == Terminated) 231 if (m_state == Terminated)
232 return; 232 return;
233 233
234 if (m_notifiedLoadComplete) 234 if (m_notifiedLoadComplete)
235 return; 235 return;
236 m_notifiedLoadComplete = true; 236 didComplete();
237 m_host->didFinishLoading(m_resource, finishTime, encodedDataLength); 237 m_host->didFinishLoading(m_resource, finishTime, encodedDataLength);
238 } 238 }
239 239
240 void ResourceLoader::didChangePriority(ResourceLoadPriority loadPriority, int in traPriorityValue) 240 void ResourceLoader::didChangePriority(ResourceLoadPriority loadPriority, int in traPriorityValue)
241 { 241 {
242 if (m_loader) { 242 if (m_loader) {
243 m_host->didChangeLoadingPriority(m_resource, loadPriority, intraPriority Value); 243 m_host->didChangeLoadingPriority(m_resource, loadPriority, intraPriority Value);
244 ASSERT(m_state != Terminated); 244 ASSERT(m_state != Terminated);
245 m_loader->didChangePriority(static_cast<blink::WebURLRequest::Priority>( loadPriority), intraPriorityValue); 245 m_loader->didChangePriority(static_cast<blink::WebURLRequest::Priority>( loadPriority), intraPriorityValue);
246 } 246 }
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
279 m_state = Finishing; 279 m_state = Finishing;
280 m_resource->setResourceError(nonNullError); 280 m_resource->setResourceError(nonNullError);
281 281
282 if (m_loader) { 282 if (m_loader) {
283 m_connectionState = ConnectionStateCanceled; 283 m_connectionState = ConnectionStateCanceled;
284 m_loader->cancel(); 284 m_loader->cancel();
285 m_loader.clear(); 285 m_loader.clear();
286 } 286 }
287 287
288 if (!m_notifiedLoadComplete) { 288 if (!m_notifiedLoadComplete) {
289 m_notifiedLoadComplete = true; 289 didComplete();
290 m_host->didFailLoading(m_resource, nonNullError); 290 m_host->didFailLoading(m_resource, nonNullError);
291 } 291 }
292 292
293 if (m_state == Finishing) 293 if (m_state == Finishing)
294 m_resource->error(Resource::LoadError); 294 m_resource->error(Resource::LoadError);
295 if (m_state != Terminated) 295 if (m_state != Terminated)
296 releaseResources(); 296 releaseResources();
297 } 297 }
298 298
299 void ResourceLoader::willSendRequest(blink::WebURLLoader*, blink::WebURLRequest& passedNewRequest, const blink::WebURLResponse& passedRedirectResponse) 299 void ResourceLoader::willSendRequest(blink::WebURLLoader*, blink::WebURLRequest& passedNewRequest, const blink::WebURLResponse& passedRedirectResponse)
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
415 didFinishLoadingOnePart(0, blink::WebURLLoaderClient::kUnknownEncodedDat aLength); 415 didFinishLoadingOnePart(0, blink::WebURLLoaderClient::kUnknownEncodedDat aLength);
416 } 416 }
417 if (m_state == Terminated) 417 if (m_state == Terminated)
418 return; 418 return;
419 419
420 if (m_resource->response().httpStatusCode() < 400 || m_resource->shouldIgnor eHTTPStatusCodeErrors()) 420 if (m_resource->response().httpStatusCode() < 400 || m_resource->shouldIgnor eHTTPStatusCodeErrors())
421 return; 421 return;
422 m_state = Finishing; 422 m_state = Finishing;
423 423
424 if (!m_notifiedLoadComplete) { 424 if (!m_notifiedLoadComplete) {
425 m_notifiedLoadComplete = true; 425 didComplete();
426 m_host->didFailLoading(m_resource, ResourceError::cancelledError(m_reque st.url())); 426 m_host->didFailLoading(m_resource, ResourceError::cancelledError(m_reque st.url()));
427 } 427 }
428 428
429 ASSERT(m_state != Terminated); 429 ASSERT(m_state != Terminated);
430 m_resource->error(Resource::LoadError); 430 m_resource->error(Resource::LoadError);
431 cancel(); 431 cancel();
432 } 432 }
433 433
434 void ResourceLoader::didReceiveData(blink::WebURLLoader*, const char* data, int length, int encodedDataLength) 434 void ResourceLoader::didReceiveData(blink::WebURLLoader*, const char* data, int length, int encodedDataLength)
435 { 435 {
(...skipping 26 matching lines...) Expand all
462 RELEASE_ASSERT(m_connectionState == ConnectionStateReceivedResponse || m_con nectionState == ConnectionStateReceivingData); 462 RELEASE_ASSERT(m_connectionState == ConnectionStateReceivedResponse || m_con nectionState == ConnectionStateReceivingData);
463 m_connectionState = ConnectionStateFinishedLoading; 463 m_connectionState = ConnectionStateFinishedLoading;
464 if (m_state != Initialized) 464 if (m_state != Initialized)
465 return; 465 return;
466 ASSERT(m_state != Terminated); 466 ASSERT(m_state != Terminated);
467 WTF_LOG(ResourceLoading, "Received '%s'.", m_resource->url().string().latin1 ().data()); 467 WTF_LOG(ResourceLoading, "Received '%s'.", m_resource->url().string().latin1 ().data());
468 468
469 RefPtrWillBeRawPtr<ResourceLoader> protect(this); 469 RefPtrWillBeRawPtr<ResourceLoader> protect(this);
470 ResourcePtr<Resource> protectResource(m_resource); 470 ResourcePtr<Resource> protectResource(m_resource);
471 m_state = Finishing; 471 m_state = Finishing;
472 m_resource->setLoadFinishTime(finishTime);
472 didFinishLoadingOnePart(finishTime, encodedDataLength); 473 didFinishLoadingOnePart(finishTime, encodedDataLength);
473 if (m_state == Terminated) 474 if (m_state == Terminated)
474 return; 475 return;
475 m_resource->finish(finishTime); 476 m_resource->finish();
476 477
477 // If the load has been cancelled by a delegate in response to didFinishLoad (), do not release 478 // If the load has been cancelled by a delegate in response to didFinishLoad (), do not release
478 // the resources a second time, they have been released by cancel. 479 // the resources a second time, they have been released by cancel.
479 if (m_state == Terminated) 480 if (m_state == Terminated)
480 return; 481 return;
481 releaseResources(); 482 releaseResources();
482 } 483 }
483 484
484 void ResourceLoader::didFail(blink::WebURLLoader*, const blink::WebURLError& err or) 485 void ResourceLoader::didFail(blink::WebURLLoader*, const blink::WebURLError& err or)
485 { 486 {
486 m_connectionState = ConnectionStateFailed; 487 m_connectionState = ConnectionStateFailed;
487 ASSERT(m_state != Terminated); 488 ASSERT(m_state != Terminated);
488 WTF_LOG(ResourceLoading, "Failed to load '%s'.\n", m_resource->url().string( ).latin1().data()); 489 WTF_LOG(ResourceLoading, "Failed to load '%s'.\n", m_resource->url().string( ).latin1().data());
489 490
490 RefPtrWillBeRawPtr<ResourceLoader> protect(this); 491 RefPtrWillBeRawPtr<ResourceLoader> protect(this);
491 RefPtrWillBeRawPtr<ResourceLoaderHost> protectHost(m_host.get()); 492 RefPtrWillBeRawPtr<ResourceLoaderHost> protectHost(m_host.get());
492 ResourcePtr<Resource> protectResource(m_resource); 493 ResourcePtr<Resource> protectResource(m_resource);
493 m_state = Finishing; 494 m_state = Finishing;
494 m_resource->setResourceError(error); 495 m_resource->setResourceError(error);
495 496
496 if (!m_notifiedLoadComplete) { 497 if (!m_notifiedLoadComplete) {
497 m_notifiedLoadComplete = true; 498 didComplete();
498 m_host->didFailLoading(m_resource, error); 499 m_host->didFailLoading(m_resource, error);
499 } 500 }
500 if (m_state == Terminated) 501 if (m_state == Terminated)
501 return; 502 return;
502 503
503 m_resource->error(Resource::LoadError); 504 m_resource->error(Resource::LoadError);
504 505
505 if (m_state == Terminated) 506 if (m_state == Terminated)
506 return; 507 return;
507 508
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
541 didReceiveResponse(0, responseOut); 542 didReceiveResponse(0, responseOut);
542 if (m_state == Terminated) 543 if (m_state == Terminated)
543 return; 544 return;
544 RefPtr<ResourceLoadInfo> resourceLoadInfo = responseOut.toResourceResponse() .resourceLoadInfo(); 545 RefPtr<ResourceLoadInfo> resourceLoadInfo = responseOut.toResourceResponse() .resourceLoadInfo();
545 int64 encodedDataLength = resourceLoadInfo ? resourceLoadInfo->encodedDataLe ngth : blink::WebURLLoaderClient::kUnknownEncodedDataLength; 546 int64 encodedDataLength = resourceLoadInfo ? resourceLoadInfo->encodedDataLe ngth : blink::WebURLLoaderClient::kUnknownEncodedDataLength;
546 m_host->didReceiveData(m_resource, dataOut.data(), dataOut.size(), encodedDa taLength); 547 m_host->didReceiveData(m_resource, dataOut.data(), dataOut.size(), encodedDa taLength);
547 m_resource->setResourceBuffer(dataOut); 548 m_resource->setResourceBuffer(dataOut);
548 didFinishLoading(0, monotonicallyIncreasingTime(), encodedDataLength); 549 didFinishLoading(0, monotonicallyIncreasingTime(), encodedDataLength);
549 } 550 }
550 551
552 void ResourceLoader::didComplete()
553 {
554 m_notifiedLoadComplete = true;
555 m_requestCountTracker.clear();
556 }
557
551 ResourceRequest& ResourceLoader::applyOptions(ResourceRequest& request) const 558 ResourceRequest& ResourceLoader::applyOptions(ResourceRequest& request) const
552 { 559 {
553 request.setAllowStoredCredentials(m_options.allowCredentials == AllowStoredC redentials); 560 request.setAllowStoredCredentials(m_options.allowCredentials == AllowStoredC redentials);
554 return request; 561 return request;
555 } 562 }
556 563
557 } 564 }
OLDNEW
« no previous file with comments | « Source/core/fetch/ResourceLoader.h ('k') | Source/core/fetch/ResourceLoaderHost.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698