widget/android/GeneratedJNIWrappers.h
author Jim Chen <nchen@mozilla.com>
Mon, 15 May 2017 23:11:17 -0400
changeset 406671 06142f9787e7643cae17dced089d4ebd37ec1bbc
parent 406561 7a0755319fd2bfaad6f1df22c0cbb79f0358da7e
child 406672 8f9d8749eb5ef4d9d156426435c5f17a20b75601
permissions -rw-r--r--
Bug 1363567 - 1. Remove addPluginView/removePluginView methods; r=rbarker Remove the addPluginView and removePluginView methods from GeckoInterface. Instead, move the JNI calls directly to GeckoApp itself. GeckoApp then uses GeckoActivityMonitor to find the current activity, instead of using GeckoAppShell.getGeckoInterface(). MozReview-Commit-ID: 7ym8kuElADV

// GENERATED CODE
// Generated by the Java program at /build/annotationProcessors at compile time
// from annotations on Java methods. To update, change the annotations on the
// corresponding Java methods and rerun the build. Manually updating this file
// will cause your build to fail.

#ifndef GeneratedJNIWrappers_h
#define GeneratedJNIWrappers_h

#include "mozilla/jni/Refs.h"

namespace mozilla {
namespace java {

class AndroidGamepadManager : public mozilla::jni::ObjectBase<AndroidGamepadManager>
{
public:
    static const char name[];

    explicit AndroidGamepadManager(const Context& ctx) : ObjectBase<AndroidGamepadManager>(ctx) {}

    struct OnAxisChange_t {
        typedef AndroidGamepadManager Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                int32_t,
                mozilla::jni::BooleanArray::Param,
                mozilla::jni::FloatArray::Param> Args;
        static constexpr char name[] = "onAxisChange";
        static constexpr char signature[] =
                "(I[Z[F)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::UI;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    struct OnButtonChange_t {
        typedef AndroidGamepadManager Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                int32_t,
                int32_t,
                bool,
                float> Args;
        static constexpr char name[] = "onButtonChange";
        static constexpr char signature[] =
                "(IIZF)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::UI;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    struct OnGamepadAdded_t {
        typedef AndroidGamepadManager Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                int32_t,
                int32_t> Args;
        static constexpr char name[] = "onGamepadAdded";
        static constexpr char signature[] =
                "(II)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto OnGamepadAdded(int32_t, int32_t) -> void;

    struct OnGamepadChange_t {
        typedef AndroidGamepadManager Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                int32_t,
                bool> Args;
        static constexpr char name[] = "onGamepadChange";
        static constexpr char signature[] =
                "(IZ)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::UI;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    struct Start_t {
        typedef AndroidGamepadManager Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "start";
        static constexpr char signature[] =
                "()V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto Start() -> void;

    struct Stop_t {
        typedef AndroidGamepadManager Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "stop";
        static constexpr char signature[] =
                "()V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto Stop() -> void;

    static const mozilla::jni::CallingThread callingThread =
            mozilla::jni::CallingThread::ANY;

    template<class Impl> class Natives;
};

class EventDispatcher : public mozilla::jni::ObjectBase<EventDispatcher>
{
public:
    static const char name[];

    explicit EventDispatcher(const Context& ctx) : ObjectBase<EventDispatcher>(ctx) {}

    class NativeCallbackDelegate;

    struct DispatchToGecko_t {
        typedef EventDispatcher Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::String::Param,
                mozilla::jni::Object::Param,
                mozilla::jni::Object::Param> Args;
        static constexpr char name[] = "dispatchToGecko";
        static constexpr char signature[] =
                "(Ljava/lang/String;Lorg/mozilla/gecko/util/GeckoBundle;Lorg/mozilla/gecko/util/EventCallback;)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::GECKO;
    };

    struct DispatchToThreads_t {
        typedef EventDispatcher Owner;
        typedef bool ReturnType;
        typedef bool SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::String::Param,
                mozilla::jni::Object::Param,
                mozilla::jni::Object::Param> Args;
        static constexpr char name[] = "dispatchToThreads";
        static constexpr char signature[] =
                "(Ljava/lang/String;Lorg/mozilla/gecko/util/GeckoBundle;Lorg/mozilla/gecko/util/EventCallback;)Z";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto DispatchToThreads(mozilla::jni::String::Param, mozilla::jni::Object::Param, mozilla::jni::Object::Param) const -> bool;

    struct DisposeNative_t {
        typedef EventDispatcher 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 mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::GECKO;
    };

    struct GetInstance_t {
        typedef EventDispatcher Owner;
        typedef EventDispatcher::LocalRef ReturnType;
        typedef EventDispatcher::Param SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "getInstance";
        static constexpr char signature[] =
                "()Lorg/mozilla/gecko/EventDispatcher;";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto GetInstance() -> EventDispatcher::LocalRef;

    struct HasGeckoListener_t {
        typedef EventDispatcher Owner;
        typedef bool ReturnType;
        typedef bool SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::String::Param> Args;
        static constexpr char name[] = "hasGeckoListener";
        static constexpr char signature[] =
                "(Ljava/lang/String;)Z";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    struct SetAttachedToGecko_t {
        typedef EventDispatcher Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                int32_t> Args;
        static constexpr char name[] = "setAttachedToGecko";
        static constexpr char signature[] =
                "(I)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto SetAttachedToGecko(int32_t) const -> void;

    static const int32_t ATTACHED = 1;

    static const int32_t DETACHED = 0;

    static const int32_t REATTACHING = 2;

    static const mozilla::jni::CallingThread callingThread =
            mozilla::jni::CallingThread::ANY;

    template<class Impl> class Natives;
};

class EventDispatcher::NativeCallbackDelegate : public mozilla::jni::ObjectBase<NativeCallbackDelegate>
{
public:
    static const char name[];

    explicit NativeCallbackDelegate(const Context& ctx) : ObjectBase<NativeCallbackDelegate>(ctx) {}

    struct New_t {
        typedef NativeCallbackDelegate Owner;
        typedef NativeCallbackDelegate::LocalRef ReturnType;
        typedef NativeCallbackDelegate::Param SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "<init>";
        static constexpr char signature[] =
                "()V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto New() -> NativeCallbackDelegate::LocalRef;

    struct Finalize_t {
        typedef NativeCallbackDelegate Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "finalize";
        static constexpr char signature[] =
                "()V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::GECKO;
    };

    struct SendError_t {
        typedef NativeCallbackDelegate Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::Object::Param> Args;
        static constexpr char name[] = "sendError";
        static constexpr char signature[] =
                "(Ljava/lang/Object;)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::PROXY;
    };

    struct SendSuccess_t {
        typedef NativeCallbackDelegate Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::Object::Param> Args;
        static constexpr char name[] = "sendSuccess";
        static constexpr char signature[] =
                "(Ljava/lang/Object;)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::PROXY;
    };

    static const mozilla::jni::CallingThread callingThread =
            mozilla::jni::CallingThread::ANY;

    template<class Impl> class Natives;
};

class GeckoAppShell : public mozilla::jni::ObjectBase<GeckoAppShell>
{
public:
    static const char name[];

    explicit GeckoAppShell(const Context& ctx) : ObjectBase<GeckoAppShell>(ctx) {}

    class CameraCallback;

    struct CancelVibrate_t {
        typedef GeckoAppShell Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "cancelVibrate";
        static constexpr char signature[] =
                "()V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto CancelVibrate() -> void;

    struct CheckURIVisited_t {
        typedef GeckoAppShell Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::String::Param> Args;
        static constexpr char name[] = "checkUriVisited";
        static constexpr char signature[] =
                "(Ljava/lang/String;)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto CheckURIVisited(mozilla::jni::String::Param) -> void;

    struct CloseCamera_t {
        typedef GeckoAppShell Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "closeCamera";
        static constexpr char signature[] =
                "()V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto CloseCamera() -> void;

    struct CloseNotification_t {
        typedef GeckoAppShell Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::String::Param> Args;
        static constexpr char name[] = "closeNotification";
        static constexpr char signature[] =
                "(Ljava/lang/String;)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto CloseNotification(mozilla::jni::String::Param) -> void;

    struct ConnectionGetMimeType_t {
        typedef GeckoAppShell Owner;
        typedef mozilla::jni::String::LocalRef ReturnType;
        typedef mozilla::jni::String::Param SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::Object::Param> Args;
        static constexpr char name[] = "connectionGetMimeType";
        static constexpr char signature[] =
                "(Ljava/net/URLConnection;)Ljava/lang/String;";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto ConnectionGetMimeType(mozilla::jni::Object::Param) -> mozilla::jni::String::LocalRef;

    struct CreateInputStream_t {
        typedef GeckoAppShell Owner;
        typedef mozilla::jni::Object::LocalRef ReturnType;
        typedef mozilla::jni::Object::Param SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::Object::Param> Args;
        static constexpr char name[] = "createInputStream";
        static constexpr char signature[] =
                "(Ljava/net/URLConnection;)Ljava/io/InputStream;";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto CreateInputStream(mozilla::jni::Object::Param) -> mozilla::jni::Object::LocalRef;

    struct CreateShortcut_t {
        typedef GeckoAppShell Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::String::Param,
                mozilla::jni::String::Param> Args;
        static constexpr char name[] = "createShortcut";
        static constexpr char signature[] =
                "(Ljava/lang/String;Ljava/lang/String;)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto CreateShortcut(mozilla::jni::String::Param, mozilla::jni::String::Param) -> void;

    struct DisableBatteryNotifications_t {
        typedef GeckoAppShell Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "disableBatteryNotifications";
        static constexpr char signature[] =
                "()V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto DisableBatteryNotifications() -> void;

    struct DisableNetworkNotifications_t {
        typedef GeckoAppShell Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "disableNetworkNotifications";
        static constexpr char signature[] =
                "()V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto DisableNetworkNotifications() -> void;

