Merging releases/1.5 into trunk

svn merge -r3550:3556 https://google-web-toolkit.googlecode.com/svn/releases/1.5 .



git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@3591 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/jni/linux/ExternalWrapper.cpp b/jni/linux/ExternalWrapper.cpp
index 12e7324..990fc99 100644
--- a/jni/linux/ExternalWrapper.cpp
+++ b/jni/linux/ExternalWrapper.cpp
@@ -68,6 +68,11 @@
     moduleName = JS_ValueToString(cx, argv[1]);
   }
 
+  JSString* version = 0;
+  if (argc > 2 && argv[2] != JSVAL_NULL && argv[2] != JSVAL_VOID) {
+    version = JS_ValueToString(cx, argv[2]);
+  }
+
   nsCOMPtr<nsIScriptGlobalObject> scriptGlobal(0);
   if (scriptWindow) {
     nsCOMPtr<nsIXPConnect> xpConnect = do_GetService(nsIXPConnect::GetCID());
@@ -93,6 +98,19 @@
     tracer.log("null module name");
   }
 
+  jstring jVersion(0);
+  if (version) {
+    jVersion = savedJNIEnv->NewString(JS_GetStringChars(version),
+        JS_GetStringLength(version));
+    if (!jVersion || savedJNIEnv->ExceptionCheck()) {
+      tracer.setFail("can't get module name in Java string");
+      return JS_FALSE;
+    }
+    tracer.log("version=%s", JS_GetStringBytes(version));
+  } else {
+    tracer.log("null version");
+  }
+
   jobject externalObject = NS_REINTERPRET_CAST(jobject, JS_GetPrivate(cx, obj));
   jclass objClass = savedJNIEnv->GetObjectClass(externalObject);
   if (!objClass || savedJNIEnv->ExceptionCheck()) {
@@ -101,7 +119,7 @@
   }
 
   jmethodID methodID = savedJNIEnv->GetMethodID(objClass, "gwtOnLoad",
-      "(ILjava/lang/String;)Z");
+      "(ILjava/lang/String;Ljava/lang/String;)Z");
   if (!methodID || savedJNIEnv->ExceptionCheck()) {
     tracer.setFail("can't get gwtOnLoad method");
     return JS_FALSE;
@@ -110,7 +128,7 @@
   tracer.log("scriptGlobal=%08x", unsigned(scriptGlobal.get()));
 
   jboolean result = savedJNIEnv->CallBooleanMethod(externalObject, methodID,
-      NS_REINTERPRET_CAST(jint, scriptGlobal.get()), jModuleName);
+      NS_REINTERPRET_CAST(jint, scriptGlobal.get()), jModuleName, jVersion);
   if (savedJNIEnv->ExceptionCheck()) {
     tracer.setFail("LowLevelMoz.ExternalObject.gwtOnLoad() threw an exception");
     return JS_FALSE;