Bug 1186467 - Update generated JNI bindings; r=me
authorJim Chen <nchen@mozilla.com>
Tue, 04 Aug 2015 17:47:28 -0400
changeset 287890 68f6ca13d0444d748263434fb988e87d936e64d7
parent 287889 c5e9a116e55913cae4be231ba549719375907ed2
child 287891 a9b044bd018a4e4f9a10466f47aa24b6574a8c4a
push id5067
push userraliiev@mozilla.com
push dateMon, 21 Sep 2015 14:04:52 +0000
treeherdermozilla-beta@14221ffe5b2f [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersme
bugs1186467
milestone42.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1186467 - Update generated JNI bindings; r=me
mozglue/android/jni-stubs.inc
widget/android/GeneratedJNINatives.h
widget/android/GeneratedJNIWrappers.cpp
widget/android/GeneratedJNIWrappers.h
--- a/mozglue/android/jni-stubs.inc
+++ b/mozglue/android/jni-stubs.inc
@@ -526,559 +526,8 @@ Java_org_mozilla_gecko_gfx_NativePanZoom
     return f_Java_org_mozilla_gecko_gfx_NativePanZoomController_getOverScrollMode(arg0, arg1);
 }
 #endif
 
 #ifdef JNI_BINDINGS
   xul_dlsym("Java_org_mozilla_gecko_gfx_NativePanZoomController_getOverScrollMode", &f_Java_org_mozilla_gecko_gfx_NativePanZoomController_getOverScrollMode);
 #endif
 