    struct DisableScreenOrientationNotifications_t {
        typedef GeckoAppShell Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "disableScreenOrientationNotifications";
        static constexpr char signature[] =
                "()V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto DisableScreenOrientationNotifications() -> void;

    struct DisableSensor_t {
        typedef GeckoAppShell Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                int32_t> Args;
        static constexpr char name[] = "disableSensor";
        static constexpr char signature[] =
                "(I)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto DisableSensor(int32_t) -> void;

    struct EnableBatteryNotifications_t {
        typedef GeckoAppShell Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "enableBatteryNotifications";
        static constexpr char signature[] =
                "()V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto EnableBatteryNotifications() -> void;

    struct EnableLocation_t {
        typedef GeckoAppShell Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                bool> Args;
        static constexpr char name[] = "enableLocation";
        static constexpr char signature[] =
                "(Z)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto EnableLocation(bool) -> void;

    struct EnableLocationHighAccuracy_t {
        typedef GeckoAppShell Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                bool> Args;
        static constexpr char name[] = "enableLocationHighAccuracy";
        static constexpr char signature[] =
                "(Z)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto EnableLocationHighAccuracy(bool) -> void;

    struct EnableNetworkNotifications_t {
        typedef GeckoAppShell Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "enableNetworkNotifications";
        static constexpr char signature[] =
                "()V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto EnableNetworkNotifications() -> void;

    struct EnableScreenOrientationNotifications_t {
        typedef GeckoAppShell Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "enableScreenOrientationNotifications";
        static constexpr char signature[] =
                "()V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto EnableScreenOrientationNotifications() -> void;

    struct EnableSensor_t {
        typedef GeckoAppShell Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                int32_t> Args;
        static constexpr char name[] = "enableSensor";
        static constexpr char signature[] =
                "(I)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto EnableSensor(int32_t) -> void;

    struct GetApplicationContext_t {
        typedef GeckoAppShell Owner;
        typedef mozilla::jni::Object::LocalRef ReturnType;
        typedef mozilla::jni::Object::Param SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "getApplicationContext";
        static constexpr char signature[] =
                "()Landroid/content/Context;";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto GetApplicationContext() -> mozilla::jni::Object::LocalRef;

    struct GetConnection_t {
        typedef GeckoAppShell 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[] = "getConnection";
        static constexpr char signature[] =
                "(Ljava/lang/String;)Ljava/net/URLConnection;";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto GetConnection(mozilla::jni::String::Param) -> mozilla::jni::Object::LocalRef;

    struct GetContext_t {
        typedef GeckoAppShell Owner;
        typedef mozilla::jni::Object::LocalRef ReturnType;
        typedef mozilla::jni::Object::Param SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "getContext";
        static constexpr char signature[] =
                "()Landroid/content/Context;";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto GetContext() -> mozilla::jni::Object::LocalRef;

    struct GetCurrentBatteryInformation_t {
        typedef GeckoAppShell Owner;
        typedef mozilla::jni::DoubleArray::LocalRef ReturnType;
        typedef mozilla::jni::DoubleArray::Param SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "getCurrentBatteryInformation";
        static constexpr char signature[] =
                "()[D";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto GetCurrentBatteryInformation() -> mozilla::jni::DoubleArray::LocalRef;

    struct GetCurrentNetworkInformation_t {
        typedef GeckoAppShell Owner;
        typedef mozilla::jni::DoubleArray::LocalRef ReturnType;
        typedef mozilla::jni::DoubleArray::Param SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "getCurrentNetworkInformation";
        static constexpr char signature[] =
                "()[D";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto GetCurrentNetworkInformation() -> mozilla::jni::DoubleArray::LocalRef;

    struct GetDensity_t {
        typedef GeckoAppShell Owner;
        typedef float ReturnType;
        typedef float SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "getDensity";
        static constexpr char signature[] =
                "()F";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto GetDensity() -> float;

    struct GetDpi_t {
        typedef GeckoAppShell Owner;
        typedef int32_t ReturnType;
        typedef int32_t SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "getDpi";
        static constexpr char signature[] =
                "()I";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto GetDpi() -> int32_t;

    struct GetExceptionStackTrace_t {
        typedef GeckoAppShell Owner;
        typedef mozilla::jni::String::LocalRef ReturnType;
        typedef mozilla::jni::String::Param SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::Throwable::Param> Args;
        static constexpr char name[] = "getExceptionStackTrace";
        static constexpr char signature[] =
                "(Ljava/lang/Throwable;)Ljava/lang/String;";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::IGNORE;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto GetExceptionStackTrace(mozilla::jni::Throwable::Param) -> mozilla::jni::String::LocalRef;

    struct GetExtensionFromMimeType_t {
        typedef GeckoAppShell 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[] = "getExtensionFromMimeType";
        static constexpr char signature[] =
                "(Ljava/lang/String;)Ljava/lang/String;";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto GetExtensionFromMimeType(mozilla::jni::String::Param) -> mozilla::jni::String::LocalRef;

    struct GetHWDecoderCapability_t {
        typedef GeckoAppShell Owner;
        typedef bool ReturnType;
        typedef bool SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "getHWDecoderCapability";
        static constexpr char signature[] =
                "()Z";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto GetHWDecoderCapability() -> bool;

    struct GetHWEncoderCapability_t {
        typedef GeckoAppShell Owner;
        typedef bool ReturnType;
        typedef bool SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "getHWEncoderCapability";
        static constexpr char signature[] =
                "()Z";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto GetHWEncoderCapability() -> bool;

    struct GetHandlersForMimeType_t {
        typedef GeckoAppShell Owner;
        typedef mozilla::jni::ObjectArray::LocalRef ReturnType;
        typedef mozilla::jni::ObjectArray::Param SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::String::Param,
                mozilla::jni::String::Param> Args;
        static constexpr char name[] = "getHandlersForMimeType";
        static constexpr char signature[] =
                "(Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String;";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto GetHandlersForMimeType(mozilla::jni::String::Param, mozilla::jni::String::Param) -> mozilla::jni::ObjectArray::LocalRef;

    struct GetHandlersForURL_t {
        typedef GeckoAppShell Owner;
        typedef mozilla::jni::ObjectArray::LocalRef ReturnType;
        typedef mozilla::jni::ObjectArray::Param SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::String::Param,
                mozilla::jni::String::Param> Args;
        static constexpr char name[] = "getHandlersForURL";
        static constexpr char signature[] =
                "(Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String;";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto GetHandlersForURL(mozilla::jni::String::Param, mozilla::jni::String::Param) -> mozilla::jni::ObjectArray::LocalRef;

    struct GetIconForExtension_t {
        typedef GeckoAppShell Owner;
        typedef mozilla::jni::ByteArray::LocalRef ReturnType;
        typedef mozilla::jni::ByteArray::Param SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::String::Param,
                int32_t> Args;
        static constexpr char name[] = "getIconForExtension";
        static constexpr char signature[] =
                "(Ljava/lang/String;I)[B";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto GetIconForExtension(mozilla::jni::String::Param, int32_t) -> mozilla::jni::ByteArray::LocalRef;

    struct GetMaxTouchPoints_t {
        typedef GeckoAppShell Owner;
        typedef int32_t ReturnType;
        typedef int32_t SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "getMaxTouchPoints";
        static constexpr char signature[] =
                "()I";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto GetMaxTouchPoints() -> int32_t;

    struct GetMimeTypeFromExtensions_t {
        typedef GeckoAppShell 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[] = "getMimeTypeFromExtensions";
        static constexpr char signature[] =
                "(Ljava/lang/String;)Ljava/lang/String;";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto GetMimeTypeFromExtensions(mozilla::jni::String::Param) -> mozilla::jni::String::LocalRef;

    struct GetNetworkLinkType_t {
        typedef GeckoAppShell Owner;
        typedef int32_t ReturnType;
        typedef int32_t SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "getNetworkLinkType";
        static constexpr char signature[] =
                "()I";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto GetNetworkLinkType() -> int32_t;

    struct GetProxyForURI_t {
        typedef GeckoAppShell 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,
                mozilla::jni::String::Param,
                int32_t> Args;
        static constexpr char name[] = "getProxyForURI";
        static constexpr char signature[] =
                "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)Ljava/lang/String;";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto GetProxyForURI(mozilla::jni::String::Param, mozilla::jni::String::Param, mozilla::jni::String::Param, int32_t) -> mozilla::jni::String::LocalRef;

    struct GetScreenAngle_t {
        typedef GeckoAppShell Owner;
        typedef int32_t ReturnType;
        typedef int32_t SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "getScreenAngle";
        static constexpr char signature[] =
                "()I";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto GetScreenAngle() -> int32_t;

    struct GetScreenDepth_t {
        typedef GeckoAppShell Owner;
        typedef int32_t ReturnType;
        typedef int32_t SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "getScreenDepth";
        static constexpr char signature[] =
                "()I";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto GetScreenDepth() -> int32_t;

    struct GetScreenOrientation_t {
        typedef GeckoAppShell Owner;
        typedef int16_t ReturnType;
        typedef int16_t SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "getScreenOrientation";
        static constexpr char signature[] =
                "()S";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto GetScreenOrientation() -> int16_t;

    struct GetScreenSize_t {
        typedef GeckoAppShell Owner;
        typedef mozilla::jni::Object::LocalRef ReturnType;
        typedef mozilla::jni::Object::Param SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "getScreenSize";
        static constexpr char signature[] =
                "()Landroid/graphics/Rect;";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto GetScreenSize() -> mozilla::jni::Object::LocalRef;

    struct GetShowPasswordSetting_t {
        typedef GeckoAppShell Owner;
        typedef bool ReturnType;
        typedef bool SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "getShowPasswordSetting";
        static constexpr char signature[] =
                "()Z";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto GetShowPasswordSetting() -> bool;

