Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 41e5ff4f authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Enable SQLite JNI for host Mac and Windows" into main

parents 89143983 a8c4d1ad
Loading
Loading
Loading
Loading
+7 −13
Original line number Diff line number Diff line
@@ -73,6 +73,12 @@ cc_library_shared_for_libandroid_runtime {

    srcs: [
        "android_animation_PropertyValuesHolder.cpp",
        "android_database_CursorWindow.cpp",
        "android_database_SQLiteCommon.cpp",
        "android_database_SQLiteConnection.cpp",
        "android_database_SQLiteGlobal.cpp",
        "android_database_SQLiteDebug.cpp",
        "android_database_SQLiteRawStatement.cpp",
        "android_os_SystemClock.cpp",
        "android_os_SystemProperties.cpp",
        "android_os_Trace.cpp",
@@ -157,12 +163,6 @@ cc_library_shared_for_libandroid_runtime {
                "android_opengl_GLES31.cpp",
                "android_opengl_GLES31Ext.cpp",
                "android_opengl_GLES32.cpp",
                "android_database_CursorWindow.cpp",
                "android_database_SQLiteCommon.cpp",
                "android_database_SQLiteConnection.cpp",
                "android_database_SQLiteGlobal.cpp",
                "android_database_SQLiteDebug.cpp",
                "android_database_SQLiteRawStatement.cpp",
                "android_graphics_GraphicBuffer.cpp",
                "android_graphics_SurfaceTexture.cpp",
                "android_view_CompositionSamplingListener.cpp",
@@ -427,6 +427,7 @@ cc_library_shared_for_libandroid_runtime {
                "libnativehelper_jvm",
                "libpiex",
                "libpng",
                "libsqlite",
                "libtiff_directory",
                "libui-types",
                "libutils",
@@ -442,12 +443,6 @@ cc_library_shared_for_libandroid_runtime {
        host_linux: {
            srcs: [
                "android_content_res_ApkAssets.cpp",
                "android_database_CursorWindow.cpp",
                "android_database_SQLiteCommon.cpp",
                "android_database_SQLiteConnection.cpp",
                "android_database_SQLiteGlobal.cpp",
                "android_database_SQLiteDebug.cpp",
                "android_database_SQLiteRawStatement.cpp",
                "android_hardware_input_InputApplicationHandle.cpp",
                "android_os_MessageQueue.cpp",
                "android_os_Parcel.cpp",
@@ -463,7 +458,6 @@ cc_library_shared_for_libandroid_runtime {
            ],
            static_libs: [
                "libbinderthreadstateutils",
                "libsqlite",
                "libgui_window_info_static",
            ],
            shared_libs: [
+35 −49
Original line number Diff line number Diff line
@@ -38,7 +38,9 @@
#define LOG_NDEBUG 1

#include <androidfw/CursorWindow.h>
#ifdef __linux__
#include "android_os_Parcel.h"
#endif
#include "android_util_Binder.h"
#include "android_database_SQLiteCommon.h"

@@ -111,6 +113,7 @@ fail:
    return 0;
}

#ifdef __linux__
static jlong nativeCreateFromParcel(JNIEnv* env, jclass clazz, jobject parcelObj) {
    Parcel* parcel = parcelForJavaObject(env, parcelObj);

@@ -128,6 +131,7 @@ static jlong nativeCreateFromParcel(JNIEnv* env, jclass clazz, jobject parcelObj
            window->getNumRows(), window->getNumColumns(), window);
    return reinterpret_cast<jlong>(window);
}
#endif

static void nativeDispose(JNIEnv* env, jclass clazz, jlong windowPtr) {
    CursorWindow* window = reinterpret_cast<CursorWindow*>(windowPtr);
@@ -142,6 +146,7 @@ static jstring nativeGetName(JNIEnv* env, jclass clazz, jlong windowPtr) {
    return env->NewStringUTF(window->name().c_str());
}

#ifdef __linux__
static void nativeWriteToParcel(JNIEnv * env, jclass clazz, jlong windowPtr,
        jobject parcelObj) {
    CursorWindow* window = reinterpret_cast<CursorWindow*>(windowPtr);
@@ -154,6 +159,7 @@ static void nativeWriteToParcel(JNIEnv * env, jclass clazz, jlong windowPtr,
        jniThrowRuntimeException(env, msg.c_str());
    }
}
#endif

static void nativeClear(JNIEnv * env, jclass clazz, jlong windowPtr) {
    CursorWindow* window = reinterpret_cast<CursorWindow*>(windowPtr);
@@ -520,55 +526,35 @@ static jboolean nativePutNull(JNIEnv* env, jclass clazz, jlong windowPtr,
    return true;
}

static const JNINativeMethod sMethods[] =
{
static const JNINativeMethod sMethods[] = {
        /* name, signature, funcPtr */
    { "nativeCreate", "(Ljava/lang/String;I)J",
            (void*)nativeCreate },
    { "nativeCreateFromParcel", "(Landroid/os/Parcel;)J",
            (void*)nativeCreateFromParcel },
    { "nativeDispose", "(J)V",
            (void*)nativeDispose },
    { "nativeWriteToParcel", "(JLandroid/os/Parcel;)V",
            (void*)nativeWriteToParcel },

    { "nativeGetName", "(J)Ljava/lang/String;",
            (void*)nativeGetName },
    { "nativeGetBlob", "(JII)[B",
            (void*)nativeGetBlob },
    { "nativeGetString", "(JII)Ljava/lang/String;",
            (void*)nativeGetString },
        {"nativeCreate", "(Ljava/lang/String;I)J", (void*)nativeCreate},
        {"nativeDispose", "(J)V", (void*)nativeDispose},
#ifdef __linux__
        {"nativeCreateFromParcel", "(Landroid/os/Parcel;)J", (void*)nativeCreateFromParcel},
        {"nativeWriteToParcel", "(JLandroid/os/Parcel;)V", (void*)nativeWriteToParcel},
#endif
        {"nativeGetName", "(J)Ljava/lang/String;", (void*)nativeGetName},
        {"nativeGetBlob", "(JII)[B", (void*)nativeGetBlob},
        {"nativeGetString", "(JII)Ljava/lang/String;", (void*)nativeGetString},
        {"nativeCopyStringToBuffer", "(JIILandroid/database/CharArrayBuffer;)V",
         (void*)nativeCopyStringToBuffer},
    { "nativePutBlob", "(J[BII)Z",
            (void*)nativePutBlob },
    { "nativePutString", "(JLjava/lang/String;II)Z",
            (void*)nativePutString },
        {"nativePutBlob", "(J[BII)Z", (void*)nativePutBlob},
        {"nativePutString", "(JLjava/lang/String;II)Z", (void*)nativePutString},

        // ------- @FastNative below here ----------------------
    { "nativeClear", "(J)V",
            (void*)nativeClear },
    { "nativeGetNumRows", "(J)I",
            (void*)nativeGetNumRows },
    { "nativeSetNumColumns", "(JI)Z",
            (void*)nativeSetNumColumns },
    { "nativeAllocRow", "(J)Z",
            (void*)nativeAllocRow },
    { "nativeFreeLastRow", "(J)V",
            (void*)nativeFreeLastRow },
    { "nativeGetType", "(JII)I",
            (void*)nativeGetType },
    { "nativeGetLong", "(JII)J",
            (void*)nativeGetLong },
    { "nativeGetDouble", "(JII)D",
            (void*)nativeGetDouble },

    { "nativePutLong", "(JJII)Z",
            (void*)nativePutLong },
    { "nativePutDouble", "(JDII)Z",
            (void*)nativePutDouble },
    { "nativePutNull", "(JII)Z",
            (void*)nativePutNull },
        {"nativeClear", "(J)V", (void*)nativeClear},
        {"nativeGetNumRows", "(J)I", (void*)nativeGetNumRows},
        {"nativeSetNumColumns", "(JI)Z", (void*)nativeSetNumColumns},
        {"nativeAllocRow", "(J)Z", (void*)nativeAllocRow},
        {"nativeFreeLastRow", "(J)V", (void*)nativeFreeLastRow},
        {"nativeGetType", "(JII)I", (void*)nativeGetType},
        {"nativeGetLong", "(JII)J", (void*)nativeGetLong},
        {"nativeGetDouble", "(JII)D", (void*)nativeGetDouble},

        {"nativePutLong", "(JJII)Z", (void*)nativePutLong},
        {"nativePutDouble", "(JDII)Z", (void*)nativePutDouble},
        {"nativePutNull", "(JII)Z", (void*)nativePutNull},
};

int register_android_database_CursorWindow(JNIEnv* env)
+3 −3
Original line number Diff line number Diff line
@@ -115,6 +115,9 @@ static const std::unordered_map<std::string, RegJNIRec> gRegJNIMap = {
#ifdef __linux__
        {"android.content.res.ApkAssets", REG_JNI(register_android_content_res_ApkAssets)},
        {"android.content.res.AssetManager", REG_JNI(register_android_content_AssetManager)},
        {"android.content.res.StringBlock", REG_JNI(register_android_content_StringBlock)},
        {"android.content.res.XmlBlock", REG_JNI(register_android_content_XmlBlock)},
#endif
        {"android.database.CursorWindow", REG_JNI(register_android_database_CursorWindow)},
        {"android.database.sqlite.SQLiteConnection",
         REG_JNI(register_android_database_SQLiteConnection)},
@@ -122,9 +125,6 @@ static const std::unordered_map<std::string, RegJNIRec> gRegJNIMap = {
        {"android.database.sqlite.SQLiteDebug", REG_JNI(register_android_database_SQLiteDebug)},
        {"android.database.sqlite.SQLiteRawStatement",
         REG_JNI(register_android_database_SQLiteRawStatement)},
#endif
        {"android.content.res.StringBlock", REG_JNI(register_android_content_StringBlock)},
        {"android.content.res.XmlBlock", REG_JNI(register_android_content_XmlBlock)},
#ifdef __linux__
        {"android.os.Binder", REG_JNI(register_android_os_Binder)},
        {"android.os.FileObserver", REG_JNI(register_android_os_FileObserver)},
+1 −6
Original line number Diff line number Diff line
@@ -75,6 +75,7 @@ cc_library {
        "BigBufferStream.cpp",
        "ChunkIterator.cpp",
        "ConfigDescription.cpp",
        "CursorWindow.cpp",
        "FileStream.cpp",
        "Idmap.cpp",
        "LoadedArsc.cpp",
@@ -113,7 +114,6 @@ cc_library {
            srcs: [
                "BackupData.cpp",
                "BackupHelpers.cpp",
                "CursorWindow.cpp",
            ],
            shared_libs: [
                "libbase",
@@ -147,11 +147,6 @@ cc_library {
                "libz",
            ],
        },
        host_linux: {
            srcs: [
                "CursorWindow.cpp",
            ],
        },
        windows: {
            enabled: true,
        },
+2 −0
Original line number Diff line number Diff line
@@ -139,6 +139,7 @@ fail_silent:
    return UNKNOWN_ERROR;
}

#ifdef __linux__
status_t CursorWindow::createFromParcel(Parcel* parcel, CursorWindow** outWindow) {
    *outWindow = nullptr;

@@ -240,6 +241,7 @@ fail:
fail_silent:
    return UNKNOWN_ERROR;
}
#endif

status_t CursorWindow::clear() {
    if (mReadOnly) {
Loading