-#ifdef JNI_STUBS
-
-typedef jobject (*Java_org_mozilla_gecko_util_NativeJSContainer_clone_t)(JNIEnv *, jobject);
-static Java_org_mozilla_gecko_util_NativeJSContainer_clone_t f_Java_org_mozilla_gecko_util_NativeJSContainer_clone;
-extern "C" NS_EXPORT jobject JNICALL
-Java_org_mozilla_gecko_util_NativeJSContainer_clone(JNIEnv * arg0, jobject arg1) {
-    if (!f_Java_org_mozilla_gecko_util_NativeJSContainer_clone) {
-        arg0->ThrowNew(arg0->FindClass("java/lang/UnsupportedOperationException"),
-                       "JNI Function called before it was loaded");
-        return nullptr;
-    }
-    return f_Java_org_mozilla_gecko_util_NativeJSContainer_clone(arg0, arg1);
-}
-#endif
-
-#ifdef JNI_BINDINGS
-  xul_dlsym("Java_org_mozilla_gecko_util_NativeJSContainer_clone", &f_Java_org_mozilla_gecko_util_NativeJSContainer_clone);
-#endif
-
-#ifdef JNI_STUBS
-
-typedef void (*Java_org_mozilla_gecko_util_NativeJSContainer_dispose_t)(JNIEnv *, jobject);
-static Java_org_mozilla_gecko_util_NativeJSContainer_dispose_t f_Java_org_mozilla_gecko_util_NativeJSContainer_dispose;
-extern "C" NS_EXPORT void JNICALL
-Java_org_mozilla_gecko_util_NativeJSContainer_dispose(JNIEnv * arg0, jobject arg1) {
-    if (!f_Java_org_mozilla_gecko_util_NativeJSContainer_dispose) {
-        arg0->ThrowNew(arg0->FindClass("java/lang/UnsupportedOperationException"),
-                       "JNI Function called before it was loaded");
-        return ;
-    }
-     f_Java_org_mozilla_gecko_util_NativeJSContainer_dispose(arg0, arg1);
-}
-#endif
-
-#ifdef JNI_BINDINGS
-  xul_dlsym("Java_org_mozilla_gecko_util_NativeJSContainer_dispose", &f_Java_org_mozilla_gecko_util_NativeJSContainer_dispose);
-#endif
-
-#ifdef JNI_STUBS
-
-typedef jboolean (*Java_org_mozilla_gecko_util_NativeJSObject_getBoolean_t)(JNIEnv *, jobject, jstring);
-static Java_org_mozilla_gecko_util_NativeJSObject_getBoolean_t f_Java_org_mozilla_gecko_util_NativeJSObject_getBoolean;
-extern "C" NS_EXPORT jboolean JNICALL
-Java_org_mozilla_gecko_util_NativeJSObject_getBoolean(JNIEnv * arg0, jobject arg1, jstring arg2) {
-    if (!f_Java_org_mozilla_gecko_util_NativeJSObject_getBoolean) {
-        arg0->ThrowNew(arg0->FindClass("java/lang/UnsupportedOperationException"),
-                       "JNI Function called before it was loaded");
-        return false;
-    }
-    return f_Java_org_mozilla_gecko_util_NativeJSObject_getBoolean(arg0, arg1, arg2);
-}
-#endif
-
-#ifdef JNI_BINDINGS
-  xul_dlsym("Java_org_mozilla_gecko_util_NativeJSObject_getBoolean", &f_Java_org_mozilla_gecko_util_NativeJSObject_getBoolean);
-#endif
-
-#ifdef JNI_STUBS
-
-typedef jboolean (*Java_org_mozilla_gecko_util_NativeJSObject_optBoolean_t)(JNIEnv *, jobject, jstring, jboolean);
-static Java_org_mozilla_gecko_util_NativeJSObject_optBoolean_t f_Java_org_mozilla_gecko_util_NativeJSObject_optBoolean;
-extern "C" NS_EXPORT jboolean JNICALL
-Java_org_mozilla_gecko_util_NativeJSObject_optBoolean(JNIEnv * arg0, jobject arg1, jstring arg2, jboolean arg3) {
-    if (!f_Java_org_mozilla_gecko_util_NativeJSObject_optBoolean) {
-        arg0->ThrowNew(arg0->FindClass("java/lang/UnsupportedOperationException"),
-                       "JNI Function called before it was loaded");
-        return false;
-    }
-    return f_Java_org_mozilla_gecko_util_NativeJSObject_optBoolean(arg0, arg1, arg2, arg3);
-}
-#endif
-
-#ifdef JNI_BINDINGS
-  xul_dlsym("Java_org_mozilla_gecko_util_NativeJSObject_optBoolean", &f_Java_org_mozilla_gecko_util_NativeJSObject_optBoolean);
-#endif
-
-#ifdef JNI_STUBS
-
-typedef jbooleanArray (*Java_org_mozilla_gecko_util_NativeJSObject_getBooleanArray_t)(JNIEnv *, jobject, jstring);
-static Java_org_mozilla_gecko_util_NativeJSObject_getBooleanArray_t f_Java_org_mozilla_gecko_util_NativeJSObject_getBooleanArray;
-extern "C" NS_EXPORT jbooleanArray JNICALL
-Java_org_mozilla_gecko_util_NativeJSObject_getBooleanArray(JNIEnv * arg0, jobject arg1, jstring arg2) {
-    if (!f_Java_org_mozilla_gecko_util_NativeJSObject_getBooleanArray) {
-        arg0->ThrowNew(arg0->FindClass("java/lang/UnsupportedOperationException"),
-                       "JNI Function called before it was loaded");
-        return nullptr;
-    }
-    return f_Java_org_mozilla_gecko_util_NativeJSObject_getBooleanArray(arg0, arg1, arg2);
-}
-#endif
-
-#ifdef JNI_BINDINGS
-  xul_dlsym("Java_org_mozilla_gecko_util_NativeJSObject_getBooleanArray", &f_Java_org_mozilla_gecko_util_NativeJSObject_getBooleanArray);
-#endif
-
-#ifdef JNI_STUBS
-
-typedef jbooleanArray (*Java_org_mozilla_gecko_util_NativeJSObject_optBooleanArray_t)(JNIEnv *, jobject, jstring, jbooleanArray);
-static Java_org_mozilla_gecko_util_NativeJSObject_optBooleanArray_t f_Java_org_mozilla_gecko_util_NativeJSObject_optBooleanArray;
-extern "C" NS_EXPORT jbooleanArray JNICALL
-Java_org_mozilla_gecko_util_NativeJSObject_optBooleanArray(JNIEnv * arg0, jobject arg1, jstring arg2, jbooleanArray arg3) {
-    if (!f_Java_org_mozilla_gecko_util_NativeJSObject_optBooleanArray) {
-        arg0->ThrowNew(arg0->FindClass("java/lang/UnsupportedOperationException"),
-                       "JNI Function called before it was loaded");
-        return nullptr;
-    }
-    return f_Java_org_mozilla_gecko_util_NativeJSObject_optBooleanArray(arg0, arg1, arg2, arg3);
-}
-#endif
-
-#ifdef JNI_BINDINGS
-  xul_dlsym("Java_org_mozilla_gecko_util_NativeJSObject_optBooleanArray", &f_Java_org_mozilla_gecko_util_NativeJSObject_optBooleanArray);
-#endif
-
-#ifdef JNI_STUBS
-
-typedef jobject (*Java_org_mozilla_gecko_util_NativeJSObject_getBundle_t)(JNIEnv *, jobject, jstring);
-static Java_org_mozilla_gecko_util_NativeJSObject_getBundle_t f_Java_org_mozilla_gecko_util_NativeJSObject_getBundle;
-extern "C" NS_EXPORT jobject JNICALL
-Java_org_mozilla_gecko_util_NativeJSObject_getBundle(JNIEnv * arg0, jobject arg1, jstring arg2) {
-    if (!f_Java_org_mozilla_gecko_util_NativeJSObject_getBundle) {
-        arg0->ThrowNew(arg0->FindClass("java/lang/UnsupportedOperationException"),
-                       "JNI Function called before it was loaded");
-        return nullptr;
-    }
-    return f_Java_org_mozilla_gecko_util_NativeJSObject_getBundle(arg0, arg1, arg2);
-}
-#endif
-
-#ifdef JNI_BINDINGS
-  xul_dlsym("Java_org_mozilla_gecko_util_NativeJSObject_getBundle", &f_Java_org_mozilla_gecko_util_NativeJSObject_getBundle);
-#endif
-
-#ifdef JNI_STUBS
-
-typedef jobject (*Java_org_mozilla_gecko_util_NativeJSObject_optBundle_t)(JNIEnv *, jobject, jstring, jobject);
-static Java_org_mozilla_gecko_util_NativeJSObject_optBundle_t f_Java_org_mozilla_gecko_util_NativeJSObject_optBundle;
-extern "C" NS_EXPORT jobject JNICALL
-Java_org_mozilla_gecko_util_NativeJSObject_optBundle(JNIEnv * arg0, jobject arg1, jstring arg2, jobject arg3) {
-    if (!f_Java_org_mozilla_gecko_util_NativeJSObject_optBundle) {
-        arg0->ThrowNew(arg0->FindClass("java/lang/UnsupportedOperationException"),
-                       "JNI Function called before it was loaded");
-        return nullptr;
-    }
-    return f_Java_org_mozilla_gecko_util_NativeJSObject_optBundle(arg0, arg1, arg2, arg3);
-}
-#endif
-
-#ifdef JNI_BINDINGS
-  xul_dlsym("Java_org_mozilla_gecko_util_NativeJSObject_optBundle", &f_Java_org_mozilla_gecko_util_NativeJSObject_optBundle);
-#endif
-
-#ifdef JNI_STUBS
-
-typedef jobjectArray (*Java_org_mozilla_gecko_util_NativeJSObject_getBundleArray_t)(JNIEnv *, jobject, jstring);
-static Java_org_mozilla_gecko_util_NativeJSObject_getBundleArray_t f_Java_org_mozilla_gecko_util_NativeJSObject_getBundleArray;
-extern "C" NS_EXPORT jobjectArray JNICALL
-Java_org_mozilla_gecko_util_NativeJSObject_getBundleArray(JNIEnv * arg0, jobject arg1, jstring arg2) {
-    if (!f_Java_org_mozilla_gecko_util_NativeJSObject_getBundleArray) {
-        arg0->ThrowNew(arg0->FindClass("java/lang/UnsupportedOperationException"),
-                       "JNI Function called before it was loaded");
-        return nullptr;
-    }
-    return f_Java_org_mozilla_gecko_util_NativeJSObject_getBundleArray(arg0, arg1, arg2);
-}
-#endif
-
-#ifdef JNI_BINDINGS
-  xul_dlsym("Java_org_mozilla_gecko_util_NativeJSObject_getBundleArray", &f_Java_org_mozilla_gecko_util_NativeJSObject_getBundleArray);
-#endif
-
-#ifdef JNI_STUBS
-
-typedef jobjectArray (*Java_org_mozilla_gecko_util_NativeJSObject_optBundleArray_t)(JNIEnv *, jobject, jstring, jobjectArray);
-static Java_org_mozilla_gecko_util_NativeJSObject_optBundleArray_t f_Java_org_mozilla_gecko_util_NativeJSObject_optBundleArray;
-extern "C" NS_EXPORT jobjectArray JNICALL
-Java_org_mozilla_gecko_util_NativeJSObject_optBundleArray(JNIEnv * arg0, jobject arg1, jstring arg2, jobjectArray arg3) {
-    if (!f_Java_org_mozilla_gecko_util_NativeJSObject_optBundleArray) {
-        arg0->ThrowNew(arg0->FindClass("java/lang/UnsupportedOperationException"),
-                       "JNI Function called before it was loaded");
-        return nullptr;
-    }
-    return f_Java_org_mozilla_gecko_util_NativeJSObject_optBundleArray(arg0, arg1, arg2, arg3);
-}
-#endif
-
-#ifdef JNI_BINDINGS
-  xul_dlsym("Java_org_mozilla_gecko_util_NativeJSObject_optBundleArray", &f_Java_org_mozilla_gecko_util_NativeJSObject_optBundleArray);
-#endif
-
-#ifdef JNI_STUBS
-
-typedef jdouble (*Java_org_mozilla_gecko_util_NativeJSObject_getDouble_t)(JNIEnv *, jobject, jstring);
-static Java_org_mozilla_gecko_util_NativeJSObject_getDouble_t f_Java_org_mozilla_gecko_util_NativeJSObject_getDouble;
-extern "C" NS_EXPORT jdouble JNICALL
-Java_org_mozilla_gecko_util_NativeJSObject_getDouble(JNIEnv * arg0, jobject arg1, jstring arg2) {
-    if (!f_Java_org_mozilla_gecko_util_NativeJSObject_getDouble) {
-        arg0->ThrowNew(arg0->FindClass("java/lang/UnsupportedOperationException"),
-                       "JNI Function called before it was loaded");
-        return 0;
-    }
-    return f_Java_org_mozilla_gecko_util_NativeJSObject_getDouble(arg0, arg1, arg2);
-}
-#endif
-
-#ifdef JNI_BINDINGS
-  xul_dlsym("Java_org_mozilla_gecko_util_NativeJSObject_getDouble", &f_Java_org_mozilla_gecko_util_NativeJSObject_getDouble);
-#endif
-
-#ifdef JNI_STUBS
-
-typedef jdouble (*Java_org_mozilla_gecko_util_NativeJSObject_optDouble_t)(JNIEnv *, jobject, jstring, jdouble);
-static Java_org_mozilla_gecko_util_NativeJSObject_optDouble_t f_Java_org_mozilla_gecko_util_NativeJSObject_optDouble;
-extern "C" NS_EXPORT jdouble JNICALL
-Java_org_mozilla_gecko_util_NativeJSObject_optDouble(JNIEnv * arg0, jobject arg1, jstring arg2, jdouble arg3) {
-    if (!f_Java_org_mozilla_gecko_util_NativeJSObject_optDouble) {
-        arg0->ThrowNew(arg0->FindClass("java/lang/UnsupportedOperationException"),
-                       "JNI Function called before it was loaded");
-        return 0;
-    }
-    return f_Java_org_mozilla_gecko_util_NativeJSObject_optDouble(arg0, arg1, arg2, arg3);
-}
-#endif
-
-#ifdef JNI_BINDINGS
-  xul_dlsym("Java_org_mozilla_gecko_util_NativeJSObject_optDouble", &f_Java_org_mozilla_gecko_util_NativeJSObject_optDouble);
-#endif
-
-#ifdef JNI_STUBS
-
-typedef jdoubleArray (*Java_org_mozilla_gecko_util_NativeJSObject_getDoubleArray_t)(JNIEnv *, jobject, jstring);
-static Java_org_mozilla_gecko_util_NativeJSObject_getDoubleArray_t f_Java_org_mozilla_gecko_util_NativeJSObject_getDoubleArray;
-extern "C" NS_EXPORT jdoubleArray JNICALL
-Java_org_mozilla_gecko_util_NativeJSObject_getDoubleArray(JNIEnv * arg0, jobject arg1, jstring arg2) {
-    if (!f_Java_org_mozilla_gecko_util_NativeJSObject_getDoubleArray) {
-        arg0->ThrowNew(arg0->FindClass("java/lang/UnsupportedOperationException"),
-                       "JNI Function called before it was loaded");
-        return nullptr;
-    }
-    return f_Java_org_mozilla_gecko_util_NativeJSObject_getDoubleArray(arg0, arg1, arg2);
-}
-#endif
-
-#ifdef JNI_BINDINGS
-  xul_dlsym("Java_org_mozilla_gecko_util_NativeJSObject_getDoubleArray", &f_Java_org_mozilla_gecko_util_NativeJSObject_getDoubleArray);
-#endif
-
-#ifdef JNI_STUBS
-
-typedef jdoubleArray (*Java_org_mozilla_gecko_util_NativeJSObject_optDoubleArray_t)(JNIEnv *, jobject, jstring, jdoubleArray);
-static Java_org_mozilla_gecko_util_NativeJSObject_optDoubleArray_t f_Java_org_mozilla_gecko_util_NativeJSObject_optDoubleArray;
-extern "C" NS_EXPORT jdoubleArray JNICALL
-Java_org_mozilla_gecko_util_NativeJSObject_optDoubleArray(JNIEnv * arg0, jobject arg1, jstring arg2, jdoubleArray arg3) {
-    if (!f_Java_org_mozilla_gecko_util_NativeJSObject_optDoubleArray) {
-        arg0->ThrowNew(arg0->FindClass("java/lang/UnsupportedOperationException"),
-                       "JNI Function called before it was loaded");
-        return nullptr;
-    }
-    return f_Java_org_mozilla_gecko_util_NativeJSObject_optDoubleArray(arg0, arg1, arg2, arg3);
-}
-#endif
-
-#ifdef JNI_BINDINGS
-  xul_dlsym("Java_org_mozilla_gecko_util_NativeJSObject_optDoubleArray", &f_Java_org_mozilla_gecko_util_NativeJSObject_optDoubleArray);
-#endif
-
-#ifdef JNI_STUBS
-
-typedef jint (*Java_org_mozilla_gecko_util_NativeJSObject_getInt_t)(JNIEnv *, jobject, jstring);
-static Java_org_mozilla_gecko_util_NativeJSObject_getInt_t f_Java_org_mozilla_gecko_util_NativeJSObject_getInt;
-extern "C" NS_EXPORT jint JNICALL
-Java_org_mozilla_gecko_util_NativeJSObject_getInt(JNIEnv * arg0, jobject arg1, jstring arg2) {
-    if (!f_Java_org_mozilla_gecko_util_NativeJSObject_getInt) {
-        arg0->ThrowNew(arg0->FindClass("java/lang/UnsupportedOperationException"),
-                       "JNI Function called before it was loaded");
-        return 0;
-    }
-    return f_Java_org_mozilla_gecko_util_NativeJSObject_getInt(arg0, arg1, arg2);
-}
-#endif
-
-#ifdef JNI_BINDINGS
-  xul_dlsym("Java_org_mozilla_gecko_util_NativeJSObject_getInt", &f_Java_org_mozilla_gecko_util_NativeJSObject_getInt);
-#endif
-
-#ifdef JNI_STUBS
-
-typedef jint (*Java_org_mozilla_gecko_util_NativeJSObject_optInt_t)(JNIEnv *, jobject, jstring, jint);
-static Java_org_mozilla_gecko_util_NativeJSObject_optInt_t f_Java_org_mozilla_gecko_util_NativeJSObject_optInt;
-extern "C" NS_EXPORT jint JNICALL
-Java_org_mozilla_gecko_util_NativeJSObject_optInt(JNIEnv * arg0, jobject arg1, jstring arg2, jint arg3) {
-    if (!f_Java_org_mozilla_gecko_util_NativeJSObject_optInt) {
-        arg0->ThrowNew(arg0->FindClass("java/lang/UnsupportedOperationException"),
-                       "JNI Function called before it was loaded");
-        return 0;
-    }
-    return f_Java_org_mozilla_gecko_util_NativeJSObject_optInt(arg0, arg1, arg2, arg3);
-}
-#endif
-
-#ifdef JNI_BINDINGS
-  xul_dlsym("Java_org_mozilla_gecko_util_NativeJSObject_optInt", &f_Java_org_mozilla_gecko_util_NativeJSObject_optInt);
-#endif
-
-#ifdef JNI_STUBS
-
-typedef jintArray (*Java_org_mozilla_gecko_util_NativeJSObject_getIntArray_t)(JNIEnv *, jobject, jstring);
-static Java_org_mozilla_gecko_util_NativeJSObject_getIntArray_t f_Java_org_mozilla_gecko_util_NativeJSObject_getIntArray;
-extern "C" NS_EXPORT jintArray JNICALL
-Java_org_mozilla_gecko_util_NativeJSObject_getIntArray(JNIEnv * arg0, jobject arg1, jstring arg2) {
-    if (!f_Java_org_mozilla_gecko_util_NativeJSObject_getIntArray) {
-        arg0->ThrowNew(arg0->FindClass("java/lang/UnsupportedOperationException"),
-                       "JNI Function called before it was loaded");
-        return nullptr;
-    }
-    return f_Java_org_mozilla_gecko_util_NativeJSObject_getIntArray(arg0, arg1, arg2);
-}
-#endif
-
-#ifdef JNI_BINDINGS
-  xul_dlsym("Java_org_mozilla_gecko_util_NativeJSObject_getIntArray", &f_Java_org_mozilla_gecko_util_NativeJSObject_getIntArray);
-#endif
-
-#ifdef JNI_STUBS
-
-typedef jintArray (*Java_org_mozilla_gecko_util_NativeJSObject_optIntArray_t)(JNIEnv *, jobject, jstring, jintArray);
-static Java_org_mozilla_gecko_util_NativeJSObject_optIntArray_t f_Java_org_mozilla_gecko_util_NativeJSObject_optIntArray;
-extern "C" NS_EXPORT jintArray JNICALL
-Java_org_mozilla_gecko_util_NativeJSObject_optIntArray(JNIEnv * arg0, jobject arg1, jstring arg2, jintArray arg3) {
-    if (!f_Java_org_mozilla_gecko_util_NativeJSObject_optIntArray) {
-        arg0->ThrowNew(arg0->FindClass("java/lang/UnsupportedOperationException"),
-                       "JNI Function called before it was loaded");
-        return nullptr;
-    }
-    return f_Java_org_mozilla_gecko_util_NativeJSObject_optIntArray(arg0, arg1, arg2, arg3);
-}
-#endif
-
-#ifdef JNI_BINDINGS
-  xul_dlsym("Java_org_mozilla_gecko_util_NativeJSObject_optIntArray", &f_Java_org_mozilla_gecko_util_NativeJSObject_optIntArray);
-#endif
-
-#ifdef JNI_STUBS
-
-typedef jobject (*Java_org_mozilla_gecko_util_NativeJSObject_getObject_t)(JNIEnv *, jobject, jstring);
-static Java_org_mozilla_gecko_util_NativeJSObject_getObject_t f_Java_org_mozilla_gecko_util_NativeJSObject_getObject;
-extern "C" NS_EXPORT jobject JNICALL
-Java_org_mozilla_gecko_util_NativeJSObject_getObject(JNIEnv * arg0, jobject arg1, jstring arg2) {
-    if (!f_Java_org_mozilla_gecko_util_NativeJSObject_getObject) {
-        arg0->ThrowNew(arg0->FindClass("java/lang/UnsupportedOperationException"),
-                       "JNI Function called before it was loaded");
-        return nullptr;
-    }
-    return f_Java_org_mozilla_gecko_util_NativeJSObject_getObject(arg0, arg1, arg2);
-}
-#endif
-
-#ifdef JNI_BINDINGS
-  xul_dlsym("Java_org_mozilla_gecko_util_NativeJSObject_getObject", &f_Java_org_mozilla_gecko_util_NativeJSObject_getObject);
-#endif
-
-#ifdef JNI_STUBS
-
-typedef jobject (*Java_org_mozilla_gecko_util_NativeJSObject_optObject_t)(JNIEnv *, jobject, jstring, jobject);
-static Java_org_mozilla_gecko_util_NativeJSObject_optObject_t f_Java_org_mozilla_gecko_util_NativeJSObject_optObject;
-extern "C" NS_EXPORT jobject JNICALL
-Java_org_mozilla_gecko_util_NativeJSObject_optObject(JNIEnv * arg0, jobject arg1, jstring arg2, jobject arg3) {
-    if (!f_Java_org_mozilla_gecko_util_NativeJSObject_optObject) {
-        arg0->ThrowNew(arg0->FindClass("java/lang/UnsupportedOperationException"),
-                       "JNI Function called before it was loaded");
-        return nullptr;
-    }
-    return f_Java_org_mozilla_gecko_util_NativeJSObject_optObject(arg0, arg1, arg2, arg3);
-}
-#endif
-
-#ifdef JNI_BINDINGS
-  xul_dlsym("Java_org_mozilla_gecko_util_NativeJSObject_optObject", &f_Java_org_mozilla_gecko_util_NativeJSObject_optObject);
-#endif
-
-#ifdef JNI_STUBS
-
-typedef jobjectArray (*Java_org_mozilla_gecko_util_NativeJSObject_getObjectArray_t)(JNIEnv *, jobject, jstring);
-static Java_org_mozilla_gecko_util_NativeJSObject_getObjectArray_t f_Java_org_mozilla_gecko_util_NativeJSObject_getObjectArray;
-extern "C" NS_EXPORT jobjectArray JNICALL
-Java_org_mozilla_gecko_util_NativeJSObject_getObjectArray(JNIEnv * arg0, jobject arg1, jstring arg2) {
-    if (!f_Java_org_mozilla_gecko_util_NativeJSObject_getObjectArray) {
-        arg0->ThrowNew(arg0->FindClass("java/lang/UnsupportedOperationException"),
-                       "JNI Function called before it was loaded");
-        return nullptr;
-    }
-    return f_Java_org_mozilla_gecko_util_NativeJSObject_getObjectArray(arg0, arg1, arg2);
-}
-#endif
-
-#ifdef JNI_BINDINGS
-  xul_dlsym("Java_org_mozilla_gecko_util_NativeJSObject_getObjectArray", &f_Java_org_mozilla_gecko_util_NativeJSObject_getObjectArray);
-#endif
-
-#ifdef JNI_STUBS
-
-typedef jobjectArray (*Java_org_mozilla_gecko_util_NativeJSObject_optObjectArray_t)(JNIEnv *, jobject, jstring, jobjectArray);
-static Java_org_mozilla_gecko_util_NativeJSObject_optObjectArray_t f_Java_org_mozilla_gecko_util_NativeJSObject_optObjectArray;
-extern "C" NS_EXPORT jobjectArray JNICALL
-Java_org_mozilla_gecko_util_NativeJSObject_optObjectArray(JNIEnv * arg0, jobject arg1, jstring arg2, jobjectArray arg3) {
-    if (!f_Java_org_mozilla_gecko_util_NativeJSObject_optObjectArray) {
-        arg0->ThrowNew(arg0->FindClass("java/lang/UnsupportedOperationException"),
-                       "JNI Function called before it was loaded");
-        return nullptr;
-    }
-    return f_Java_org_mozilla_gecko_util_NativeJSObject_optObjectArray(arg0, arg1, arg2, arg3);
-}
-#endif
-
-#ifdef JNI_BINDINGS
-  xul_dlsym("Java_org_mozilla_gecko_util_NativeJSObject_optObjectArray", &f_Java_org_mozilla_gecko_util_NativeJSObject_optObjectArray);
-#endif
-
-#ifdef JNI_STUBS
-
-typedef jstring (*Java_org_mozilla_gecko_util_NativeJSObject_getString_t)(JNIEnv *, jobject, jstring);
-static Java_org_mozilla_gecko_util_NativeJSObject_getString_t f_Java_org_mozilla_gecko_util_NativeJSObject_getString;
-extern "C" NS_EXPORT jstring JNICALL
-Java_org_mozilla_gecko_util_NativeJSObject_getString(JNIEnv * arg0, jobject arg1, jstring arg2) {
-    if (!f_Java_org_mozilla_gecko_util_NativeJSObject_getString) {
-        arg0->ThrowNew(arg0->FindClass("java/lang/UnsupportedOperationException"),
-                       "JNI Function called before it was loaded");
-        return nullptr;
-    }
-    return f_Java_org_mozilla_gecko_util_NativeJSObject_getString(arg0, arg1, arg2);
-}
-#endif
-
-#ifdef JNI_BINDINGS
-  xul_dlsym("Java_org_mozilla_gecko_util_NativeJSObject_getString", &f_Java_org_mozilla_gecko_util_NativeJSObject_getString);
-#endif
-
-#ifdef JNI_STUBS
-
-typedef jstring (*Java_org_mozilla_gecko_util_NativeJSObject_optString_t)(JNIEnv *, jobject, jstring, jstring);
-static Java_org_mozilla_gecko_util_NativeJSObject_optString_t f_Java_org_mozilla_gecko_util_NativeJSObject_optString;
-extern "C" NS_EXPORT jstring JNICALL
-Java_org_mozilla_gecko_util_NativeJSObject_optString(JNIEnv * arg0, jobject arg1, jstring arg2, jstring arg3) {
-    if (!f_Java_org_mozilla_gecko_util_NativeJSObject_optString) {
-        arg0->ThrowNew(arg0->FindClass("java/lang/UnsupportedOperationException"),
-                       "JNI Function called before it was loaded");
-        return nullptr;
-    }
-    return f_Java_org_mozilla_gecko_util_NativeJSObject_optString(arg0, arg1, arg2, arg3);
-}
-#endif
-
-#ifdef JNI_BINDINGS
-  xul_dlsym("Java_org_mozilla_gecko_util_NativeJSObject_optString", &f_Java_org_mozilla_gecko_util_NativeJSObject_optString);
-#endif
-
-#ifdef JNI_STUBS
-
-typedef jobjectArray (*Java_org_mozilla_gecko_util_NativeJSObject_getStringArray_t)(JNIEnv *, jobject, jstring);
-static Java_org_mozilla_gecko_util_NativeJSObject_getStringArray_t f_Java_org_mozilla_gecko_util_NativeJSObject_getStringArray;
-extern "C" NS_EXPORT jobjectArray JNICALL
-Java_org_mozilla_gecko_util_NativeJSObject_getStringArray(JNIEnv * arg0, jobject arg1, jstring arg2) {
-    if (!f_Java_org_mozilla_gecko_util_NativeJSObject_getStringArray) {
-        arg0->ThrowNew(arg0->FindClass("java/lang/UnsupportedOperationException"),
-                       "JNI Function called before it was loaded");
-        return nullptr;
-    }
-    return f_Java_org_mozilla_gecko_util_NativeJSObject_getStringArray(arg0, arg1, arg2);
-}
-#endif
-
-#ifdef JNI_BINDINGS
-  xul_dlsym("Java_org_mozilla_gecko_util_NativeJSObject_getStringArray", &f_Java_org_mozilla_gecko_util_NativeJSObject_getStringArray);
-#endif
-
-#ifdef JNI_STUBS
-
-typedef jobjectArray (*Java_org_mozilla_gecko_util_NativeJSObject_optStringArray_t)(JNIEnv *, jobject, jstring, jobjectArray);
-static Java_org_mozilla_gecko_util_NativeJSObject_optStringArray_t f_Java_org_mozilla_gecko_util_NativeJSObject_optStringArray;
-extern "C" NS_EXPORT jobjectArray JNICALL
-Java_org_mozilla_gecko_util_NativeJSObject_optStringArray(JNIEnv * arg0, jobject arg1, jstring arg2, jobjectArray arg3) {
-    if (!f_Java_org_mozilla_gecko_util_NativeJSObject_optStringArray) {
-        arg0->ThrowNew(arg0->FindClass("java/lang/UnsupportedOperationException"),
-                       "JNI Function called before it was loaded");
-        return nullptr;
-    }
-    return f_Java_org_mozilla_gecko_util_NativeJSObject_optStringArray(arg0, arg1, arg2, arg3);
-}
-#endif
-
-#ifdef JNI_BINDINGS
-  xul_dlsym("Java_org_mozilla_gecko_util_NativeJSObject_optStringArray", &f_Java_org_mozilla_gecko_util_NativeJSObject_optStringArray);
-#endif
-
-#ifdef JNI_STUBS
-
-typedef jboolean (*Java_org_mozilla_gecko_util_NativeJSObject_has_t)(JNIEnv *, jobject, jstring);
-static Java_org_mozilla_gecko_util_NativeJSObject_has_t f_Java_org_mozilla_gecko_util_NativeJSObject_has;
-extern "C" NS_EXPORT jboolean JNICALL
-Java_org_mozilla_gecko_util_NativeJSObject_has(JNIEnv * arg0, jobject arg1, jstring arg2) {
-    if (!f_Java_org_mozilla_gecko_util_NativeJSObject_has) {
-        arg0->ThrowNew(arg0->FindClass("java/lang/UnsupportedOperationException"),
-                       "JNI Function called before it was loaded");
-        return false;
-    }
-    return f_Java_org_mozilla_gecko_util_NativeJSObject_has(arg0, arg1, arg2);
-}
-#endif
-
-#ifdef JNI_BINDINGS
-  xul_dlsym("Java_org_mozilla_gecko_util_NativeJSObject_has", &f_Java_org_mozilla_gecko_util_NativeJSObject_has);
-#endif
-
-#ifdef JNI_STUBS
-
-typedef jobject (*Java_org_mozilla_gecko_util_NativeJSObject_toBundle_t)(JNIEnv *, jobject);
-static Java_org_mozilla_gecko_util_NativeJSObject_toBundle_t f_Java_org_mozilla_gecko_util_NativeJSObject_toBundle;
-extern "C" NS_EXPORT jobject JNICALL
-Java_org_mozilla_gecko_util_NativeJSObject_toBundle(JNIEnv * arg0, jobject arg1) {
-    if (!f_Java_org_mozilla_gecko_util_NativeJSObject_toBundle) {
-        arg0->ThrowNew(arg0->FindClass("java/lang/UnsupportedOperationException"),
-                       "JNI Function called before it was loaded");
-        return nullptr;
-    }
-    return f_Java_org_mozilla_gecko_util_NativeJSObject_toBundle(arg0, arg1);
-}
-#endif
-
-#ifdef JNI_BINDINGS
-  xul_dlsym("Java_org_mozilla_gecko_util_NativeJSObject_toBundle", &f_Java_org_mozilla_gecko_util_NativeJSObject_toBundle);
-#endif
-
-#ifdef JNI_STUBS
-
-typedef jstring (*Java_org_mozilla_gecko_util_NativeJSObject_toString_t)(JNIEnv *, jobject);
-static Java_org_mozilla_gecko_util_NativeJSObject_toString_t f_Java_org_mozilla_gecko_util_NativeJSObject_toString;
-extern "C" NS_EXPORT jstring JNICALL
-Java_org_mozilla_gecko_util_NativeJSObject_toString(JNIEnv * arg0, jobject arg1) {
-    if (!f_Java_org_mozilla_gecko_util_NativeJSObject_toString) {
-        arg0->ThrowNew(arg0->FindClass("java/lang/UnsupportedOperationException"),
-                       "JNI Function called before it was loaded");
-        return nullptr;
-    }
-    return f_Java_org_mozilla_gecko_util_NativeJSObject_toString(arg0, arg1);
-}
-#endif
-
-#ifdef JNI_BINDINGS
-  xul_dlsym("Java_org_mozilla_gecko_util_NativeJSObject_toString", &f_Java_org_mozilla_gecko_util_NativeJSObject_toString);
-#endif
-
--- a/widget/android/GeneratedJNINatives.h
+++ b/widget/android/GeneratedJNINatives.h
@@ -31,11 +31,149 @@ public:
                 mozilla::jni::NativeStub<ANRReporter::RequestNativeStack_t, Impl>
                 ::template Wrap<&Impl::RequestNativeStack>)
     };
 };
 
 template<class Impl>
 constexpr JNINativeMethod ANRReporter::Natives<Impl>::methods[];
 
