Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(623)

Unified Diff: Source/core/dom/ScriptLoader.cpp

Issue 1532413002: Added Dartium changes onto 45.0.2454.104 (Closed) Base URL: http://src.chromium.org/blink/branches/chromium/2454
Patch Set: Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/core/dom/ScriptLoader.h ('k') | Source/core/frame/LocalFrame.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/dom/ScriptLoader.cpp
diff --git a/Source/core/dom/ScriptLoader.cpp b/Source/core/dom/ScriptLoader.cpp
index b4d1e0b81b094c1808ed32101a3fcb07b2d9144d..c29e0a261c4aa927abba8120b54cbc487fe170e0 100644
--- a/Source/core/dom/ScriptLoader.cpp
+++ b/Source/core/dom/ScriptLoader.cpp
@@ -24,6 +24,8 @@
#include "config.h"
#include "core/dom/ScriptLoader.h"
+// FIXMEDART: This should move to bindings/core/dart.
+#include "bindings/core/dart/DartController.h"
#include "bindings/core/v8/ScriptController.h"
#include "bindings/core/v8/ScriptSourceCode.h"
#include "core/HTMLNames.h"
@@ -69,6 +71,7 @@ ScriptLoader::ScriptLoader(Element* element, bool parserInserted, bool alreadySt
, m_willExecuteWhenDocumentFinishedParsing(false)
, m_forceAsync(!parserInserted)
, m_willExecuteInOrder(false)
+ , m_scriptType(ScriptJavaScript)
{
ASSERT(m_element);
if (parserInserted && element->document().scriptableDocumentParser() && !element->document().isInDocumentWrite())
@@ -159,7 +162,7 @@ void ScriptLoader::dispatchLoadEvent()
setHaveFiredLoadEvent(true);
}
-bool ScriptLoader::isScriptTypeSupported(LegacyTypeSupport supportLegacyTypes) const
+ScriptLoader::ScriptType ScriptLoader::isScriptTypeSupported(LegacyTypeSupport supportLegacyTypes) const
{
// FIXME: isLegacySupportedJavaScriptLanguage() is not valid HTML5. It is used here to maintain backwards compatibility with existing layout tests. The specific violations are:
// - Allowing type=javascript. type= should only support MIME types, such as text/javascript.
@@ -168,16 +171,18 @@ bool ScriptLoader::isScriptTypeSupported(LegacyTypeSupport supportLegacyTypes) c
String type = client()->typeAttributeValue();
String language = client()->languageAttributeValue();
if (type.isEmpty() && language.isEmpty())
- return true; // Assume text/javascript.
+ return ScriptJavaScript; // Assume text/javascript.
if (type.isEmpty()) {
type = "text/" + language.lower();
if (MIMETypeRegistry::isSupportedJavaScriptMIMEType(type) || isLegacySupportedJavaScriptLanguage(language))
- return true;
+ return ScriptJavaScript;
} else if (MIMETypeRegistry::isSupportedJavaScriptMIMEType(type.stripWhiteSpace()) || (supportLegacyTypes == AllowLegacyTypeInTypeAttribute && isLegacySupportedJavaScriptLanguage(type))) {
- return true;
+ return ScriptJavaScript;
+ } else if (MIMETypeRegistry::isSupportedDartMIMEType(type.stripWhiteSpace())) {
+ return ScriptDart;
}
- return false;
+ return ScriptNone;
}
// http://dev.w3.org/html5/spec/Overview.html#prepare-a-script
@@ -396,7 +401,13 @@ bool ScriptLoader::executeScript(const ScriptSourceCode& sourceCode, double* com
// Create a script from the script element node, using the script
// block's source and the script block's type.
// Note: This is where the script is compiled and actually executed.
- frame->script().executeScriptInMainWorld(sourceCode, accessControlStatus, compilationFinishTime);
+ if (m_scriptType == ScriptJavaScript) {
+ frame->script().executeScriptInMainWorld(sourceCode, accessControlStatus, compilationFinishTime);
+ } else if (m_scriptType == ScriptDart) {
+ frame->dart().evaluate(sourceCode, this);
+ } else {
+ ASSERT_NOT_REACHED();
+ }
if (isHTMLScriptLoader(m_element)) {
ASSERT(contextDocument->currentScript() == m_element);
« no previous file with comments | « Source/core/dom/ScriptLoader.h ('k') | Source/core/frame/LocalFrame.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698