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 | 221 |
222 // CSP layout tests verify that preloads are subject to access checks by | 222 // CSP layout tests verify that preloads are subject to access checks by |
223 // seeing if they are in the `preload started` list. Therefore do not add | 223 // seeing if they are in the `preload started` list. Therefore do not add |
224 // them to the list if the load is immediately denied. | 224 // them to the list if the load is immediately denied. |
225 if (resource && !resource->resourceError().isAccessCheck()) | 225 if (resource && !resource->resourceError().isAccessCheck()) |
226 fetcher()->preloadStarted(resource); | 226 fetcher()->preloadStarted(resource); |
227 return resource; | 227 return resource; |
228 } | 228 } |
229 | 229 |
230 void DocumentLoader::didRedirect(const KURL& oldURL, const KURL& newURL) { | |
231 timing().addRedirect(oldURL, newURL); | |
232 | |
233 // If a redirection happens during a back/forward navigation, don't restore | |
234 // any state from the old HistoryItem. There is a provisional history item for | |
235 // back/forward navigation only. In the other case, clearing it is a no-op. | |
236 frameLoader().clearProvisionalHistoryItem(); | |
237 } | |
238 | |
239 void DocumentLoader::dispatchLinkHeaderPreloads( | 230 void DocumentLoader::dispatchLinkHeaderPreloads( |
240 ViewportDescriptionWrapper* viewport, | 231 ViewportDescriptionWrapper* viewport, |
241 LinkLoader::MediaPreloadPolicy mediaPolicy) { | 232 LinkLoader::MediaPreloadPolicy mediaPolicy) { |
242 LinkLoader::loadLinksFromHeader( | 233 LinkLoader::loadLinksFromHeader( |
243 response().httpHeaderField(HTTPNames::Link), response().url(), | 234 response().httpHeaderField(HTTPNames::Link), response().url(), |
244 m_frame->document(), NetworkHintsInterfaceImpl(), | 235 m_frame->document(), NetworkHintsInterfaceImpl(), |
245 LinkLoader::OnlyLoadResources, mediaPolicy, viewport); | 236 LinkLoader::OnlyLoadResources, mediaPolicy, viewport); |
246 } | 237 } |
247 | 238 |
248 void DocumentLoader::didChangePerformanceTiming() { | 239 void DocumentLoader::didChangePerformanceTiming() { |
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
375 if (!frameLoader().shouldContinueForNavigationPolicy( | 366 if (!frameLoader().shouldContinueForNavigationPolicy( |
376 m_request, SubstituteData(), this, CheckContentSecurityPolicy, | 367 m_request, SubstituteData(), this, CheckContentSecurityPolicy, |
377 m_navigationType, NavigationPolicyCurrentTab, m_loadType, | 368 m_navigationType, NavigationPolicyCurrentTab, m_loadType, |
378 isClientRedirect(), nullptr)) { | 369 isClientRedirect(), nullptr)) { |
379 m_fetcher->stopFetching(); | 370 m_fetcher->stopFetching(); |
380 return false; | 371 return false; |
381 } | 372 } |
382 | 373 |
383 DCHECK(timing().fetchStart()); | 374 DCHECK(timing().fetchStart()); |
384 appendRedirect(requestURL); | 375 appendRedirect(requestURL); |
385 didRedirect(redirectResponse.url(), requestURL); | 376 timing().addRedirect(redirectResponse.url(), requestURL); |
| 377 |
| 378 // If a redirection happens during a back/forward navigation, don't restore |
| 379 // any state from the old HistoryItem. There is a provisional history item for |
| 380 // back/forward navigation only. In the other case, clearing it is a no-op. |
| 381 frameLoader().clearProvisionalHistoryItem(); |
| 382 |
386 frameLoaderClient().dispatchDidReceiveServerRedirectForProvisionalLoad(); | 383 frameLoaderClient().dispatchDidReceiveServerRedirectForProvisionalLoad(); |
387 | 384 |
388 return true; | 385 return true; |
389 } | 386 } |
390 | 387 |
391 static bool canShowMIMEType(const String& mimeType, LocalFrame* frame) { | 388 static bool canShowMIMEType(const String& mimeType, LocalFrame* frame) { |
392 if (MIMETypeRegistry::isSupportedMIMEType(mimeType)) | 389 if (MIMETypeRegistry::isSupportedMIMEType(mimeType)) |
393 return true; | 390 return true; |
394 PluginData* pluginData = frame->pluginData(); | 391 PluginData* pluginData = frame->pluginData(); |
395 return !mimeType.isEmpty() && pluginData && | 392 return !mimeType.isEmpty() && pluginData && |
(...skipping 417 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
813 m_writer ? m_writer->encoding() : emptyAtom, true, | 810 m_writer ? m_writer->encoding() : emptyAtom, true, |
814 ForceSynchronousParsing); | 811 ForceSynchronousParsing); |
815 if (!source.isNull()) | 812 if (!source.isNull()) |
816 m_writer->appendReplacingData(source); | 813 m_writer->appendReplacingData(source); |
817 endWriting(); | 814 endWriting(); |
818 } | 815 } |
819 | 816 |
820 DEFINE_WEAK_IDENTIFIER_MAP(DocumentLoader); | 817 DEFINE_WEAK_IDENTIFIER_MAP(DocumentLoader); |
821 | 818 |
822 } // namespace blink | 819 } // namespace blink |
OLD | NEW |