Bug 1277624 - Update auto-generated bindings; r=me
authorJim Chen <nchen@mozilla.com>
Mon, 27 Jun 2016 14:49:55 -0400
changeset 302794 6f2a56ca83e77b8fa88b7f0c5104d5b02f329762
parent 302793 91ca677e449639f200e2612da7201a540f772195
child 302795 5c6ee7ceb0a94631fb2eab71a6190b358e52c6f3
push id30376
push usercbook@mozilla.com
push dateTue, 28 Jun 2016 14:09:36 +0000
treeherdermozilla-central@e45890951ce7 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersme
bugs1277624
milestone50.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 1277624 - Update auto-generated bindings; r=me
widget/android/GeneratedJNIWrappers.cpp
widget/android/GeneratedJNIWrappers.h
--- a/widget/android/GeneratedJNIWrappers.cpp
+++ b/widget/android/GeneratedJNIWrappers.cpp
@@ -5,35 +5,35 @@
 // will cause your build to fail.
 
 #include "GeneratedJNIWrappers.h"
 #include "mozilla/jni/Accessors.h"
 
 namespace mozilla {
 namespace widget {
 
-template<> const char mozilla::jni::Context<ANRReporter, jobject>::name[] =
+const char ANRReporter::name[] =
         "org/mozilla/gecko/ANRReporter";
 
 constexpr char ANRReporter::GetNativeStack_t::name[];
 constexpr char ANRReporter::GetNativeStack_t::signature[];
 
 constexpr char ANRReporter::ReleaseNativeStack_t::name[];
 constexpr char ANRReporter::ReleaseNativeStack_t::signature[];
 
 constexpr char ANRReporter::RequestNativeStack_t::name[];
 constexpr char ANRReporter::RequestNativeStack_t::signature[];
 
-template<> const char mozilla::jni::Context<AlarmReceiver, jobject>::name[] =
+const char AlarmReceiver::name[] =
         "org/mozilla/gecko/AlarmReceiver";
 
 constexpr char AlarmReceiver::NotifyAlarmFired_t::name[];
 constexpr char AlarmReceiver::NotifyAlarmFired_t::signature[];
 
-template<> const char mozilla::jni::Context<DownloadsIntegration, jobject>::name[] =
+const char DownloadsIntegration::name[] =
         "org/mozilla/gecko/DownloadsIntegration";
 
 constexpr char DownloadsIntegration::GetTemporaryDownloadDirectory_t::name[];
 constexpr char DownloadsIntegration::GetTemporaryDownloadDirectory_t::signature[];
 
 auto DownloadsIntegration::GetTemporaryDownloadDirectory() -> mozilla::jni::String::LocalRef
 {
     return mozilla::jni::Method<GetTemporaryDownloadDirectory_t>::Call(DownloadsIntegration::Context(), nullptr);
@@ -42,17 +42,17 @@ auto DownloadsIntegration::GetTemporaryD
 constexpr char DownloadsIntegration::ScanMedia_t::name[];
 constexpr char DownloadsIntegration::ScanMedia_t::signature[];
 
 auto DownloadsIntegration::ScanMedia(mozilla::jni::String::Param a0, mozilla::jni::String::Param a1) -> void
 {
     return mozilla::jni::Method<ScanMedia_t>::Call(DownloadsIntegration::Context(), nullptr, a0, a1);
 }
 
-template<> const char mozilla::jni::Context<GeckoAppShell, jobject>::name[] =
+const char GeckoAppShell::name[] =
         "org/mozilla/gecko/GeckoAppShell";
 
 constexpr char GeckoAppShell::AddPluginViewWrapper_t::name[];
 constexpr char GeckoAppShell::AddPluginViewWrapper_t::signature[];
 
 auto GeckoAppShell::AddPluginViewWrapper(mozilla::jni::Object::Param a0, float a1, float a2, float a3, float a4, bool a5) -> void
 {
     return mozilla::jni::Method<AddPluginViewWrapper_t>::Call(GeckoAppShell::Context(), nullptr, a0, a1, a2, a3, a4, a5);
@@ -747,17 +747,17 @@ auto GeckoAppShell::Vibrate1(int64_t a0)
 constexpr char GeckoAppShell::VibrateA_t::name[];
 constexpr char GeckoAppShell::VibrateA_t::signature[];
 
 auto GeckoAppShell::VibrateA(mozilla::jni::LongArray::Param a0, int32_t a1) -> void
 {
     return mozilla::jni::Method<VibrateA_t>::Call(GeckoAppShell::Context(), nullptr, a0, a1);
 }
 
-template<> const char mozilla::jni::Context<GeckoEditable, jobject>::name[] =
+const char GeckoEditable::name[] =
         "org/mozilla/gecko/GeckoEditable";
 
 constexpr char GeckoEditable::New_t::name[];
 constexpr char GeckoEditable::New_t::signature[];
 
 auto GeckoEditable::New(mozilla::jni::Object::Param a0) -> GeckoEditable::LocalRef
 {
     return mozilla::jni::Constructor<New_t>::Call(GeckoEditable::Context(), nullptr, a0);
@@ -827,20 +827,20 @@ auto GeckoEditable::OnTextChange(mozilla
 constexpr char GeckoEditable::OnViewChange_t::name[];
 constexpr char GeckoEditable::OnViewChange_t::signature[];
 
 auto GeckoEditable::OnViewChange(mozilla::jni::Object::Param a0) const -> void
 {
     return mozilla::jni::Method<OnViewChange_t>::Call(GeckoEditable::mCtx, nullptr, a0);
 }
 
-template<> const char mozilla::jni::Context<GeckoEditableListener, jobject>::name[] =
+const char GeckoEditableListener::name[] =
         "org/mozilla/gecko/GeckoEditableListener";
 
-template<> const char mozilla::jni::Context<GeckoJavaSampler, jobject>::name[] =
+const char GeckoJavaSampler::name[] =
         "org/mozilla/gecko/GeckoJavaSampler";
 
 constexpr char GeckoJavaSampler::GetFrameNameJavaProfilingWrapper_t::name[];
 constexpr char GeckoJavaSampler::GetFrameNameJavaProfilingWrapper_t::signature[];
 
 auto GeckoJavaSampler::GetFrameNameJavaProfilingWrapper(int32_t a0, int32_t a1, int32_t a2) -> mozilla::jni::String::LocalRef
 {
     return mozilla::jni::Method<GetFrameNameJavaProfilingWrapper_t>::Call(GeckoJavaSampler::Context(), nullptr, a0, a1, a2);
@@ -892,17 +892,17 @@ auto GeckoJavaSampler::StopJavaProfiling
 constexpr char GeckoJavaSampler::UnpauseJavaProfiling_t::name[];
 constexpr char GeckoJavaSampler::UnpauseJavaProfiling_t::signature[];
 
 auto GeckoJavaSampler::UnpauseJavaProfiling() -> void
 {
     return mozilla::jni::Method<UnpauseJavaProfiling_t>::Call(GeckoJavaSampler::Context(), nullptr);
 }
 
-template<> const char mozilla::jni::Context<GeckoSmsManager, jobject>::name[] =
+const char GeckoSmsManager::name[] =
         "org/mozilla/gecko/GeckoSmsManager";
 
 constexpr char GeckoSmsManager::NotifyCursorDone_t::name[];
 constexpr char GeckoSmsManager::NotifyCursorDone_t::signature[];
 
 constexpr char GeckoSmsManager::NotifyCursorError_t::name[];
 constexpr char GeckoSmsManager::NotifyCursorError_t::signature[];
 
@@ -937,17 +937,17 @@ constexpr char GeckoSmsManager::NotifySm
 constexpr char GeckoSmsManager::NotifySmsSendFailed_t::signature[];
 
 constexpr char GeckoSmsManager::NotifySmsSent_t::name[];
 constexpr char GeckoSmsManager::NotifySmsSent_t::signature[];
 
 constexpr char GeckoSmsManager::NotifyThreadCursorResult_t::name[];
 constexpr char GeckoSmsManager::NotifyThreadCursorResult_t::signature[];
 
-template<> const char mozilla::jni::Context<GeckoThread, jobject>::name[] =
+const char GeckoThread::name[] =
         "org/mozilla/gecko/GeckoThread";
 
 constexpr char GeckoThread::CheckAndSetState_t::name[];
 constexpr char GeckoThread::CheckAndSetState_t::signature[];
 
 auto GeckoThread::CheckAndSetState(mozilla::jni::Object::Param a0, mozilla::jni::Object::Param a1) -> bool
 {
     return mozilla::jni::Method<CheckAndSetState_t>::Call(GeckoThread::Context(), nullptr, a0, a1);
@@ -1000,17 +1000,17 @@ auto GeckoThread::MsgQueue() -> mozilla:
     return mozilla::jni::Field<MsgQueue_t>::Get(GeckoThread::Context(), nullptr);
 }
 
 auto GeckoThread::MsgQueue(mozilla::jni::Object::Param a0) -> void
 {
     return mozilla::jni::Field<MsgQueue_t>::Set(GeckoThread::Context(), nullptr, a0);
 }
 
-template<> const char mozilla::jni::Context<GeckoThread::State, jobject>::name[] =
+const char GeckoThread::State::name[] =
         "org/mozilla/gecko/GeckoThread$State";
 
 constexpr char GeckoThread::State::EXITED_t::name[];
 constexpr char GeckoThread::State::EXITED_t::signature[];
 
 auto GeckoThread::State::EXITED() -> State::LocalRef
 {
     return mozilla::jni::Field<EXITED_t>::Get(State::Context(), nullptr);
@@ -1075,20 +1075,20 @@ auto GeckoThread::State::PROFILE_READY()
 constexpr char GeckoThread::State::RUNNING_t::name[];
 constexpr char GeckoThread::State::RUNNING_t::signature[];
 
 auto GeckoThread::State::RUNNING() -> State::LocalRef
 {
     return mozilla::jni::Field<RUNNING_t>::Get(State::Context(), nullptr);
 }
 
-template<> const char mozilla::jni::Context<GeckoView, jobject>::name[] =
+const char GeckoView::name[] =
         "org/mozilla/gecko/GeckoView";
 
-template<> const char mozilla::jni::Context<GeckoView::Window, jobject>::name[] =
+const char GeckoView::Window::name[] =
         "org/mozilla/gecko/GeckoView$Window";
 
 constexpr char GeckoView::Window::New_t::name[];
 constexpr char GeckoView::Window::New_t::signature[];
 
 auto GeckoView::Window::New() -> Window::LocalRef
 {
     return mozilla::jni::Constructor<New_t>::Call(Window::Context(), nullptr);
@@ -1109,17 +1109,17 @@ constexpr char GeckoView::Window::Reatta
 constexpr char GeckoView::Window::GlController_t::name[];
 constexpr char GeckoView::Window::GlController_t::signature[];
 
 auto GeckoView::Window::GlController() const -> mozilla::jni::Object::LocalRef
 {
     return mozilla::jni::Field<GlController_t>::Get(Window::mCtx, nullptr);
 }
 
-template<> const char mozilla::jni::Context<PrefsHelper, jobject>::name[] =
+const char PrefsHelper::name[] =
         "org/mozilla/gecko/PrefsHelper";
 
 constexpr char PrefsHelper::CallPrefHandler_t::name[];
 constexpr char PrefsHelper::CallPrefHandler_t::signature[];
 
 auto PrefsHelper::CallPrefHandler(mozilla::jni::Object::Param a0, int32_t a1, mozilla::jni::String::Param a2, bool a3, int32_t a4, mozilla::jni::String::Param a5) -> void
 {
     return mozilla::jni::Method<CallPrefHandler_t>::Call(PrefsHelper::Context(), nullptr, a0, a1, a2, a3, a4, a5);
@@ -1140,17 +1140,17 @@ constexpr char PrefsHelper::SetPref_t::s
 constexpr char PrefsHelper::OnPrefChange_t::name[];
 constexpr char PrefsHelper::OnPrefChange_t::signature[];
 
 auto PrefsHelper::OnPrefChange(mozilla::jni::String::Param a0, int32_t a1, bool a2, int32_t a3, mozilla::jni::String::Param a4) -> void
 {
     return mozilla::jni::Method<OnPrefChange_t>::Call(PrefsHelper::Context(), nullptr, a0, a1, a2, a3, a4);
 }
 
-template<> const char mozilla::jni::Context<SurfaceBits, jobject>::name[] =
+const char SurfaceBits::name[] =
         "org/mozilla/gecko/SurfaceBits";
 
 constexpr char SurfaceBits::New_t::name[];
 constexpr char SurfaceBits::New_t::signature[];
 
 auto SurfaceBits::New() -> SurfaceBits::LocalRef
 {
     return mozilla::jni::Constructor<New_t>::Call(SurfaceBits::Context(), nullptr);
@@ -1203,39 +1203,39 @@ auto SurfaceBits::Width() const -> int32
     return mozilla::jni::Field<Width_t>::Get(SurfaceBits::mCtx, nullptr);
 }
 
 auto SurfaceBits::Width(int32_t a0) const -> void
 {
     return mozilla::jni::Field<Width_t>::Set(SurfaceBits::mCtx, nullptr, a0);
 }
 
-template<> const char mozilla::jni::Context<ThumbnailHelper, jobject>::name[] =
+const char ThumbnailHelper::name[] =
         "org/mozilla/gecko/ThumbnailHelper";
 
 constexpr char ThumbnailHelper::SendThumbnail_t::name[];
 constexpr char ThumbnailHelper::SendThumbnail_t::signature[];
 
 auto ThumbnailHelper::SendThumbnail(mozilla::jni::Object::Param a0, int32_t a1, bool a2, bool a3) -> void
 {
     return mozilla::jni::Method<SendThumbnail_t>::Call(ThumbnailHelper::Context(), nullptr, a0, a1, a2, a3);
 }
 
-template<> const char mozilla::jni::Context<Distribution, jobject>::name[] =
+const char Distribution::name[] =
         "org/mozilla/gecko/distribution/Distribution";
 
 constexpr char Distribution::GetDistributionDirectories_t::name[];
 constexpr char Distribution::GetDistributionDirectories_t::signature[];
 
 auto Distribution::GetDistributionDirectories() -> mozilla::jni::ObjectArray::LocalRef
 {
     return mozilla::jni::Method<GetDistributionDirectories_t>::Call(Distribution::Context(), nullptr);
 }
 
-template<> const char mozilla::jni::Context<DisplayPortMetrics, jobject>::name[] =
+const char DisplayPortMetrics::name[] =
         "org/mozilla/gecko/gfx/DisplayPortMetrics";
 
 constexpr char DisplayPortMetrics::New_t::name[];
 constexpr char DisplayPortMetrics::New_t::signature[];
 
 auto DisplayPortMetrics::New(float a0, float a1, float a2, float a3, float a4) -> DisplayPortMetrics::LocalRef
 {
     return mozilla::jni::Constructor<New_t>::Call(DisplayPortMetrics::Context(), nullptr, a0, a1, a2, a3, a4);
@@ -1252,17 +1252,17 @@ auto DisplayPortMetrics::MPosition() con
 constexpr char DisplayPortMetrics::Resolution_t::name[];
 constexpr char DisplayPortMetrics::Resolution_t::signature[];
 
 auto DisplayPortMetrics::Resolution() const -> float
 {
     return mozilla::jni::Field<Resolution_t>::Get(DisplayPortMetrics::mCtx, nullptr);
 }
 
-template<> const char mozilla::jni::Context<GLController, jobject>::name[] =
+const char GLController::name[] =
         "org/mozilla/gecko/gfx/GLController";
 
 constexpr char GLController::AttachToJava_t::name[];
 constexpr char GLController::AttachToJava_t::signature[];
 
 constexpr char GLController::CreateCompositor_t::name[];
 constexpr char GLController::CreateCompositor_t::signature[];
 
@@ -1292,17 +1292,17 @@ constexpr char GLController::PauseCompos
 constexpr char GLController::PauseCompositor_t::signature[];
 
 constexpr char GLController::SyncInvalidateAndScheduleComposite_t::name[];
 constexpr char GLController::SyncInvalidateAndScheduleComposite_t::signature[];
 
 constexpr char GLController::SyncResumeResizeCompositor_t::name[];
 constexpr char GLController::SyncResumeResizeCompositor_t::signature[];
 
-template<> const char mozilla::jni::Context<GeckoLayerClient, jobject>::name[] =
+const char GeckoLayerClient::name[] =
         "org/mozilla/gecko/gfx/GeckoLayerClient";
 
 constexpr char GeckoLayerClient::ActivateProgram_t::name[];
 constexpr char GeckoLayerClient::ActivateProgram_t::signature[];
 
 auto GeckoLayerClient::ActivateProgram() const -> void
 {
     return mozilla::jni::Method<ActivateProgram_t>::Call(GeckoLayerClient::mCtx, nullptr);
@@ -1407,31 +1407,31 @@ auto GeckoLayerClient::SynthesizeNativeM
 constexpr char GeckoLayerClient::SynthesizeNativeTouchPoint_t::name[];
 constexpr char GeckoLayerClient::SynthesizeNativeTouchPoint_t::signature[];
 
 auto GeckoLayerClient::SynthesizeNativeTouchPoint(int32_t a0, int32_t a1, int32_t a2, int32_t a3, double a4, int32_t a5) const -> void
 {
     return mozilla::jni::Method<SynthesizeNativeTouchPoint_t>::Call(GeckoLayerClient::mCtx, nullptr, a0, a1, a2, a3, a4, a5);
 }
 
-template<> const char mozilla::jni::Context<ImmutableViewportMetrics, jobject>::name[] =
+const char ImmutableViewportMetrics::name[] =
         "org/mozilla/gecko/gfx/ImmutableViewportMetrics";
 
 constexpr char ImmutableViewportMetrics::New_t::name[];
 constexpr char ImmutableViewportMetrics::New_t::signature[];
 
 auto ImmutableViewportMetrics::New(float a0, float a1, float a2, float a3, float a4, float a5, float a6, float a7, float a8, float a9, int32_t a10, int32_t a11, float a12) -> ImmutableViewportMetrics::LocalRef
 {
     return mozilla::jni::Constructor<New_t>::Call(ImmutableViewportMetrics::Context(), nullptr, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12);
 }
 
-template<> const char mozilla::jni::Context<LayerRenderer, jobject>::name[] =
+const char LayerRenderer::name[] =
         "org/mozilla/gecko/gfx/LayerRenderer";
 
-template<> const char mozilla::jni::Context<LayerRenderer::Frame, jobject>::name[] =
+const char LayerRenderer::Frame::name[] =
         "org/mozilla/gecko/gfx/LayerRenderer$Frame";
 
 constexpr char LayerRenderer::Frame::BeginDrawing_t::name[];
 constexpr char LayerRenderer::Frame::BeginDrawing_t::signature[];
 
 auto LayerRenderer::Frame::BeginDrawing() const -> void
 {
     return mozilla::jni::Method<BeginDrawing_t>::Call(Frame::mCtx, nullptr);
@@ -1456,28 +1456,28 @@ auto LayerRenderer::Frame::DrawForegroun
 constexpr char LayerRenderer::Frame::EndDrawing_t::name[];
 constexpr char LayerRenderer::Frame::EndDrawing_t::signature[];
 
 auto LayerRenderer::Frame::EndDrawing() const -> void
 {
     return mozilla::jni::Method<EndDrawing_t>::Call(Frame::mCtx, nullptr);
 }
 
-template<> const char mozilla::jni::Context<LayerView, jobject>::name[] =
+const char LayerView::name[] =
         "org/mozilla/gecko/gfx/LayerView";
 
 constexpr char LayerView::updateZoomedView_t::name[];
 constexpr char LayerView::updateZoomedView_t::signature[];
 
 auto LayerView::updateZoomedView(mozilla::jni::Object::Param a0) -> void
 {
     return mozilla::jni::Method<updateZoomedView_t>::Call(LayerView::Context(), nullptr, a0);
 }
 
-template<> const char mozilla::jni::Context<NativePanZoomController, jobject>::name[] =
+const char NativePanZoomController::name[] =
         "org/mozilla/gecko/gfx/NativePanZoomController";
 
 constexpr char NativePanZoomController::AdjustScrollForSurfaceShift_t::name[];
 constexpr char NativePanZoomController::AdjustScrollForSurfaceShift_t::signature[];
 
 constexpr char NativePanZoomController::Destroy_t::name[];
 constexpr char NativePanZoomController::Destroy_t::signature[];
 
@@ -1542,17 +1542,17 @@ auto NativePanZoomController::UpdateOver
 constexpr char NativePanZoomController::UpdateOverscrollVelocity_t::name[];
 constexpr char NativePanZoomController::UpdateOverscrollVelocity_t::signature[];
 
 auto NativePanZoomController::UpdateOverscrollVelocity(float a0, float a1) const -> void
 {
     return mozilla::jni::Method<UpdateOverscrollVelocity_t>::Call(NativePanZoomController::mCtx, nullptr, a0, a1);
 }
 
-template<> const char mozilla::jni::Context<ProgressiveUpdateData, jobject>::name[] =
+const char ProgressiveUpdateData::name[] =
         "org/mozilla/gecko/gfx/ProgressiveUpdateData";
 
 constexpr char ProgressiveUpdateData::New_t::name[];
 constexpr char ProgressiveUpdateData::New_t::signature[];
 
 auto ProgressiveUpdateData::New() -> ProgressiveUpdateData::LocalRef
 {
     return mozilla::jni::Constructor<New_t>::Call(ProgressiveUpdateData::Context(), nullptr);
@@ -1613,17 +1613,17 @@ auto ProgressiveUpdateData::Y() const ->
     return mozilla::jni::Field<Y_t>::Get(ProgressiveUpdateData::mCtx, nullptr);
 }
 
 auto ProgressiveUpdateData::Y(float a0) const -> void
 {
     return mozilla::jni::Field<Y_t>::Set(ProgressiveUpdateData::mCtx, nullptr, a0);
 }
 
-template<> const char mozilla::jni::Context<ViewTransform, jobject>::name[] =
+const char ViewTransform::name[] =
         "org/mozilla/gecko/gfx/ViewTransform";
 
 constexpr char ViewTransform::New_t::name[];
 constexpr char ViewTransform::New_t::signature[];
 
 auto ViewTransform::New(float a0, float a1, float a2) -> ViewTransform::LocalRef
 {
     return mozilla::jni::Constructor<New_t>::Call(ViewTransform::Context(), nullptr, a0, a1, a2);
@@ -1741,17 +1741,17 @@ auto ViewTransform::Y() const -> float
     return mozilla::jni::Field<Y_t>::Get(ViewTransform::mCtx, nullptr);
 }
 
 auto ViewTransform::Y(float a0) const -> void
 {
     return mozilla::jni::Field<Y_t>::Set(ViewTransform::mCtx, nullptr, a0);
 }
 
-template<> const char mozilla::jni::Context<AudioFocusAgent, jobject>::name[] =
+const char AudioFocusAgent::name[] =
         "org/mozilla/gecko/media/AudioFocusAgent";
 
 constexpr char AudioFocusAgent::NotifyStartedPlaying_t::name[];
 constexpr char AudioFocusAgent::NotifyStartedPlaying_t::signature[];
 
 auto AudioFocusAgent::NotifyStartedPlaying() -> void
 {
     return mozilla::jni::Method<NotifyStartedPlaying_t>::Call(AudioFocusAgent::Context(), nullptr);
@@ -1760,17 +1760,17 @@ auto AudioFocusAgent::NotifyStartedPlayi
 constexpr char AudioFocusAgent::NotifyStoppedPlaying_t::name[];
 constexpr char AudioFocusAgent::NotifyStoppedPlaying_t::signature[];
 
 auto AudioFocusAgent::NotifyStoppedPlaying() -> void
 {
     return mozilla::jni::Method<NotifyStoppedPlaying_t>::Call(AudioFocusAgent::Context(), nullptr);
 }
 
-template<> const char mozilla::jni::Context<Restrictions, jobject>::name[] =
+const char Restrictions::name[] =
         "org/mozilla/gecko/restrictions/Restrictions";
 
 constexpr char Restrictions::IsAllowed_t::name[];
 constexpr char Restrictions::IsAllowed_t::signature[];
 
 auto Restrictions::IsAllowed(int32_t a0, mozilla::jni::String::Param a1) -> bool
 {
     return mozilla::jni::Method<IsAllowed_t>::Call(Restrictions::Context(), nullptr, a0, a1);
@@ -1779,17 +1779,17 @@ auto Restrictions::IsAllowed(int32_t a0,
 constexpr char Restrictions::IsUserRestricted_t::name[];
 constexpr char Restrictions::IsUserRestricted_t::signature[];
 
 auto Restrictions::IsUserRestricted() -> bool
 {
     return mozilla::jni::Method<IsUserRestricted_t>::Call(Restrictions::Context(), nullptr);
 }
 
-template<> const char mozilla::jni::Context<MatrixBlobCursor, jobject>::name[] =
+const char MatrixBlobCursor::name[] =
         "org/mozilla/gecko/sqlite/MatrixBlobCursor";
 
 constexpr char MatrixBlobCursor::New_t::name[];
 constexpr char MatrixBlobCursor::New_t::signature[];
 
 auto MatrixBlobCursor::New(mozilla::jni::ObjectArray::Param a0) -> MatrixBlobCursor::LocalRef
 {
     return mozilla::jni::Constructor<New_t>::Call(MatrixBlobCursor::Context(), nullptr, a0);
@@ -1822,17 +1822,17 @@ auto MatrixBlobCursor::AddRow(mozilla::j
 constexpr char MatrixBlobCursor::AddRow3_t::name[];
 constexpr char MatrixBlobCursor::AddRow3_t::signature[];
 
 auto MatrixBlobCursor::AddRow(mozilla::jni::ObjectArray::Param a0) const -> void
 {
     return mozilla::jni::Method<AddRow3_t>::Call(MatrixBlobCursor::mCtx, nullptr, a0);
 }
 
-template<> const char mozilla::jni::Context<SQLiteBridgeException, jobject>::name[] =
+const char SQLiteBridgeException::name[] =
         "org/mozilla/gecko/sqlite/SQLiteBridgeException";
 
 constexpr char SQLiteBridgeException::New_t::name[];
 constexpr char SQLiteBridgeException::New_t::signature[];
 
 auto SQLiteBridgeException::New() -> SQLiteBridgeException::LocalRef
 {
     return mozilla::jni::Constructor<New_t>::Call(SQLiteBridgeException::Context(), nullptr);
@@ -1841,17 +1841,17 @@ auto SQLiteBridgeException::New() -> SQL
 constexpr char SQLiteBridgeException::New2_t::name[];
 constexpr char SQLiteBridgeException::New2_t::signature[];
 
 auto SQLiteBridgeException::New(mozilla::jni::String::Param a0) -> SQLiteBridgeException::LocalRef
 {
     return mozilla::jni::Constructor<New2_t>::Call(SQLiteBridgeException::Context(), nullptr, a0);
 }
 
-template<> const char mozilla::jni::Context<Clipboard, jobject>::name[] =
+const char Clipboard::name[] =
         "org/mozilla/gecko/util/Clipboard";
 
 constexpr char Clipboard::ClearText_t::name[];
 constexpr char Clipboard::ClearText_t::signature[];
 
 auto Clipboard::ClearText() -> void
 {
     return mozilla::jni::Method<ClearText_t>::Call(Clipboard::Context(), nullptr);
@@ -1876,45 +1876,45 @@ auto Clipboard::HasText() -> bool
 constexpr char Clipboard::SetClipboardText_t::name[];
 constexpr char Clipboard::SetClipboardText_t::signature[];
 
 auto Clipboard::SetClipboardText(mozilla::jni::String::Param a0) -> void
 {
     return mozilla::jni::Method<SetClipboardText_t>::Call(Clipboard::Context(), nullptr, a0);
 }
 
-template<> const char mozilla::jni::Context<HardwareCodecCapabilityUtils, jobject>::name[] =
+const char HardwareCodecCapabilityUtils::name[] =
         "org/mozilla/gecko/util/HardwareCodecCapabilityUtils";
 
 constexpr char HardwareCodecCapabilityUtils::FindDecoderCodecInfoForMimeType_t::name[];
 constexpr char HardwareCodecCapabilityUtils::FindDecoderCodecInfoForMimeType_t::signature[];
 
 auto HardwareCodecCapabilityUtils::FindDecoderCodecInfoForMimeType(mozilla::jni::String::Param a0) -> bool
 {
     return mozilla::jni::Method<FindDecoderCodecInfoForMimeType_t>::Call(HardwareCodecCapabilityUtils::Context(), nullptr, a0);
 }
 
-template<> const char mozilla::jni::Context<NativeJSContainer, jobject>::name[] =
+const char NativeJSContainer::name[] =
         "org/mozilla/gecko/util/NativeJSContainer";
 
 constexpr char NativeJSContainer::New_t::name[];
 constexpr char NativeJSContainer::New_t::signature[];
 
 auto NativeJSContainer::New() -> NativeJSContainer::LocalRef
 {
     return mozilla::jni::Constructor<New_t>::Call(NativeJSContainer::Context(), 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[];
 
-template<> const char mozilla::jni::Context<NativeJSObject, jobject>::name[] =
+const char NativeJSObject::name[] =
         "org/mozilla/gecko/util/NativeJSObject";
 
 constexpr char NativeJSObject::New_t::name[];
 constexpr char NativeJSObject::New_t::signature[];
 
 auto NativeJSObject::New() -> NativeJSObject::LocalRef
 {
     return mozilla::jni::Constructor<New_t>::Call(NativeJSObject::Context(), nullptr);
--- a/widget/android/GeneratedJNIWrappers.h
+++ b/widget/android/GeneratedJNIWrappers.h
@@ -10,16 +10,18 @@
 #include "mozilla/jni/Refs.h"
 
 namespace mozilla {
 namespace widget {
 
 class ANRReporter : public mozilla::jni::ObjectBase<ANRReporter, jobject>
 {
 public:
+    static const char name[];
+
     explicit ANRReporter(const Context& ctx) : ObjectBase<ANRReporter, jobject>(ctx) {}
 
     struct GetNativeStack_t {
         typedef ANRReporter Owner;
         typedef mozilla::jni::String::LocalRef ReturnType;
         typedef mozilla::jni::String::Param SetterType;
         typedef mozilla::jni::Args<> Args;
         static constexpr char name[] = "getNativeStack";
@@ -60,16 +62,18 @@ public:
     static const bool isMultithreaded = false;
 
     template<class Impl> class Natives;
 };
 
 class AlarmReceiver : public mozilla::jni::ObjectBase<AlarmReceiver, jobject>
 {
 public:
+    static const char name[];
+
     explicit AlarmReceiver(const Context& ctx) : ObjectBase<AlarmReceiver, jobject>(ctx) {}
 
     struct NotifyAlarmFired_t {
         typedef AlarmReceiver Owner;
         typedef void ReturnType;
         typedef void SetterType;
         typedef mozilla::jni::Args<> Args;
         static constexpr char name[] = "notifyAlarmFired";
@@ -83,16 +87,18 @@ public:
     static const bool isMultithreaded = false;
 
     template<class Impl> class Natives;
 };
 
 class DownloadsIntegration : public mozilla::jni::ObjectBase<DownloadsIntegration, jobject>
 {
 public:
+    static const char name[];
+
     explicit DownloadsIntegration(const Context& ctx) : ObjectBase<DownloadsIntegration, jobject>(ctx) {}
 
     struct GetTemporaryDownloadDirectory_t {
         typedef DownloadsIntegration Owner;
         typedef mozilla::jni::String::LocalRef ReturnType;
         typedef mozilla::jni::String::Param SetterType;
         typedef mozilla::jni::Args<> Args;
         static constexpr char name[] = "getTemporaryDownloadDirectory";
@@ -124,16 +130,18 @@ public:
 
     static const bool isMultithreaded = false;
 
 };
 
 class GeckoAppShell : public mozilla::jni::ObjectBase<GeckoAppShell, jobject>
 {
 public:
+    static const char name[];
+
     explicit GeckoAppShell(const Context& ctx) : ObjectBase<GeckoAppShell, jobject>(ctx) {}
 
     struct AddPluginViewWrapper_t {
         typedef GeckoAppShell Owner;
         typedef void ReturnType;
         typedef void SetterType;
         typedef mozilla::jni::Args<
                 mozilla::jni::Object::Param,
@@ -1579,16 +1587,18 @@ public:
     static const bool isMultithreaded = true;
 
     template<class Impl> class Natives;
 };
 
 class GeckoEditable : public mozilla::jni::ObjectBase<GeckoEditable, jobject>
 {
 public:
+    static const char name[];
+
     explicit GeckoEditable(const Context& ctx) : ObjectBase<GeckoEditable, jobject>(ctx) {}
 
     struct New_t {
         typedef GeckoEditable Owner;
         typedef GeckoEditable::LocalRef ReturnType;
         typedef GeckoEditable::Param SetterType;
         typedef mozilla::jni::Args<
                 mozilla::jni::Object::Param> Args;
@@ -1825,16 +1835,18 @@ public:
     static const bool isMultithreaded = false;
 
     template<class Impl> class Natives;
 };
 
 class GeckoEditableListener : public mozilla::jni::ObjectBase<GeckoEditableListener, jobject>
 {
 public:
+    static const char name[];
+
     explicit GeckoEditableListener(const Context& ctx) : ObjectBase<GeckoEditableListener, jobject>(ctx) {}
 
     static const int32_t NOTIFY_IME_OF_BLUR = 2;
 
     static const int32_t NOTIFY_IME_OF_FOCUS = 1;
 
     static const int32_t NOTIFY_IME_OPEN_VKB = -2;
 
@@ -1846,16 +1858,18 @@ public:
 
     static const bool isMultithreaded = false;
 
 };
 
 class GeckoJavaSampler : public mozilla::jni::ObjectBase<GeckoJavaSampler, jobject>
 {
 public:
+    static const char name[];
+
     explicit GeckoJavaSampler(const Context& ctx) : ObjectBase<GeckoJavaSampler, jobject>(ctx) {}
 
     struct GetFrameNameJavaProfilingWrapper_t {
         typedef GeckoJavaSampler Owner;
         typedef mozilla::jni::String::LocalRef ReturnType;
         typedef mozilla::jni::String::Param SetterType;
         typedef mozilla::jni::Args<
                 int32_t,
@@ -1982,16 +1996,18 @@ public:
     static const bool isMultithreaded = true;
 
     template<class Impl> class Natives;
 };
 
 class GeckoSmsManager : public mozilla::jni::ObjectBase<GeckoSmsManager, jobject>
 {
 public:
+    static const char name[];
+
     explicit GeckoSmsManager(const Context& ctx) : ObjectBase<GeckoSmsManager, jobject>(ctx) {}
 
     struct NotifyCursorDone_t {
         typedef GeckoSmsManager Owner;
         typedef void ReturnType;
         typedef void SetterType;
         typedef mozilla::jni::Args<
                 int32_t> Args;
@@ -2230,16 +2246,18 @@ public:
     static const bool isMultithreaded = false;
 
     template<class Impl> class Natives;
 };
 
 class GeckoThread : public mozilla::jni::ObjectBase<GeckoThread, jobject>
 {
 public:
+    static const char name[];
+
     explicit GeckoThread(const Context& ctx) : ObjectBase<GeckoThread, jobject>(ctx) {}
 
     class State;
 
     struct CheckAndSetState_t {
         typedef GeckoThread Owner;
         typedef bool ReturnType;
         typedef bool SetterType;
@@ -2391,16 +2409,18 @@ public:
     static const bool isMultithreaded = false;
 
     template<class Impl> class Natives;
 };
 
 class GeckoThread::State : public mozilla::jni::ObjectBase<State, jobject>
 {
 public:
+    static const char name[];
+
     explicit State(const Context& ctx) : ObjectBase<State, jobject>(ctx) {}
 
     struct EXITED_t {
         typedef State Owner;
         typedef State::LocalRef ReturnType;
         typedef State::Param SetterType;
         typedef mozilla::jni::Args<> Args;
         static constexpr char name[] = "EXITED";
@@ -2535,27 +2555,31 @@ public:
 
     static const bool isMultithreaded = false;
 
 };
 
 class GeckoView : public mozilla::jni::ObjectBase<GeckoView, jobject>
 {
 public:
+    static const char name[];
+
     explicit GeckoView(const Context& ctx) : ObjectBase<GeckoView, jobject>(ctx) {}
 
     class Window;
 
     static const bool isMultithreaded = false;
 
 };
 
 class GeckoView::Window : public mozilla::jni::ObjectBase<Window, jobject>
 {
 public:
+    static const char name[];
+
     explicit Window(const Context& ctx) : ObjectBase<Window, jobject>(ctx) {}
 
     struct New_t {
         typedef Window Owner;
         typedef Window::LocalRef ReturnType;
         typedef Window::Param SetterType;
         typedef mozilla::jni::Args<> Args;
         static constexpr char name[] = "<init>";
@@ -2644,16 +2668,18 @@ public:
     static const bool isMultithreaded = true;
 
     template<class Impl> class Natives;
 };
 
 class PrefsHelper : public mozilla::jni::ObjectBase<PrefsHelper, jobject>
 {
 public:
+    static const char name[];
+
     explicit PrefsHelper(const Context& ctx) : ObjectBase<PrefsHelper, jobject>(ctx) {}
 
     struct CallPrefHandler_t {
         typedef PrefsHelper Owner;
         typedef void ReturnType;
         typedef void SetterType;
         typedef mozilla::jni::Args<
                 mozilla::jni::Object::Param,
@@ -2769,16 +2795,18 @@ public:
     static const bool isMultithreaded = false;
 
     template<class Impl> class Natives;
 };
 
 class SurfaceBits : public mozilla::jni::ObjectBase<SurfaceBits, jobject>
 {
 public:
+    static const char name[];
+
     explicit SurfaceBits(const Context& ctx) : ObjectBase<SurfaceBits, jobject>(ctx) {}
 
     struct New_t {
         typedef SurfaceBits Owner;
         typedef SurfaceBits::LocalRef ReturnType;
         typedef SurfaceBits::Param SetterType;
         typedef mozilla::jni::Args<> Args;
         static constexpr char name[] = "<init>";
@@ -2861,16 +2889,18 @@ public:
 
     static const bool isMultithreaded = true;
 
 };
 
 class ThumbnailHelper : public mozilla::jni::ObjectBase<ThumbnailHelper, jobject>
 {
 public:
+    static const char name[];
+
     explicit ThumbnailHelper(const Context& ctx) : ObjectBase<ThumbnailHelper, jobject>(ctx) {}
 
     struct SendThumbnail_t {
         typedef ThumbnailHelper Owner;
         typedef void ReturnType;
         typedef void SetterType;
         typedef mozilla::jni::Args<
                 mozilla::jni::Object::Param,
@@ -2889,16 +2919,18 @@ public:
 
     static const bool isMultithreaded = false;
 
 };
 
 class Distribution : public mozilla::jni::ObjectBase<Distribution, jobject>
 {
 public:
+    static const char name[];
+
     explicit Distribution(const Context& ctx) : ObjectBase<Distribution, jobject>(ctx) {}
 
     struct GetDistributionDirectories_t {
         typedef Distribution Owner;
         typedef mozilla::jni::ObjectArray::LocalRef ReturnType;
         typedef mozilla::jni::ObjectArray::Param SetterType;
         typedef mozilla::jni::Args<> Args;
         static constexpr char name[] = "getDistributionDirectories";
@@ -2913,16 +2945,18 @@ public:
 
     static const bool isMultithreaded = false;
 
 };
 
 class DisplayPortMetrics : public mozilla::jni::ObjectBase<DisplayPortMetrics, jobject>
 {
 public:
+    static const char name[];
+
     explicit DisplayPortMetrics(const Context& ctx) : ObjectBase<DisplayPortMetrics, jobject>(ctx) {}
 
     struct New_t {
         typedef DisplayPortMetrics Owner;
         typedef DisplayPortMetrics::LocalRef ReturnType;
         typedef DisplayPortMetrics::Param SetterType;
         typedef mozilla::jni::Args<
                 float,
@@ -2972,16 +3006,18 @@ public:
 
     static const bool isMultithreaded = false;
 
 };
 
 class GLController : public mozilla::jni::ObjectBase<GLController, jobject>
 {
 public:
+    static const char name[];
+
     explicit GLController(const Context& ctx) : ObjectBase<GLController, jobject>(ctx) {}
 
     struct AttachToJava_t {
         typedef GLController Owner;
         typedef void ReturnType;
         typedef void SetterType;
         typedef mozilla::jni::Args<
                 mozilla::jni::Object::Param,
@@ -3113,16 +3149,18 @@ public:
     static const bool isMultithreaded = true;
 
     template<class Impl> class Natives;
 };
 
 class GeckoLayerClient : public mozilla::jni::ObjectBase<GeckoLayerClient, jobject>
 {
 public:
+    static const char name[];
+
     explicit GeckoLayerClient(const Context& ctx) : ObjectBase<GeckoLayerClient, jobject>(ctx) {}
 
     struct ActivateProgram_t {
         typedef GeckoLayerClient Owner;
         typedef void ReturnType;
         typedef void SetterType;
         typedef mozilla::jni::Args<> Args;
         static constexpr char name[] = "activateProgram";
@@ -3389,16 +3427,18 @@ public:
 
     static const bool isMultithreaded = true;
 
 };
 
 class ImmutableViewportMetrics : public mozilla::jni::ObjectBase<ImmutableViewportMetrics, jobject>
 {
 public:
+    static const char name[];
+
     explicit ImmutableViewportMetrics(const Context& ctx) : ObjectBase<ImmutableViewportMetrics, jobject>(ctx) {}
 
     struct New_t {
         typedef ImmutableViewportMetrics Owner;
         typedef ImmutableViewportMetrics::LocalRef ReturnType;
         typedef ImmutableViewportMetrics::Param SetterType;
         typedef mozilla::jni::Args<
                 float,
@@ -3426,27 +3466,31 @@ public:
 
     static const bool isMultithreaded = true;
 
 };
 
 class LayerRenderer : public mozilla::jni::ObjectBase<LayerRenderer, jobject>
 {
 public:
+    static const char name[];
+
     explicit LayerRenderer(const Context& ctx) : ObjectBase<LayerRenderer, jobject>(ctx) {}
 
     class Frame;
 
     static const bool isMultithreaded = false;
 
 };
 
 class LayerRenderer::Frame : public mozilla::jni::ObjectBase<Frame, jobject>
 {
 public:
+    static const char name[];
+
     explicit Frame(const Context& ctx) : ObjectBase<Frame, jobject>(ctx) {}
 
     struct BeginDrawing_t {
         typedef Frame Owner;
         typedef void ReturnType;
         typedef void SetterType;
         typedef mozilla::jni::Args<> Args;
         static constexpr char name[] = "beginDrawing";
@@ -3506,16 +3550,18 @@ public:
 
     static const bool isMultithreaded = true;
 
 };
 
 class LayerView : public mozilla::jni::ObjectBase<LayerView, jobject>
 {
 public:
+    static const char name[];
+
     explicit LayerView(const Context& ctx) : ObjectBase<LayerView, jobject>(ctx) {}
 
     struct updateZoomedView_t {
         typedef LayerView Owner;
         typedef void ReturnType;
         typedef void SetterType;
         typedef mozilla::jni::Args<
                 mozilla::jni::Object::Param> Args;
@@ -3531,16 +3577,18 @@ public:
 
     static const bool isMultithreaded = true;
 
 };
 
 class NativePanZoomController : public mozilla::jni::ObjectBase<NativePanZoomController, jobject>
 {
 public:
+    static const char name[];
+
     explicit NativePanZoomController(const Context& ctx) : ObjectBase<NativePanZoomController, jobject>(ctx) {}
 
     struct AdjustScrollForSurfaceShift_t {
         typedef NativePanZoomController Owner;
         typedef void ReturnType;
         typedef void SetterType;
         typedef mozilla::jni::Args<
                 float,
@@ -3774,16 +3822,18 @@ public:
     static const bool isMultithreaded = true;
 
     template<class Impl> class Natives;
 };
 
 class ProgressiveUpdateData : public mozilla::jni::ObjectBase<ProgressiveUpdateData, jobject>
 {
 public:
+    static const char name[];
+
     explicit ProgressiveUpdateData(const Context& ctx) : ObjectBase<ProgressiveUpdateData, jobject>(ctx) {}
 
     struct New_t {
         typedef ProgressiveUpdateData Owner;
         typedef ProgressiveUpdateData::LocalRef ReturnType;
         typedef ProgressiveUpdateData::Param SetterType;
         typedef mozilla::jni::Args<> Args;
         static constexpr char name[] = "<init>";
@@ -3882,16 +3932,18 @@ public:
 
     static const bool isMultithreaded = true;
 
 };
 
 class ViewTransform : public mozilla::jni::ObjectBase<ViewTransform, jobject>
 {
 public:
+    static const char name[];
+
     explicit ViewTransform(const Context& ctx) : ObjectBase<ViewTransform, jobject>(ctx) {}
 
     struct New_t {
         typedef ViewTransform Owner;
         typedef ViewTransform::LocalRef ReturnType;
         typedef ViewTransform::Param SetterType;
         typedef mozilla::jni::Args<
                 float,
@@ -4062,16 +4114,18 @@ public:
 
     static const bool isMultithreaded = true;
 
 };
 
 class AudioFocusAgent : public mozilla::jni::ObjectBase<AudioFocusAgent, jobject>
 {
 public:
+    static const char name[];
+
     explicit AudioFocusAgent(const Context& ctx) : ObjectBase<AudioFocusAgent, jobject>(ctx) {}
 
     struct NotifyStartedPlaying_t {
         typedef AudioFocusAgent Owner;
         typedef void ReturnType;
         typedef void SetterType;
         typedef mozilla::jni::Args<> Args;
         static constexpr char name[] = "notifyStartedPlaying";
@@ -4101,16 +4155,18 @@ public:
 
     static const bool isMultithreaded = false;
 
 };
 
 class Restrictions : public mozilla::jni::ObjectBase<Restrictions, jobject>
 {
 public:
+    static const char name[];
+
     explicit Restrictions(const Context& ctx) : ObjectBase<Restrictions, jobject>(ctx) {}
 
     struct IsAllowed_t {
         typedef Restrictions Owner;
         typedef bool ReturnType;
         typedef bool SetterType;
         typedef mozilla::jni::Args<
                 int32_t,
@@ -4142,16 +4198,18 @@ public:
 
     static const bool isMultithreaded = false;
 
 };
 
 class MatrixBlobCursor : public mozilla::jni::ObjectBase<MatrixBlobCursor, jobject>
 {
 public:
+    static const char name[];
+
     explicit MatrixBlobCursor(const Context& ctx) : ObjectBase<MatrixBlobCursor, jobject>(ctx) {}
 
     struct New_t {
         typedef MatrixBlobCursor Owner;
         typedef MatrixBlobCursor::LocalRef ReturnType;
         typedef MatrixBlobCursor::Param SetterType;
         typedef mozilla::jni::Args<
                 mozilla::jni::ObjectArray::Param> Args;
@@ -4233,16 +4291,18 @@ public:
 
     static const bool isMultithreaded = false;
 
 };
 
 class SQLiteBridgeException : public mozilla::jni::ObjectBase<SQLiteBridgeException, jobject>
 {
 public:
+    static const char name[];
+
     explicit SQLiteBridgeException(const Context& ctx) : ObjectBase<SQLiteBridgeException, jobject>(ctx) {}
 
     struct New_t {
         typedef SQLiteBridgeException Owner;
         typedef SQLiteBridgeException::LocalRef ReturnType;
         typedef SQLiteBridgeException::Param SetterType;
         typedef mozilla::jni::Args<> Args;
         static constexpr char name[] = "<init>";
@@ -4275,16 +4335,18 @@ public:
 
     static const bool isMultithreaded = true;
 
 };
 
 class Clipboard : public mozilla::jni::ObjectBase<Clipboard, jobject>
 {
 public:
+    static const char name[];
+
     explicit Clipboard(const Context& ctx) : ObjectBase<Clipboard, jobject>(ctx) {}
 
     struct ClearText_t {
         typedef Clipboard Owner;
         typedef void ReturnType;
         typedef void SetterType;
         typedef mozilla::jni::Args<> Args;
         static constexpr char name[] = "clearText";
@@ -4345,16 +4407,18 @@ public:
 
     static const bool isMultithreaded = false;
 
 };
 
 class HardwareCodecCapabilityUtils : public mozilla::jni::ObjectBase<HardwareCodecCapabilityUtils, jobject>
 {
 public:
+    static const char name[];
+
     explicit HardwareCodecCapabilityUtils(const Context& ctx) : ObjectBase<HardwareCodecCapabilityUtils, jobject>(ctx) {}
 
     struct FindDecoderCodecInfoForMimeType_t {
         typedef HardwareCodecCapabilityUtils Owner;
         typedef bool ReturnType;
         typedef bool SetterType;
         typedef mozilla::jni::Args<
                 mozilla::jni::String::Param> Args;
@@ -4370,16 +4434,18 @@ public:
 
     static const bool isMultithreaded = true;
 
 };
 
 class NativeJSContainer : public mozilla::jni::ObjectBase<NativeJSContainer, jobject>
 {
 public:
+    static const char name[];
+
     explicit NativeJSContainer(const Context& ctx) : ObjectBase<NativeJSContainer, jobject>(ctx) {}
 
     struct New_t {
         typedef NativeJSContainer Owner;
         typedef NativeJSContainer::LocalRef ReturnType;
         typedef NativeJSContainer::Param SetterType;
         typedef mozilla::jni::Args<> Args;
         static constexpr char name[] = "<init>";
@@ -4421,16 +4487,18 @@ public:
     static const bool isMultithreaded = true;
 
     template<class Impl> class Natives;
 };
 
 class NativeJSObject : public mozilla::jni::ObjectBase<NativeJSObject, jobject>
 {
 public:
+    static const char name[];
+
     explicit NativeJSObject(const Context& ctx) : ObjectBase<NativeJSObject, jobject>(ctx) {}
 
     struct New_t {
         typedef NativeJSObject Owner;
         typedef NativeJSObject::LocalRef ReturnType;
         typedef NativeJSObject::Param SetterType;
         typedef mozilla::jni::Args<> Args;
         static constexpr char name[] = "<init>";