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

Side by Side Diff: Source/core/dom/ScriptLoader.cpp

Issue 1659793004: Fixed handling of Dart MIME type (Closed) Base URL: svn://svn.chromium.org/blink/branches/dart/2454_1
Patch Set: Updated comment Created 4 years, 10 months 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « Source/core/dom/ScriptLoader.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) 3 * (C) 1999 Antti Koivisto (koivisto@kde.org)
4 * (C) 2001 Dirk Mueller (mueller@kde.org) 4 * (C) 2001 Dirk Mueller (mueller@kde.org)
5 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserv ed. 5 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserv ed.
6 * Copyright (C) 2008 Nikolas Zimmermann <zimmermann@kde.org> 6 * Copyright (C) 2008 Nikolas Zimmermann <zimmermann@kde.org>
7 * 7 *
8 * This library is free software; you can redistribute it and/or 8 * This library is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Library General Public 9 * modify it under the terms of the GNU Library General Public
10 * License as published by the Free Software Foundation; either 10 * License as published by the Free Software Foundation; either
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after
155 m_element->dispatchEvent(Event::create(EventTypeNames::error)); 155 m_element->dispatchEvent(Event::create(EventTypeNames::error));
156 } 156 }
157 157
158 void ScriptLoader::dispatchLoadEvent() 158 void ScriptLoader::dispatchLoadEvent()
159 { 159 {
160 if (ScriptLoaderClient* client = this->client()) 160 if (ScriptLoaderClient* client = this->client())
161 client->dispatchLoadEvent(); 161 client->dispatchLoadEvent();
162 setHaveFiredLoadEvent(true); 162 setHaveFiredLoadEvent(true);
163 } 163 }
164 164
165 ScriptLoader::ScriptType ScriptLoader::isScriptTypeSupported(LegacyTypeSupport s upportLegacyTypes) const 165 bool ScriptLoader::isScriptTypeSupported(LegacyTypeSupport supportLegacyTypes) c onst
166 { 166 {
167 // FIXME: isLegacySupportedJavaScriptLanguage() is not valid HTML5. It is us ed here to maintain backwards compatibility with existing layout tests. The spec ific violations are: 167 // FIXME: isLegacySupportedJavaScriptLanguage() is not valid HTML5. It is us ed here to maintain backwards compatibility with existing layout tests. The spec ific violations are:
168 // - Allowing type=javascript. type= should only support MIME types, such as text/javascript. 168 // - Allowing type=javascript. type= should only support MIME types, such as text/javascript.
169 // - Allowing a different set of languages for language= and type=. language = supports Javascript 1.1 and 1.4-1.6, but type= does not.
170
171 String type = client()->typeAttributeValue();
172 String language = client()->languageAttributeValue();
173 if (type.isEmpty() && language.isEmpty())
174 return ScriptJavaScript; // Assume text/javascript.
175 if (type.isEmpty()) {
176 type = "text/" + language.lower();
177 if (MIMETypeRegistry::isSupportedJavaScriptMIMEType(type) || isLegacySup portedJavaScriptLanguage(language))
178 return true;
179 } else if (MIMETypeRegistry::isSupportedJavaScriptMIMEType(type.stripWhiteSp ace()) || (supportLegacyTypes == AllowLegacyTypeInTypeAttribute && isLegacySuppo rtedJavaScriptLanguage(type))) {
180 return true;
181 } else if (MIMETypeRegistry::isSupportedDartMIMEType(type.stripWhiteSpace()) ) {
182 // FIXMEDART: Added check for Dart MIME type
183 return true;
184 }
185
186 return false;
187 }
188
189
190 // FIXMEDART: Added to return ScriptType and to support Dart MIME type similar t o isScriptTypeSupported
191 // but returns a enum for the script type.
192 ScriptLoader::ScriptType ScriptLoader::getScriptTypeSupported(LegacyTypeSupport supportLegacyTypes) const
193 {
194 // FIXME: isLegacySupportedJavaScriptLanguage() is not valid HTML5. It is us ed here to maintain backwards compatibility with existing layout tests. The spec ific violations are:
195 // - Allowing type=javascript. type= should only support MIME types, such as text/javascript.
169 // - Allowing a different set of languages for language= and type=. language = supports Javascript 1.1 and 1.4-1.6, but type= does not. 196 // - Allowing a different set of languages for language= and type=. language = supports Javascript 1.1 and 1.4-1.6, but type= does not.
170 197
171 String type = client()->typeAttributeValue(); 198 String type = client()->typeAttributeValue();
172 String language = client()->languageAttributeValue(); 199 String language = client()->languageAttributeValue();
173 if (type.isEmpty() && language.isEmpty()) 200 if (type.isEmpty() && language.isEmpty())
174 return ScriptJavaScript; // Assume text/javascript. 201 return ScriptJavaScript; // Assume text/javascript.
175 if (type.isEmpty()) { 202 if (type.isEmpty()) {
176 type = "text/" + language.lower(); 203 type = "text/" + language.lower();
177 if (MIMETypeRegistry::isSupportedJavaScriptMIMEType(type) || isLegacySup portedJavaScriptLanguage(language)) 204 if (MIMETypeRegistry::isSupportedJavaScriptMIMEType(type) || isLegacySup portedJavaScriptLanguage(language))
178 return ScriptJavaScript; 205 return ScriptJavaScript;
179 } else if (MIMETypeRegistry::isSupportedJavaScriptMIMEType(type.stripWhiteSp ace()) || (supportLegacyTypes == AllowLegacyTypeInTypeAttribute && isLegacySuppo rtedJavaScriptLanguage(type))) { 206 } else if (MIMETypeRegistry::isSupportedJavaScriptMIMEType(type.stripWhiteSp ace()) || (supportLegacyTypes == AllowLegacyTypeInTypeAttribute && isLegacySuppo rtedJavaScriptLanguage(type))) {
180 return ScriptJavaScript; 207 return ScriptJavaScript;
181 } else if (MIMETypeRegistry::isSupportedDartMIMEType(type.stripWhiteSpace()) ) { 208 } else if (MIMETypeRegistry::isSupportedDartMIMEType(type.stripWhiteSpace()) ) {
209 // FIXMEDART: Added checked for Dart MIME type
182 return ScriptDart; 210 return ScriptDart;
183 } 211 }
184 212
185 return ScriptNone; 213 return ScriptNone;
186 } 214 }
187 215
188 // http://dev.w3.org/html5/spec/Overview.html#prepare-a-script 216 // http://dev.w3.org/html5/spec/Overview.html#prepare-a-script
189 bool ScriptLoader::prepareScript(const TextPosition& scriptStartPosition, Legacy TypeSupport supportLegacyTypes) 217 bool ScriptLoader::prepareScript(const TextPosition& scriptStartPosition, Legacy TypeSupport supportLegacyTypes)
190 { 218 {
191 if (m_alreadyStarted) 219 if (m_alreadyStarted)
(...skipping 15 matching lines...) Expand all
207 // FIXME: HTML5 spec says we should check that all children are either comme nts or empty text nodes. 235 // FIXME: HTML5 spec says we should check that all children are either comme nts or empty text nodes.
208 if (!client->hasSourceAttribute() && !m_element->hasChildren()) 236 if (!client->hasSourceAttribute() && !m_element->hasChildren())
209 return false; 237 return false;
210 238
211 if (!m_element->inDocument()) 239 if (!m_element->inDocument())
212 return false; 240 return false;
213 241
214 if (!isScriptTypeSupported(supportLegacyTypes)) 242 if (!isScriptTypeSupported(supportLegacyTypes))
215 return false; 243 return false;
216 244
245 // FIXMEDAT: Changed to compute the script type.
246 m_scriptType = getScriptTypeSupported(supportLegacyTypes);
247 RELEASE_ASSERT(m_scriptType != ScriptNone);
248
217 if (wasParserInserted) { 249 if (wasParserInserted) {
218 m_parserInserted = true; 250 m_parserInserted = true;
219 m_forceAsync = false; 251 m_forceAsync = false;
220 } 252 }
221 253
222 m_alreadyStarted = true; 254 m_alreadyStarted = true;
223 255
224 // FIXME: If script is parser inserted, verify it's still in the original do cument. 256 // FIXME: If script is parser inserted, verify it's still in the original do cument.
225 Document& elementDocument = m_element->document(); 257 Document& elementDocument = m_element->document();
226 Document* contextDocument = elementDocument.contextDocument().get(); 258 Document* contextDocument = elementDocument.contextDocument().get();
(...skipping 282 matching lines...) Expand 10 before | Expand all | Expand 10 after
509 if (isHTMLScriptLoader(element)) 541 if (isHTMLScriptLoader(element))
510 return toHTMLScriptElement(element)->loader(); 542 return toHTMLScriptElement(element)->loader();
511 543
512 if (isSVGScriptLoader(element)) 544 if (isSVGScriptLoader(element))
513 return toSVGScriptElement(element)->loader(); 545 return toSVGScriptElement(element)->loader();
514 546
515 return 0; 547 return 0;
516 } 548 }
517 549
518 } // namespace blink 550 } // namespace blink
OLDNEW
« no previous file with comments | « Source/core/dom/ScriptLoader.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698