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 419 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
430 break; | 430 break; |
431 | 431 |
432 case Resource::MainResource: | 432 case Resource::MainResource: |
433 case Resource::LinkPrefetch: | 433 case Resource::LinkPrefetch: |
434 case Resource::LinkSubresource: | 434 case Resource::LinkSubresource: |
435 // These cannot affect the current document. | 435 // These cannot affect the current document. |
436 treatment = TreatAsAlwaysAllowedContent; | 436 treatment = TreatAsAlwaysAllowedContent; |
437 break; | 437 break; |
438 } | 438 } |
439 } | 439 } |
440 // FIXME: We need a way to access the top-level frame's mixedContentChecker
when that frame | |
441 // is in a different process from the current frame. Until that is done, we
always allow | |
442 // loads in remote frames. | |
443 if (frame() && !frame()->tree().top()->isLocalFrame()) | |
444 return true; | |
445 if (treatment == TreatAsActiveContent) { | 440 if (treatment == TreatAsActiveContent) { |
446 if (LocalFrame* f = frame()) { | 441 if (LocalFrame* f = frame()) { |
447 if (!f->loader().mixedContentChecker()->canRunInsecureContent(m_docu
ment->securityOrigin(), url)) | 442 if (!f->loader().mixedContentChecker()->canRunInsecureContent(m_docu
ment->securityOrigin(), url)) |
448 return false; | 443 return false; |
449 Frame* top = f->tree().top(); | |
450 if (top != f && !toLocalFrame(top)->loader().mixedContentChecker()->
canRunInsecureContent(toLocalFrame(top)->document()->securityOrigin(), url)) | |
451 return false; | |
452 } | 444 } |
453 } else if (treatment == TreatAsPassiveContent) { | 445 } else if (treatment == TreatAsPassiveContent) { |
454 if (LocalFrame* f = frame()) { | 446 if (LocalFrame* f = frame()) { |
455 Frame* top = f->tree().top(); | 447 if (!f->loader().mixedContentChecker()->canDisplayInsecureContent(m_
document->securityOrigin(), url)) |
456 if (!toLocalFrame(top)->loader().mixedContentChecker()->canDisplayIn
secureContent(toLocalFrame(top)->document()->securityOrigin(), url)) | |
457 return false; | 448 return false; |
458 if (MixedContentChecker::isMixedContent(toLocalFrame(top)->document(
)->securityOrigin(), url)) { | 449 if (MixedContentChecker::isMixedContent(f->document()->securityOrigi
n(), url) || MixedContentChecker::isMixedContent(toLocalFrame(frame()->tree().to
p())->document()->securityOrigin(), url)) { |
459 switch (type) { | 450 switch (type) { |
460 case Resource::TextTrack: | |
461 UseCounter::count(toLocalFrame(top)->document(), UseCounter:
:MixedContentTextTrack); | |
462 break; | |
463 | |
464 case Resource::Raw: | 451 case Resource::Raw: |
465 UseCounter::count(toLocalFrame(top)->document(), UseCounter:
:MixedContentRaw); | 452 UseCounter::count(f->document(), UseCounter::MixedContentRaw
); |
466 break; | 453 break; |
467 | 454 |
468 case Resource::Image: | 455 case Resource::Image: |
469 UseCounter::count(toLocalFrame(top)->document(), UseCounter:
:MixedContentImage); | 456 UseCounter::count(f->document(), UseCounter::MixedContentIma
ge); |
470 break; | 457 break; |
471 | 458 |
472 case Resource::Media: | 459 case Resource::Media: |
473 UseCounter::count(toLocalFrame(top)->document(), UseCounter:
:MixedContentMedia); | 460 UseCounter::count(f->document(), UseCounter::MixedContentMed
ia); |
474 break; | 461 break; |
475 | 462 |
476 default: | 463 default: |
477 ASSERT_NOT_REACHED(); | 464 ASSERT_NOT_REACHED(); |
478 } | 465 } |
479 } | 466 } |
480 } | 467 } |
481 } else { | 468 } else { |
482 ASSERT(treatment == TreatAsAlwaysAllowedContent); | 469 ASSERT(treatment == TreatAsAlwaysAllowedContent); |
483 } | 470 } |
(...skipping 1014 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1498 } | 1485 } |
1499 } | 1486 } |
1500 | 1487 |
1501 void ResourceFetcher::trace(Visitor* visitor) | 1488 void ResourceFetcher::trace(Visitor* visitor) |
1502 { | 1489 { |
1503 visitor->trace(m_document); | 1490 visitor->trace(m_document); |
1504 ResourceLoaderHost::trace(visitor); | 1491 ResourceLoaderHost::trace(visitor); |
1505 } | 1492 } |
1506 | 1493 |
1507 } | 1494 } |
OLD | NEW |