From 1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c Mon Sep 17 00:00:00 2001 From: Lorry Tar Creator Date: Tue, 27 Jun 2017 06:07:23 +0000 Subject: webkitgtk-2.16.5 --- Source/WebCore/dom/ScriptableDocumentParser.cpp | 40 ++++++++++++++++++++++--- 1 file changed, 36 insertions(+), 4 deletions(-) (limited to 'Source/WebCore/dom/ScriptableDocumentParser.cpp') 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 protectedThis(*this); + + if (!document()->styleScope().hasPendingSheets()) + executeScriptsWaitingForStylesheets(); + + if (!isDetached()) + document()->checkCompleted(); +} + +void ScriptableDocumentParser::detach() +{ + m_scriptsWaitingForStylesheetsExecutionTimer.stop(); + + DecodedDataDocumentParser::detach(); +} + }; -- cgit v1.2.1