Another fix for the Window __gwt_initWindowHandlers method. I was using ScriptElement.setText to set the source code in a script tag, but Safari 2 does not support setText. This patch adds a Document.createScriptElement(String source) method that uses the correct methods via a DeferredBinding.
Patch by: jlabanca
Review by: jgw (desk)
git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@3559 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/user/src/com/google/gwt/dom/client/DOMImpl.java b/user/src/com/google/gwt/dom/client/DOMImpl.java
index 88e4c96..c4a10d1 100644
--- a/user/src/com/google/gwt/dom/client/DOMImpl.java
+++ b/user/src/com/google/gwt/dom/client/DOMImpl.java
@@ -33,6 +33,12 @@
public abstract InputElement createInputRadioElement(String name);
+ public ScriptElement createScriptElement(String source) {
+ ScriptElement elem = (ScriptElement) createElement("script");
+ elem.setText(source);
+ return elem;
+ }
+
public SelectElement createSelectElement(boolean multiple) {
SelectElement select = (SelectElement) createElement("select");
if (multiple) {
diff --git a/user/src/com/google/gwt/dom/client/DOMImplSafari.java b/user/src/com/google/gwt/dom/client/DOMImplSafari.java
index 1a5d930..2265d48 100644
--- a/user/src/com/google/gwt/dom/client/DOMImplSafari.java
+++ b/user/src/com/google/gwt/dom/client/DOMImplSafari.java
@@ -19,6 +19,15 @@
* Safari implementation of {@link com.google.gwt.user.client.impl.DOMImpl}.
*/
class DOMImplSafari extends DOMImplStandard {
+ /**
+ * Safari 2 does not support {@link ScriptElement#setText(String)}.
+ */
+ @Override
+ public ScriptElement createScriptElement(String source) {
+ ScriptElement elem = (ScriptElement) createElement("script");
+ elem.setInnerText(source);
+ return elem;
+ }
@Override
public native int getAbsoluteLeft(Element elem) /*-{
diff --git a/user/src/com/google/gwt/dom/client/Document.java b/user/src/com/google/gwt/dom/client/Document.java
index eb07ee3..3d10a25 100644
--- a/user/src/com/google/gwt/dom/client/Document.java
+++ b/user/src/com/google/gwt/dom/client/Document.java
@@ -437,6 +437,16 @@
}
/**
+ * Creates a <script> element.
+ *
+ * @param source the source code to set inside the element
+ * @return the newly created element
+ */
+ public final ScriptElement createScriptElement(String source) {
+ return DOMImpl.impl.createScriptElement(source);
+ }
+
+ /**
* Creates a <select> element.
*
* @return the newly created element
diff --git a/user/src/com/google/gwt/user/client/Window.java b/user/src/com/google/gwt/user/client/Window.java
index 646d77e..367e39a 100644
--- a/user/src/com/google/gwt/user/client/Window.java
+++ b/user/src/com/google/gwt/user/client/Window.java
@@ -665,10 +665,9 @@
handlersAreInitialized = true;
// Embed the init script on the page
- ScriptElement scriptElem = Document.get().createScriptElement();
String initFunc = getInitHandlerMethodString().replaceFirst("function",
"function __gwt_initWindowHandlers");
- scriptElem.setText(initFunc);
+ ScriptElement scriptElem = Document.get().createScriptElement(initFunc);
Document.get().getBody().appendChild(scriptElem);
// Initialize the handlers