Changeset 147228 in webkit


Ignore:
Timestamp:
Mar 29, 2013 11:10:42 AM (11 years ago)
Author:
Nate Chapin
Message:

ASSERT d->m_defersLoading != defers on detik.com and drive.google.com
https://bugs.webkit.org/show_bug.cgi?id=111902

Reviewed by Alexey Proskuryakov.

Source/WebCore:

Test: http/tests/navigation/same-url-iframes-defer-crash.html

  • loader/DocumentLoader.cpp:

(WebCore::DocumentLoader::setDefersLoading): If multiple DocumentLoaders are

using loading the same main resource, ensure only one of them can call
ResourceLoader::setDefersLoading.

LayoutTests:

  • http/tests/navigation/same-url-iframes-defer-crash-expected.txt: Added.
  • http/tests/navigation/same-url-iframes-defer-crash.html: Added.
Location:
trunk
Files:
2 added
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r147223 r147228  
     12013-03-29  Nate Chapin  <japhet@chromium.org>
     2
     3        ASSERT d->m_defersLoading != defers on detik.com and drive.google.com
     4        https://bugs.webkit.org/show_bug.cgi?id=111902
     5
     6        Reviewed by Alexey Proskuryakov.
     7
     8        * http/tests/navigation/same-url-iframes-defer-crash-expected.txt: Added.
     9        * http/tests/navigation/same-url-iframes-defer-crash.html: Added.
     10
    1112013-03-29  Zoltan Arvai  <zarvai@inf.u-szeged.hu>
    212
  • trunk/Source/WebCore/ChangeLog

    r147227 r147228  
     12013-03-29  Nate Chapin  <japhet@chromium.org>
     2
     3        ASSERT d->m_defersLoading != defers on detik.com and drive.google.com
     4        https://bugs.webkit.org/show_bug.cgi?id=111902
     5
     6        Reviewed by Alexey Proskuryakov.
     7
     8        Test: http/tests/navigation/same-url-iframes-defer-crash.html
     9
     10        * loader/DocumentLoader.cpp:
     11        (WebCore::DocumentLoader::setDefersLoading): If multiple DocumentLoaders are
     12           using loading the same main resource, ensure only one of them can call
     13           ResourceLoader::setDefersLoading.
     14
    1152013-03-29  Vsevolod Vlasov  <vsevik@chromium.org>
    216
  • trunk/Source/WebCore/loader/DocumentLoader.cpp

    r147165 r147228  
    12871287void DocumentLoader::setDefersLoading(bool defers)
    12881288{
    1289     if (mainResourceLoader())
     1289    // Multiple frames may be loading the same main resource simultaneously. If deferral state changes,
     1290    // each frame's DocumentLoader will try to send a setDefersLoading() to the same underlying ResourceLoader. Ensure only
     1291    // the "owning" DocumentLoader does so, as setDefersLoading() is not resilient to setting the same value repeatedly.
     1292    if (mainResourceLoader() && mainResourceLoader()->documentLoader() == this)
    12901293        mainResourceLoader()->setDefersLoading(defers);
     1294
    12911295    setAllDefersLoading(m_subresourceLoaders, defers);
    12921296    setAllDefersLoading(m_plugInStreamLoaders, defers);
Note: See TracChangeset for help on using the changeset viewer.