diff options
author | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-06-27 06:07:23 +0000 |
---|---|---|
committer | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-06-27 06:07:23 +0000 |
commit | 1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c (patch) | |
tree | 46dcd36c86e7fbc6e5df36deb463b33e9967a6f7 /Source/WebCore/dom/ScriptableDocumentParser.cpp | |
parent | 32761a6cee1d0dee366b885b7b9c777e67885688 (diff) | |
download | WebKitGtk-tarball-master.tar.gz |
webkitgtk-2.16.5HEADwebkitgtk-2.16.5master
Diffstat (limited to 'Source/WebCore/dom/ScriptableDocumentParser.cpp')
-rw-r--r-- | Source/WebCore/dom/ScriptableDocumentParser.cpp | 40 |
1 files changed, 36 insertions, 4 deletions
diff --git a/Source/WebCore/dom/ScriptableDocumentParser.cpp b/Source/WebCore/dom/ScriptableDocumentParser.cpp index a6fa08124..166b29fc7 100644 --- a/Source/WebCore/dom/ScriptableDocumentParser.cpp +++ b/Source/WebCore/dom/ScriptableDocumentParser.cpp @@ -27,9 +27,8 @@ #include "ScriptableDocumentParser.h" #include "Document.h" -#include "Frame.h" -#include "ScriptController.h" #include "Settings.h" +#include "StyleScope.h" namespace WebCore { @@ -37,12 +36,45 @@ ScriptableDocumentParser::ScriptableDocumentParser(Document& document, ParserCon : DecodedDataDocumentParser(document) , m_wasCreatedByScript(false) , m_parserContentPolicy(parserContentPolicy) + , m_scriptsWaitingForStylesheetsExecutionTimer(*this, &ScriptableDocumentParser::scriptsWaitingForStylesheetsExecutionTimerFired) { - if (!pluginContentIsAllowed(m_parserContentPolicy) && (!document.settings() || document.settings()->unsafePluginPastingEnabled())) + if (!pluginContentIsAllowed(m_parserContentPolicy)) m_parserContentPolicy = allowPluginContent(m_parserContentPolicy); - if (scriptingContentIsAllowed(m_parserContentPolicy) && (document.settings() && !document.settings()->scriptMarkupEnabled())) + if (scriptingContentIsAllowed(m_parserContentPolicy) && !document.settings().scriptMarkupEnabled()) m_parserContentPolicy = disallowScriptingContent(m_parserContentPolicy); } +void ScriptableDocumentParser::executeScriptsWaitingForStylesheetsSoon() +{ + ASSERT(!document()->styleScope().hasPendingSheets()); + + if (m_scriptsWaitingForStylesheetsExecutionTimer.isActive()) + return; + if (!hasScriptsWaitingForStylesheets()) + return; + + m_scriptsWaitingForStylesheetsExecutionTimer.startOneShot(0); +} + +void ScriptableDocumentParser::scriptsWaitingForStylesheetsExecutionTimerFired() +{ + ASSERT(!isDetached()); + + Ref<ScriptableDocumentParser> protectedThis(*this); + + if (!document()->styleScope().hasPendingSheets()) + executeScriptsWaitingForStylesheets(); + + if (!isDetached()) + document()->checkCompleted(); +} + +void ScriptableDocumentParser::detach() +{ + m_scriptsWaitingForStylesheetsExecutionTimer.stop(); + + DecodedDataDocumentParser::detach(); +} + }; |