    struct GetSystemColors_t {
        typedef GeckoAppShell Owner;
        typedef mozilla::jni::IntArray::LocalRef ReturnType;
        typedef mozilla::jni::IntArray::Param SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "getSystemColors";
        static constexpr char signature[] =
                "()[I";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto GetSystemColors() -> mozilla::jni::IntArray::LocalRef;

    struct HandleUncaughtException_t {
        typedef GeckoAppShell Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::Throwable::Param> Args;
        static constexpr char name[] = "handleUncaughtException";
        static constexpr char signature[] =
                "(Ljava/lang/Throwable;)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::IGNORE;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto HandleUncaughtException(mozilla::jni::Throwable::Param) -> void;

    struct HideProgressDialog_t {
        typedef GeckoAppShell Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "hideProgressDialog";
        static constexpr char signature[] =
                "()V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto HideProgressDialog() -> void;

    struct InitCamera_t {
        typedef GeckoAppShell Owner;
        typedef mozilla::jni::IntArray::LocalRef ReturnType;
        typedef mozilla::jni::IntArray::Param SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::String::Param,
                int32_t,
                int32_t,
                int32_t> Args;
        static constexpr char name[] = "initCamera";
        static constexpr char signature[] =
                "(Ljava/lang/String;III)[I";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto InitCamera(mozilla::jni::String::Param, int32_t, int32_t, int32_t) -> mozilla::jni::IntArray::LocalRef;

    struct IsNetworkLinkKnown_t {
        typedef GeckoAppShell Owner;
        typedef bool ReturnType;
        typedef bool SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "isNetworkLinkKnown";
        static constexpr char signature[] =
                "()Z";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto IsNetworkLinkKnown() -> bool;

    struct IsNetworkLinkUp_t {
        typedef GeckoAppShell Owner;
        typedef bool ReturnType;
        typedef bool SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "isNetworkLinkUp";
        static constexpr char signature[] =
                "()Z";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto IsNetworkLinkUp() -> bool;

    struct IsTablet_t {
        typedef GeckoAppShell Owner;
        typedef bool ReturnType;
        typedef bool SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "isTablet";
        static constexpr char signature[] =
                "()Z";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto IsTablet() -> bool;

    struct KillAnyZombies_t {
        typedef GeckoAppShell Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "killAnyZombies";
        static constexpr char signature[] =
                "()V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto KillAnyZombies() -> void;

    struct LaunchOrBringToFront_t {
        typedef GeckoAppShell Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "launchOrBringToFront";
        static constexpr char signature[] =
                "()V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto LaunchOrBringToFront() -> void;

    struct LoadPluginClass_t {
        typedef GeckoAppShell Owner;
        typedef mozilla::jni::Class::LocalRef ReturnType;
        typedef mozilla::jni::Class::Param SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::String::Param,
                mozilla::jni::String::Param> Args;
        static constexpr char name[] = "loadPluginClass";
        static constexpr char signature[] =
                "(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Class;";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto LoadPluginClass(mozilla::jni::String::Param, mozilla::jni::String::Param) -> mozilla::jni::Class::LocalRef;

    struct LockScreenOrientation_t {
        typedef GeckoAppShell Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                int32_t> Args;
        static constexpr char name[] = "lockScreenOrientation";
        static constexpr char signature[] =
                "(I)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto LockScreenOrientation(int32_t) -> void;

    struct MarkURIVisited_t {
        typedef GeckoAppShell Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::String::Param> Args;
        static constexpr char name[] = "markUriVisited";
        static constexpr char signature[] =
                "(Ljava/lang/String;)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto MarkURIVisited(mozilla::jni::String::Param) -> void;

    struct MoveTaskToBack_t {
        typedef GeckoAppShell Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "moveTaskToBack";
        static constexpr char signature[] =
                "()V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto MoveTaskToBack() -> void;

    struct NotifyObservers_t {
        typedef GeckoAppShell Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::String::Param,
                mozilla::jni::String::Param> Args;
        static constexpr char name[] = "nativeNotifyObservers";
        static constexpr char signature[] =
                "(Ljava/lang/String;Ljava/lang/String;)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::GECKO;
    };

    struct NotifyAlertListener_t {
        typedef GeckoAppShell Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::String::Param,
                mozilla::jni::String::Param,
                mozilla::jni::String::Param> Args;
        static constexpr char name[] = "notifyAlertListener";
        static constexpr char signature[] =
                "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::GECKO;
    };

    struct NotifyUriVisited_t {
        typedef GeckoAppShell Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::String::Param> Args;
        static constexpr char name[] = "notifyUriVisited";
        static constexpr char signature[] =
                "(Ljava/lang/String;)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::GECKO;
    };

    struct NotifyWakeLockChanged_t {
        typedef GeckoAppShell Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::String::Param,
                mozilla::jni::String::Param> Args;
        static constexpr char name[] = "notifyWakeLockChanged";
        static constexpr char signature[] =
                "(Ljava/lang/String;Ljava/lang/String;)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto NotifyWakeLockChanged(mozilla::jni::String::Param, mozilla::jni::String::Param) -> void;

    struct OnFullScreenPluginHidden_t {
        typedef GeckoAppShell Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::Object::Param> Args;
        static constexpr char name[] = "onFullScreenPluginHidden";
        static constexpr char signature[] =
                "(Landroid/view/View;)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::UI;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::GECKO;
    };

    struct OnLocationChanged_t {
        typedef GeckoAppShell Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                double,
                double,
                double,
                float,
                float,
                float,
                int64_t> Args;
        static constexpr char name[] = "onLocationChanged";
        static constexpr char signature[] =
                "(DDDFFFJ)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::UI;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::GECKO;
    };

    struct OnSensorChanged_t {
        typedef GeckoAppShell Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                int32_t,
                float,
                float,
                float,
                float,
                int32_t,
                int64_t> Args;
        static constexpr char name[] = "onSensorChanged";
        static constexpr char signature[] =
                "(IFFFFIJ)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::UI;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::GECKO;
    };

    struct OpenUriExternal_t {
        typedef GeckoAppShell Owner;
        typedef bool ReturnType;
        typedef bool SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::String::Param,
                mozilla::jni::String::Param,
                mozilla::jni::String::Param,
                mozilla::jni::String::Param,
                mozilla::jni::String::Param,
                mozilla::jni::String::Param> Args;
        static constexpr char name[] = "openUriExternal";
        static constexpr char signature[] =
                "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto OpenUriExternal(mozilla::jni::String::Param, mozilla::jni::String::Param, mozilla::jni::String::Param, mozilla::jni::String::Param, mozilla::jni::String::Param, mozilla::jni::String::Param) -> bool;

    struct PerformHapticFeedback_t {
        typedef GeckoAppShell Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                bool> Args;
        static constexpr char name[] = "performHapticFeedback";
        static constexpr char signature[] =
                "(Z)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto PerformHapticFeedback(bool) -> void;

    struct ReportJavaCrash_t {
        typedef GeckoAppShell Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::Throwable::Param,
                mozilla::jni::String::Param> Args;
        static constexpr char name[] = "reportJavaCrash";
        static constexpr char signature[] =
                "(Ljava/lang/Throwable;Ljava/lang/String;)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    struct SetScreenDepthOverride_t {
        typedef GeckoAppShell Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                int32_t> Args;
        static constexpr char name[] = "setScreenDepthOverride";
        static constexpr char signature[] =
                "(I)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto SetScreenDepthOverride(int32_t) -> void;

    struct SetURITitle_t {
        typedef GeckoAppShell Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::String::Param,
                mozilla::jni::String::Param> Args;
        static constexpr char name[] = "setUriTitle";
        static constexpr char signature[] =
                "(Ljava/lang/String;Ljava/lang/String;)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto SetURITitle(mozilla::jni::String::Param, mozilla::jni::String::Param) -> void;

    struct ShowNotification_t {
        typedef GeckoAppShell Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::String::Param,
                mozilla::jni::String::Param,
                mozilla::jni::String::Param,
                mozilla::jni::String::Param,
                mozilla::jni::String::Param,
                mozilla::jni::String::Param,
                mozilla::jni::String::Param> Args;
        static constexpr char name[] = "showNotification";
        static constexpr char signature[] =
                "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto ShowNotification(mozilla::jni::String::Param, mozilla::jni::String::Param, mozilla::jni::String::Param, mozilla::jni::String::Param, mozilla::jni::String::Param, mozilla::jni::String::Param, mozilla::jni::String::Param) -> void;

    struct StartGeckoServiceChildProcess_t {
        typedef GeckoAppShell Owner;
        typedef int32_t ReturnType;
        typedef int32_t SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::String::Param,
                mozilla::jni::ObjectArray::Param,
                int32_t,
                int32_t> Args;
        static constexpr char name[] = "startGeckoServiceChildProcess";
        static constexpr char signature[] =
                "(Ljava/lang/String;[Ljava/lang/String;II)I";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto StartGeckoServiceChildProcess(mozilla::jni::String::Param, mozilla::jni::ObjectArray::Param, int32_t, int32_t) -> int32_t;

    struct UnlockProfile_t {
        typedef GeckoAppShell Owner;
        typedef bool ReturnType;
        typedef bool SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "unlockProfile";
        static constexpr char signature[] =
                "()Z";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto UnlockProfile() -> bool;

    struct UnlockScreenOrientation_t {
        typedef GeckoAppShell Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "unlockScreenOrientation";
        static constexpr char signature[] =
                "()V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto UnlockScreenOrientation() -> void;

    struct Vibrate_t {
        typedef GeckoAppShell Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                int64_t> Args;
        static constexpr char name[] = "vibrate";
        static constexpr char signature[] =
                "(J)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto Vibrate(int64_t) -> void;

