Diff
Modified: trunk/LayoutTests/ChangeLog (143803 => 143804)
--- trunk/LayoutTests/ChangeLog 2013-02-22 22:42:58 UTC (rev 143803)
+++ trunk/LayoutTests/ChangeLog 2013-02-22 22:57:14 UTC (rev 143804)
@@ -1,3 +1,41 @@
+2013-02-22 Eric Seidel <[email protected]>
+
+ Teach the html5lib tests how to test the threaded HTML parser
+ https://bugs.webkit.org/show_bug.cgi?id=110643
+
+ Reviewed by Adam Barth.
+
+ * TestExpectations:
+ * html5lib/resources/runner.js:
+ (window.onload):
+ * html5lib/run-template-expected.txt:
+ * html5lib/run-test10-expected.txt:
+ * html5lib/run-test11-expected.txt:
+ * html5lib/run-test12-expected.txt:
+ * html5lib/run-test14-expected.txt:
+ * html5lib/run-test15-expected.txt:
+ * html5lib/run-test16-expected.txt:
+ * html5lib/run-test17-expected.txt:
+ * html5lib/run-test19-expected.txt:
+ * html5lib/run-test2-expected.txt:
+ * html5lib/run-test20-expected.txt:
+ * html5lib/run-test21-expected.txt:
+ * html5lib/run-test22-expected.txt:
+ * html5lib/run-test23-expected.txt:
+ * html5lib/run-test24-expected.txt:
+ * html5lib/run-test25-expected.txt:
+ * html5lib/run-test26-expected.txt:
+ * html5lib/run-test3-expected.txt:
+ * html5lib/run-test4-expected.txt:
+ * html5lib/run-test5-expected.txt:
+ * html5lib/run-test6-expected.txt:
+ * html5lib/run-test8-expected.txt:
+ * html5lib/run-test9-expected.txt:
+ * html5lib/runner-expected.txt:
+ * platform/chromium/html5lib/run-test1-expected.txt:
+ * platform/chromium/html5lib/run-test18-expected.txt:
+ * platform/chromium/html5lib/run-test7-expected.txt:
+
2013-02-22 Adam Barth <[email protected]>
fast/parser/parser-yield-timing.html doesn't integrate with js-test-pre correctly
Modified: trunk/LayoutTests/TestExpectations (143803 => 143804)
--- trunk/LayoutTests/TestExpectations 2013-02-22 22:42:58 UTC (rev 143803)
+++ trunk/LayoutTests/TestExpectations 2013-02-22 22:57:14 UTC (rev 143804)
@@ -4,3 +4,9 @@
# pending functional patch and per-port verification
webkit.org/b/109954 css3/line-break [ Skip ]
+
+# This runs all subtests through both the document.write
+# parser and the (threaded) data: url parser. The data: url
+# harness is much slower, and the test should be broken
+# up into smaller tests.
+webkit.org/b/110642 html5lib/runner.html [ Slow ]
Modified: trunk/LayoutTests/html5lib/resources/runner.js (143803 => 143804)
--- trunk/LayoutTests/html5lib/resources/runner.js 2013-02-22 22:42:58 UTC (rev 143803)
+++ trunk/LayoutTests/html5lib/resources/runner.js 2013-02-22 22:57:14 UTC (rev 143804)
@@ -53,13 +53,27 @@
window._onload_ = function()
{
stat.data = ""
+ saved_test_files = window.test_files.slice();
+ have_tested_threaded_parser = false;
run();
}
function run()
{
var xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
- if (file = test_files.shift())
+ file = test_files.shift()
+ if (!file && !have_tested_threaded_parser) {
+ var log_element = document.createElement('p');
+ log_element.appendChild(document.createTextNode("Switching to data: url parser (threaded if available) and re-running..."));
+ document.body.appendChild(log_element);
+ if (window.internals && internals.settings.setUseThreadedHTMLParserForDataURLs)
+ internals.settings.setUseThreadedHTMLParserForDataURLs(true);
+ write = false;
+ test_files = saved_test_files.slice();
+ file = test_files.shift()
+ have_tested_threaded_parser = true;
+ }
+ if (file)
{
stat.data = "" " + file;
test_number = 1;
Modified: trunk/LayoutTests/html5lib/run-template-expected.txt (143803 => 143804)
--- trunk/LayoutTests/html5lib/run-template-expected.txt 2013-02-22 22:42:58 UTC (rev 143803)
+++ trunk/LayoutTests/html5lib/run-template-expected.txt 2013-02-22 22:57:14 UTC (rev 143804)
@@ -1 +1,5 @@
resources/template.dat: PASS
+
+Switching to data: url parser (threaded if available) and re-running...
+
+resources/template.dat: PASS
Modified: trunk/LayoutTests/html5lib/run-test10-expected.txt (143803 => 143804)
--- trunk/LayoutTests/html5lib/run-test10-expected.txt 2013-02-22 22:42:58 UTC (rev 143803)
+++ trunk/LayoutTests/html5lib/run-test10-expected.txt 2013-02-22 22:57:14 UTC (rev 143804)
@@ -1 +1,5 @@
resources/tests10.dat: PASS
+
+Switching to data: url parser (threaded if available) and re-running...
+
+resources/tests10.dat: PASS
Modified: trunk/LayoutTests/html5lib/run-test11-expected.txt (143803 => 143804)
--- trunk/LayoutTests/html5lib/run-test11-expected.txt 2013-02-22 22:42:58 UTC (rev 143803)
+++ trunk/LayoutTests/html5lib/run-test11-expected.txt 2013-02-22 22:57:14 UTC (rev 143804)
@@ -1,4 +1,11 @@
CONSOLE MESSAGE: Warning: Problem parsing viewBox=""
CONSOLE MESSAGE: Warning: Problem parsing viewBox=""
CONSOLE MESSAGE: Warning: Problem parsing viewBox=""
+CONSOLE MESSAGE: line 1: Warning: Problem parsing viewBox=""
+CONSOLE MESSAGE: line 1: Warning: Problem parsing viewBox=""
+CONSOLE MESSAGE: line 1: Warning: Problem parsing viewBox=""
resources/tests11.dat: PASS
+
+Switching to data: url parser (threaded if available) and re-running...
+
+resources/tests11.dat: PASS
Modified: trunk/LayoutTests/html5lib/run-test12-expected.txt (143803 => 143804)
--- trunk/LayoutTests/html5lib/run-test12-expected.txt 2013-02-22 22:42:58 UTC (rev 143803)
+++ trunk/LayoutTests/html5lib/run-test12-expected.txt 2013-02-22 22:57:14 UTC (rev 143804)
@@ -1 +1,5 @@
resources/tests12.dat: PASS
+
+Switching to data: url parser (threaded if available) and re-running...
+
+resources/tests12.dat: PASS
Modified: trunk/LayoutTests/html5lib/run-test14-expected.txt (143803 => 143804)
--- trunk/LayoutTests/html5lib/run-test14-expected.txt 2013-02-22 22:42:58 UTC (rev 143803)
+++ trunk/LayoutTests/html5lib/run-test14-expected.txt 2013-02-22 22:57:14 UTC (rev 143804)
@@ -1 +1,5 @@
resources/tests14.dat: PASS
+
+Switching to data: url parser (threaded if available) and re-running...
+
+resources/tests14.dat: PASS
Modified: trunk/LayoutTests/html5lib/run-test15-expected.txt (143803 => 143804)
--- trunk/LayoutTests/html5lib/run-test15-expected.txt 2013-02-22 22:42:58 UTC (rev 143803)
+++ trunk/LayoutTests/html5lib/run-test15-expected.txt 2013-02-22 22:57:14 UTC (rev 143804)
@@ -1 +1,5 @@
resources/tests15.dat: PASS
+
+Switching to data: url parser (threaded if available) and re-running...
+
+resources/tests15.dat: PASS
Modified: trunk/LayoutTests/html5lib/run-test16-expected.txt (143803 => 143804)
--- trunk/LayoutTests/html5lib/run-test16-expected.txt 2013-02-22 22:42:58 UTC (rev 143803)
+++ trunk/LayoutTests/html5lib/run-test16-expected.txt 2013-02-22 22:57:14 UTC (rev 143804)
@@ -1 +1,5 @@
resources/tests16.dat: PASS
+
+Switching to data: url parser (threaded if available) and re-running...
+
+resources/tests16.dat: PASS
Modified: trunk/LayoutTests/html5lib/run-test17-expected.txt (143803 => 143804)
--- trunk/LayoutTests/html5lib/run-test17-expected.txt 2013-02-22 22:42:58 UTC (rev 143803)
+++ trunk/LayoutTests/html5lib/run-test17-expected.txt 2013-02-22 22:57:14 UTC (rev 143804)
@@ -1 +1,5 @@
resources/tests17.dat: PASS
+
+Switching to data: url parser (threaded if available) and re-running...
+
+resources/tests17.dat: PASS
Modified: trunk/LayoutTests/html5lib/run-test19-expected.txt (143803 => 143804)
--- trunk/LayoutTests/html5lib/run-test19-expected.txt 2013-02-22 22:42:58 UTC (rev 143803)
+++ trunk/LayoutTests/html5lib/run-test19-expected.txt 2013-02-22 22:57:14 UTC (rev 143804)
@@ -1 +1,5 @@
resources/tests19.dat: PASS
+
+Switching to data: url parser (threaded if available) and re-running...
+
+resources/tests19.dat: PASS
Modified: trunk/LayoutTests/html5lib/run-test2-expected.txt (143803 => 143804)
--- trunk/LayoutTests/html5lib/run-test2-expected.txt 2013-02-22 22:42:58 UTC (rev 143803)
+++ trunk/LayoutTests/html5lib/run-test2-expected.txt 2013-02-22 22:57:14 UTC (rev 143804)
@@ -1 +1,5 @@
resources/tests2.dat: PASS
+
+Switching to data: url parser (threaded if available) and re-running...
+
+resources/tests2.dat: PASS
Modified: trunk/LayoutTests/html5lib/run-test20-expected.txt (143803 => 143804)
--- trunk/LayoutTests/html5lib/run-test20-expected.txt 2013-02-22 22:42:58 UTC (rev 143803)
+++ trunk/LayoutTests/html5lib/run-test20-expected.txt 2013-02-22 22:57:14 UTC (rev 143804)
@@ -1 +1,5 @@
resources/tests20.dat: PASS
+
+Switching to data: url parser (threaded if available) and re-running...
+
+resources/tests20.dat: PASS
Modified: trunk/LayoutTests/html5lib/run-test21-expected.txt (143803 => 143804)
--- trunk/LayoutTests/html5lib/run-test21-expected.txt 2013-02-22 22:42:58 UTC (rev 143803)
+++ trunk/LayoutTests/html5lib/run-test21-expected.txt 2013-02-22 22:57:14 UTC (rev 143804)
@@ -1 +1,5 @@
resources/tests21.dat: PASS
+
+Switching to data: url parser (threaded if available) and re-running...
+
+resources/tests21.dat: PASS
Modified: trunk/LayoutTests/html5lib/run-test22-expected.txt (143803 => 143804)
--- trunk/LayoutTests/html5lib/run-test22-expected.txt 2013-02-22 22:42:58 UTC (rev 143803)
+++ trunk/LayoutTests/html5lib/run-test22-expected.txt 2013-02-22 22:57:14 UTC (rev 143804)
@@ -1 +1,5 @@
resources/test22.dat: PASS
+
+Switching to data: url parser (threaded if available) and re-running...
+
+resources/test22.dat: PASS
Modified: trunk/LayoutTests/html5lib/run-test23-expected.txt (143803 => 143804)
--- trunk/LayoutTests/html5lib/run-test23-expected.txt 2013-02-22 22:42:58 UTC (rev 143803)
+++ trunk/LayoutTests/html5lib/run-test23-expected.txt 2013-02-22 22:57:14 UTC (rev 143804)
@@ -1 +1,5 @@
resources/tests23.dat: PASS
+
+Switching to data: url parser (threaded if available) and re-running...
+
+resources/tests23.dat: PASS
Modified: trunk/LayoutTests/html5lib/run-test24-expected.txt (143803 => 143804)
--- trunk/LayoutTests/html5lib/run-test24-expected.txt 2013-02-22 22:42:58 UTC (rev 143803)
+++ trunk/LayoutTests/html5lib/run-test24-expected.txt 2013-02-22 22:57:14 UTC (rev 143804)
@@ -1 +1,5 @@
resources/tests24.dat: PASS
+
+Switching to data: url parser (threaded if available) and re-running...
+
+resources/tests24.dat: PASS
Modified: trunk/LayoutTests/html5lib/run-test25-expected.txt (143803 => 143804)
--- trunk/LayoutTests/html5lib/run-test25-expected.txt 2013-02-22 22:42:58 UTC (rev 143803)
+++ trunk/LayoutTests/html5lib/run-test25-expected.txt 2013-02-22 22:57:14 UTC (rev 143804)
@@ -1 +1,5 @@
resources/tests25.dat: PASS
+
+Switching to data: url parser (threaded if available) and re-running...
+
+resources/tests25.dat: PASS
Modified: trunk/LayoutTests/html5lib/run-test26-expected.txt (143803 => 143804)
--- trunk/LayoutTests/html5lib/run-test26-expected.txt 2013-02-22 22:42:58 UTC (rev 143803)
+++ trunk/LayoutTests/html5lib/run-test26-expected.txt 2013-02-22 22:57:14 UTC (rev 143804)
@@ -1 +1,5 @@
resources/tests26.dat: PASS
+
+Switching to data: url parser (threaded if available) and re-running...
+
+resources/tests26.dat: PASS
Modified: trunk/LayoutTests/html5lib/run-test3-expected.txt (143803 => 143804)
--- trunk/LayoutTests/html5lib/run-test3-expected.txt 2013-02-22 22:42:58 UTC (rev 143803)
+++ trunk/LayoutTests/html5lib/run-test3-expected.txt 2013-02-22 22:57:14 UTC (rev 143804)
@@ -1 +1,5 @@
resources/tests3.dat: PASS
+
+Switching to data: url parser (threaded if available) and re-running...
+
+resources/tests3.dat: PASS
Modified: trunk/LayoutTests/html5lib/run-test4-expected.txt (143803 => 143804)
--- trunk/LayoutTests/html5lib/run-test4-expected.txt 2013-02-22 22:42:58 UTC (rev 143803)
+++ trunk/LayoutTests/html5lib/run-test4-expected.txt 2013-02-22 22:57:14 UTC (rev 143804)
@@ -1 +1,5 @@
resources/tests4.dat: PASS
+
+Switching to data: url parser (threaded if available) and re-running...
+
+resources/tests4.dat: PASS
Modified: trunk/LayoutTests/html5lib/run-test5-expected.txt (143803 => 143804)
--- trunk/LayoutTests/html5lib/run-test5-expected.txt 2013-02-22 22:42:58 UTC (rev 143803)
+++ trunk/LayoutTests/html5lib/run-test5-expected.txt 2013-02-22 22:57:14 UTC (rev 143804)
@@ -1 +1,5 @@
resources/tests5.dat: PASS
+
+Switching to data: url parser (threaded if available) and re-running...
+
+resources/tests5.dat: PASS
Modified: trunk/LayoutTests/html5lib/run-test6-expected.txt (143803 => 143804)
--- trunk/LayoutTests/html5lib/run-test6-expected.txt 2013-02-22 22:42:58 UTC (rev 143803)
+++ trunk/LayoutTests/html5lib/run-test6-expected.txt 2013-02-22 22:57:14 UTC (rev 143804)
@@ -1 +1,5 @@
resources/tests6.dat: PASS
+
+Switching to data: url parser (threaded if available) and re-running...
+
+resources/tests6.dat: PASS
Modified: trunk/LayoutTests/html5lib/run-test8-expected.txt (143803 => 143804)
--- trunk/LayoutTests/html5lib/run-test8-expected.txt 2013-02-22 22:42:58 UTC (rev 143803)
+++ trunk/LayoutTests/html5lib/run-test8-expected.txt 2013-02-22 22:57:14 UTC (rev 143804)
@@ -1 +1,5 @@
resources/tests8.dat: PASS
+
+Switching to data: url parser (threaded if available) and re-running...
+
+resources/tests8.dat: PASS
Modified: trunk/LayoutTests/html5lib/run-test9-expected.txt (143803 => 143804)
--- trunk/LayoutTests/html5lib/run-test9-expected.txt 2013-02-22 22:42:58 UTC (rev 143803)
+++ trunk/LayoutTests/html5lib/run-test9-expected.txt 2013-02-22 22:57:14 UTC (rev 143804)
@@ -1 +1,5 @@
resources/tests9.dat: PASS
+
+Switching to data: url parser (threaded if available) and re-running...
+
+resources/tests9.dat: PASS
Modified: trunk/LayoutTests/html5lib/runner-expected.txt (143803 => 143804)
--- trunk/LayoutTests/html5lib/runner-expected.txt 2013-02-22 22:42:58 UTC (rev 143803)
+++ trunk/LayoutTests/html5lib/runner-expected.txt 2013-02-22 22:57:14 UTC (rev 143804)
@@ -7,6 +7,15 @@
CONSOLE MESSAGE: line 2: PASS
CONSOLE MESSAGE: line 2: FOO<span>BAR</span>BAZ
+ALERT: Invalid test: #errors
+#document-fragment
+html
+#document
+| <head>
+| <body>
+
+CONSOLE MESSAGE: line 3: PASS
+CONSOLE MESSAGE: line 3: FOO<span>BAR</span>BAZ
resources/adoption01.dat:
14
@@ -105,3 +114,104 @@
resources/webkit01.dat: PASS
resources/webkit02.dat: PASS
+
+Switching to data: url parser (threaded if available) and re-running...
+
+resources/adoption01.dat:
+14
+
+Test 14 of 17 in resources/adoption01.dat failed. Input:
+<div><a><b><div><div><div><div><div><div><div><div><div><div></a>
+Got:
+| <html>
+| <head>
+| <body>
+| <div>
+| <a>
+| <b>
+| <b>
+| <div>
+| <a>
+| <div>
+| <a>
+| <div>
+| <a>
+| <div>
+| <a>
+| <div>
+| <a>
+| <div>
+| <a>
+| <div>
+| <a>
+| <div>
+| <a>
+| <div>
+| <div>
+Expected:
+| <html>
+| <head>
+| <body>
+| <div>
+| <a>
+| <b>
+| <b>
+| <div>
+| <a>
+| <div>
+| <a>
+| <div>
+| <a>
+| <div>
+| <a>
+| <div>
+| <a>
+| <div>
+| <a>
+| <div>
+| <a>
+| <div>
+| <a>
+| <div>
+| <div>
+resources/adoption02.dat: PASS
+
+resources/comments01.dat: PASS
+
+resources/doctype01.dat: PASS
+
+resources/domjs-unsafe.dat: PASS
+
+resources/entities01.dat: PASS
+
+resources/entities02.dat: PASS
+
+resources/html5test-com.dat: PASS
+
+resources/inbody01.dat: PASS
+
+resources/isindex.dat: PASS
+
+resources/pending-spec-changes-plain-text-unsafe.dat: PASS
+
+resources/pending-spec-changes.dat: PASS
+
+resources/plain-text-unsafe.dat: PASS
+
+resources/scriptdata01.dat: PASS
+
+resources/scripted/adoption01.dat: PASS
+
+resources/scripted/ark.dat: PASS
+
+resources/scripted/webkit01.dat: PASS
+
+resources/tables01.dat: PASS
+
+resources/tests_innerHTML_1.dat: PASS
+
+resources/tricky01.dat: PASS
+
+resources/webkit01.dat: PASS
+
+resources/webkit02.dat: PASS
Modified: trunk/LayoutTests/platform/chromium/html5lib/run-test1-expected.txt (143803 => 143804)
--- trunk/LayoutTests/platform/chromium/html5lib/run-test1-expected.txt 2013-02-22 22:42:58 UTC (rev 143803)
+++ trunk/LayoutTests/platform/chromium/html5lib/run-test1-expected.txt 2013-02-22 22:57:14 UTC (rev 143804)
@@ -1,2 +1,7 @@
CONSOLE MESSAGE: line 1: Uncaught SyntaxError: Unexpected token <
+CONSOLE MESSAGE: line 1: Uncaught SyntaxError: Unexpected token <
resources/tests1.dat: PASS
+
+Switching to data: url parser (threaded if available) and re-running...
+
+resources/tests1.dat: PASS
Modified: trunk/LayoutTests/platform/chromium/html5lib/run-test18-expected.txt (143803 => 143804)
--- trunk/LayoutTests/platform/chromium/html5lib/run-test18-expected.txt 2013-02-22 22:42:58 UTC (rev 143803)
+++ trunk/LayoutTests/platform/chromium/html5lib/run-test18-expected.txt 2013-02-22 22:57:14 UTC (rev 143804)
@@ -2,4 +2,12 @@
CONSOLE MESSAGE: line 1: Uncaught SyntaxError: Unexpected token <
CONSOLE MESSAGE: line 1: Uncaught SyntaxError: Unexpected token <
CONSOLE MESSAGE: line 1: Uncaught SyntaxError: Unexpected token <
+CONSOLE MESSAGE: line 1: Uncaught SyntaxError: Unexpected token <
+CONSOLE MESSAGE: line 1: Uncaught SyntaxError: Unexpected token <
+CONSOLE MESSAGE: line 1: Uncaught SyntaxError: Unexpected token <
+CONSOLE MESSAGE: line 1: Uncaught SyntaxError: Unexpected token <
resources/tests18.dat: PASS
+
+Switching to data: url parser (threaded if available) and re-running...
+
+resources/tests18.dat: PASS
Modified: trunk/LayoutTests/platform/chromium/html5lib/run-test7-expected.txt (143803 => 143804)
--- trunk/LayoutTests/platform/chromium/html5lib/run-test7-expected.txt 2013-02-22 22:42:58 UTC (rev 143803)
+++ trunk/LayoutTests/platform/chromium/html5lib/run-test7-expected.txt 2013-02-22 22:57:14 UTC (rev 143804)
@@ -1,2 +1,7 @@
CONSOLE MESSAGE: line 1: Uncaught SyntaxError: Unexpected token <
+CONSOLE MESSAGE: line 1: Uncaught SyntaxError: Unexpected token <
resources/tests7.dat: PASS
+
+Switching to data: url parser (threaded if available) and re-running...
+
+resources/tests7.dat: PASS
Modified: trunk/Source/WebCore/ChangeLog (143803 => 143804)
--- trunk/Source/WebCore/ChangeLog 2013-02-22 22:42:58 UTC (rev 143803)
+++ trunk/Source/WebCore/ChangeLog 2013-02-22 22:57:14 UTC (rev 143804)
@@ -1,3 +1,18 @@
+2013-02-22 Eric Seidel <[email protected]>
+
+ Teach the html5lib tests how to test the threaded HTML parser
+ https://bugs.webkit.org/show_bug.cgi?id=110643
+
+ Reviewed by Adam Barth.
+
+ This adds a way to force data: url parsing to go through
+ the threaded parser, to enable us to test the threaded parser
+ using the html5lib test harness.
+
+ * html/parser/HTMLParserOptions.cpp:
+ (WebCore::HTMLParserOptions::HTMLParserOptions):
+ * page/Settings.in:
+
2013-02-21 Ojan Vafai <[email protected]>
Increase the max preferred width of tables to 1000000
Modified: trunk/Source/WebCore/html/parser/HTMLParserOptions.cpp (143803 => 143804)
--- trunk/Source/WebCore/html/parser/HTMLParserOptions.cpp 2013-02-22 22:42:58 UTC (rev 143803)
+++ trunk/Source/WebCore/html/parser/HTMLParserOptions.cpp 2013-02-22 22:57:14 UTC (rev 143804)
@@ -43,7 +43,8 @@
#if ENABLE(THREADED_HTML_PARSER)
// We force the main-thread parser for about:blank, _javascript_: and data: urls for compatibility
// with historical synchronous loading/parsing behavior of those schemes.
- useThreading = settings && settings->threadedHTMLParser() && !document->url().isBlankURL() && !document->url().protocolIsData();
+ useThreading = settings && settings->threadedHTMLParser() && !document->url().isBlankURL()
+ && (settings->useThreadedHTMLParserForDataURLs() || !document->url().protocolIsData());
#else
useThreading = false;
#endif
Modified: trunk/Source/WebCore/page/Settings.in (143803 => 143804)
--- trunk/Source/WebCore/page/Settings.in 2013-02-22 22:42:58 UTC (rev 143803)
+++ trunk/Source/WebCore/page/Settings.in 2013-02-22 22:57:14 UTC (rev 143804)
@@ -170,6 +170,7 @@
DOMPasteAllowed initial=false
threadedHTMLParser initial=false, conditional=THREADED_HTML_PARSER
+useThreadedHTMLParserForDataURLs initial=false, conditional=THREADED_HTML_PARSER
# When enabled, window.blur() does not change focus, and
# window.focus() only changes focus when invoked from the context that