+template<class Impl>
+class NativeJSContainer::Natives : public mozilla::jni::NativeImpl<NativeJSContainer, Impl>
+{
+public:
+    static constexpr JNINativeMethod methods[] = {
+
+        mozilla::jni::MakeNativeMethod<NativeJSContainer::Clone2_t>(
+                mozilla::jni::NativeStub<NativeJSContainer::Clone2_t, Impl>
+                ::template Wrap<&Impl::Clone>),
+
+        mozilla::jni::MakeNativeMethod<NativeJSContainer::DisposeNative_t>(
+                mozilla::jni::NativeStub<NativeJSContainer::DisposeNative_t, Impl>
+                ::template Wrap<&Impl::DisposeNative>)
+    };
+};
+
+template<class Impl>
+constexpr JNINativeMethod NativeJSContainer::Natives<Impl>::methods[];
+
+template<class Impl>
+class NativeJSObject::Natives : public mozilla::jni::NativeImpl<NativeJSObject, Impl>
+{
+public:
+    static constexpr JNINativeMethod methods[] = {
+
+        mozilla::jni::MakeNativeMethod<NativeJSObject::GetBoolean_t>(
+                mozilla::jni::NativeStub<NativeJSObject::GetBoolean_t, Impl>
+                ::template Wrap<&Impl::GetBoolean>),
+
+        mozilla::jni::MakeNativeMethod<NativeJSObject::GetBooleanArray_t>(
+                mozilla::jni::NativeStub<NativeJSObject::GetBooleanArray_t, Impl>
+                ::template Wrap<&Impl::GetBooleanArray>),
+
+        mozilla::jni::MakeNativeMethod<NativeJSObject::GetBundle_t>(
+                mozilla::jni::NativeStub<NativeJSObject::GetBundle_t, Impl>
+                ::template Wrap<&Impl::GetBundle>),
+
+        mozilla::jni::MakeNativeMethod<NativeJSObject::GetBundleArray_t>(
+                mozilla::jni::NativeStub<NativeJSObject::GetBundleArray_t, Impl>
+                ::template Wrap<&Impl::GetBundleArray>),
+
+        mozilla::jni::MakeNativeMethod<NativeJSObject::GetDouble_t>(
+                mozilla::jni::NativeStub<NativeJSObject::GetDouble_t, Impl>
+                ::template Wrap<&Impl::GetDouble>),
+
+        mozilla::jni::MakeNativeMethod<NativeJSObject::GetDoubleArray_t>(
+                mozilla::jni::NativeStub<NativeJSObject::GetDoubleArray_t, Impl>
+                ::template Wrap<&Impl::GetDoubleArray>),
+
+        mozilla::jni::MakeNativeMethod<NativeJSObject::GetInt_t>(
+                mozilla::jni::NativeStub<NativeJSObject::GetInt_t, Impl>
+                ::template Wrap<&Impl::GetInt>),
+
+        mozilla::jni::MakeNativeMethod<NativeJSObject::GetIntArray_t>(
+                mozilla::jni::NativeStub<NativeJSObject::GetIntArray_t, Impl>
+                ::template Wrap<&Impl::GetIntArray>),
+
+        mozilla::jni::MakeNativeMethod<NativeJSObject::GetObject_t>(
+                mozilla::jni::NativeStub<NativeJSObject::GetObject_t, Impl>
+                ::template Wrap<&Impl::GetObject>),
+
+        mozilla::jni::MakeNativeMethod<NativeJSObject::GetObjectArray_t>(
+                mozilla::jni::NativeStub<NativeJSObject::GetObjectArray_t, Impl>
+                ::template Wrap<&Impl::GetObjectArray>),
+
+        mozilla::jni::MakeNativeMethod<NativeJSObject::GetString_t>(
+                mozilla::jni::NativeStub<NativeJSObject::GetString_t, Impl>
+                ::template Wrap<&Impl::GetString>),
+
+        mozilla::jni::MakeNativeMethod<NativeJSObject::GetStringArray_t>(
+                mozilla::jni::NativeStub<NativeJSObject::GetStringArray_t, Impl>
+                ::template Wrap<&Impl::GetStringArray>),
+
+        mozilla::jni::MakeNativeMethod<NativeJSObject::Has_t>(
+                mozilla::jni::NativeStub<NativeJSObject::Has_t, Impl>
+                ::template Wrap<&Impl::Has>),
+
+        mozilla::jni::MakeNativeMethod<NativeJSObject::OptBoolean_t>(
+                mozilla::jni::NativeStub<NativeJSObject::OptBoolean_t, Impl>
+                ::template Wrap<&Impl::OptBoolean>),
+
+        mozilla::jni::MakeNativeMethod<NativeJSObject::OptBooleanArray_t>(
+                mozilla::jni::NativeStub<NativeJSObject::OptBooleanArray_t, Impl>
+                ::template Wrap<&Impl::OptBooleanArray>),
+
+        mozilla::jni::MakeNativeMethod<NativeJSObject::OptBundle_t>(
+                mozilla::jni::NativeStub<NativeJSObject::OptBundle_t, Impl>
+                ::template Wrap<&Impl::OptBundle>),
+
+        mozilla::jni::MakeNativeMethod<NativeJSObject::OptBundleArray_t>(
+                mozilla::jni::NativeStub<NativeJSObject::OptBundleArray_t, Impl>
+                ::template Wrap<&Impl::OptBundleArray>),
+
+        mozilla::jni::MakeNativeMethod<NativeJSObject::OptDouble_t>(
+                mozilla::jni::NativeStub<NativeJSObject::OptDouble_t, Impl>
+                ::template Wrap<&Impl::OptDouble>),
+
+        mozilla::jni::MakeNativeMethod<NativeJSObject::OptDoubleArray_t>(
+                mozilla::jni::NativeStub<NativeJSObject::OptDoubleArray_t, Impl>
+                ::template Wrap<&Impl::OptDoubleArray>),
+
+        mozilla::jni::MakeNativeMethod<NativeJSObject::OptInt_t>(
+                mozilla::jni::NativeStub<NativeJSObject::OptInt_t, Impl>
+                ::template Wrap<&Impl::OptInt>),
+
+        mozilla::jni::MakeNativeMethod<NativeJSObject::OptIntArray_t>(
+                mozilla::jni::NativeStub<NativeJSObject::OptIntArray_t, Impl>
+                ::template Wrap<&Impl::OptIntArray>),
+
+        mozilla::jni::MakeNativeMethod<NativeJSObject::OptObject_t>(
+                mozilla::jni::NativeStub<NativeJSObject::OptObject_t, Impl>
+                ::template Wrap<&Impl::OptObject>),
+
+        mozilla::jni::MakeNativeMethod<NativeJSObject::OptObjectArray_t>(
+                mozilla::jni::NativeStub<NativeJSObject::OptObjectArray_t, Impl>
+                ::template Wrap<&Impl::OptObjectArray>),
+
+        mozilla::jni::MakeNativeMethod<NativeJSObject::OptString_t>(
+                mozilla::jni::NativeStub<NativeJSObject::OptString_t, Impl>
+                ::template Wrap<&Impl::OptString>),
+
+        mozilla::jni::MakeNativeMethod<NativeJSObject::OptStringArray_t>(
+                mozilla::jni::NativeStub<NativeJSObject::OptStringArray_t, Impl>
+                ::template Wrap<&Impl::OptStringArray>),
+
+        mozilla::jni::MakeNativeMethod<NativeJSObject::ToBundle_t>(
+                mozilla::jni::NativeStub<NativeJSObject::ToBundle_t, Impl>
+                ::template Wrap<&Impl::ToBundle>),
+
+        mozilla::jni::MakeNativeMethod<NativeJSObject::ToString_t>(
+                mozilla::jni::NativeStub<NativeJSObject::ToString_t, Impl>
+                ::template Wrap<&Impl::ToString>)
+    };
+};
+
+template<class Impl>
+constexpr JNINativeMethod NativeJSObject::Natives<Impl>::methods[];
+
 } /* widget */
 } /* mozilla */
 #endif // GeneratedJNINatives_h