    struct Vibrate2_t {
        typedef GeckoAppShell Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::LongArray::Param,
                int32_t> Args;
        static constexpr char name[] = "vibrate";
        static constexpr char signature[] =
                "([JI)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto Vibrate(mozilla::jni::LongArray::Param, int32_t) -> void;

    static const mozilla::jni::CallingThread callingThread =
            mozilla::jni::CallingThread::ANY;

    template<class Impl> class Natives;
};

class GeckoAppShell::CameraCallback : public mozilla::jni::ObjectBase<CameraCallback>
{
public:
    static const char name[];

    explicit CameraCallback(const Context& ctx) : ObjectBase<CameraCallback>(ctx) {}

    struct OnFrameData_t {
        typedef CameraCallback Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                int32_t,
                mozilla::jni::ByteArray::Param> Args;
        static constexpr char name[] = "onFrameData";
        static constexpr char signature[] =
                "(I[B)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static const mozilla::jni::CallingThread callingThread =
            mozilla::jni::CallingThread::GECKO;

    template<class Impl> class Natives;
};

class GeckoBatteryManager : public mozilla::jni::ObjectBase<GeckoBatteryManager>
{
public:
    static const char name[];

    explicit GeckoBatteryManager(const Context& ctx) : ObjectBase<GeckoBatteryManager>(ctx) {}

    struct OnBatteryChange_t {
        typedef GeckoBatteryManager Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                double,
                bool,
                double> Args;
        static constexpr char name[] = "onBatteryChange";
        static constexpr char signature[] =
                "(DZD)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::UI;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::GECKO;
    };

    static const mozilla::jni::CallingThread callingThread =
            mozilla::jni::CallingThread::UI;

    template<class Impl> class Natives;
};

class GeckoEditable : public mozilla::jni::ObjectBase<GeckoEditable>
{
public:
    static const char name[];

    explicit GeckoEditable(const Context& ctx) : ObjectBase<GeckoEditable>(ctx) {}

    struct New_t {
        typedef GeckoEditable Owner;
        typedef GeckoEditable::LocalRef ReturnType;
        typedef GeckoEditable::Param SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::Object::Param> Args;
        static constexpr char name[] = "<init>";
        static constexpr char signature[] =
                "(Lorg/mozilla/gecko/GeckoView;)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto New(mozilla::jni::Object::Param) -> GeckoEditable::LocalRef;

    struct OnViewChange_t {
        typedef GeckoEditable Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::Object::Param> Args;
        static constexpr char name[] = "onViewChange";
        static constexpr char signature[] =
                "(Lorg/mozilla/gecko/GeckoView;)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto OnViewChange(mozilla::jni::Object::Param) const -> void;

    struct SetDefaultEditableChild_t {
        typedef GeckoEditable Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::Object::Param> Args;
        static constexpr char name[] = "setDefaultEditableChild";
        static constexpr char signature[] =
                "(Lorg/mozilla/gecko/IGeckoEditableChild;)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto SetDefaultEditableChild(mozilla::jni::Object::Param) const -> void;

    static const mozilla::jni::CallingThread callingThread =
            mozilla::jni::CallingThread::GECKO;

};

class GeckoEditableChild : public mozilla::jni::ObjectBase<GeckoEditableChild>
{
public:
    static const char name[];

    explicit GeckoEditableChild(const Context& ctx) : ObjectBase<GeckoEditableChild>(ctx) {}

    struct New_t {
        typedef GeckoEditableChild Owner;
        typedef GeckoEditableChild::LocalRef ReturnType;
        typedef GeckoEditableChild::Param SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::Object::Param> Args;
        static constexpr char name[] = "<init>";
        static constexpr char signature[] =
                "(Lorg/mozilla/gecko/IGeckoEditableParent;)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto New(mozilla::jni::Object::Param) -> GeckoEditableChild::LocalRef;

    struct NotifyIME_t {
        typedef GeckoEditableChild Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                int32_t> Args;
        static constexpr char name[] = "notifyIME";
        static constexpr char signature[] =
                "(I)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto NotifyIME(int32_t) const -> void;

    struct NotifyIMEContext_t {
        typedef GeckoEditableChild Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                int32_t,
                mozilla::jni::String::Param,
                mozilla::jni::String::Param,
                mozilla::jni::String::Param> Args;
        static constexpr char name[] = "notifyIMEContext";
        static constexpr char signature[] =
                "(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto NotifyIMEContext(int32_t, mozilla::jni::String::Param, mozilla::jni::String::Param, mozilla::jni::String::Param) const -> void;

    struct OnDefaultKeyEvent_t {
        typedef GeckoEditableChild Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::Object::Param> Args;
        static constexpr char name[] = "onDefaultKeyEvent";
        static constexpr char signature[] =
                "(Landroid/view/KeyEvent;)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto OnDefaultKeyEvent(mozilla::jni::Object::Param) const -> void;

    struct OnImeAddCompositionRange_t {
        typedef GeckoEditableChild Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                int32_t,
                int32_t,
                int32_t,
                int32_t,
                int32_t,
                bool,
                int32_t,
                int32_t,
                int32_t> Args;
        static constexpr char name[] = "onImeAddCompositionRange";
        static constexpr char signature[] =
                "(IIIIIZIII)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::PROXY;
    };

    struct OnImeReplaceText_t {
        typedef GeckoEditableChild Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                int32_t,
                int32_t,
                mozilla::jni::String::Param> Args;
        static constexpr char name[] = "onImeReplaceText";
        static constexpr char signature[] =
                "(IILjava/lang/String;)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::PROXY;
    };

    struct OnImeRequestCursorUpdates_t {
        typedef GeckoEditableChild Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                int32_t> Args;
        static constexpr char name[] = "onImeRequestCursorUpdates";
        static constexpr char signature[] =
                "(I)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::PROXY;
    };

    struct OnImeSynchronize_t {
        typedef GeckoEditableChild Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "onImeSynchronize";
        static constexpr char signature[] =
                "()V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::PROXY;
    };

    struct OnImeUpdateComposition_t {
        typedef GeckoEditableChild Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                int32_t,
                int32_t,
                int32_t> Args;
        static constexpr char name[] = "onImeUpdateComposition";
        static constexpr char signature[] =
                "(III)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::PROXY;
    };

    struct OnKeyEvent_t {
        typedef GeckoEditableChild Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                int32_t,
                int32_t,
                int32_t,
                int32_t,
                int32_t,
                int64_t,
                int32_t,
                int32_t,
                int32_t,
                bool,
                mozilla::jni::Object::Param> Args;
        static constexpr char name[] = "onKeyEvent";
        static constexpr char signature[] =
                "(IIIIIJIIIZLandroid/view/KeyEvent;)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::PROXY;
    };

    struct OnSelectionChange_t {
        typedef GeckoEditableChild Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                int32_t,
                int32_t> Args;
        static constexpr char name[] = "onSelectionChange";
        static constexpr char signature[] =
                "(II)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::IGNORE;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto OnSelectionChange(int32_t, int32_t) const -> void;

    struct OnTextChange_t {
        typedef GeckoEditableChild Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::String::Param,
                int32_t,
                int32_t,
                int32_t> Args;
        static constexpr char name[] = "onTextChange";
        static constexpr char signature[] =
                "(Ljava/lang/CharSequence;III)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::IGNORE;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto OnTextChange(mozilla::jni::String::Param, int32_t, int32_t, int32_t) const -> void;

    struct UpdateCompositionRects_t {
        typedef GeckoEditableChild Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::ObjectArray::Param> Args;
        static constexpr char name[] = "updateCompositionRects";
        static constexpr char signature[] =
                "([Landroid/graphics/RectF;)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto UpdateCompositionRects(mozilla::jni::ObjectArray::Param) const -> void;

    static const int32_t FLAG_KEEP_CURRENT_COMPOSITION = 1;

    static const mozilla::jni::CallingThread callingThread =
            mozilla::jni::CallingThread::ANY;

    template<class Impl> class Natives;
};

class GeckoEditableClient : public mozilla::jni::ObjectBase<GeckoEditableClient>
{
public:
    static const char name[];

    explicit GeckoEditableClient(const Context& ctx) : ObjectBase<GeckoEditableClient>(ctx) {}

    static const int32_t END_MONITOR = 3;

    static const int32_t ONE_SHOT = 1;

    static const int32_t START_MONITOR = 2;

    static const mozilla::jni::CallingThread callingThread =
            mozilla::jni::CallingThread::ANY;

};

class GeckoEditableListener : public mozilla::jni::ObjectBase<GeckoEditableListener>
{
public:
    static const char name[];

    explicit GeckoEditableListener(const Context& ctx) : ObjectBase<GeckoEditableListener>(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_OF_TOKEN = -3;

    static const int32_t NOTIFY_IME_OPEN_VKB = -2;

    static const int32_t NOTIFY_IME_REPLY_EVENT = -1;

    static const int32_t NOTIFY_IME_TO_CANCEL_COMPOSITION = 9;

    static const int32_t NOTIFY_IME_TO_COMMIT_COMPOSITION = 8;

    static const mozilla::jni::CallingThread callingThread =
            mozilla::jni::CallingThread::ANY;

};

class GeckoNetworkManager : public mozilla::jni::ObjectBase<GeckoNetworkManager>
{
public:
    static const char name[];

    explicit GeckoNetworkManager(const Context& ctx) : ObjectBase<GeckoNetworkManager>(ctx) {}

    struct OnConnectionChanged_t {
        typedef GeckoNetworkManager Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                int32_t,
                mozilla::jni::String::Param,
                bool,
                int32_t> Args;
        static constexpr char name[] = "onConnectionChanged";
        static constexpr char signature[] =
                "(ILjava/lang/String;ZI)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::GECKO;
    };

    struct OnStatusChanged_t {
        typedef GeckoNetworkManager Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::String::Param> Args;
        static constexpr char name[] = "onStatusChanged";
        static constexpr char signature[] =
                "(Ljava/lang/String;)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::GECKO;
    };

    static const mozilla::jni::CallingThread callingThread =
            mozilla::jni::CallingThread::ANY;

    template<class Impl> class Natives;
};

class GeckoScreenOrientation : public mozilla::jni::ObjectBase<GeckoScreenOrientation>
{
public:
    static const char name[];

    explicit GeckoScreenOrientation(const Context& ctx) : ObjectBase<GeckoScreenOrientation>(ctx) {}

    struct OnOrientationChange_t {
        typedef GeckoScreenOrientation Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                int16_t,
                int16_t> Args;
        static constexpr char name[] = "onOrientationChange";
        static constexpr char signature[] =
                "(SS)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::GECKO;
    };

    static const mozilla::jni::CallingThread callingThread =
            mozilla::jni::CallingThread::ANY;

    template<class Impl> class Natives;
};

class GeckoThread : public mozilla::jni::ObjectBase<GeckoThread>
{
public:
    static const char name[];

    explicit GeckoThread(const Context& ctx) : ObjectBase<GeckoThread>(ctx) {}

    class State;

    struct CheckAndSetState_t {
        typedef GeckoThread Owner;
        typedef bool ReturnType;
        typedef bool SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::Object::Param,
                mozilla::jni::Object::Param> Args;
        static constexpr char name[] = "checkAndSetState";
        static constexpr char signature[] =
                "(Lorg/mozilla/gecko/GeckoThread$State;Lorg/mozilla/gecko/GeckoThread$State;)Z";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto CheckAndSetState(mozilla::jni::Object::Param, mozilla::jni::Object::Param) -> bool;

    struct IsChildProcess_t {
        typedef GeckoThread Owner;
        typedef bool ReturnType;
        typedef bool SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "isChildProcess";
        static constexpr char signature[] =
                "()Z";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto IsChildProcess() -> bool;

    struct CreateServices_t {
        typedef GeckoThread Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::String::Param,
                mozilla::jni::String::Param> Args;
        static constexpr char name[] = "nativeCreateServices";
        static constexpr char signature[] =
                "(Ljava/lang/String;Ljava/lang/String;)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::GECKO;
    };

    struct OnPause_t {
        typedef GeckoThread Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "nativeOnPause";
        static constexpr char signature[] =
                "()V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::GECKO;
    };

    struct OnResume_t {
        typedef GeckoThread Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "nativeOnResume";
        static constexpr char signature[] =
                "()V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::GECKO;
    };

    struct PumpMessageLoop_t {
        typedef GeckoThread Owner;
        typedef bool ReturnType;
        typedef bool SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::Object::Param> Args;
        static constexpr char name[] = "pumpMessageLoop";
        static constexpr char signature[] =
                "(Landroid/os/Message;)Z";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto PumpMessageLoop(mozilla::jni::Object::Param) -> bool;

    struct RequestUiThreadCallback_t {
        typedef GeckoThread Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                int64_t> Args;
        static constexpr char name[] = "requestUiThreadCallback";
        static constexpr char signature[] =
                "(J)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto RequestUiThreadCallback(int64_t) -> void;

