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 210 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
221 { | 221 { |
222 ASSERT(!mainResourceLoader() || !mainResourceLoader()->defersLoading() || In
spectorInstrumentation::isDebuggerPaused(m_frame)); | 222 ASSERT(!mainResourceLoader() || !mainResourceLoader()->defersLoading() || In
spectorInstrumentation::isDebuggerPaused(m_frame)); |
223 | 223 |
224 RefPtr<DocumentLoader> protect(this); | 224 RefPtr<DocumentLoader> protect(this); |
225 | 225 |
226 double responseEndTime = finishTime; | 226 double responseEndTime = finishTime; |
227 if (!responseEndTime) | 227 if (!responseEndTime) |
228 responseEndTime = m_timeOfLastDataReceived; | 228 responseEndTime = m_timeOfLastDataReceived; |
229 if (!responseEndTime) | 229 if (!responseEndTime) |
230 responseEndTime = monotonicallyIncreasingTime(); | 230 responseEndTime = monotonicallyIncreasingTime(); |
231 timing()->setResponseEnd(responseEndTime); | 231 timing().setResponseEnd(responseEndTime); |
232 | 232 |
233 commitIfReady(); | 233 commitIfReady(); |
234 if (!frameLoader()) | 234 if (!frameLoader()) |
235 return; | 235 return; |
236 | 236 |
237 if (!maybeCreateArchive()) { | 237 if (!maybeCreateArchive()) { |
238 // If this is an empty document, it will not have actually been created
yet. Commit dummy data so that | 238 // If this is an empty document, it will not have actually been created
yet. Commit dummy data so that |
239 // DocumentWriter::begin() gets called and creates the Document. | 239 // DocumentWriter::begin() gets called and creates the Document. |
240 if (!m_writer) | 240 if (!m_writer) |
241 commitData(0, 0); | 241 commitData(0, 0); |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
318 // Note that there are no asserts here as there are for the other callbacks.
This is due to the | 318 // Note that there are no asserts here as there are for the other callbacks.
This is due to the |
319 // fact that this "callback" is sent when starting every load, and the state
of callback | 319 // fact that this "callback" is sent when starting every load, and the state
of callback |
320 // deferrals plays less of a part in this function in preventing the bad beh
avior deferring | 320 // deferrals plays less of a part in this function in preventing the bad beh
avior deferring |
321 // callbacks is meant to prevent. | 321 // callbacks is meant to prevent. |
322 ASSERT(!newRequest.isNull()); | 322 ASSERT(!newRequest.isNull()); |
323 if (isFormSubmission(m_navigationType) && !m_frame->document()->contentSecur
ityPolicy()->allowFormAction(newRequest.url())) { | 323 if (isFormSubmission(m_navigationType) && !m_frame->document()->contentSecur
ityPolicy()->allowFormAction(newRequest.url())) { |
324 cancelMainResourceLoad(ResourceError::cancelledError(newRequest.url())); | 324 cancelMainResourceLoad(ResourceError::cancelledError(newRequest.url())); |
325 return; | 325 return; |
326 } | 326 } |
327 | 327 |
328 ASSERT(timing()->fetchStart()); | 328 ASSERT(timing().fetchStart()); |
329 if (!redirectResponse.isNull()) { | 329 if (!redirectResponse.isNull()) { |
330 // If the redirecting url is not allowed to display content from the tar
get origin, | 330 // If the redirecting url is not allowed to display content from the tar
get origin, |
331 // then block the redirect. | 331 // then block the redirect. |
332 RefPtr<SecurityOrigin> redirectingOrigin = SecurityOrigin::create(redire
ctResponse.url()); | 332 RefPtr<SecurityOrigin> redirectingOrigin = SecurityOrigin::create(redire
ctResponse.url()); |
333 if (!redirectingOrigin->canDisplay(newRequest.url())) { | 333 if (!redirectingOrigin->canDisplay(newRequest.url())) { |
334 FrameLoader::reportLocalLoadFailed(m_frame, newRequest.url().string(
)); | 334 FrameLoader::reportLocalLoadFailed(m_frame, newRequest.url().string(
)); |
335 cancelMainResourceLoad(ResourceError::cancelledError(newRequest.url(
))); | 335 cancelMainResourceLoad(ResourceError::cancelledError(newRequest.url(
))); |
336 return; | 336 return; |
337 } | 337 } |
338 timing()->addRedirect(redirectResponse.url(), newRequest.url()); | 338 timing().addRedirect(redirectResponse.url(), newRequest.url()); |
339 } | 339 } |
340 | 340 |
341 // If we're fielding a redirect in response to a POST, force a load from ori
gin, since | 341 // If we're fielding a redirect in response to a POST, force a load from ori
gin, since |
342 // this is a common site technique to return to a page viewing some data tha
t the POST | 342 // this is a common site technique to return to a page viewing some data tha
t the POST |
343 // just modified. | 343 // just modified. |
344 if (newRequest.cachePolicy() == UseProtocolCachePolicy && isRedirectAfterPos
t(newRequest, redirectResponse)) | 344 if (newRequest.cachePolicy() == UseProtocolCachePolicy && isRedirectAfterPos
t(newRequest, redirectResponse)) |
345 newRequest.setCachePolicy(ReloadBypassingCache); | 345 newRequest.setCachePolicy(ReloadBypassingCache); |
346 | 346 |
347 m_request = newRequest; | 347 m_request = newRequest; |
348 | 348 |
(...skipping 342 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
691 m_request.setURL(blankURL()); | 691 m_request.setURL(blankURL()); |
692 m_response = ResourceResponse(m_request.url(), "text/html", 0, nullAtom, Str
ing()); | 692 m_response = ResourceResponse(m_request.url(), "text/html", 0, nullAtom, Str
ing()); |
693 finishedLoading(monotonicallyIncreasingTime()); | 693 finishedLoading(monotonicallyIncreasingTime()); |
694 return true; | 694 return true; |
695 } | 695 } |
696 | 696 |
697 void DocumentLoader::startLoadingMainResource() | 697 void DocumentLoader::startLoadingMainResource() |
698 { | 698 { |
699 RefPtr<DocumentLoader> protect(this); | 699 RefPtr<DocumentLoader> protect(this); |
700 m_mainDocumentError = ResourceError(); | 700 m_mainDocumentError = ResourceError(); |
701 timing()->markNavigationStart(); | 701 timing().markNavigationStart(); |
702 ASSERT(!m_mainResource); | 702 ASSERT(!m_mainResource); |
703 ASSERT(!m_loadingMainResource); | 703 ASSERT(!m_loadingMainResource); |
704 m_loadingMainResource = true; | 704 m_loadingMainResource = true; |
705 | 705 |
706 if (maybeLoadEmpty()) | 706 if (maybeLoadEmpty()) |
707 return; | 707 return; |
708 | 708 |
709 ASSERT(timing()->navigationStart()); | 709 ASSERT(timing().navigationStart()); |
710 ASSERT(!timing()->fetchStart()); | 710 ASSERT(!timing().fetchStart()); |
711 timing()->markFetchStart(); | 711 timing().markFetchStart(); |
712 willSendRequest(m_request, ResourceResponse()); | 712 willSendRequest(m_request, ResourceResponse()); |
713 | 713 |
714 // willSendRequest() may lead to our LocalFrame being detached or cancelling
the load via nulling the ResourceRequest. | 714 // willSendRequest() may lead to our LocalFrame being detached or cancelling
the load via nulling the ResourceRequest. |
715 if (!m_frame || m_request.isNull()) | 715 if (!m_frame || m_request.isNull()) |
716 return; | 716 return; |
717 | 717 |
718 m_applicationCacheHost->willStartLoadingMainResource(m_request); | 718 m_applicationCacheHost->willStartLoadingMainResource(m_request); |
719 prepareSubframeArchiveLoadIfNeeded(); | 719 prepareSubframeArchiveLoadIfNeeded(); |
720 | 720 |
721 ResourceRequest request(m_request); | 721 ResourceRequest request(m_request); |
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
812 // This is only called by FrameLoader::replaceDocumentWhileExecutingJavaScriptUR
L() | 812 // This is only called by FrameLoader::replaceDocumentWhileExecutingJavaScriptUR
L() |
813 void DocumentLoader::replaceDocumentWhileExecutingJavaScriptURL(const DocumentIn
it& init, const String& source, Document* ownerDocument) | 813 void DocumentLoader::replaceDocumentWhileExecutingJavaScriptURL(const DocumentIn
it& init, const String& source, Document* ownerDocument) |
814 { | 814 { |
815 m_writer = createWriterFor(ownerDocument, init, mimeType(), m_writer ? m_wri
ter->encoding() : emptyAtom, true, ForceSynchronousParsing); | 815 m_writer = createWriterFor(ownerDocument, init, mimeType(), m_writer ? m_wri
ter->encoding() : emptyAtom, true, ForceSynchronousParsing); |
816 if (!source.isNull()) | 816 if (!source.isNull()) |
817 m_writer->appendReplacingData(source); | 817 m_writer->appendReplacingData(source); |
818 endWriting(m_writer.get()); | 818 endWriting(m_writer.get()); |
819 } | 819 } |
820 | 820 |
821 } // namespace blink | 821 } // namespace blink |
OLD | NEW |