Title: [87361] trunk/Source/WebCore
- Revision
- 87361
- Author
- [email protected]
- Date
- 2011-05-25 23:20:35 -0700 (Wed, 25 May 2011)
Log Message
2011-05-25 James Simonsen <[email protected]>
Reviewed by Adam Barth.
Add site-specific hack for zipcar.com with old versions of requirejs.
https://bugs.webkit.org/show_bug.cgi?id=61321
Old versions of requirejs (< 0.15.0) try to load scripts in parallel but execute them in
order. This used to work in webkit by setting a bogus script type (script/cache), then
changing the type to a valid one when they wanted to execute it. This hack translates the
behavior into the new API (by disabling forceAsync).
* html/HTMLScriptElement.cpp:
(WebCore::needsOldRequirejsQuirk): Added.
(WebCore::HTMLScriptElement::insertedIntoDocument):
If hack is needed, set a proper script type so script loads.
If script isn't async, disable forceAsync so script executes in order.
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (87360 => 87361)
--- trunk/Source/WebCore/ChangeLog 2011-05-26 06:15:19 UTC (rev 87360)
+++ trunk/Source/WebCore/ChangeLog 2011-05-26 06:20:35 UTC (rev 87361)
@@ -1,3 +1,21 @@
+2011-05-25 James Simonsen <[email protected]>
+
+ Reviewed by Adam Barth.
+
+ Add site-specific hack for zipcar.com with old versions of requirejs.
+ https://bugs.webkit.org/show_bug.cgi?id=61321
+
+ Old versions of requirejs (< 0.15.0) try to load scripts in parallel but execute them in
+ order. This used to work in webkit by setting a bogus script type (script/cache), then
+ changing the type to a valid one when they wanted to execute it. This hack translates the
+ behavior into the new API (by disabling forceAsync).
+
+ * html/HTMLScriptElement.cpp:
+ (WebCore::needsOldRequirejsQuirk): Added.
+ (WebCore::HTMLScriptElement::insertedIntoDocument):
+ If hack is needed, set a proper script type so script loads.
+ If script isn't async, disable forceAsync so script executes in order.
+
2011-05-25 Andreas Kling <[email protected]>
Reviewed by David Levin.
Modified: trunk/Source/WebCore/html/HTMLScriptElement.cpp (87360 => 87361)
--- trunk/Source/WebCore/html/HTMLScriptElement.cpp 2011-05-26 06:15:19 UTC (rev 87360)
+++ trunk/Source/WebCore/html/HTMLScriptElement.cpp 2011-05-26 06:20:35 UTC (rev 87361)
@@ -29,6 +29,7 @@
#include "EventNames.h"
#include "HTMLNames.h"
#include "ScriptEventListener.h"
+#include "Settings.h"
#include "Text.h"
namespace WebCore {
@@ -81,8 +82,33 @@
HTMLElement::parseMappedAttribute(attr);
}
+static bool needsOldRequirejsQuirk(HTMLScriptElement* element)
+{
+ if (element->fastGetAttribute(typeAttr) != "script/cache")
+ return false;
+
+ Document* document = element->document();
+
+ const KURL& url = ""
+ if (!equalIgnoringCase(url.host(), "www.zipcar.com"))
+ return false;
+
+ Settings* settings = document->settings();
+ if (!settings)
+ return false;
+ if (!settings->needsSiteSpecificQuirks())
+ return false;
+
+ return true;
+}
+
void HTMLScriptElement::insertedIntoDocument()
{
+ if (needsOldRequirejsQuirk(this)) {
+ if (!asyncAttributeValue())
+ handleAsyncAttribute(); // Clear forceAsync, so this script loads in parallel, but executes in order.
+ setAttribute(typeAttr, "text/_javascript_");
+ }
HTMLElement::insertedIntoDocument();
ScriptElement::insertedIntoDocument();
}
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes