widget/android/GeneratedJNIWrappers.h
author Bill McCloskey <billm@mozilla.com>
Mon, 22 May 2017 11:26:39 -0700
changeset 412319 a26040f4d439626f98509caa71009675721d12d7
parent 410278 49051e18e2760f6a34658b178f52f63fb0e8396e
child 411567 1db6ab82ac84741ba64fa74b5ea6904c8b5ad421
child 412388 9f8e9e56f886a9fbfa99d9001404cc3923298b10
permissions -rw-r--r--
Bug 1361164 - Add infallible IsOnCurrentThread to nsIEventTarget (r=froydnj) MozReview-Commit-ID: 12bk9hQ7Wnv

// 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 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 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 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 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 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 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 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 DecrementUse_t {
        typedef GeckoSurfaceTexture Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "decrementUse";
        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 DecrementUse() const -> void;

    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 IncrementUse_t {
        typedef GeckoSurfaceTexture Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "incrementUse";
        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 IncrementUse() const -> void;

    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;
    };

    auto MScrollerX(mozilla::jni::Object::LocalRef*) const -> nsresult;

    struct MScrollerY_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[] = "mScrollerY";
        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;
    };

    auto MScrollerY(mozilla::jni::Object::LocalRef*) const -> nsresult;

    struct SViscousFluidNormalize_t {
        typedef StackScroller Owner;
        typedef float ReturnType;
        typedef float SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "sViscousFluidNormalize";
        static constexpr char signature[] =
                "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 SViscousFluidNormalize(float*) -> nsresult;

    static auto SViscousFluidNormalize(float) -> nsresult;

    struct SViscousFluidScale_t {
        typedef StackScroller Owner;
        typedef float ReturnType;
        typedef float SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "sViscousFluidScale";
        static constexpr char signature[] =
                "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 SViscousFluidScale(float*) -> nsresult;

    static auto SViscousFluidScale(float) -> nsresult;

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

};

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

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

    struct AcquireSurface_t {
        typedef SurfaceAllocator Owner;
        typedef mozilla::jni::Object::LocalRef ReturnType;
        typedef mozilla::jni::Object::Param SetterType;
        typedef mozilla::jni::Args<
                int32_t,
                int32_t,
                bool> Args;
        static constexpr char name[] = "acquireSurface";
        static constexpr char signature[] =
                "(IIZ)Lorg/mozilla/gecko/gfx/GeckoSurface;";
        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 AcquireSurface(int32_t, int32_t, bool) -> mozilla::jni::Object::LocalRef;

    struct DisposeSurface_t {
        typedef SurfaceAllocator Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::Object::Param> Args;
        static constexpr char name[] = "disposeSurface";
        static constexpr char signature[] =
                "(Lorg/mozilla/gecko/gfx/GeckoSurface;)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla