| Index: Source/core/html/parser/HTMLParserOptions.cpp
|
| diff --git a/Source/core/html/parser/HTMLParserOptions.cpp b/Source/core/html/parser/HTMLParserOptions.cpp
|
| index e9204912baefe7ba19101cec43d20e063247e741..8aabcd127fbdbc2f124e1ecb03e80835c7d23e51 100644
|
| --- a/Source/core/html/parser/HTMLParserOptions.cpp
|
| +++ b/Source/core/html/parser/HTMLParserOptions.cpp
|
| @@ -40,11 +40,17 @@ HTMLParserOptions::HTMLParserOptions(Document* document)
|
| scriptEnabled = frame && frame->script().canExecuteScripts(NotAboutToExecuteScript);
|
| pluginsEnabled = frame && frame->loader().allowPlugins(NotAboutToInstantiatePlugin);
|
|
|
| + // We force the main-thread parser for about:blank and javascript:
|
| + // (which uses about:blank urls) and data: urls for compatibility
|
| + // with historical synchronous loading/parsing behavior.
|
| + // FIXME: Gecko does not load javascript: urls synchronously, why do we?
|
| + // See LayoutTests/loader/iframe-sync-loads.html
|
| + // FIXME: threadedHTMLParser() setting should be removed but currently many
|
| + // webkit_unit_tests depend on parsing being synchronous. crbug.com/366354
|
| + // FIXME: useThreadedHTMLParserForDataURLs() setting should be removed but
|
| + // currently many browser_tests depend on data: urls being synchronous! crbug.com/308321
|
| Settings* settings = document ? document->settings() : 0;
|
| - // We force the main-thread parser for about:blank, javascript: and data: urls for compatibility
|
| - // with historical synchronous loading/parsing behavior of those schemes.
|
| - // FIXME: Use isAboutBlankURL() instead of protocolIsAbout() to not include about:srcdoc.
|
| - useThreading = settings && settings->threadedHTMLParser() && !document->url().protocolIsAbout()
|
| + useThreading = settings && settings->threadedHTMLParser() && !document->url().isAboutBlankURL()
|
| && (settings->useThreadedHTMLParserForDataURLs() || !document->url().protocolIsData());
|
| }
|
|
|
|
|