--- a/widget/android/GeneratedJNIWrappers.cpp
+++ b/widget/android/GeneratedJNIWrappers.cpp
@@ -1321,10 +1321,125 @@ bool Clipboard::HasText()
 constexpr char Clipboard::SetClipboardText_t::name[];
 constexpr char Clipboard::SetClipboardText_t::signature[];
 
 void Clipboard::SetClipboardText(mozilla::jni::String::Param a0)
 {
     return mozilla::jni::Method<SetClipboardText_t>::Call(nullptr, nullptr, a0);
 }
 
+constexpr char NativeJSContainer::name[];
+
+constexpr char NativeJSContainer::New_t::name[];
+constexpr char NativeJSContainer::New_t::signature[];
+
+NativeJSContainer::LocalRef NativeJSContainer::New()
+{
+    return mozilla::jni::Constructor<New_t>::Call(nullptr, nullptr);
+}
+
+constexpr char NativeJSContainer::Clone2_t::name[];
+constexpr char NativeJSContainer::Clone2_t::signature[];
+
+constexpr char NativeJSContainer::DisposeNative_t::name[];
+constexpr char NativeJSContainer::DisposeNative_t::signature[];
+
+constexpr char NativeJSObject::name[];
+
+constexpr char NativeJSObject::New_t::name[];
+constexpr char NativeJSObject::New_t::signature[];
+
+NativeJSObject::LocalRef NativeJSObject::New()
+{
+    return mozilla::jni::Constructor<New_t>::Call(nullptr, nullptr);
+}
+
+constexpr char NativeJSObject::DisposeNative_t::name[];
+constexpr char NativeJSObject::DisposeNative_t::signature[];
+
+void NativeJSObject::DisposeNative() const
+{
+    return mozilla::jni::Method<DisposeNative_t>::Call(this, nullptr);
+}
+
+constexpr char NativeJSObject::GetBoolean_t::name[];
+constexpr char NativeJSObject::GetBoolean_t::signature[];
+
+constexpr char NativeJSObject::GetBooleanArray_t::name[];
+constexpr char NativeJSObject::GetBooleanArray_t::signature[];
+
+constexpr char NativeJSObject::GetBundle_t::name[];
+constexpr char NativeJSObject::GetBundle_t::signature[];
+
+constexpr char NativeJSObject::GetBundleArray_t::name[];
+constexpr char NativeJSObject::GetBundleArray_t::signature[];
+
+constexpr char NativeJSObject::GetDouble_t::name[];
+constexpr char NativeJSObject::GetDouble_t::signature[];
+
+constexpr char NativeJSObject::GetDoubleArray_t::name[];
+constexpr char NativeJSObject::GetDoubleArray_t::signature[];
+
+constexpr char NativeJSObject::GetInt_t::name[];
+constexpr char NativeJSObject::GetInt_t::signature[];
+
+constexpr char NativeJSObject::GetIntArray_t::name[];
+constexpr char NativeJSObject::GetIntArray_t::signature[];
+
+constexpr char NativeJSObject::GetObject_t::name[];
+constexpr char NativeJSObject::GetObject_t::signature[];
+
+constexpr char NativeJSObject::GetObjectArray_t::name[];
+constexpr char NativeJSObject::GetObjectArray_t::signature[];
+
+constexpr char NativeJSObject::GetString_t::name[];
+constexpr char NativeJSObject::GetString_t::signature[];
+
+constexpr char NativeJSObject::GetStringArray_t::name[];
+constexpr char NativeJSObject::GetStringArray_t::signature[];
+
+constexpr char NativeJSObject::Has_t::name[];
+constexpr char NativeJSObject::Has_t::signature[];
+
+constexpr char NativeJSObject::OptBoolean_t::name[];
+constexpr char NativeJSObject::OptBoolean_t::signature[];
+
+constexpr char NativeJSObject::OptBooleanArray_t::name[];
+constexpr char NativeJSObject::OptBooleanArray_t::signature[];
+
+constexpr char NativeJSObject::OptBundle_t::name[];
+constexpr char NativeJSObject::OptBundle_t::signature[];
+
+constexpr char NativeJSObject::OptBundleArray_t::name[];
+constexpr char NativeJSObject::OptBundleArray_t::signature[];
+
+constexpr char NativeJSObject::OptDouble_t::name[];
+constexpr char NativeJSObject::OptDouble_t::signature[];
+
+constexpr char NativeJSObject::OptDoubleArray_t::name[];
+constexpr char NativeJSObject::OptDoubleArray_t::signature[];
+
+constexpr char NativeJSObject::OptInt_t::name[];
+constexpr char NativeJSObject::OptInt_t::signature[];
+
+constexpr char NativeJSObject::OptIntArray_t::name[];
+constexpr char NativeJSObject::OptIntArray_t::signature[];
+
+constexpr char NativeJSObject::OptObject_t::name[];
+constexpr char NativeJSObject::OptObject_t::signature[];
+
+constexpr char NativeJSObject::OptObjectArray_t::name[];
+constexpr char NativeJSObject::OptObjectArray_t::signature[];
+
+constexpr char NativeJSObject::OptString_t::name[];
+constexpr char NativeJSObject::OptString_t::signature[];
+
+constexpr char NativeJSObject::OptStringArray_t::name[];
+constexpr char NativeJSObject::OptStringArray_t::signature[];
+
+constexpr char NativeJSObject::ToBundle_t::name[];
+constexpr char NativeJSObject::ToBundle_t::signature[];
+
+constexpr char NativeJSObject::ToString_t::name[];
+constexpr char NativeJSObject::ToString_t::signature[];
+
 } /* widget */
 } /* mozilla */
