Changeset 144027 in webkit


Ignore:
Timestamp:
Feb 26, 2013 1:57:33 AM (11 years ago)
Author:
eric@webkit.org
Message:

Threaded HTML parser fails fast/loader/stateobjects/state-attribute-history-getter.html
https://bugs.webkit.org/show_bug.cgi?id=110801

Reviewed by Adam Barth.

This causes 6 more tests to pass for the threaded parser,
an solves all of our timeout issues.

These tests which were failing were racy, we just were never
hitting the race due to using file urls. This change fixes
the threaded parser to emulate one more of the EOF quirks from
the loader/main-thread-parser interaction.

  • html/parser/HTMLDocumentParser.cpp:

(WebCore::HTMLDocumentParser::processParsedChunkFromBackgroundParser):

Location:
trunk/Source/WebCore
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r144025 r144027  
     12013-02-26  Eric Seidel  <eric@webkit.org>
     2
     3        Threaded HTML parser fails fast/loader/stateobjects/state-attribute-history-getter.html
     4        https://bugs.webkit.org/show_bug.cgi?id=110801
     5
     6        Reviewed by Adam Barth.
     7
     8        This causes 6 more tests to pass for the threaded parser,
     9        an solves all of our timeout issues.
     10
     11        These tests which were failing were racy, we just were never
     12        hitting the race due to using file urls.  This change fixes
     13        the threaded parser to emulate one more of the EOF quirks from
     14        the loader/main-thread-parser interaction.
     15
     16        * html/parser/HTMLDocumentParser.cpp:
     17        (WebCore::HTMLDocumentParser::processParsedChunkFromBackgroundParser):
     18
    1192013-02-26  Alexander Pavlov  <apavlov@chromium.org>
    220
  • trunk/Source/WebCore/html/parser/HTMLDocumentParser.cpp

    r144010 r144027  
    384384
    385385        if (!isParsingFragment()
    386             && document()->frame() && document()->frame()->navigationScheduler()->locationChangePending())
     386            && document()->frame() && document()->frame()->navigationScheduler()->locationChangePending()) {
     387
     388            // To match main-thread parser behavior (which never checks locationChangePending on the EOF path)
     389            // we peek to see if this chunk has an EOF and process it anyway.
     390            if (tokens->last().type() == HTMLToken::EndOfFile)
     391                prepareToStopParsing();
    387392            break;
     393        }
    388394
    389395        if (isWaitingForScripts()) {
Note: See TracChangeset for help on using the changeset viewer.