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 284 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
295 bool DocumentLoader::isRedirectAfterPost(const ResourceRequest& newRequest, cons
t ResourceResponse& redirectResponse) | 295 bool DocumentLoader::isRedirectAfterPost(const ResourceRequest& newRequest, cons
t ResourceResponse& redirectResponse) |
296 { | 296 { |
297 int status = redirectResponse.httpStatusCode(); | 297 int status = redirectResponse.httpStatusCode(); |
298 if (((status >= 301 && status <= 303) || status == 307) | 298 if (((status >= 301 && status <= 303) || status == 307) |
299 && m_originalRequest.httpMethod() == "POST") | 299 && m_originalRequest.httpMethod() == "POST") |
300 return true; | 300 return true; |
301 | 301 |
302 return false; | 302 return false; |
303 } | 303 } |
304 | 304 |
305 bool DocumentLoader::shouldContinueForNavigationPolicy(const ResourceRequest& re
quest, PolicyCheckLoadType policyCheckLoadType) | 305 bool DocumentLoader::shouldContinueForNavigationPolicy(const ResourceRequest& re
quest) |
306 { | 306 { |
307 // Don't ask if we are loading an empty URL. | 307 // Don't ask if we are loading an empty URL. |
308 if (request.url().isEmpty() || m_substituteData.isValid()) | 308 if (request.url().isEmpty() || m_substituteData.isValid()) |
309 return true; | 309 return true; |
310 | 310 |
311 // If we're loading content into a subframe, check against the parent's Cont
ent Security Policy | 311 // If we're loading content into a subframe, check against the parent's Cont
ent Security Policy |
312 // and kill the load if that check fails. | 312 // and kill the load if that check fails. |
313 if (m_frame->ownerElement() && !m_frame->ownerElement()->document().contentS
ecurityPolicy()->allowChildFrameFromSource(request.url())) | 313 if (m_frame->ownerElement() && !m_frame->ownerElement()->document().contentS
ecurityPolicy()->allowChildFrameFromSource(request.url())) |
314 return false; | 314 return false; |
315 | 315 |
316 NavigationPolicy policy = m_triggeringAction.policy(); | 316 NavigationPolicy policy = m_triggeringAction.policy(); |
317 if (policyCheckLoadType != PolicyCheckFragment) | 317 policy = frameLoader()->client()->decidePolicyForNavigation(request, this, p
olicy); |
318 policy = frameLoader()->client()->decidePolicyForNavigation(request, thi
s, policy); | |
319 if (policy == NavigationPolicyCurrentTab) | 318 if (policy == NavigationPolicyCurrentTab) |
320 return true; | 319 return true; |
321 if (policy == NavigationPolicyIgnore) | 320 if (policy == NavigationPolicyIgnore) |
322 return false; | 321 return false; |
323 if (!DOMWindow::allowPopUp(m_frame) && !UserGestureIndicator::processingUser
Gesture()) | 322 if (!DOMWindow::allowPopUp(m_frame) && !UserGestureIndicator::processingUser
Gesture()) |
324 return false; | 323 return false; |
325 frameLoader()->client()->loadURLExternally(request, policy); | 324 frameLoader()->client()->loadURLExternally(request, policy); |
326 return false; | 325 return false; |
327 } | 326 } |
328 | 327 |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
387 } | 386 } |
388 } | 387 } |
389 | 388 |
390 m_request = newRequest; | 389 m_request = newRequest; |
391 | 390 |
392 if (redirectResponse.isNull()) | 391 if (redirectResponse.isNull()) |
393 return; | 392 return; |
394 | 393 |
395 appendRedirect(newRequest.url()); | 394 appendRedirect(newRequest.url()); |
396 frameLoader()->client()->dispatchDidReceiveServerRedirectForProvisionalLoad(
); | 395 frameLoader()->client()->dispatchDidReceiveServerRedirectForProvisionalLoad(
); |
397 if (!shouldContinueForNavigationPolicy(newRequest, PolicyCheckStandard)) | 396 if (!shouldContinueForNavigationPolicy(newRequest)) |
398 cancelMainResourceLoad(ResourceError::cancelledError(m_request.url())); | 397 cancelMainResourceLoad(ResourceError::cancelledError(m_request.url())); |
399 } | 398 } |
400 | 399 |
401 static bool canShowMIMEType(const String& mimeType, Page* page) | 400 static bool canShowMIMEType(const String& mimeType, Page* page) |
402 { | 401 { |
403 if (blink::Platform::current()->mimeRegistry()->supportsMIMEType(mimeType) =
= blink::WebMimeRegistry::IsSupported) | 402 if (blink::Platform::current()->mimeRegistry()->supportsMIMEType(mimeType) =
= blink::WebMimeRegistry::IsSupported) |
404 return true; | 403 return true; |
405 PluginData* pluginData = page->pluginData(); | 404 PluginData* pluginData = page->pluginData(); |
406 return !mimeType.isEmpty() && pluginData && pluginData->supportsMimeType(mim
eType); | 405 return !mimeType.isEmpty() && pluginData && pluginData->supportsMimeType(mim
eType); |
407 } | 406 } |
(...skipping 456 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
864 void DocumentLoader::replaceDocument(const String& source, Document* ownerDocume
nt) | 863 void DocumentLoader::replaceDocument(const String& source, Document* ownerDocume
nt) |
865 { | 864 { |
866 m_frame->loader().stopAllLoaders(); | 865 m_frame->loader().stopAllLoaders(); |
867 m_writer = createWriterFor(m_frame, ownerDocument, m_frame->document()->url(
), mimeType(), m_writer ? m_writer->encoding() : emptyAtom, m_writer ? m_writer
->encodingWasChosenByUser() : false, true); | 866 m_writer = createWriterFor(m_frame, ownerDocument, m_frame->document()->url(
), mimeType(), m_writer ? m_writer->encoding() : emptyAtom, m_writer ? m_writer
->encodingWasChosenByUser() : false, true); |
868 if (!source.isNull()) | 867 if (!source.isNull()) |
869 m_writer->appendReplacingData(source); | 868 m_writer->appendReplacingData(source); |
870 endWriting(m_writer.get()); | 869 endWriting(m_writer.get()); |
871 } | 870 } |
872 | 871 |
873 } // namespace WebCore | 872 } // namespace WebCore |
OLD | NEW |