summaryrefslogtreecommitdiff
path: root/Source/WebCore/dom/ScriptableDocumentParser.cpp
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@lorry>2017-06-27 06:07:23 +0000
committerLorry Tar Creator <lorry-tar-importer@lorry>2017-06-27 06:07:23 +0000
commit1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c (patch)
tree46dcd36c86e7fbc6e5df36deb463b33e9967a6f7 /Source/WebCore/dom/ScriptableDocumentParser.cpp
parent32761a6cee1d0dee366b885b7b9c777e67885688 (diff)
downloadWebKitGtk-tarball-master.tar.gz
Diffstat (limited to 'Source/WebCore/dom/ScriptableDocumentParser.cpp')
-rw-r--r--Source/WebCore/dom/ScriptableDocumentParser.cpp40
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();
+}
+
};