Makes Document.createUniqueId() return guaranteed document-unique id's (using a counter on $doc).

Issue: 2376
Patch by: jgw
Review by: jlabanca


git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@2699 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/user/src/com/google/gwt/dom/client/Document.java b/user/src/com/google/gwt/dom/client/Document.java
index aa64009..da88b7d 100644
--- a/user/src/com/google/gwt/dom/client/Document.java
+++ b/user/src/com/google/gwt/dom/client/Document.java
@@ -23,14 +23,6 @@
  */
 public class Document extends Node {
 
-  /*
-   * Used by createUniqueId(). This is intentionally static to make the
-   * generated id unique across all documents (even though createUniqueId() only
-   * requires that an id be unique to a particular document, this will minimize
-   * the probability of accidental collisions, and is slightly more efficient).
-   */
-  private static int curUidIndex = 0;
-
   /**
    * Gets the default document. This is the document in which the module is
    * running.
@@ -597,9 +589,15 @@
    * 
    * @return a unique identifier
    */
-  public final String createUniqueId() {
-    return "uid-" + (++curUidIndex);
-  }
+  public final native String createUniqueId() /*-{
+    // In order to force uid's to be document-unique across multiple modules,
+    // we hang a counter from the document.
+    if (!this.gwt_uid) {
+      this.gwt_uid = 1;
+    }
+
+    return "gwt-uid-" + this.gwt_uid++;
+  }-*/;
 
   /**
    * The element that contains the content for the document. In documents with