--- a/widget/android/GeneratedJNIWrappers.h
+++ b/widget/android/GeneratedJNIWrappers.h
@@ -3117,11 +3117,570 @@ public:
         static const mozilla::jni::ExceptionMode exceptionMode =
                 mozilla::jni::ExceptionMode::ABORT;
     };
 
     static void SetClipboardText(mozilla::jni::String::Param);
 
 };
 
+class NativeJSContainer : public mozilla::jni::Class<NativeJSContainer>
+{
+public:
+    typedef mozilla::jni::Ref<NativeJSContainer> Ref;
+    typedef mozilla::jni::LocalRef<NativeJSContainer> LocalRef;
+    typedef mozilla::jni::GlobalRef<NativeJSContainer> GlobalRef;
+    typedef const mozilla::jni::Param<NativeJSContainer>& Param;
+
+    static constexpr char name[] =
+            "org/mozilla/gecko/util/NativeJSContainer";
+
+protected:
+    NativeJSContainer(jobject instance) : Class(instance) {}
+
+public:
+    struct New_t {
+        typedef NativeJSContainer Owner;
+        typedef NativeJSContainer::LocalRef ReturnType;
+        typedef NativeJSContainer::Param SetterType;
+        typedef mozilla::jni::Args<> Args;
+        static constexpr char name[] = "<init>";
+        static constexpr char signature[] =
+                "()V";
+        static const bool isStatic = false;
+        static const bool isMultithreaded = true;
+        static const mozilla::jni::ExceptionMode exceptionMode =
+                mozilla::jni::ExceptionMode::ABORT;
+    };
+
+    static NativeJSContainer::LocalRef New();
+
+public:
+    struct Clone2_t {
+        typedef NativeJSContainer Owner;
+        typedef NativeJSContainer::LocalRef ReturnType;
+        typedef NativeJSContainer::Param SetterType;
+        typedef mozilla::jni::Args<> Args;
+        static constexpr char name[] = "clone";
+        static constexpr char signature[] =
+                "()Lorg/mozilla/gecko/util/NativeJSContainer;";
+        static const bool isStatic = false;
+        static const bool isMultithreaded = true;
+        static const mozilla::jni::ExceptionMode exceptionMode =
+                mozilla::jni::ExceptionMode::ABORT;
+    };
+
+public:
+    struct DisposeNative_t {
+        typedef NativeJSContainer Owner;
+        typedef void ReturnType;
+        typedef void SetterType;
+        typedef mozilla::jni::Args<> Args;
+        static constexpr char name[] = "disposeNative";
+        static constexpr char signature[] =
+                "()V";
+        static const bool isStatic = false;
+        static const bool isMultithreaded = true;
+        static const mozilla::jni::ExceptionMode exceptionMode =
+                mozilla::jni::ExceptionMode::ABORT;
+    };
+
+public:
+    template<class Impl> class Natives;
+};
+
+class NativeJSObject : public mozilla::jni::Class<NativeJSObject>
+{
+public:
+    typedef mozilla::jni::Ref<NativeJSObject> Ref;
+    typedef mozilla::jni::LocalRef<NativeJSObject> LocalRef;
+    typedef mozilla::jni::GlobalRef<NativeJSObject> GlobalRef;
+    typedef const mozilla::jni::Param<NativeJSObject>& Param;
+
+    static constexpr char name[] =
+            "org/mozilla/gecko/util/NativeJSObject";
+
+protected:
+    NativeJSObject(jobject instance) : Class(instance) {}
+
+public:
+    struct New_t {
+        typedef NativeJSObject Owner;
+        typedef NativeJSObject::LocalRef ReturnType;
+        typedef NativeJSObject::Param SetterType;
+        typedef mozilla::jni::Args<> Args;
+        static constexpr char name[] = "<init>";
+        static constexpr char signature[] =
+                "()V";
+        static const bool isStatic = false;
+        static const bool isMultithreaded = true;
+        static const mozilla::jni::ExceptionMode exceptionMode =
+                mozilla::jni::ExceptionMode::ABORT;
+    };
+
+    static NativeJSObject::LocalRef New();
+
+public:
+    struct DisposeNative_t {
+        typedef NativeJSObject Owner;
+        typedef void ReturnType;
+        typedef void SetterType;
+        typedef mozilla::jni::Args<> Args;
+        static constexpr char name[] = "disposeNative";
+        static constexpr char signature[] =
+                "()V";
+        static const bool isStatic = false;
+        static const bool isMultithreaded = true;
+        static const mozilla::jni::ExceptionMode exceptionMode =
+                mozilla::jni::ExceptionMode::ABORT;
+    };
+
+    void DisposeNative() const;
+
+public:
+    struct GetBoolean_t {
+        typedef NativeJSObject Owner;
+        typedef bool ReturnType;
+        typedef bool SetterType;
+        typedef mozilla::jni::Args<
+                mozilla::jni::String::Param> Args;
+        static constexpr char name[] = "getBoolean";
+        static constexpr char signature[] =
+                "(Ljava/lang/String;)Z";
+        static const bool isStatic = false;
+        static const bool isMultithreaded = true;
+        static const mozilla::jni::ExceptionMode exceptionMode =
+                mozilla::jni::ExceptionMode::ABORT;
+    };
+
+public:
+    struct GetBooleanArray_t {
+        typedef NativeJSObject Owner;
+        typedef mozilla::jni::BooleanArray::LocalRef ReturnType;
+        typedef mozilla::jni::BooleanArray::Param SetterType;
+        typedef mozilla::jni::Args<
+                mozilla::jni::String::Param> Args;
+        static constexpr char name[] = "getBooleanArray";
+        static constexpr char signature[] =
+                "(Ljava/lang/String;)[Z";
+        static const bool isStatic = false;
+        static const bool isMultithreaded = true;
+        static const mozilla::jni::ExceptionMode exceptionMode =
+                mozilla::jni::ExceptionMode::ABORT;
+    };
+
+public:
+    struct GetBundle_t {
+        typedef NativeJSObject Owner;
+        typedef mozilla::jni::Object::LocalRef ReturnType;
+        typedef mozilla::jni::Object::Param SetterType;
+        typedef mozilla::jni::Args<
+                mozilla::jni::String::Param> Args;
+        static constexpr char name[] = "getBundle";
+        static constexpr char signature[] =
+                "(Ljava/lang/String;)Landroid/os/Bundle;";
+        static const bool isStatic = false;
+        static const bool isMultithreaded = true;
+        static const mozilla::jni::ExceptionMode exceptionMode =
+                mozilla::jni::ExceptionMode::ABORT;
+    };
+
+public:
+    struct GetBundleArray_t {
+        typedef NativeJSObject Owner;
+        typedef mozilla::jni::ObjectArray::LocalRef ReturnType;
+        typedef mozilla::jni::ObjectArray::Param SetterType;
+        typedef mozilla::jni::Args<
+                mozilla::jni::String::Param> Args;
+        static constexpr char name[] = "getBundleArray";
+        static constexpr char signature[] =
+                "(Ljava/lang/String;)[Landroid/os/Bundle;";
+        static const bool isStatic = false;
+        static const bool isMultithreaded = true;
+        static const mozilla::jni::ExceptionMode exceptionMode =
+                mozilla::jni::ExceptionMode::ABORT;
+    };
+
+public:
+    struct GetDouble_t {
+        typedef NativeJSObject Owner;
+        typedef double ReturnType;
+        typedef double SetterType;
+        typedef mozilla::jni::Args<
+                mozilla::jni::String::Param> Args;
+        static constexpr char name[] = "getDouble";
+        static constexpr char signature[] =
+                "(Ljava/lang/String;)D";
+        static const bool isStatic = false;
+        static const bool isMultithreaded = true;
+        static const mozilla::jni::ExceptionMode exceptionMode =
+                mozilla::jni::ExceptionMode::ABORT;
+    };
+
+public:
+    struct GetDoubleArray_t {
+        typedef NativeJSObject Owner;
+        typedef mozilla::jni::DoubleArray::LocalRef ReturnType;
+        typedef mozilla::jni::DoubleArray::Param SetterType;
+        typedef mozilla::jni::Args<
+                mozilla::jni::String::Param> Args;
+        static constexpr char name[] = "getDoubleArray";
+        static constexpr char signature[] =
+                "(Ljava/lang/String;)[D";
+        static const bool isStatic = false;
+        static const bool isMultithreaded = true;
+        static const mozilla::jni::ExceptionMode exceptionMode =
+                mozilla::jni::ExceptionMode::ABORT;
+    };
+
+public:
+    struct GetInt_t {
+        typedef NativeJSObject Owner;
+        typedef int32_t ReturnType;
+        typedef int32_t SetterType;
+        typedef mozilla::jni::Args<
+                mozilla::jni::String::Param> Args;
+        static constexpr char name[] = "getInt";
+        static constexpr char signature[] =
+                "(Ljava/lang/String;)I";
+        static const bool isStatic = false;
+        static const bool isMultithreaded = true;
+        static const mozilla::jni::ExceptionMode exceptionMode =
+                mozilla::jni::ExceptionMode::ABORT;
+    };
+
+public:
+    struct GetIntArray_t {
+        typedef NativeJSObject Owner;
+        typedef mozilla::jni::IntArray::LocalRef ReturnType;
+        typedef mozilla::jni::IntArray::Param SetterType;
+        typedef mozilla::jni::Args<
+                mozilla::jni::String::Param> Args;
+        static constexpr char name[] = "getIntArray";
+        static constexpr char signature[] =
+                "(Ljava/lang/String;)[I";
+        static const bool isStatic = false;
+        static const bool isMultithreaded = true;
+        static const mozilla::jni::ExceptionMode exceptionMode =
+                mozilla::jni::ExceptionMode::ABORT;
+    };
+
+public:
+    struct GetObject_t {
+        typedef NativeJSObject Owner;
+        typedef NativeJSObject::LocalRef ReturnType;
+        typedef NativeJSObject::Param SetterType;
+        typedef mozilla::jni::Args<
+                mozilla::jni::String::Param> Args;
+        static constexpr char name[] = "getObject";
+        static constexpr char signature[] =
+                "(Ljava/lang/String;)Lorg/mozilla/gecko/util/NativeJSObject;";
+        static const bool isStatic = false;
+        static const bool isMultithreaded = true;
+        static const mozilla::jni::ExceptionMode exceptionMode =
+                mozilla::jni::ExceptionMode::ABORT;
+    };
+
+public:
+    struct GetObjectArray_t {
+        typedef NativeJSObject Owner;
+        typedef mozilla::jni::ObjectArray::LocalRef ReturnType;
+        typedef mozilla::jni::ObjectArray::Param SetterType;
+        typedef mozilla::jni::Args<
+                mozilla::jni::String::Param> Args;
+        static constexpr char name[] = "getObjectArray";
+        static constexpr char signature[] =
+                "(Ljava/lang/String;)[Lorg/mozilla/gecko/util/NativeJSObject;";
+        static const bool isStatic = false;
+        static const bool isMultithreaded = true;
+        static const mozilla::jni::ExceptionMode exceptionMode =
+                mozilla::jni::ExceptionMode::ABORT;
+    };
+
+public:
+    struct GetString_t {
+        typedef NativeJSObject Owner;
+        typedef mozilla::jni::String::LocalRef ReturnType;
+        typedef mozilla::jni::String::Param SetterType;
+        typedef mozilla::jni::Args<
+                mozilla::jni::String::Param> Args;
+        static constexpr char name[] = "getString";
+        static constexpr char signature[] =
+                "(Ljava/lang/String;)Ljava/lang/String;";
+        static const bool isStatic = false;
+        static const bool isMultithreaded = true;
+        static const mozilla::jni::ExceptionMode exceptionMode =
+                mozilla::jni::ExceptionMode::ABORT;
+    };
+
+public:
+    struct GetStringArray_t {
+        typedef NativeJSObject Owner;
+        typedef mozilla::jni::ObjectArray::LocalRef ReturnType;
+        typedef mozilla::jni::ObjectArray::Param SetterType;
+        typedef mozilla::jni::Args<
+                mozilla::jni::String::Param> Args;
+        static constexpr char name[] = "getStringArray";
+        static constexpr char signature[] =
+                "(Ljava/lang/String;)[Ljava/lang/String;";
+        static const bool isStatic = false;
+        static const bool isMultithreaded = true;
+        static const mozilla::jni::ExceptionMode exceptionMode =
+                mozilla::jni::ExceptionMode::ABORT;
+    };
+
+public:
+    struct Has_t {
+        typedef NativeJSObject Owner;
+        typedef bool ReturnType;
+        typedef bool SetterType;
+        typedef mozilla::jni::Args<
+                mozilla::jni::String::Param> Args;
+        static constexpr char name[] = "has";
+        static constexpr char signature[] =
+                "(Ljava/lang/String;)Z";
+        static const bool isStatic = false;
+        static const bool isMultithreaded = true;
+        static const mozilla::jni::ExceptionMode exceptionMode =
+                mozilla::jni::ExceptionMode::ABORT;
+    };
+
+public:
+    struct OptBoolean_t {
+        typedef NativeJSObject Owner;
+        typedef bool ReturnType;
+        typedef bool SetterType;
+        typedef mozilla::jni::Args<
+                mozilla::jni::String::Param,
+                bool> Args;
+        static constexpr char name[] = "optBoolean";
+        static constexpr char signature[] =
+                "(Ljava/lang/String;Z)Z";
+        static const bool isStatic = false;
+        static const bool isMultithreaded = true;
+        static const mozilla::jni::ExceptionMode exceptionMode =
+                mozilla::jni::ExceptionMode::ABORT;
+    };
+
+public:
+    struct OptBooleanArray_t {
+        typedef NativeJSObject Owner;
+        typedef mozilla::jni::BooleanArray::LocalRef ReturnType;
+        typedef mozilla::jni::BooleanArray::Param SetterType;
+        typedef mozilla::jni::Args<
+                mozilla::jni::String::Param,
+                mozilla::jni::BooleanArray::Param> Args;
+        static constexpr char name[] = "optBooleanArray";
+        static constexpr char signature[] =
+                "(Ljava/lang/String;[Z)[Z";
+        static const bool isStatic = false;
+        static const bool isMultithreaded = true;
+        static const mozilla::jni::ExceptionMode exceptionMode =
+                mozilla::jni::ExceptionMode::ABORT;
+    };
+
+public:
+    struct OptBundle_t {
+        typedef NativeJSObject Owner;
+        typedef mozilla::jni::Object::LocalRef ReturnType;
+        typedef mozilla::jni::Object::Param SetterType;
+        typedef mozilla::jni::Args<
+                mozilla::jni::String::Param,
+                mozilla::jni::Object::Param> Args;
+        static constexpr char name[] = "optBundle";
+        static constexpr char signature[] =
+                "(Ljava/lang/String;Landroid/os/Bundle;)Landroid/os/Bundle;";
+        static const bool isStatic = false;
+        static const bool isMultithreaded = true;
+        static const mozilla::jni::ExceptionMode exceptionMode =
+                mozilla::jni::ExceptionMode::ABORT;
+    };
+
+public:
+    struct OptBundleArray_t {
+        typedef NativeJSObject Owner;
+        typedef mozilla::jni::ObjectArray::LocalRef ReturnType;
+        typedef mozilla::jni::ObjectArray::Param SetterType;
+        typedef mozilla::jni::Args<
+                mozilla::jni::String::Param,
+                mozilla::jni::ObjectArray::Param> Args;
+        static constexpr char name[] = "optBundleArray";
+        static constexpr char signature[] =
+                "(Ljava/lang/String;[Landroid/os/Bundle;)[Landroid/os/Bundle;";
+        static const bool isStatic = false;
+        static const bool isMultithreaded = true;
+        static const mozilla::jni::ExceptionMode exceptionMode =
+                mozilla::jni::ExceptionMode::ABORT;
+    };
+
+public:
+    struct OptDouble_t {
+        typedef NativeJSObject Owner;
+        typedef double ReturnType;
+        typedef double SetterType;
+        typedef mozilla::jni::Args<
+                mozilla::jni::String::Param,
+                double> Args;
+        static constexpr char name[] = "optDouble";
+        static constexpr char signature[] =
+                "(Ljava/lang/String;D)D";
+        static const bool isStatic = false;
+        static const bool isMultithreaded = true;
+        static const mozilla::jni::ExceptionMode exceptionMode =
+                mozilla::jni::ExceptionMode::ABORT;
+    };
+
+public:
+    struct OptDoubleArray_t {
+        typedef NativeJSObject Owner;
+        typedef mozilla::jni::DoubleArray::LocalRef ReturnType;
+        typedef mozilla::jni::DoubleArray::Param SetterType;
+        typedef mozilla::jni::Args<
+                mozilla::jni::String::Param,
+                mozilla::jni::DoubleArray::Param> Args;
+        static constexpr char name[] = "optDoubleArray";
+        static constexpr char signature[] =
+                "(Ljava/lang/String;[D)[D";
+        static const bool isStatic = false;
+        static const bool isMultithreaded = true;
+        static const mozilla::jni::ExceptionMode exceptionMode =
+                mozilla::jni::ExceptionMode::ABORT;
+    };
+
+public:
+    struct OptInt_t {
+        typedef NativeJSObject Owner;
+        typedef int32_t ReturnType;
+        typedef int32_t SetterType;
+        typedef mozilla::jni::Args<
+                mozilla::jni::String::Param,
+                int32_t> Args;
+        static constexpr char name[] = "optInt";
+        static constexpr char signature[] =
+                "(Ljava/lang/String;I)I";
+        static const bool isStatic = false;
+        static const bool isMultithreaded = true;
+        static const mozilla::jni::ExceptionMode exceptionMode =
+                mozilla::jni::ExceptionMode::ABORT;
+    };
+
+public:
+    struct OptIntArray_t {
+        typedef NativeJSObject Owner;
+        typedef mozilla::jni::IntArray::LocalRef ReturnType;
+        typedef mozilla::jni::IntArray::Param SetterType;
+        typedef mozilla::jni::Args<
+                mozilla::jni::String::Param,
+                mozilla::jni::IntArray::Param> Args;
+        static constexpr char name[] = "optIntArray";
+        static constexpr char signature[] =
+                "(Ljava/lang/String;[I)[I";
+        static const bool isStatic = false;
+        static const bool isMultithreaded = true;
+        static const mozilla::jni::ExceptionMode exceptionMode =
+                mozilla::jni::ExceptionMode::ABORT;
+    };
+
+public:
+    struct OptObject_t {
+        typedef NativeJSObject Owner;
+        typedef NativeJSObject::LocalRef ReturnType;
+        typedef NativeJSObject::Param SetterType;
+        typedef mozilla::jni::Args<
+                mozilla::jni::String::Param,
+                NativeJSObject::Param> Args;
+        static constexpr char name[] = "optObject";
+        static constexpr char signature[] =
+                "(Ljava/lang/String;Lorg/mozilla/gecko/util/NativeJSObject;)Lorg/mozilla/gecko/util/NativeJSObject;";
+        static const bool isStatic = false;
+        static const bool isMultithreaded = true;
+        static const mozilla::jni::ExceptionMode exceptionMode =
+                mozilla::jni::ExceptionMode::ABORT;
+    };
+
+public:
+    struct OptObjectArray_t {
+        typedef NativeJSObject Owner;
+        typedef mozilla::jni::ObjectArray::LocalRef ReturnType;
+        typedef mozilla::jni::ObjectArray::Param SetterType;
+        typedef mozilla::jni::Args<
+                mozilla::jni::String::Param,
+                mozilla::jni::ObjectArray::Param> Args;
+        static constexpr char name[] = "optObjectArray";
+        static constexpr char signature[] =
+                "(Ljava/lang/String;[Lorg/mozilla/gecko/util/NativeJSObject;)[Lorg/mozilla/gecko/util/NativeJSObject;";
+        static const bool isStatic = false;
+        static const bool isMultithreaded = true;
+        static const mozilla::jni::ExceptionMode exceptionMode =
+                mozilla::jni::ExceptionMode::ABORT;
+    };
+
+public:
+    struct OptString_t {
+        typedef NativeJSObject Owner;
+        typedef mozilla::jni::String::LocalRef ReturnType;
+        typedef mozilla::jni::String::Param SetterType;
+        typedef mozilla::jni::Args<
+                mozilla::jni::String::Param,
+                mozilla::jni::String::Param> Args;
+        static constexpr char name[] = "optString";
+        static constexpr char signature[] =
+                "(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;";
+        static const bool isStatic = false;
+        static const bool isMultithreaded = true;
+        static const mozilla::jni::ExceptionMode exceptionMode =
+                mozilla::jni::ExceptionMode::ABORT;
+    };
+
+public:
+    struct OptStringArray_t {
+        typedef NativeJSObject Owner;
+        typedef mozilla::jni::ObjectArray::LocalRef ReturnType;
+        typedef mozilla::jni::ObjectArray::Param SetterType;
+        typedef mozilla::jni::Args<
+                mozilla::jni::String::Param,
+                mozilla::jni::ObjectArray::Param> Args;
+        static constexpr char name[] = "optStringArray";
+        static constexpr char signature[] =
+                "(Ljava/lang/String;[Ljava/lang/String;)[Ljava/lang/String;";
+        static const bool isStatic = false;
+        static const bool isMultithreaded = true;
+        static const mozilla::jni::ExceptionMode exceptionMode =
+                mozilla::jni::ExceptionMode::ABORT;
+    };
+
+public:
+    struct ToBundle_t {
+        typedef NativeJSObject Owner;
+        typedef mozilla::jni::Object::LocalRef ReturnType;
+        typedef mozilla::jni::Object::Param SetterType;
+        typedef mozilla::jni::Args<> Args;
+        static constexpr char name[] = "toBundle";
+        static constexpr char signature[] =
+                "()Landroid/os/Bundle;";
+        static const bool isStatic = false;
+        static const bool isMultithreaded = true;
+        static const mozilla::jni::ExceptionMode exceptionMode =
+                mozilla::jni::ExceptionMode::ABORT;
+    };
+
+public:
+    struct ToString_t {
+        typedef NativeJSObject Owner;
+        typedef mozilla::jni::String::LocalRef ReturnType;
+        typedef mozilla::jni::String::Param SetterType;
+        typedef mozilla::jni::Args<> Args;
+        static constexpr char name[] = "toString";
+        static constexpr char signature[] =
+                "()Ljava/lang/String;";
+        static const bool isStatic = false;
+        static const bool isMultithreaded = true;
+        static const mozilla::jni::ExceptionMode exceptionMode =
+                mozilla::jni::ExceptionMode::ABORT;
+    };
+
+public:
+    template<class Impl> class Natives;
+};
+
 } /* widget */
 } /* mozilla */
 #endif // GeneratedJNIWrappers_h