| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2006, 2007, 2008 Apple Inc. All rights reserved. | 2 * Copyright (C) 2006, 2007, 2008 Apple Inc. All rights reserved. |
| 3 * Copyright (C) 2011 Google Inc. All rights reserved. | 3 * Copyright (C) 2011 Google Inc. All rights reserved. |
| 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 258 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 269 return; | 269 return; |
| 270 } | 270 } |
| 271 | 271 |
| 272 // We might run in to infinite recursion if we're stopping loading as the re
sult of | 272 // We might run in to infinite recursion if we're stopping loading as the re
sult of |
| 273 // detaching from the frame, so break out of that recursion here. | 273 // detaching from the frame, so break out of that recursion here. |
| 274 // See <rdar://problem/9673866> for more details. | 274 // See <rdar://problem/9673866> for more details. |
| 275 if (m_isStopping) | 275 if (m_isStopping) |
| 276 return; | 276 return; |
| 277 | 277 |
| 278 m_isStopping = true; | 278 m_isStopping = true; |
| 279 | |
| 280 FrameLoader* frameLoader = DocumentLoader::frameLoader(); | |
| 281 | 279 |
| 282 if (isLoadingMainResource()) | 280 if (isLoadingMainResource()) |
| 283 // Stop the main resource loader and let it send the cancelled message. | 281 // Stop the main resource loader and let it send the cancelled message. |
| 284 cancelMainResourceLoad(frameLoader->cancelledError(m_request)); | 282 cancelMainResourceLoad(ResourceError::createCancelledError(m_request.url
())); |
| 285 else if (!m_subresourceLoaders.isEmpty()) | 283 else if (!m_subresourceLoaders.isEmpty()) |
| 286 // The main resource loader already finished loading. Set the cancelled
error on the | 284 // The main resource loader already finished loading. Set the cancelled
error on the |
| 287 // document and let the subresourceLoaders send individual cancelled mes
sages below. | 285 // document and let the subresourceLoaders send individual cancelled mes
sages below. |
| 288 setMainDocumentError(frameLoader->cancelledError(m_request)); | 286 setMainDocumentError(ResourceError::createCancelledError(m_request.url()
)); |
| 289 else | 287 else |
| 290 // If there are no resource loaders, we need to manufacture a cancelled
message. | 288 // If there are no resource loaders, we need to manufacture a cancelled
message. |
| 291 // (A back/forward navigation has no resource loaders because its resour
ces are cached.) | 289 // (A back/forward navigation has no resource loaders because its resour
ces are cached.) |
| 292 mainReceivedError(frameLoader->cancelledError(m_request)); | 290 mainReceivedError(ResourceError::createCancelledError(m_request.url())); |
| 293 | 291 |
| 294 stopLoadingSubresources(); | 292 stopLoadingSubresources(); |
| 295 | 293 |
| 296 m_isStopping = false; | 294 m_isStopping = false; |
| 297 } | 295 } |
| 298 | 296 |
| 299 void DocumentLoader::commitIfReady() | 297 void DocumentLoader::commitIfReady() |
| 300 { | 298 { |
| 301 if (!m_committed) { | 299 if (!m_committed) { |
| 302 m_committed = true; | 300 m_committed = true; |
| (...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 419 | 417 |
| 420 void DocumentLoader::willSendRequest(ResourceRequest& newRequest, const Resource
Response& redirectResponse) | 418 void DocumentLoader::willSendRequest(ResourceRequest& newRequest, const Resource
Response& redirectResponse) |
| 421 { | 419 { |
| 422 // Note that there are no asserts here as there are for the other callbacks.
This is due to the | 420 // Note that there are no asserts here as there are for the other callbacks.
This is due to the |
| 423 // fact that this "callback" is sent when starting every load, and the state
of callback | 421 // fact that this "callback" is sent when starting every load, and the state
of callback |
| 424 // deferrals plays less of a part in this function in preventing the bad beh
avior deferring | 422 // deferrals plays less of a part in this function in preventing the bad beh
avior deferring |
| 425 // callbacks is meant to prevent. | 423 // callbacks is meant to prevent. |
| 426 ASSERT(!newRequest.isNull()); | 424 ASSERT(!newRequest.isNull()); |
| 427 | 425 |
| 428 if (!frameLoader()->checkIfFormActionAllowedByCSP(newRequest.url())) { | 426 if (!frameLoader()->checkIfFormActionAllowedByCSP(newRequest.url())) { |
| 429 cancelMainResourceLoad(frameLoader()->cancelledError(newRequest)); | 427 cancelMainResourceLoad(ResourceError::createCancelledError(newRequest.ur
l())); |
| 430 return; | 428 return; |
| 431 } | 429 } |
| 432 | 430 |
| 433 ASSERT(timing()->fetchStart()); | 431 ASSERT(timing()->fetchStart()); |
| 434 if (!redirectResponse.isNull()) { | 432 if (!redirectResponse.isNull()) { |
| 435 // If the redirecting url is not allowed to display content from the tar
get origin, | 433 // If the redirecting url is not allowed to display content from the tar
get origin, |
| 436 // then block the redirect. | 434 // then block the redirect. |
| 437 RefPtr<SecurityOrigin> redirectingOrigin = SecurityOrigin::create(redire
ctResponse.url()); | 435 RefPtr<SecurityOrigin> redirectingOrigin = SecurityOrigin::create(redire
ctResponse.url()); |
| 438 if (!redirectingOrigin->canDisplay(newRequest.url())) { | 436 if (!redirectingOrigin->canDisplay(newRequest.url())) { |
| 439 FrameLoader::reportLocalLoadFailed(m_frame, newRequest.url().string(
)); | 437 FrameLoader::reportLocalLoadFailed(m_frame, newRequest.url().string(
)); |
| 440 cancelMainResourceLoad(frameLoader()->cancelledError(newRequest)); | 438 cancelMainResourceLoad(ResourceError::createCancelledError(newReques
t.url())); |
| 441 return; | 439 return; |
| 442 } | 440 } |
| 443 timing()->addRedirect(redirectResponse.url(), newRequest.url()); | 441 timing()->addRedirect(redirectResponse.url(), newRequest.url()); |
| 444 } | 442 } |
| 445 | 443 |
| 446 // Update cookie policy base URL as URL changes, except for subframes, which
use the | 444 // Update cookie policy base URL as URL changes, except for subframes, which
use the |
| 447 // URL of the main frame which doesn't change when we redirect. | 445 // URL of the main frame which doesn't change when we redirect. |
| 448 if (frameLoader()->isLoadingMainFrame()) | 446 if (frameLoader()->isLoadingMainFrame()) |
| 449 newRequest.setFirstPartyForCookies(newRequest.url()); | 447 newRequest.setFirstPartyForCookies(newRequest.url()); |
| 450 | 448 |
| 451 // If we're fielding a redirect in response to a POST, force a load from ori
gin, since | 449 // If we're fielding a redirect in response to a POST, force a load from ori
gin, since |
| 452 // this is a common site technique to return to a page viewing some data tha
t the POST | 450 // this is a common site technique to return to a page viewing some data tha
t the POST |
| 453 // just modified. | 451 // just modified. |
| 454 // Also, POST requests always load from origin, but this does not affect sub
resources. | 452 // Also, POST requests always load from origin, but this does not affect sub
resources. |
| 455 if (newRequest.cachePolicy() == UseProtocolCachePolicy && isPostOrRedirectAf
terPost(newRequest, redirectResponse)) | 453 if (newRequest.cachePolicy() == UseProtocolCachePolicy && isPostOrRedirectAf
terPost(newRequest, redirectResponse)) |
| 456 newRequest.setCachePolicy(ReloadIgnoringCacheData); | 454 newRequest.setCachePolicy(ReloadIgnoringCacheData); |
| 457 | 455 |
| 458 Frame* top = m_frame->tree()->top(); | 456 Frame* top = m_frame->tree()->top(); |
| 459 if (top != m_frame) { | 457 if (top != m_frame) { |
| 460 if (!frameLoader()->mixedContentChecker()->canDisplayInsecureContent(top
->document()->securityOrigin(), newRequest.url())) { | 458 if (!frameLoader()->mixedContentChecker()->canDisplayInsecureContent(top
->document()->securityOrigin(), newRequest.url())) { |
| 461 cancelMainResourceLoad(frameLoader()->cancelledError(newRequest)); | 459 cancelMainResourceLoad(ResourceError::createCancelledError(newReques
t.url())); |
| 462 return; | 460 return; |
| 463 } | 461 } |
| 464 } | 462 } |
| 465 | 463 |
| 466 setRequest(newRequest); | 464 setRequest(newRequest); |
| 467 | 465 |
| 468 if (!redirectResponse.isNull()) { | 466 if (!redirectResponse.isNull()) { |
| 469 // We checked application cache for initial URL, now we need to check it
for redirected one. | 467 // We checked application cache for initial URL, now we need to check it
for redirected one. |
| 470 ASSERT(!m_substituteData.isValid()); | 468 ASSERT(!m_substituteData.isValid()); |
| 471 m_applicationCacheHost->maybeLoadMainResourceForRedirect(newRequest, m_s
ubstituteData); | 469 m_applicationCacheHost->maybeLoadMainResourceForRedirect(newRequest, m_s
ubstituteData); |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 532 ASSERT(m_mainResource); | 530 ASSERT(m_mainResource); |
| 533 unsigned long identifier = m_identifierForLoadWithoutResourceLoader ? m_
identifierForLoadWithoutResourceLoader : m_mainResource->identifier(); | 531 unsigned long identifier = m_identifierForLoadWithoutResourceLoader ? m_
identifierForLoadWithoutResourceLoader : m_mainResource->identifier(); |
| 534 ASSERT(identifier); | 532 ASSERT(identifier); |
| 535 if (frameLoader()->shouldInterruptLoadForXFrameOptions(content, response
.url(), identifier)) { | 533 if (frameLoader()->shouldInterruptLoadForXFrameOptions(content, response
.url(), identifier)) { |
| 536 InspectorInstrumentation::continueAfterXFrameOptionsDenied(m_frame,
this, identifier, response); | 534 InspectorInstrumentation::continueAfterXFrameOptionsDenied(m_frame,
this, identifier, response); |
| 537 String message = "Refused to display '" + response.url().elidedStrin
g() + "' in a frame because it set 'X-Frame-Options' to '" + content + "'."; | 535 String message = "Refused to display '" + response.url().elidedStrin
g() + "' in a frame because it set 'X-Frame-Options' to '" + content + "'."; |
| 538 frame()->document()->addConsoleMessage(SecurityMessageSource, ErrorM
essageLevel, message, identifier); | 536 frame()->document()->addConsoleMessage(SecurityMessageSource, ErrorM
essageLevel, message, identifier); |
| 539 frame()->document()->enforceSandboxFlags(SandboxOrigin); | 537 frame()->document()->enforceSandboxFlags(SandboxOrigin); |
| 540 if (HTMLFrameOwnerElement* ownerElement = frame()->ownerElement()) | 538 if (HTMLFrameOwnerElement* ownerElement = frame()->ownerElement()) |
| 541 ownerElement->dispatchEvent(Event::create(eventNames().loadEvent
, false, false)); | 539 ownerElement->dispatchEvent(Event::create(eventNames().loadEvent
, false, false)); |
| 542 cancelMainResourceLoad(frameLoader()->cancelledError(m_request)); | 540 cancelMainResourceLoad(ResourceError::createCancelledError(m_request
.url())); |
| 543 return; | 541 return; |
| 544 } | 542 } |
| 545 } | 543 } |
| 546 | 544 |
| 547 ASSERT(!mainResourceLoader() || !mainResourceLoader()->defersLoading()); | 545 ASSERT(!mainResourceLoader() || !mainResourceLoader()->defersLoading()); |
| 548 | 546 |
| 549 if (m_isLoadingMultipartContent) { | 547 if (m_isLoadingMultipartContent) { |
| 550 setupForReplace(); | 548 setupForReplace(); |
| 551 m_mainResource->clear(); | 549 m_mainResource->clear(); |
| 552 } else if (response.isMultipart()) { | 550 } else if (response.isMultipart()) { |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 585 | 583 |
| 586 KURL url = m_request.url(); | 584 KURL url = m_request.url(); |
| 587 const String& mimeType = m_response.mimeType(); | 585 const String& mimeType = m_response.mimeType(); |
| 588 | 586 |
| 589 switch (policy) { | 587 switch (policy) { |
| 590 case PolicyUse: { | 588 case PolicyUse: { |
| 591 // Prevent remote web archives from loading because they can claim to be
from any domain and thus avoid cross-domain security checks (4120255). | 589 // Prevent remote web archives from loading because they can claim to be
from any domain and thus avoid cross-domain security checks (4120255). |
| 592 bool isRemoteWebArchive = equalIgnoringCase("multipart/related", mimeTyp
e) | 590 bool isRemoteWebArchive = equalIgnoringCase("multipart/related", mimeTyp
e) |
| 593 && !m_substituteData.isValid() && !SchemeRegistry::shouldTreatURLSch
emeAsLocal(url.protocol()); | 591 && !m_substituteData.isValid() && !SchemeRegistry::shouldTreatURLSch
emeAsLocal(url.protocol()); |
| 594 if (!frameLoader()->client()->canShowMIMEType(mimeType) || isRemoteWebAr
chive) { | 592 if (!frameLoader()->client()->canShowMIMEType(mimeType) || isRemoteWebAr
chive) { |
| 595 frameLoader()->policyChecker()->cannotShowMIMEType(m_response); | 593 ASSERT_NOT_REACHED(); |
| 596 // Check reachedTerminalState since the load may have already been c
anceled inside of _handleUnimplementablePolicyWithErrorCode::. | |
| 597 stopLoadingForPolicyChange(); | 594 stopLoadingForPolicyChange(); |
| 598 return; | 595 return; |
| 599 } | 596 } |
| 600 break; | 597 break; |
| 601 } | 598 } |
| 602 | 599 |
| 603 case PolicyDownload: { | 600 case PolicyDownload: { |
| 604 // m_mainResource can be null, e.g. when loading a substitute resource f
rom application cache. | 601 ASSERT(m_mainResource); |
| 605 if (!m_mainResource) { | |
| 606 mainReceivedError(frameLoader()->client()->cannotShowURLError(m_requ
est)); | |
| 607 return; | |
| 608 } | |
| 609 InspectorInstrumentation::continueWithPolicyDownload(m_frame, this, main
ResourceLoader()->identifier(), m_response); | 602 InspectorInstrumentation::continueWithPolicyDownload(m_frame, this, main
ResourceLoader()->identifier(), m_response); |
| 610 | 603 |
| 611 // When starting the request, we didn't know that it would result in dow
nload and not navigation. Now we know that main document URL didn't change. | 604 // When starting the request, we didn't know that it would result in dow
nload and not navigation. Now we know that main document URL didn't change. |
| 612 // Download may use this knowledge for purposes unrelated to cookies, no
tably for setting file quarantine data. | 605 // Download may use this knowledge for purposes unrelated to cookies, no
tably for setting file quarantine data. |
| 613 frameLoader()->setOriginalURLForDownloadRequest(m_request); | 606 frameLoader()->setOriginalURLForDownloadRequest(m_request); |
| 614 return; | 607 return; |
| 615 } | 608 } |
| 616 case PolicyIgnore: | 609 case PolicyIgnore: |
| 617 InspectorInstrumentation::continueWithPolicyIgnore(m_frame, this, mainRe
sourceLoader()->identifier(), m_response); | 610 InspectorInstrumentation::continueWithPolicyIgnore(m_frame, this, mainRe
sourceLoader()->identifier(), m_response); |
| 618 stopLoadingForPolicyChange(); | 611 stopLoadingForPolicyChange(); |
| 619 return; | 612 return; |
| 620 | 613 |
| 621 default: | 614 default: |
| 622 ASSERT_NOT_REACHED(); | 615 ASSERT_NOT_REACHED(); |
| 623 } | 616 } |
| 624 | 617 |
| 625 if (m_response.isHTTP()) { | 618 if (m_response.isHTTP()) { |
| 626 int status = m_response.httpStatusCode(); | 619 int status = m_response.httpStatusCode(); |
| 627 if (status < 200 || status >= 300) { | 620 if (status < 200 || status >= 300) { |
| 628 bool hostedByObject = frameLoader()->isHostedByObjectElement(); | 621 bool hostedByObject = frameLoader()->isHostedByObjectElement(); |
| 629 | 622 |
| 630 frameLoader()->handleFallbackContent(); | 623 frameLoader()->handleFallbackContent(); |
| 631 // object elements are no longer rendered after we fallback, so don'
t | 624 // object elements are no longer rendered after we fallback, so don'
t |
| 632 // keep trying to process data from their load | 625 // keep trying to process data from their load |
| 633 | 626 |
| 634 if (hostedByObject) | 627 if (hostedByObject) |
| 635 cancelMainResourceLoad(frameLoader()->cancelledError(m_request))
; | 628 cancelMainResourceLoad(ResourceError::createCancelledError(m_req
uest.url())); |
| 636 } | 629 } |
| 637 } | 630 } |
| 638 | 631 |
| 639 if (!isStopping() && m_substituteData.isValid()) { | 632 if (!isStopping() && m_substituteData.isValid()) { |
| 640 if (m_substituteData.content()->size()) | 633 if (m_substituteData.content()->size()) |
| 641 dataReceived(0, m_substituteData.content()->data(), m_substituteData
.content()->size()); | 634 dataReceived(0, m_substituteData.content()->data(), m_substituteData
.content()->size()); |
| 642 if (isLoadingMainResource()) | 635 if (isLoadingMainResource()) |
| 643 finishedLoading(0); | 636 finishedLoading(0); |
| 644 } | 637 } |
| 645 } | 638 } |
| (...skipping 12 matching lines...) Expand all Loading... |
| 658 | 651 |
| 659 commitIfReady(); | 652 commitIfReady(); |
| 660 FrameLoader* frameLoader = DocumentLoader::frameLoader(); | 653 FrameLoader* frameLoader = DocumentLoader::frameLoader(); |
| 661 if (!frameLoader) | 654 if (!frameLoader) |
| 662 return; | 655 return; |
| 663 if (isArchiveMIMEType(response().mimeType())) | 656 if (isArchiveMIMEType(response().mimeType())) |
| 664 return; | 657 return; |
| 665 frameLoader->client()->committedLoad(this, data, length); | 658 frameLoader->client()->committedLoad(this, data, length); |
| 666 } | 659 } |
| 667 | 660 |
| 668 ResourceError DocumentLoader::interruptedForPolicyChangeError() const | |
| 669 { | |
| 670 return frameLoader()->client()->interruptedForPolicyChangeError(request()); | |
| 671 } | |
| 672 | |
| 673 void DocumentLoader::stopLoadingForPolicyChange() | 661 void DocumentLoader::stopLoadingForPolicyChange() |
| 674 { | 662 { |
| 675 ResourceError error = interruptedForPolicyChangeError(); | 663 ResourceError error = ResourceError::createPolicyChangeError(m_request.url()
); |
| 676 error.setIsCancellation(true); | 664 error.setIsCancellation(true); |
| 677 cancelMainResourceLoad(error); | 665 cancelMainResourceLoad(error); |
| 678 } | 666 } |
| 679 | 667 |
| 680 void DocumentLoader::commitData(const char* bytes, size_t length) | 668 void DocumentLoader::commitData(const char* bytes, size_t length) |
| 681 { | 669 { |
| 682 if (!m_gotFirstByte) { | 670 if (!m_gotFirstByte) { |
| 683 m_gotFirstByte = true; | 671 m_gotFirstByte = true; |
| 684 m_writer.begin(documentURL(), false); | 672 m_writer.begin(documentURL(), false); |
| 685 m_writer.setDocumentWasLoadedAsPartOfNavigation(); | 673 m_writer.setDocumentWasLoadedAsPartOfNavigation(); |
| (...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 919 if (m_frame->page()->defersLoading()) | 907 if (m_frame->page()->defersLoading()) |
| 920 return; | 908 return; |
| 921 | 909 |
| 922 SubstituteResourceMap copy; | 910 SubstituteResourceMap copy; |
| 923 copy.swap(m_pendingSubstituteResources); | 911 copy.swap(m_pendingSubstituteResources); |
| 924 | 912 |
| 925 SubstituteResourceMap::const_iterator end = copy.end(); | 913 SubstituteResourceMap::const_iterator end = copy.end(); |
| 926 for (SubstituteResourceMap::const_iterator it = copy.begin(); it != end; ++i
t) { | 914 for (SubstituteResourceMap::const_iterator it = copy.begin(); it != end; ++i
t) { |
| 927 RefPtr<ResourceLoader> loader = it->key; | 915 RefPtr<ResourceLoader> loader = it->key; |
| 928 SubstituteResource* resource = it->value.get(); | 916 SubstituteResource* resource = it->value.get(); |
| 917 ASSERT(resource); |
| 929 | 918 |
| 930 if (resource) { | 919 if (resource) { |
| 931 SharedBuffer* data = resource->data(); | 920 SharedBuffer* data = resource->data(); |
| 932 | 921 |
| 933 loader->didReceiveResponse(resource->response()); | 922 loader->didReceiveResponse(resource->response()); |
| 934 | 923 |
| 935 // Calling ResourceLoader::didReceiveResponse can end up cancelling
the load, | 924 // Calling ResourceLoader::didReceiveResponse can end up cancelling
the load, |
| 936 // so we need to check if the loader has reached its terminal state. | 925 // so we need to check if the loader has reached its terminal state. |
| 937 if (loader->reachedTerminalState()) | 926 if (loader->reachedTerminalState()) |
| 938 return; | 927 return; |
| 939 | 928 |
| 940 loader->didReceiveData(0, data->data(), data->size(), data->size()); | 929 loader->didReceiveData(0, data->data(), data->size(), data->size()); |
| 941 | 930 |
| 942 // Calling ResourceLoader::didReceiveData can end up cancelling the
load, | 931 // Calling ResourceLoader::didReceiveData can end up cancelling the
load, |
| 943 // so we need to check if the loader has reached its terminal state. | 932 // so we need to check if the loader has reached its terminal state. |
| 944 if (loader->reachedTerminalState()) | 933 if (loader->reachedTerminalState()) |
| 945 return; | 934 return; |
| 946 | 935 |
| 947 loader->didFinishLoading(0); | 936 loader->didFinishLoading(0); |
| 948 } else { | |
| 949 // A null resource means that we should fail the load. | |
| 950 // FIXME: Maybe we should use another error here - something like "n
ot in cache". | |
| 951 loader->didFail(loader->cannotShowURLError()); | |
| 952 } | 937 } |
| 953 } | 938 } |
| 954 } | 939 } |
| 955 | 940 |
| 956 #ifndef NDEBUG | 941 #ifndef NDEBUG |
| 957 bool DocumentLoader::isSubstituteLoadPending(ResourceLoader* loader) const | 942 bool DocumentLoader::isSubstituteLoadPending(ResourceLoader* loader) const |
| 958 { | 943 { |
| 959 return m_pendingSubstituteResources.contains(loader); | 944 return m_pendingSubstituteResources.contains(loader); |
| 960 } | 945 } |
| 961 #endif | 946 #endif |
| (...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1160 // If there was a fragment identifier on m_request, the cache will have stri
pped it. m_request should include | 1145 // If there was a fragment identifier on m_request, the cache will have stri
pped it. m_request should include |
| 1161 // the fragment identifier, so add that back in. | 1146 // the fragment identifier, so add that back in. |
| 1162 if (equalIgnoringFragmentIdentifier(m_request.url(), request.url())) | 1147 if (equalIgnoringFragmentIdentifier(m_request.url(), request.url())) |
| 1163 request.setURL(m_request.url()); | 1148 request.setURL(m_request.url()); |
| 1164 setRequest(request); | 1149 setRequest(request); |
| 1165 } | 1150 } |
| 1166 | 1151 |
| 1167 void DocumentLoader::cancelMainResourceLoad(const ResourceError& resourceError) | 1152 void DocumentLoader::cancelMainResourceLoad(const ResourceError& resourceError) |
| 1168 { | 1153 { |
| 1169 RefPtr<DocumentLoader> protect(this); | 1154 RefPtr<DocumentLoader> protect(this); |
| 1170 ResourceError error = resourceError.isNull() ? frameLoader()->cancelledError
(m_request) : resourceError; | 1155 ResourceError error = resourceError.isNull() ? ResourceError::createCancelle
dError(m_request.url()) : resourceError; |
| 1171 | 1156 |
| 1172 m_dataLoadTimer.stop(); | 1157 m_dataLoadTimer.stop(); |
| 1173 if (m_waitingForContentPolicy) { | 1158 if (m_waitingForContentPolicy) { |
| 1174 frameLoader()->policyChecker()->cancelCheck(); | 1159 frameLoader()->policyChecker()->cancelCheck(); |
| 1175 ASSERT(m_waitingForContentPolicy); | 1160 ASSERT(m_waitingForContentPolicy); |
| 1176 m_waitingForContentPolicy = false; | 1161 m_waitingForContentPolicy = false; |
| 1177 } | 1162 } |
| 1178 | 1163 |
| 1179 if (mainResourceLoader()) | 1164 if (mainResourceLoader()) |
| 1180 mainResourceLoader()->cancel(error); | 1165 mainResourceLoader()->cancel(error); |
| (...skipping 21 matching lines...) Expand all Loading... |
| 1202 commitLoad(resourceData->data(), resourceData->size()); | 1187 commitLoad(resourceData->data(), resourceData->size()); |
| 1203 } | 1188 } |
| 1204 | 1189 |
| 1205 void DocumentLoader::handledOnloadEvents() | 1190 void DocumentLoader::handledOnloadEvents() |
| 1206 { | 1191 { |
| 1207 m_wasOnloadHandled = true; | 1192 m_wasOnloadHandled = true; |
| 1208 applicationCacheHost()->stopDeferringEvents(); | 1193 applicationCacheHost()->stopDeferringEvents(); |
| 1209 } | 1194 } |
| 1210 | 1195 |
| 1211 } // namespace WebCore | 1196 } // namespace WebCore |
| OLD | NEW |