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 209 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
220 { | 220 { |
221 ASSERT(!mainResourceLoader() || !mainResourceLoader()->defersLoading() || In
spectorInstrumentation::isDebuggerPaused(m_frame)); | 221 ASSERT(!mainResourceLoader() || !mainResourceLoader()->defersLoading() || In
spectorInstrumentation::isDebuggerPaused(m_frame)); |
222 | 222 |
223 RefPtr<DocumentLoader> protect(this); | 223 RefPtr<DocumentLoader> protect(this); |
224 | 224 |
225 double responseEndTime = finishTime; | 225 double responseEndTime = finishTime; |
226 if (!responseEndTime) | 226 if (!responseEndTime) |
227 responseEndTime = m_timeOfLastDataReceived; | 227 responseEndTime = m_timeOfLastDataReceived; |
228 if (!responseEndTime) | 228 if (!responseEndTime) |
229 responseEndTime = monotonicallyIncreasingTime(); | 229 responseEndTime = monotonicallyIncreasingTime(); |
230 timing()->setResponseEnd(responseEndTime); | 230 timing().setResponseEnd(responseEndTime); |
231 | 231 |
232 commitIfReady(); | 232 commitIfReady(); |
233 if (!frameLoader()) | 233 if (!frameLoader()) |
234 return; | 234 return; |
235 | 235 |
236 if (!maybeCreateArchive()) { | 236 if (!maybeCreateArchive()) { |
237 // If this is an empty document, it will not have actually been created
yet. Commit dummy data so that | 237 // If this is an empty document, it will not have actually been created
yet. Commit dummy data so that |
238 // DocumentWriter::begin() gets called and creates the Document. | 238 // DocumentWriter::begin() gets called and creates the Document. |
239 if (!m_writer) | 239 if (!m_writer) |
240 commitData(0, 0); | 240 commitData(0, 0); |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
317 // Note that there are no asserts here as there are for the other callbacks.
This is due to the | 317 // Note that there are no asserts here as there are for the other callbacks.
This is due to the |
318 // fact that this "callback" is sent when starting every load, and the state
of callback | 318 // fact that this "callback" is sent when starting every load, and the state
of callback |
319 // deferrals plays less of a part in this function in preventing the bad beh
avior deferring | 319 // deferrals plays less of a part in this function in preventing the bad beh
avior deferring |
320 // callbacks is meant to prevent. | 320 // callbacks is meant to prevent. |
321 ASSERT(!newRequest.isNull()); | 321 ASSERT(!newRequest.isNull()); |
322 if (isFormSubmission(m_navigationType) && !m_frame->document()->contentSecur
ityPolicy()->allowFormAction(newRequest.url())) { | 322 if (isFormSubmission(m_navigationType) && !m_frame->document()->contentSecur
ityPolicy()->allowFormAction(newRequest.url())) { |
323 cancelMainResourceLoad(ResourceError::cancelledError(newRequest.url())); | 323 cancelMainResourceLoad(ResourceError::cancelledError(newRequest.url())); |
324 return; | 324 return; |
325 } | 325 } |
326 | 326 |
327 ASSERT(timing()->fetchStart()); | 327 ASSERT(timing().fetchStart()); |
328 if (!redirectResponse.isNull()) { | 328 if (!redirectResponse.isNull()) { |
329 // If the redirecting url is not allowed to display content from the tar
get origin, | 329 // If the redirecting url is not allowed to display content from the tar
get origin, |
330 // then block the redirect. | 330 // then block the redirect. |
331 RefPtr<SecurityOrigin> redirectingOrigin = SecurityOrigin::create(redire
ctResponse.url()); | 331 RefPtr<SecurityOrigin> redirectingOrigin = SecurityOrigin::create(redire
ctResponse.url()); |
332 if (!redirectingOrigin->canDisplay(newRequest.url())) { | 332 if (!redirectingOrigin->canDisplay(newRequest.url())) { |
333 FrameLoader::reportLocalLoadFailed(m_frame, newRequest.url().string(
)); | 333 FrameLoader::reportLocalLoadFailed(m_frame, newRequest.url().string(
)); |
334 cancelMainResourceLoad(ResourceError::cancelledError(newRequest.url(
))); | 334 cancelMainResourceLoad(ResourceError::cancelledError(newRequest.url(
))); |
335 return; | 335 return; |
336 } | 336 } |
337 timing()->addRedirect(redirectResponse.url(), newRequest.url()); | 337 timing().addRedirect(redirectResponse.url(), newRequest.url()); |
338 } | 338 } |
339 | 339 |
340 // If we're fielding a redirect in response to a POST, force a load from ori
gin, since | 340 // If we're fielding a redirect in response to a POST, force a load from ori
gin, since |
341 // this is a common site technique to return to a page viewing some data tha
t the POST | 341 // this is a common site technique to return to a page viewing some data tha
t the POST |
342 // just modified. | 342 // just modified. |
343 if (newRequest.cachePolicy() == UseProtocolCachePolicy && isRedirectAfterPos
t(newRequest, redirectResponse)) | 343 if (newRequest.cachePolicy() == UseProtocolCachePolicy && isRedirectAfterPos
t(newRequest, redirectResponse)) |
344 newRequest.setCachePolicy(ReloadBypassingCache); | 344 newRequest.setCachePolicy(ReloadBypassingCache); |
345 | 345 |
346 m_request = newRequest; | 346 m_request = newRequest; |
347 | 347 |
(...skipping 313 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
661 m_request.setURL(blankURL()); | 661 m_request.setURL(blankURL()); |
662 m_response = ResourceResponse(m_request.url(), "text/html", 0, nullAtom, Str
ing()); | 662 m_response = ResourceResponse(m_request.url(), "text/html", 0, nullAtom, Str
ing()); |
663 finishedLoading(monotonicallyIncreasingTime()); | 663 finishedLoading(monotonicallyIncreasingTime()); |
664 return true; | 664 return true; |
665 } | 665 } |
666 | 666 |
667 void DocumentLoader::startLoadingMainResource() | 667 void DocumentLoader::startLoadingMainResource() |
668 { | 668 { |
669 RefPtr<DocumentLoader> protect(this); | 669 RefPtr<DocumentLoader> protect(this); |
670 m_mainDocumentError = ResourceError(); | 670 m_mainDocumentError = ResourceError(); |
671 timing()->markNavigationStart(); | 671 timing().markNavigationStart(); |
672 ASSERT(!m_mainResource); | 672 ASSERT(!m_mainResource); |
673 ASSERT(!m_loadingMainResource); | 673 ASSERT(!m_loadingMainResource); |
674 m_loadingMainResource = true; | 674 m_loadingMainResource = true; |
675 | 675 |
676 if (maybeLoadEmpty()) | 676 if (maybeLoadEmpty()) |
677 return; | 677 return; |
678 | 678 |
679 ASSERT(timing()->navigationStart()); | 679 ASSERT(timing().navigationStart()); |
680 ASSERT(!timing()->fetchStart()); | 680 ASSERT(!timing().fetchStart()); |
681 timing()->markFetchStart(); | 681 timing().markFetchStart(); |
682 willSendRequest(m_request, ResourceResponse()); | 682 willSendRequest(m_request, ResourceResponse()); |
683 | 683 |
684 // willSendRequest() may lead to our LocalFrame being detached or cancelling
the load via nulling the ResourceRequest. | 684 // willSendRequest() may lead to our LocalFrame being detached or cancelling
the load via nulling the ResourceRequest. |
685 if (!m_frame || m_request.isNull()) | 685 if (!m_frame || m_request.isNull()) |
686 return; | 686 return; |
687 | 687 |
688 m_applicationCacheHost->willStartLoadingMainResource(m_request); | 688 m_applicationCacheHost->willStartLoadingMainResource(m_request); |
689 prepareSubframeArchiveLoadIfNeeded(); | 689 prepareSubframeArchiveLoadIfNeeded(); |
690 | 690 |
691 ResourceRequest request(m_request); | 691 ResourceRequest request(m_request); |
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
782 // This is only called by FrameLoader::replaceDocumentWhileExecutingJavaScriptUR
L() | 782 // This is only called by FrameLoader::replaceDocumentWhileExecutingJavaScriptUR
L() |
783 void DocumentLoader::replaceDocumentWhileExecutingJavaScriptURL(const DocumentIn
it& init, const String& source, Document* ownerDocument) | 783 void DocumentLoader::replaceDocumentWhileExecutingJavaScriptURL(const DocumentIn
it& init, const String& source, Document* ownerDocument) |
784 { | 784 { |
785 m_writer = createWriterFor(ownerDocument, init, mimeType(), m_writer ? m_wri
ter->encoding() : emptyAtom, true, ForceSynchronousParsing); | 785 m_writer = createWriterFor(ownerDocument, init, mimeType(), m_writer ? m_wri
ter->encoding() : emptyAtom, true, ForceSynchronousParsing); |
786 if (!source.isNull()) | 786 if (!source.isNull()) |
787 m_writer->appendReplacingData(source); | 787 m_writer->appendReplacingData(source); |
788 endWriting(m_writer.get()); | 788 endWriting(m_writer.get()); |
789 } | 789 } |
790 | 790 |
791 } // namespace blink | 791 } // namespace blink |
OLD | NEW |