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