Title: [140842] trunk/Source/WebCore
Revision
140842
Author
to...@chromium.org
Date
2013-01-25 10:04:37 -0800 (Fri, 25 Jan 2013)

Log Message

Abort parsing when pending location change for threaded HTML parser
https://bugs.webkit.org/show_bug.cgi?id=107876

Reviewed by Eric Seidel.

The main thread parser does this in canTakeNextToken. Adding this check to the threaded parser causes us to pass
fast/loader/location-change-aborts-parsing.html.

No new tests because covered by existing tests.

* html/parser/HTMLDocumentParser.cpp:
(WebCore::HTMLDocumentParser::processTokensFromBackgroundParser):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (140841 => 140842)


--- trunk/Source/WebCore/ChangeLog	2013-01-25 18:02:38 UTC (rev 140841)
+++ trunk/Source/WebCore/ChangeLog	2013-01-25 18:04:37 UTC (rev 140842)
@@ -1,3 +1,18 @@
+2013-01-25  Tony Gentilcore  <to...@chromium.org>
+
+        Abort parsing when pending location change for threaded HTML parser
+        https://bugs.webkit.org/show_bug.cgi?id=107876
+
+        Reviewed by Eric Seidel.
+
+        The main thread parser does this in canTakeNextToken. Adding this check to the threaded parser causes us to pass
+        fast/loader/location-change-aborts-parsing.html.
+
+        No new tests because covered by existing tests.
+
+        * html/parser/HTMLDocumentParser.cpp:
+        (WebCore::HTMLDocumentParser::processTokensFromBackgroundParser):
+
 2013-01-25  Mike West  <mk...@chromium.org>
 
         ScriptController::executeIfJavaScriptURL incorrectly checks viewsource mode.

Modified: trunk/Source/WebCore/html/parser/HTMLDocumentParser.cpp (140841 => 140842)


--- trunk/Source/WebCore/html/parser/HTMLDocumentParser.cpp	2013-01-25 18:02:38 UTC (rev 140841)
+++ trunk/Source/WebCore/html/parser/HTMLDocumentParser.cpp	2013-01-25 18:04:37 UTC (rev 140842)
@@ -303,8 +303,9 @@
         if (isStopped())
             break;
 
-        // FIXME: We'll probably need to check document()->frame()->navigationScheduler()->locationChangePending())
-        // as we do in canTakeNextToken;
+        if (!isParsingFragment()
+            && document()->frame() && document()->frame()->navigationScheduler()->locationChangePending())
+            break;
 
         if (isWaitingForScripts()) {
             ASSERT(it + 1 == tokens->end()); // The </script> is assumed to be the last token of this bunch.
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to