    struct RunUiThreadCallback_t {
        typedef GeckoThread Owner;
        typedef int64_t ReturnType;
        typedef int64_t SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "runUiThreadCallback";
        static constexpr char signature[] =
                "()J";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::UI;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    struct SetState_t {
        typedef GeckoThread Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::Object::Param> Args;
        static constexpr char name[] = "setState";
        static constexpr char signature[] =
                "(Lorg/mozilla/gecko/GeckoThread$State;)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto SetState(mozilla::jni::Object::Param) -> void;

    struct SpeculativeConnect_t {
        typedef GeckoThread Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::String::Param> Args;
        static constexpr char name[] = "speculativeConnectNative";
        static constexpr char signature[] =
                "(Ljava/lang/String;)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    struct WaitOnGecko_t {
        typedef GeckoThread Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "waitOnGecko";
        static constexpr char signature[] =
                "()V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    struct ClsLoader_t {
        typedef GeckoThread Owner;
        typedef mozilla::jni::Object::LocalRef ReturnType;
        typedef mozilla::jni::Object::Param SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "clsLoader";
        static constexpr char signature[] =
                "Ljava/lang/ClassLoader;";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto ClsLoader() -> mozilla::jni::Object::LocalRef;

    struct MsgQueue_t {
        typedef GeckoThread Owner;
        typedef mozilla::jni::Object::LocalRef ReturnType;
        typedef mozilla::jni::Object::Param SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "msgQueue";
        static constexpr char signature[] =
                "Landroid/os/MessageQueue;";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto MsgQueue() -> mozilla::jni::Object::LocalRef;

    static auto MsgQueue(mozilla::jni::Object::Param) -> void;

    static const mozilla::jni::CallingThread callingThread =
            mozilla::jni::CallingThread::ANY;

    template<class Impl> class Natives;
};

class GeckoThread::State : public mozilla::jni::ObjectBase<State>
{
public:
    static const char name[];

    explicit State(const Context& ctx) : ObjectBase<State>(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";
        static constexpr char signature[] =
                "Lorg/mozilla/gecko/GeckoThread$State;";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto EXITED() -> State::LocalRef;

    struct EXITING_t {
        typedef State Owner;
        typedef State::LocalRef ReturnType;
        typedef State::Param SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "EXITING";
        static constexpr char signature[] =
                "Lorg/mozilla/gecko/GeckoThread$State;";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto EXITING() -> State::LocalRef;

    struct INITIAL_t {
        typedef State Owner;
        typedef State::LocalRef ReturnType;
        typedef State::Param SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "INITIAL";
        static constexpr char signature[] =
                "Lorg/mozilla/gecko/GeckoThread$State;";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto INITIAL() -> State::LocalRef;

    struct JNI_READY_t {
        typedef State Owner;
        typedef State::LocalRef ReturnType;
        typedef State::Param SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "JNI_READY";
        static constexpr char signature[] =
                "Lorg/mozilla/gecko/GeckoThread$State;";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto JNI_READY() -> State::LocalRef;

    struct LAUNCHED_t {
        typedef State Owner;
        typedef State::LocalRef ReturnType;
        typedef State::Param SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "LAUNCHED";
        static constexpr char signature[] =
                "Lorg/mozilla/gecko/GeckoThread$State;";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto LAUNCHED() -> State::LocalRef;

    struct LIBS_READY_t {
        typedef State Owner;
        typedef State::LocalRef ReturnType;
        typedef State::Param SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "LIBS_READY";
        static constexpr char signature[] =
                "Lorg/mozilla/gecko/GeckoThread$State;";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto LIBS_READY() -> State::LocalRef;

    struct MOZGLUE_READY_t {
        typedef State Owner;
        typedef State::LocalRef ReturnType;
        typedef State::Param SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "MOZGLUE_READY";
        static constexpr char signature[] =
                "Lorg/mozilla/gecko/GeckoThread$State;";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto MOZGLUE_READY() -> State::LocalRef;

    struct PROFILE_READY_t {
        typedef State Owner;
        typedef State::LocalRef ReturnType;
        typedef State::Param SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "PROFILE_READY";
        static constexpr char signature[] =
                "Lorg/mozilla/gecko/GeckoThread$State;";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto PROFILE_READY() -> State::LocalRef;

    struct RESTARTING_t {
        typedef State Owner;
        typedef State::LocalRef ReturnType;
        typedef State::Param SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "RESTARTING";
        static constexpr char signature[] =
                "Lorg/mozilla/gecko/GeckoThread$State;";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto RESTARTING() -> State::LocalRef;

    struct RUNNING_t {
        typedef State Owner;
        typedef State::LocalRef ReturnType;
        typedef State::Param SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "RUNNING";
        static constexpr char signature[] =
                "Lorg/mozilla/gecko/GeckoThread$State;";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto RUNNING() -> State::LocalRef;

    static const mozilla::jni::CallingThread callingThread =
            mozilla::jni::CallingThread::ANY;

};

class GeckoView : public mozilla::jni::ObjectBase<GeckoView>
{
public:
    static const char name[];

    explicit GeckoView(const Context& ctx) : ObjectBase<GeckoView>(ctx) {}

    class State;
    class Window;

    static const int32_t LOAD_DEFAULT = 0;

    static const int32_t LOAD_NEW_TAB = 1;

    static const int32_t LOAD_SWITCH_TAB = 2;

    static const mozilla::jni::CallingThread callingThread =
            mozilla::jni::CallingThread::ANY;

};

class GeckoView::State : public mozilla::jni::ObjectBase<State>
{
public:
    static const char name[];

    explicit State(const Context& ctx) : ObjectBase<State>(ctx) {}

    struct INITIAL_t {
        typedef State Owner;
        typedef State::LocalRef ReturnType;
        typedef State::Param SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "INITIAL";
        static constexpr char signature[] =
                "Lorg/mozilla/gecko/GeckoView$State;";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto INITIAL() -> State::LocalRef;

    struct READY_t {
        typedef State Owner;
        typedef State::LocalRef ReturnType;
        typedef State::Param SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "READY";
        static constexpr char signature[] =
                "Lorg/mozilla/gecko/GeckoView$State;";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto READY() -> State::LocalRef;

    static const mozilla::jni::CallingThread callingThread =
            mozilla::jni::CallingThread::ANY;

};

class GeckoView::Window : public mozilla::jni::ObjectBase<Window>
{
public:
    static const char name[];

    explicit Window(const Context& ctx) : ObjectBase<Window>(ctx) {}

    struct Close_t {
        typedef Window Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "close";
        static constexpr char signature[] =
                "()V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::PROXY;
    };

    struct DisposeNative_t {
        typedef Window 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 mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::PROXY;
    };

    struct LoadUri_t {
        typedef Window Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::String::Param,
                int32_t> Args;
        static constexpr char name[] = "loadUri";
        static constexpr char signature[] =
                "(Ljava/lang/String;I)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::PROXY;
    };

    struct OnReattach_t {
        typedef Window Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                GeckoView::Param> Args;
        static constexpr char name[] = "onReattach";
        static constexpr char signature[] =
                "(Lorg/mozilla/gecko/GeckoView;)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto OnReattach(GeckoView::Param) const -> void;

    struct Open_t {
        typedef Window Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                Window::Param,
                GeckoView::Param,
                mozilla::jni::Object::Param,
                mozilla::jni::Object::Param,
                mozilla::jni::String::Param,
                mozilla::jni::Object::Param,
                int32_t,
                bool> Args;
        static constexpr char name[] = "open";
        static constexpr char signature[] =
                "(Lorg/mozilla/gecko/GeckoView$Window;Lorg/mozilla/gecko/GeckoView;Ljava/lang/Object;Lorg/mozilla/gecko/EventDispatcher;Ljava/lang/String;Lorg/mozilla/gecko/util/GeckoBundle;IZ)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::PROXY;
    };

    struct Reattach_t {
        typedef Window Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                GeckoView::Param,
                mozilla::jni::Object::Param,
                mozilla::jni::Object::Param> Args;
        static constexpr char name[] = "reattach";
        static constexpr char signature[] =
                "(Lorg/mozilla/gecko/GeckoView;Ljava/lang/Object;Lorg/mozilla/gecko/EventDispatcher;)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::PROXY;
    };

    struct SetState_t {
        typedef Window Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::Object::Param> Args;
        static constexpr char name[] = "setState";
        static constexpr char signature[] =
                "(Lorg/mozilla/gecko/GeckoView$State;)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto SetState(mozilla::jni::Object::Param) const -> void;

    static const mozilla::jni::CallingThread callingThread =
            mozilla::jni::CallingThread::ANY;

    template<class Impl> class Natives;
};

class PrefsHelper : public mozilla::jni::ObjectBase<PrefsHelper>
{
public:
    static const char name[];

    explicit PrefsHelper(const Context& ctx) : ObjectBase<PrefsHelper>(ctx) {}

    struct CallPrefHandler_t {
        typedef PrefsHelper Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::Object::Param,
                int32_t,
                mozilla::jni::String::Param,
                bool,
                int32_t,
                mozilla::jni::String::Param> Args;
        static constexpr char name[] = "callPrefHandler";
        static constexpr char signature[] =
                "(Lorg/mozilla/gecko/PrefsHelper$PrefHandler;ILjava/lang/String;ZILjava/lang/String;)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto CallPrefHandler(mozilla::jni::Object::Param, int32_t, mozilla::jni::String::Param, bool, int32_t, mozilla::jni::String::Param) -> void;

    struct AddObserver_t {
        typedef PrefsHelper Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::ObjectArray::Param,
                mozilla::jni::Object::Param,
                mozilla::jni::ObjectArray::Param> Args;
        static constexpr char name[] = "nativeAddObserver";
        static constexpr char signature[] =
                "([Ljava/lang/String;Lorg/mozilla/gecko/PrefsHelper$PrefHandler;[Ljava/lang/String;)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::GECKO;
    };

    struct GetPrefs_t {
        typedef PrefsHelper Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::ObjectArray::Param,
                mozilla::jni::Object::Param> Args;
        static constexpr char name[] = "nativeGetPrefs";
        static constexpr char signature[] =
                "([Ljava/lang/String;Lorg/mozilla/gecko/PrefsHelper$PrefHandler;)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::GECKO;
    };

    struct RemoveObserver_t {
        typedef PrefsHelper Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::ObjectArray::Param> Args;
        static constexpr char name[] = "nativeRemoveObserver";
        static constexpr char signature[] =
                "([Ljava/lang/String;)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::GECKO;
    };

    struct SetPref_t {
        typedef PrefsHelper Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::String::Param,
                bool,
                int32_t,
                bool,
                int32_t,
                mozilla::jni::String::Param> Args;
        static constexpr char name[] = "nativeSetPref";
        static constexpr char signature[] =
                "(Ljava/lang/String;ZIZILjava/lang/String;)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::GECKO;
    };

    struct OnPrefChange_t {
        typedef PrefsHelper Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::String::Param,
                int32_t,
                bool,
                int32_t,
                mozilla::jni::String::Param> Args;
        static constexpr char name[] = "onPrefChange";
        static constexpr char signature[] =
                "(Ljava/lang/String;IZILjava/lang/String;)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto OnPrefChange(mozilla::jni::String::Param, int32_t, bool, int32_t, mozilla::jni::String::Param) -> void;

    static const int32_t PREF_BOOL = 1;

    static const int32_t PREF_FINISH = 0;

    static const int32_t PREF_INT = 2;

    static const int32_t PREF_INVALID = -1;

    static const int32_t PREF_STRING = 3;

    static const mozilla::jni::CallingThread callingThread =
            mozilla::jni::CallingThread::ANY;

    template<class Impl> class Natives;
};

class ScreenManagerHelper : public mozilla::jni::ObjectBase<ScreenManagerHelper>
{
public:
    static const char name[];

    explicit ScreenManagerHelper(const Context& ctx) : ObjectBase<ScreenManagerHelper>(ctx) {}

    struct AddDisplay_t {
        typedef ScreenManagerHelper Owner;
        typedef int32_t ReturnType;
        typedef int32_t SetterType;
        typedef mozilla::jni::Args<
                int32_t,
                int32_t,
                int32_t,
                float> Args;
        static constexpr char name[] = "addDisplay";
        static constexpr char signature[] =
                "(IIIF)I";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    struct RemoveDisplay_t {
        typedef ScreenManagerHelper Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                int32_t> Args;
        static constexpr char name[] = "removeDisplay";
        static constexpr char signature[] =
                "(I)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static const mozilla::jni::CallingThread callingThread =
            mozilla::jni::CallingThread::ANY;

    template<class Impl> class Natives;
};

class SurfaceTextureListener : public mozilla::jni::ObjectBase<SurfaceTextureListener>
{
public:
    static const char name[];

    explicit SurfaceTextureListener(const Context& ctx) : ObjectBase<SurfaceTextureListener>(ctx) {}

    struct New_t {
        typedef SurfaceTextureListener Owner;
        typedef SurfaceTextureListener::LocalRef ReturnType;
        typedef SurfaceTextureListener::Param SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "<init>";
        static constexpr char signature[] =
                "()V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto New() -> SurfaceTextureListener::LocalRef;

    struct DisposeNative_t {
        typedef SurfaceTextureListener 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 mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::GECKO;
    };

    struct OnFrameAvailable_t {
        typedef SurfaceTextureListener Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "nativeOnFrameAvailable";
        static constexpr char signature[] =
                "()V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static const mozilla::jni::CallingThread callingThread =
            mozilla::jni::CallingThread::ANY;

    template<class Impl> class Natives;
};

class GeckoLayerClient : public mozilla::jni::ObjectBase<GeckoLayerClient>
{
public:
    static const char name[];

    explicit GeckoLayerClient(const Context& ctx) : ObjectBase<GeckoLayerClient>(ctx) {}

    struct ContentDocumentChanged_t {
        typedef GeckoLayerClient Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "contentDocumentChanged";
        static constexpr char signature[] =
                "()V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto ContentDocumentChanged() const -> void;

    struct IsContentDocumentDisplayed_t {
        typedef GeckoLayerClient Owner;
        typedef bool ReturnType;
        typedef bool SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "isContentDocumentDisplayed";
        static constexpr char signature[] =
                "()Z";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto IsContentDocumentDisplayed() const -> bool;

    struct OnGeckoReady_t {
        typedef GeckoLayerClient Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "onGeckoReady";
        static constexpr char signature[] =
                "()V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto OnGeckoReady() const -> void;

    struct SynthesizeNativeMouseEvent_t {
        typedef GeckoLayerClient Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                int32_t,
                int32_t,
                int32_t> Args;
        static constexpr char name[] = "synthesizeNativeMouseEvent";
        static constexpr char signature[] =
                "(III)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto SynthesizeNativeMouseEvent(int32_t, int32_t, int32_t) const -> void;

    struct SynthesizeNativeTouchPoint_t {
        typedef GeckoLayerClient Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                int32_t,
                int32_t,
                int32_t,
                int32_t,
                double,
                int32_t> Args;
        static constexpr char name[] = "synthesizeNativeTouchPoint";
        static constexpr char signature[] =
                "(IIIIDI)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto SynthesizeNativeTouchPoint(int32_t, int32_t, int32_t, int32_t, double, int32_t) const -> void;

    struct UpdateRootFrameMetrics_t {
        typedef GeckoLayerClient Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                float,
                float,
                float,
                float,
                float,
                float,
                float> Args;
        static constexpr char name[] = "updateRootFrameMetrics";
        static constexpr char signature[] =
                "(FFFFFFF)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::UI;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto UpdateRootFrameMetrics(float, float, float, float, float, float, float) const -> void;

    static const mozilla::jni::CallingThread callingThread =
            mozilla::jni::CallingThread::ANY;

};

class GeckoSurface : public mozilla::jni::ObjectBase<GeckoSurface>
{
public:
    static const char name[];

    explicit GeckoSurface(const Context& ctx) : ObjectBase<GeckoSurface>(ctx) {}

    struct New_t {
        typedef GeckoSurface Owner;
        typedef GeckoSurface::LocalRef ReturnType;
        typedef GeckoSurface::Param SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::Object::Param> Args;
        static constexpr char name[] = "<init>";
        static constexpr char signature[] =
                "(Lorg/mozilla/gecko/gfx/GeckoSurfaceTexture;)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::NSRESULT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto New(mozilla::jni::Object::Param, GeckoSurface::LocalRef*) -> nsresult;

    struct GetAvailable_t {
        typedef GeckoSurface Owner;
        typedef bool ReturnType;
        typedef bool SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "getAvailable";
        static constexpr char signature[] =
                "()Z";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto GetAvailable() const -> bool;

    struct GetHandle_t {
        typedef GeckoSurface Owner;
        typedef int32_t ReturnType;
        typedef int32_t SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "getHandle";
        static constexpr char signature[] =
                "()I";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto GetHandle() const -> int32_t;

    struct SetAvailable_t {
        typedef GeckoSurface Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                bool> Args;
        static constexpr char name[] = "setAvailable";
        static constexpr char signature[] =
                "(Z)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto SetAvailable(bool) const -> void;

    static const mozilla::jni::CallingThread callingThread =
            mozilla::jni::CallingThread::ANY;

};

class GeckoSurfaceTexture : public mozilla::jni::ObjectBase<GeckoSurfaceTexture>
{
public:
    static const char name[];

    explicit GeckoSurfaceTexture(const Context& ctx) : ObjectBase<GeckoSurfaceTexture>(ctx) {}

    struct GetHandle_t {
        typedef GeckoSurfaceTexture Owner;
        typedef int32_t ReturnType;
        typedef int32_t SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "getHandle";
        static constexpr char signature[] =
                "()I";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto GetHandle() const -> int32_t;

    struct GetTexName_t {
        typedef GeckoSurfaceTexture Owner;
        typedef int32_t ReturnType;
        typedef int32_t SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "getTexName";
        static constexpr char signature[] =
                "()I";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto GetTexName() const -> int32_t;

    struct IsSingleBuffer_t {
        typedef GeckoSurfaceTexture Owner;
        typedef bool ReturnType;
        typedef bool SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "isSingleBuffer";
        static constexpr char signature[] =
                "()Z";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto IsSingleBuffer() const -> bool;

    struct IsSingleBufferSupported_t {
        typedef GeckoSurfaceTexture Owner;
        typedef bool ReturnType;
        typedef bool SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "isSingleBufferSupported";
        static constexpr char signature[] =
                "()Z";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto IsSingleBufferSupported() -> bool;

    struct Lookup_t {
        typedef GeckoSurfaceTexture Owner;
        typedef GeckoSurfaceTexture::LocalRef ReturnType;
        typedef GeckoSurfaceTexture::Param SetterType;
        typedef mozilla::jni::Args<
                int32_t> Args;
        static constexpr char name[] = "lookup";
        static constexpr char signature[] =
                "(I)Lorg/mozilla/gecko/gfx/GeckoSurfaceTexture;";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto Lookup(int32_t) -> GeckoSurfaceTexture::LocalRef;

    struct NativeAcquireTexture_t {
        typedef GeckoSurfaceTexture Owner;
        typedef int32_t ReturnType;
        typedef int32_t SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "nativeAcquireTexture";
        static constexpr char signature[] =
                "()I";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    struct ReleaseTexImage_t {
        typedef GeckoSurfaceTexture Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "releaseTexImage";
        static constexpr char signature[] =
                "()V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto ReleaseTexImage() const -> void;

    struct UpdateTexImage_t {
        typedef GeckoSurfaceTexture Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "updateTexImage";
        static constexpr char signature[] =
                "()V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto UpdateTexImage() const -> void;

    static const mozilla::jni::CallingThread callingThread =
            mozilla::jni::CallingThread::ANY;

    template<class Impl> class Natives;
};

class ImmutableViewportMetrics : public mozilla::jni::ObjectBase<ImmutableViewportMetrics>
{
public:
    static const char name[];

    explicit ImmutableViewportMetrics(const Context& ctx) : ObjectBase<ImmutableViewportMetrics>(ctx) {}

    struct New_t {
        typedef ImmutableViewportMetrics Owner;
        typedef ImmutableViewportMetrics::LocalRef ReturnType;
        typedef ImmutableViewportMetrics::Param SetterType;
        typedef mozilla::jni::Args<
                float,
                float,
                float,
                float,
                float,
                float,
                float,
                float,
                float,
                float,
                int32_t,
                int32_t,
                float> Args;
        static constexpr char name[] = "<init>";
        static constexpr char signature[] =
                "(FFFFFFFFFFIIF)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto New(float, float, float, float, float, float, float, float, float, float, int32_t, int32_t, float) -> ImmutableViewportMetrics::LocalRef;

    static const mozilla::jni::CallingThread callingThread =
            mozilla::jni::CallingThread::GECKO;

};

class LayerView : public mozilla::jni::ObjectBase<LayerView>
{
public:
    static const char name[];

    explicit LayerView(const Context& ctx) : ObjectBase<LayerView>(ctx) {}

    class Compositor;

    struct GetCompositor_t {
        typedef LayerView Owner;
        typedef mozilla::jni::Object::LocalRef ReturnType;
        typedef mozilla::jni::Object::Param SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "getCompositor";
        static constexpr char signature[] =
                "()Ljava/lang/Object;";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::UI;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto GetCompositor() const -> mozilla::jni::Object::LocalRef;

    struct IsCompositorReady_t {
        typedef LayerView Owner;
        typedef bool ReturnType;
        typedef bool SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "isCompositorReady";
        static constexpr char signature[] =
                "()Z";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::UI;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto IsCompositorReady() const -> bool;

    static const mozilla::jni::CallingThread callingThread =
            mozilla::jni::CallingThread::UI;

};

class LayerView::Compositor : public mozilla::jni::ObjectBase<Compositor>
{
public:
    static const char name[];

    explicit Compositor(const Context& ctx) : ObjectBase<Compositor>(ctx) {}

    struct AttachToJava_t {
        typedef Compositor Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::Object::Param,
                mozilla::jni::Object::Param> Args;
        static constexpr char name[] = "attachToJava";
        static constexpr char signature[] =
                "(Lorg/mozilla/gecko/gfx/GeckoLayerClient;Lorg/mozilla/gecko/gfx/NativePanZoomController;)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::GECKO;
    };

    struct CreateCompositor_t {
        typedef Compositor Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                int32_t,
                int32_t,
                mozilla::jni::Object::Param> Args;
        static constexpr char name[] = "createCompositor";
        static constexpr char signature[] =
                "(IILjava/lang/Object;)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::UI;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::PROXY;
    };

    struct Destroy_t {
        typedef Compositor Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "destroy";
        static constexpr char signature[] =
                "()V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto Destroy() const -> void;

    struct DisposeNative_t {
        typedef Compositor 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 mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::UI;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::GECKO;
    };

    struct EnableLayerUpdateNotifications_t {
        typedef Compositor Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                bool> Args;
        static constexpr char name[] = "enableLayerUpdateNotifications";
        static constexpr char signature[] =
                "(Z)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::UI;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    struct OnSizeChanged_t {
        typedef Compositor Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                int32_t,
                int32_t,
                int32_t,
                int32_t> Args;
        static constexpr char name[] = "onSizeChanged";
        static constexpr char signature[] =
                "(IIII)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::GECKO_PRIORITY;
    };

    struct Reattach_t {
        typedef Compositor Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "reattach";
        static constexpr char signature[] =
                "()V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto Reattach() const -> void;

    struct RecvScreenPixels_t {
        typedef Compositor Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                int32_t,
                int32_t,
                mozilla::jni::IntArray::Param> Args;
        static constexpr char name[] = "recvScreenPixels";
        static constexpr char signature[] =
                "(II[I)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::UI;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto RecvScreenPixels(int32_t, int32_t, mozilla::jni::IntArray::Param) const -> void;

    struct RecvToolbarAnimatorMessage_t {
        typedef Compositor Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                int32_t> Args;
        static constexpr char name[] = "recvToolbarAnimatorMessage";
        static constexpr char signature[] =
                "(I)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::UI;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto RecvToolbarAnimatorMessage(int32_t) const -> void;

    struct RequestScreenPixels_t {
        typedef Compositor Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "requestScreenPixels";
        static constexpr char signature[] =
                "()V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::UI;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    struct SendToolbarAnimatorMessage_t {
        typedef Compositor Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                int32_t> Args;
        static constexpr char name[] = "sendToolbarAnimatorMessage";
        static constexpr char signature[] =
                "(I)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::UI;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    struct SendToolbarPixelsToCompositor_t {
        typedef Compositor Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                int32_t,
                int32_t,
                mozilla::jni::IntArray::Param> Args;
        static constexpr char name[] = "sendToolbarPixelsToCompositor";
        static constexpr char signature[] =
                "(II[I)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::UI;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    struct SetDefaultClearColor_t {
        typedef Compositor Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                int32_t> Args;
        static constexpr char name[] = "setDefaultClearColor";
        static constexpr char signature[] =
                "(I)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::UI;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    struct SetMaxToolbarHeight_t {
        typedef Compositor Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                int32_t> Args;
        static constexpr char name[] = "setMaxToolbarHeight";
        static constexpr char signature[] =
                "(I)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    struct SetPinned_t {
        typedef Compositor Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                bool,
                int32_t> Args;
        static constexpr char name[] = "setPinned";
        static constexpr char signature[] =
                "(ZI)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    struct SyncInvalidateAndScheduleComposite_t {
        typedef Compositor Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "syncInvalidateAndScheduleComposite";
        static constexpr char signature[] =
                "()V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    struct SyncPauseCompositor_t {
        typedef Compositor Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "syncPauseCompositor";
        static constexpr char signature[] =
                "()V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::UI;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    struct SyncResumeResizeCompositor_t {
        typedef Compositor Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                int32_t,
                int32_t,
                mozilla::jni::Object::Param> Args;
        static constexpr char name[] = "syncResumeResizeCompositor";
        static constexpr char signature[] =
                "(IILjava/lang/Object;)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::UI;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static const mozilla::jni::CallingThread callingThread =
            mozilla::jni::CallingThread::ANY;

    template<class Impl> class Natives;
};

class NativePanZoomController : public mozilla::jni::ObjectBase<NativePanZoomController>
{
public:
    static const char name[];

    explicit NativePanZoomController(const Context& ctx) : ObjectBase<NativePanZoomController>(ctx) {}

    struct Destroy_t {
        typedef NativePanZoomController Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "destroy";
        static constexpr char signature[] =
                "()V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::UI;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto Destroy() const -> void;

    struct DisposeNative_t {
        typedef NativePanZoomController 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 mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::UI;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::GECKO_PRIORITY;
    };

    struct HandleMotionEvent_t {
        typedef NativePanZoomController Owner;
        typedef bool ReturnType;
        typedef bool SetterType;
        typedef mozilla::jni::Args<
                int32_t,
                int32_t,
                int64_t,
                int32_t,
                mozilla::jni::IntArray::Param,
                mozilla::jni::FloatArray::Param,
                mozilla::jni::FloatArray::Param,
                mozilla::jni::FloatArray::Param,
                mozilla::jni::FloatArray::Param,
                mozilla::jni::FloatArray::Param,
                mozilla::jni::FloatArray::Param> Args;
        static constexpr char name[] = "handleMotionEvent";
        static constexpr char signature[] =
                "(IIJI[I[F[F[F[F[F[F)Z";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::UI;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    struct HandleMouseEvent_t {
        typedef NativePanZoomController Owner;
        typedef bool ReturnType;
        typedef bool SetterType;
        typedef mozilla::jni::Args<
                int32_t,
                int64_t,
                int32_t,
                float,
                float,
                int32_t> Args;
        static constexpr char name[] = "handleMouseEvent";
        static constexpr char signature[] =
                "(IJIFFI)Z";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::UI;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    struct HandleScrollEvent_t {
        typedef NativePanZoomController Owner;
        typedef bool ReturnType;
        typedef bool SetterType;
        typedef mozilla::jni::Args<
                int64_t,
                int32_t,
                float,
                float,
                float,
                float> Args;
        static constexpr char name[] = "handleScrollEvent";
        static constexpr char signature[] =
                "(JIFFFF)Z";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::UI;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    struct SetIsLongpressEnabled_t {
        typedef NativePanZoomController Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                bool> Args;
        static constexpr char name[] = "nativeSetIsLongpressEnabled";
        static constexpr char signature[] =
                "(Z)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    struct OnSelectionDragState_t {
        typedef NativePanZoomController Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                bool> Args;
        static constexpr char name[] = "onSelectionDragState";
        static constexpr char signature[] =
                "(Z)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto OnSelectionDragState(bool) const -> void;

    struct UpdateOverscrollOffset_t {
        typedef NativePanZoomController Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                float,
                float> Args;
        static constexpr char name[] = "updateOverscrollOffset";
        static constexpr char signature[] =
                "(FF)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto UpdateOverscrollOffset(float, float) const -> void;

    struct UpdateOverscrollVelocity_t {
        typedef NativePanZoomController Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                float,
                float> Args;
        static constexpr char name[] = "updateOverscrollVelocity";
        static constexpr char signature[] =
                "(FF)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto UpdateOverscrollVelocity(float, float) const -> void;

    static const mozilla::jni::CallingThread callingThread =
            mozilla::jni::CallingThread::ANY;

    template<class Impl> class Natives;
};

class StackScroller : public mozilla::jni::ObjectBase<StackScroller>
{
public:
    static const char name[];

    explicit StackScroller(const Context& ctx) : ObjectBase<StackScroller>(ctx) {}

    struct New_t {
        typedef StackScroller Owner;
        typedef StackScroller::LocalRef ReturnType;
        typedef StackScroller::Param SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::Object::Param> Args;
        static constexpr char name[] = "<init>";
        static constexpr char signature[] =
                "(Landroid/content/Context;)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::NSRESULT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto New(mozilla::jni::Object::Param, StackScroller::LocalRef*) -> nsresult;

    struct AbortAnimation_t {
        typedef StackScroller Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "abortAnimation";
        static constexpr char signature[] =
                "()V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::NSRESULT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto AbortAnimation() const -> nsresult;

    struct ComputeScrollOffset_t {
        typedef StackScroller Owner;
        typedef bool ReturnType;
        typedef bool SetterType;
        typedef mozilla::jni::Args<
                int64_t> Args;
        static constexpr char name[] = "computeScrollOffset";
        static constexpr char signature[] =
                "(J)Z";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::NSRESULT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto ComputeScrollOffset(int64_t, bool*) const -> nsresult;

    struct Fling_t {
        typedef StackScroller Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                int32_t,
                int32_t,
                int32_t,
                int32_t,
                int32_t,
                int32_t,
                int32_t,
                int32_t,
                int32_t,
                int32_t,
                int64_t> Args;
        static constexpr char name[] = "fling";
        static constexpr char signature[] =
                "(IIIIIIIIIIJ)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::NSRESULT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto Fling(int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int64_t) const -> nsresult;

    struct ForceFinished_t {
        typedef StackScroller Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                bool> Args;
        static constexpr char name[] = "forceFinished";
        static constexpr char signature[] =
                "(Z)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::NSRESULT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto ForceFinished(bool) const -> nsresult;

    struct GetCurrSpeedX_t {
        typedef StackScroller Owner;
        typedef float ReturnType;
        typedef float SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "getCurrSpeedX";
        static constexpr char signature[] =
                "()F";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::NSRESULT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto GetCurrSpeedX(float*) const -> nsresult;

    struct GetCurrSpeedY_t {
        typedef StackScroller Owner;
        typedef float ReturnType;
        typedef float SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "getCurrSpeedY";
        static constexpr char signature[] =
                "()F";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::NSRESULT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto GetCurrSpeedY(float*) const -> nsresult;

    struct GetCurrX_t {
        typedef StackScroller Owner;
        typedef int32_t ReturnType;
        typedef int32_t SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "getCurrX";
        static constexpr char signature[] =
                "()I";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::NSRESULT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto GetCurrX(int32_t*) const -> nsresult;

    struct GetCurrY_t {
        typedef StackScroller Owner;
        typedef int32_t ReturnType;
        typedef int32_t SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "getCurrY";
        static constexpr char signature[] =
                "()I";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::NSRESULT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto GetCurrY(int32_t*) const -> nsresult;

    struct GetFinalX_t {
        typedef StackScroller Owner;
        typedef int32_t ReturnType;
        typedef int32_t SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "getFinalX";
        static constexpr char signature[] =
                "()I";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::NSRESULT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto GetFinalX(int32_t*) const -> nsresult;

    struct GetFinalY_t {
        typedef StackScroller Owner;
        typedef int32_t ReturnType;
        typedef int32_t SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "getFinalY";
        static constexpr char signature[] =
                "()I";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::NSRESULT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto GetFinalY(int32_t*) const -> nsresult;

    struct InitContants_t {
        typedef StackScroller Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "initContants";
        static constexpr char signature[] =
                "()V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::NSRESULT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto InitContants() -> nsresult;

    struct IsFinished_t {
        typedef StackScroller Owner;
        typedef bool ReturnType;
        typedef bool SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "isFinished";
        static constexpr char signature[] =
                "()Z";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::NSRESULT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto IsFinished(bool*) const -> nsresult;

    struct SetFinalX_t {
        typedef StackScroller Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                int32_t> Args;
        static constexpr char name[] = "setFinalX";
        static constexpr char signature[] =
                "(I)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::NSRESULT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto SetFinalX(int32_t) const -> nsresult;

    struct SpringBack_t {
        typedef StackScroller Owner;
        typedef bool ReturnType;
        typedef bool SetterType;
        typedef mozilla::jni::Args<
                int32_t,
                int32_t,
                int32_t,
                int32_t,
                int32_t,
                int32_t,
                int64_t> Args;
        static constexpr char name[] = "springBack";
        static constexpr char signature[] =
                "(IIIIIIJ)Z";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::NSRESULT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto SpringBack(int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int64_t, bool*) const -> nsresult;

    struct StartScroll_t {
        typedef StackScroller Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                int32_t,
                int32_t,
                int32_t,
                int32_t,
                int64_t,
                int32_t> Args;
        static constexpr char name[] = "startScroll";
        static constexpr char signature[] =
                "(IIIIJI)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::NSRESULT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto StartScroll(int32_t, int32_t, int32_t, int32_t, int64_t, int32_t) const -> nsresult;

    struct ViscousFluid_t {
        typedef StackScroller Owner;
        typedef float ReturnType;
        typedef float SetterType;
        typedef mozilla::jni::Args<
                float> Args;
        static constexpr char name[] = "viscousFluid";
        static constexpr char signature[] =
                "(F)F";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::NSRESULT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto ViscousFluid(float, float*) -> nsresult;

    static const int32_t FLING_MODE = 1;

    static const int32_t SCROLL_MODE = 0;

    struct MFlywheel_t {
        typedef StackScroller Owner;
        typedef bool ReturnType;
        typedef bool SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "mFlywheel";
        static constexpr char signature[] =
                "Z";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::NSRESULT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto MFlywheel(bool*) const -> nsresult;

    struct MMode_t {
        typedef StackScroller Owner;
        typedef int32_t ReturnType;
        typedef int32_t SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "mMode";
        static constexpr char signature[] =
                "I";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::NSRESULT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto MMode(int32_t*) const -> nsresult;

    auto MMode(int32_t) const -> nsresult;

    struct MScrollerX_t {
        typedef StackScroller Owner;
        typedef mozilla::jni::Object::LocalRef ReturnType;
        typedef mozilla::jni::Object::Param SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "mScrollerX";
        static constexpr char signature[] =
                "Lorg/mozilla/gecko/gfx/StackScroller$SplineStackScroller;";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::NSRESULT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };