OLD | NEW |
1 /* | 1 /* |
2 Copyright (C) 1998 Lars Knoll (knoll@mpi-hd.mpg.de) | 2 Copyright (C) 1998 Lars Knoll (knoll@mpi-hd.mpg.de) |
3 Copyright (C) 2001 Dirk Mueller (mueller@kde.org) | 3 Copyright (C) 2001 Dirk Mueller (mueller@kde.org) |
4 Copyright (C) 2002 Waldo Bastian (bastian@kde.org) | 4 Copyright (C) 2002 Waldo Bastian (bastian@kde.org) |
5 Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All
rights reserved. | 5 Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All
rights reserved. |
6 Copyright (C) 2009 Torch Mobile Inc. http://www.torchmobile.com/ | 6 Copyright (C) 2009 Torch Mobile Inc. http://www.torchmobile.com/ |
7 | 7 |
8 This library is free software; you can redistribute it and/or | 8 This library is free software; you can redistribute it and/or |
9 modify it under the terms of the GNU Library General Public | 9 modify it under the terms of the GNU Library General Public |
10 License as published by the Free Software Foundation; either | 10 License as published by the Free Software Foundation; either |
(...skipping 421 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
432 break; | 432 break; |
433 | 433 |
434 case Resource::MainResource: | 434 case Resource::MainResource: |
435 case Resource::LinkPrefetch: | 435 case Resource::LinkPrefetch: |
436 case Resource::LinkSubresource: | 436 case Resource::LinkSubresource: |
437 // These cannot affect the current document. | 437 // These cannot affect the current document. |
438 treatment = TreatAsAlwaysAllowedContent; | 438 treatment = TreatAsAlwaysAllowedContent; |
439 break; | 439 break; |
440 } | 440 } |
441 } | 441 } |
| 442 // FIXME: We need a way to access the top-level frame's mixedContentChecker
when that frame |
| 443 // is in a different process from the current frame. Until that is done, we
fail loading |
| 444 // mixed content in remote frames. |
| 445 if (frame() && !frame()->tree().top()->isLocalFrame()) |
| 446 return false; |
442 if (treatment == TreatAsActiveContent) { | 447 if (treatment == TreatAsActiveContent) { |
443 if (LocalFrame* f = frame()) { | 448 if (LocalFrame* f = frame()) { |
444 if (!f->loader().mixedContentChecker()->canRunInsecureContent(m_docu
ment->securityOrigin(), url)) | 449 if (!f->loader().mixedContentChecker()->canRunInsecureContent(m_docu
ment->securityOrigin(), url)) |
445 return false; | 450 return false; |
446 LocalFrame* top = f->tree().top(); | 451 Frame* top = f->tree().top(); |
447 if (top != f && !top->loader().mixedContentChecker()->canRunInsecure
Content(top->document()->securityOrigin(), url)) | 452 if (top != f && !toLocalFrame(top)->loader().mixedContentChecker()->
canRunInsecureContent(toLocalFrame(top)->document()->securityOrigin(), url)) |
448 return false; | 453 return false; |
449 } | 454 } |
450 } else if (treatment == TreatAsPassiveContent) { | 455 } else if (treatment == TreatAsPassiveContent) { |
451 if (LocalFrame* f = frame()) { | 456 if (LocalFrame* f = frame()) { |
452 LocalFrame* top = f->tree().top(); | 457 Frame* top = f->tree().top(); |
453 if (!top->loader().mixedContentChecker()->canDisplayInsecureContent(
top->document()->securityOrigin(), url)) | 458 if (!toLocalFrame(top)->loader().mixedContentChecker()->canDisplayIn
secureContent(toLocalFrame(top)->document()->securityOrigin(), url)) |
454 return false; | 459 return false; |
455 if (type == Resource::Font && MixedContentChecker::isMixedContent(to
p->document()->securityOrigin(), url)) | 460 if (type == Resource::Font && MixedContentChecker::isMixedContent(to
LocalFrame(top)->document()->securityOrigin(), url)) |
456 UseCounter::count(top->document(), UseCounter::MixedContentFont)
; | 461 UseCounter::count(toLocalFrame(top)->document(), UseCounter::Mix
edContentFont); |
457 } | 462 } |
458 } else { | 463 } else { |
459 ASSERT(treatment == TreatAsAlwaysAllowedContent); | 464 ASSERT(treatment == TreatAsAlwaysAllowedContent); |
460 } | 465 } |
461 return true; | 466 return true; |
462 } | 467 } |
463 | 468 |
464 bool ResourceFetcher::canRequest(Resource::Type type, const KURL& url, const Res
ourceLoaderOptions& options, bool forPreload, FetchRequest::OriginRestriction or
iginRestriction) const | 469 bool ResourceFetcher::canRequest(Resource::Type type, const KURL& url, const Res
ourceLoaderOptions& options, bool forPreload, FetchRequest::OriginRestriction or
iginRestriction) const |
465 { | 470 { |
466 SecurityOrigin* securityOrigin = options.securityOrigin.get(); | 471 SecurityOrigin* securityOrigin = options.securityOrigin.get(); |
(...skipping 297 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
764 { | 769 { |
765 if (type == Resource::MainResource) { | 770 if (type == Resource::MainResource) { |
766 FrameLoadType frameLoadType = frame()->loader().loadType(); | 771 FrameLoadType frameLoadType = frame()->loader().loadType(); |
767 bool isReload = frameLoadType == FrameLoadTypeReload || frameLoadType ==
FrameLoadTypeReloadFromOrigin; | 772 bool isReload = frameLoadType == FrameLoadTypeReload || frameLoadType ==
FrameLoadTypeReloadFromOrigin; |
768 if (request.httpMethod() == "POST" && frameLoadType == FrameLoadTypeBack
Forward) | 773 if (request.httpMethod() == "POST" && frameLoadType == FrameLoadTypeBack
Forward) |
769 return ReturnCacheDataDontLoad; | 774 return ReturnCacheDataDontLoad; |
770 if (!m_documentLoader->overrideEncoding().isEmpty() || frameLoadType ==
FrameLoadTypeBackForward) | 775 if (!m_documentLoader->overrideEncoding().isEmpty() || frameLoadType ==
FrameLoadTypeBackForward) |
771 return ReturnCacheDataElseLoad; | 776 return ReturnCacheDataElseLoad; |
772 if (isReload || frameLoadType == FrameLoadTypeSame || request.isConditio
nal() || request.httpMethod() == "POST") | 777 if (isReload || frameLoadType == FrameLoadTypeSame || request.isConditio
nal() || request.httpMethod() == "POST") |
773 return ReloadIgnoringCacheData; | 778 return ReloadIgnoringCacheData; |
774 if (LocalFrame* parent = frame()->tree().parent()) | 779 Frame* parent = frame()->tree().parent(); |
775 return parent->document()->fetcher()->resourceRequestCachePolicy(req
uest, type); | 780 if (parent && parent->isLocalFrame()) |
| 781 return toLocalFrame(parent)->document()->fetcher()->resourceRequestC
achePolicy(request, type); |
776 return UseProtocolCachePolicy; | 782 return UseProtocolCachePolicy; |
777 } | 783 } |
778 | 784 |
779 if (request.isConditional()) | 785 if (request.isConditional()) |
780 return ReloadIgnoringCacheData; | 786 return ReloadIgnoringCacheData; |
781 | 787 |
782 if (m_documentLoader && m_document && !m_document->loadEventFinished()) { | 788 if (m_documentLoader && m_document && !m_document->loadEventFinished()) { |
783 // For POST requests, we mutate the main resource's cache policy to avoi
d form resubmission. | 789 // For POST requests, we mutate the main resource's cache policy to avoi
d form resubmission. |
784 // This policy should not be inherited by subresources. | 790 // This policy should not be inherited by subresources. |
785 ResourceRequestCachePolicy mainResourceCachePolicy = m_documentLoader->r
equest().cachePolicy(); | 791 ResourceRequestCachePolicy mainResourceCachePolicy = m_documentLoader->r
equest().cachePolicy(); |
(...skipping 671 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1457 } | 1463 } |
1458 } | 1464 } |
1459 | 1465 |
1460 void ResourceFetcher::trace(Visitor* visitor) | 1466 void ResourceFetcher::trace(Visitor* visitor) |
1461 { | 1467 { |
1462 visitor->trace(m_document); | 1468 visitor->trace(m_document); |
1463 ResourceLoaderHost::trace(visitor); | 1469 ResourceLoaderHost::trace(visitor); |
1464 } | 1470 } |
1465 | 1471 |
1466 } | 1472 } |
OLD | NEW |