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

Commit d3c166fa authored by Naveen Kumar's avatar Naveen Kumar
Browse files

Merge commit '225b5190' into remote

Conflicts:
	core/res/res/values/symbols.xml
	packages/SettingsLib/src/com/android/settingslib/bluetooth/BluetoothEventManager.java

Change-Id: Ic14c1d1999505b84a444ea5e376604e43624eaac
parents eae34a7e 225b5190
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -1310,7 +1310,7 @@ public final class BluetoothAdapter {
     * @return true if Multiple Advertisement feature is supported
     */
    public boolean isMultipleAdvertisementSupported() {
        if (getState() != STATE_ON) return false;
        if (!getLeAccess()) return false;
        try {
            mServiceLock.readLock().lock();
            if (mService != null) return mService.isMultiAdvertisementSupported();
@@ -1348,7 +1348,7 @@ public final class BluetoothAdapter {
     * @hide
     */
    public boolean isPeripheralModeSupported() {
        if (getState() != STATE_ON) return false;
        if (!getLeAccess()) return false;
        try {
            mServiceLock.readLock().lock();
            if (mService != null) return mService.isPeripheralModeSupported();
+5 −18
Original line number Diff line number Diff line
/* Copyright (c) 2015, The Linux Foundation. All rights reserved.
/* Copyright (c) 2015-2016, The Linux Foundation. All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are
@@ -54,11 +54,6 @@ public class ActivityTrigger
        native_at_deinit();
    }

    /** &hide */
    public void activityStartProcessTrigger(String process, int pid) {
        native_at_startProcessActivity(process, pid);
    }

    /** &hide */
    public void activityStartTrigger(Intent intent, ActivityInfo acInfo, ApplicationInfo appInfo) {
        ComponentName cn = intent.getComponent();
@@ -106,14 +101,8 @@ public class ActivityTrigger
        native_at_stopActivity(activity);
    }

    /** &hide */
    public float animationScalesCheck(String activity, int scaleType) {
        return native_at_animationScalesCheck(activity, scaleType);
    }

    /** &hide */
    public void networkOptsCheck (int flag, int netType, String packageName) {
        native_at_networkOptsCheck(flag, netType, packageName);
    public float activityMiscTrigger(int func, String activity, int flag, int type) {
        return native_at_miscActivity(func, activity, flag, type);
    }

    private native int native_at_startActivity(String activity, int flags);
@@ -121,7 +110,5 @@ public class ActivityTrigger
    private native void native_at_pauseActivity(String activity);
    private native void native_at_stopActivity(String activity);
    private native void native_at_deinit();
    private native void native_at_startProcessActivity(String process, int pid);
    private native float native_at_animationScalesCheck(String activity, int scaleType);
    private native void native_at_networkOptsCheck(int flag, int netType, String packageName);
    private native float native_at_miscActivity(int func, String activity, int flag, int type);
}
+102 −184
Original line number Diff line number Diff line
/* Copyright (c) 2015, The Linux Foundation. All rights reserved.
/* Copyright (c) 2015-2016, The Linux Foundation. All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are
@@ -56,26 +56,20 @@ typedef struct dlLibHandler {
    void (*resumeActivity)(const char *);
    void (*pauseActivity)(const char *);
    void (*stopActivity)(const char *);
    void (*animationScalesCheck)(const char *, int, float *);
    void (*networkOptsCheck)(int, int, const char *);
    void (*init)(void);
    void (*deinit)(void);
    void (*startProcessActivity)(const char *, int);
    void (*miscActivity)(int, const char *, int, int, float *);
    const char *dlname;
}dlLibHandler;

/*
 * Array of dlhandlers
 * library -both handlers for Start and Resume events.
 * Init for activity trigger library
 */
static dlLibHandler mDlLibHandlers[] = {
    {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
     "ro.vendor.at_library"},
    {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
     "ro.vendor.gt_library"},
static dlLibHandler mDlLibHandler = {
    NULL, NULL, NULL, NULL, NULL, NULL,
    NULL, NULL, "ro.vendor.at_library"
};

static size_t gTotalNumLibs = 0;
// ----------------------------------------------------------------------------

static void
@@ -84,231 +78,158 @@ com_android_internal_app_ActivityTrigger_native_at_init()
    const char *rc;
    char buf[PROPERTY_VALUE_MAX];
    bool errored = false;
    size_t numlibs = 0;

    gTotalNumLibs = numlibs = sizeof (mDlLibHandlers) / sizeof (*mDlLibHandlers);

    for(size_t i = 0; i < numlibs; i++) {
        errored = false;

    /* Retrieve name of vendor library */
        if (property_get(mDlLibHandlers[i].dlname, buf, NULL) <= 0) {
            continue;
    if (property_get(mDlLibHandler.dlname, buf, NULL) <= 0) {
        return;
    }

    /* Sanity check - ensure */
    buf[PROPERTY_VALUE_MAX-1] = '\0';
    if (strstr(buf, "/") != NULL) {
            continue;
        return;
    }

        mDlLibHandlers[i].dlhandle = dlopen(buf, RTLD_NOW | RTLD_LOCAL);
        if (mDlLibHandlers[i].dlhandle == NULL) {
            continue;
    mDlLibHandler.dlhandle = dlopen(buf, RTLD_NOW | RTLD_LOCAL);
    if (mDlLibHandler.dlhandle == NULL) {
        return;
    }

    dlerror();

        *(void **) (&mDlLibHandlers[i].startActivity) = dlsym(mDlLibHandlers[i].dlhandle, "activity_trigger_start");
        if ((rc = dlerror()) != NULL) {
            errored = true;
        }

        if (!errored) {
            *(void **) (&mDlLibHandlers[i].resumeActivity) = dlsym(mDlLibHandlers[i].dlhandle, "activity_trigger_resume");
    *(void **) (&mDlLibHandler.startActivity) = dlsym(mDlLibHandler.dlhandle, "activity_trigger_start");
    if ((rc = dlerror()) != NULL) {
        errored = true;
    }
        }
    if (!errored) {
            *(void **) (&mDlLibHandlers[i].pauseActivity) = dlsym(mDlLibHandlers[i].dlhandle, "activity_trigger_pause");
        *(void **) (&mDlLibHandler.resumeActivity) = dlsym(mDlLibHandler.dlhandle, "activity_trigger_resume");
        if ((rc = dlerror()) != NULL) {
            errored = true;
        }
    }
    if (!errored) {
            *(void **) (&mDlLibHandlers[i].stopActivity) = dlsym(mDlLibHandlers[i].dlhandle, "activity_trigger_stop");
        *(void **) (&mDlLibHandler.pauseActivity) = dlsym(mDlLibHandler.dlhandle, "activity_trigger_pause");
        if ((rc = dlerror()) != NULL) {
            errored = true;
        }
    }
    if (!errored) {
            *(void **) (&mDlLibHandlers[i].init) = dlsym(mDlLibHandlers[i].dlhandle, "activity_trigger_init");
        *(void **) (&mDlLibHandler.stopActivity) = dlsym(mDlLibHandler.dlhandle, "activity_trigger_stop");
        if ((rc = dlerror()) != NULL) {
            errored = true;
        }
    }
    if (!errored) {
            *(void **) (&mDlLibHandlers[i].startProcessActivity) = dlsym(mDlLibHandlers[i].dlhandle, "activity_trigger_process_start");
        *(void **) (&mDlLibHandler.init) = dlsym(mDlLibHandler.dlhandle, "activity_trigger_init");
        if ((rc = dlerror()) != NULL) {
            errored = true;
        }
    }
    if (!errored) {
            *(void **) (&mDlLibHandlers[i].animationScalesCheck) = dlsym(mDlLibHandlers[i].dlhandle, "activity_trigger_animationScalesCheck");
            if ((rc = dlerror()) != NULL) {
                errored = true;
            }
        }
        if (!errored) {
            *(void **) (&mDlLibHandlers[i].networkOptsCheck) = dlsym(mDlLibHandlers[i].dlhandle, "activity_trigger_networkOptsCheck");
        *(void **) (&mDlLibHandler.miscActivity) = dlsym(mDlLibHandler.dlhandle, "activity_trigger_misc");
        if ((rc = dlerror()) != NULL) {
            errored = true;
        }
    }
    if (errored) {
            mDlLibHandlers[i].startActivity  = NULL;
            mDlLibHandlers[i].resumeActivity = NULL;
            mDlLibHandlers[i].pauseActivity  = NULL;
            mDlLibHandlers[i].stopActivity = NULL;
            mDlLibHandlers[i].startProcessActivity = NULL;
            mDlLibHandlers[i].animationScalesCheck = NULL;
            mDlLibHandlers[i].networkOptsCheck = NULL;
            if (mDlLibHandlers[i].dlhandle) {
                dlclose(mDlLibHandlers[i].dlhandle);
                mDlLibHandlers[i].dlhandle = NULL;
            }
            gTotalNumLibs = 0;
        } else {
            (*mDlLibHandlers[i].init)();
        mDlLibHandler.startActivity  = NULL;
        mDlLibHandler.resumeActivity = NULL;
        mDlLibHandler.pauseActivity  = NULL;
        mDlLibHandler.stopActivity = NULL;
        mDlLibHandler.miscActivity = NULL;
        if (mDlLibHandler.dlhandle) {
            dlclose(mDlLibHandler.dlhandle);
            mDlLibHandler.dlhandle = NULL;
        }
    } else {
        (*mDlLibHandler.init)();
    }
}

static void
com_android_internal_app_ActivityTrigger_native_at_deinit(JNIEnv *env, jobject clazz)
{
    size_t numlibs = sizeof (mDlLibHandlers) / sizeof (*mDlLibHandlers);
    if (mDlLibHandler.dlhandle) {
        mDlLibHandler.startActivity  = NULL;
        mDlLibHandler.resumeActivity = NULL;
        mDlLibHandler.pauseActivity  = NULL;
        mDlLibHandler.stopActivity = NULL;
        mDlLibHandler.miscActivity = NULL;

    for(size_t i = 0; i < numlibs; i++) {
        if (mDlLibHandlers[i].dlhandle) {
            mDlLibHandlers[i].startActivity  = NULL;
            mDlLibHandlers[i].resumeActivity = NULL;
            mDlLibHandlers[i].pauseActivity  = NULL;
            mDlLibHandlers[i].stopActivity = NULL;
            mDlLibHandlers[i].startProcessActivity = NULL;
            mDlLibHandlers[i].animationScalesCheck = NULL;
            mDlLibHandlers[i].networkOptsCheck = NULL;

            *(void **) (&mDlLibHandlers[i].deinit) = dlsym(mDlLibHandlers[i].dlhandle, "activity_trigger_deinit");
            if (mDlLibHandlers[i].deinit) {
                (*mDlLibHandlers[i].deinit)();
            }

            dlclose(mDlLibHandlers[i].dlhandle);
            mDlLibHandlers[i].dlhandle = NULL;
        }
    }
    gTotalNumLibs = 0;
        *(void **) (&mDlLibHandler.deinit) = dlsym(mDlLibHandler.dlhandle, "activity_trigger_deinit");
        if (mDlLibHandler.deinit) {
            (*mDlLibHandler.deinit)();
        }

static void
com_android_internal_app_ActivityTrigger_native_at_startProcessActivity(JNIEnv *env, jobject clazz, jstring process, jint pid)
{
    size_t numlibs = sizeof (mDlLibHandlers) / sizeof (*mDlLibHandlers);
    const char *actStr = env->GetStringUTFChars(process, NULL);
    for(size_t i = 0; i < numlibs; i++){
        if(mDlLibHandlers[i].startProcessActivity && process && actStr) {
            (*mDlLibHandlers[i].startProcessActivity)(actStr, pid);
        dlclose(mDlLibHandler.dlhandle);
        mDlLibHandler.dlhandle = NULL;
    }
}
    env->ReleaseStringUTFChars(process, actStr);
}

static jint
com_android_internal_app_ActivityTrigger_native_at_startActivity(JNIEnv *env, jobject clazz, jstring activity, jint flags)
{
    int activiyFlags = flags;
    size_t numlibs = sizeof (mDlLibHandlers) / sizeof (*mDlLibHandlers);
    for(size_t i = 0; i < numlibs; i++){
        if(mDlLibHandlers[i].startActivity && activity) {
    if(mDlLibHandler.startActivity && activity) {
       const char *actStr = env->GetStringUTFChars(activity, NULL);
       if (actStr) {
                (*mDlLibHandlers[i].startActivity)(actStr, &activiyFlags);
           (*mDlLibHandler.startActivity)(actStr, &activiyFlags);
           env->ReleaseStringUTFChars(activity, actStr);
       }
    }
    }
    return activiyFlags;
}

static void
com_android_internal_app_ActivityTrigger_native_at_resumeActivity(JNIEnv *env, jobject clazz, jstring activity)
{
    size_t numlibs = sizeof (mDlLibHandlers) / sizeof (*mDlLibHandlers);

    for(size_t i = 0; i < numlibs; i++){
        if(mDlLibHandlers[i].resumeActivity && activity) {
    if(mDlLibHandler.resumeActivity && activity) {
       const char *actStr = env->GetStringUTFChars(activity, NULL);
       if (actStr) {
                (*mDlLibHandlers[i].resumeActivity)(actStr);
           (*mDlLibHandler.resumeActivity)(actStr);
           env->ReleaseStringUTFChars(activity, actStr);
       }
    }
}
}

static void
com_android_internal_app_ActivityTrigger_native_at_pauseActivity(JNIEnv *env, jobject clazz, jstring activity)
{
    for(size_t i = 0; i < gTotalNumLibs; i++){
        if(mDlLibHandlers[i].pauseActivity && activity) {
    if(mDlLibHandler.pauseActivity && activity) {
       const char *actStr = env->GetStringUTFChars(activity, NULL);
       if (NULL != actStr) {
                (*mDlLibHandlers[i].pauseActivity)(actStr);
           (*mDlLibHandler.pauseActivity)(actStr);
           env->ReleaseStringUTFChars(activity, actStr);
       }
    }
}
}

static void
com_android_internal_app_ActivityTrigger_native_at_stopActivity(JNIEnv *env, jobject clazz, jstring activity)
{
    for(size_t i = 0; i < gTotalNumLibs; i++){
        if(mDlLibHandlers[i].stopActivity && activity) {
    if(mDlLibHandler.stopActivity && activity) {
       const char *actStr = env->GetStringUTFChars(activity, NULL);
       if (NULL != actStr) {
                (*mDlLibHandlers[i].stopActivity)(actStr);
           (*mDlLibHandler.stopActivity)(actStr);
           env->ReleaseStringUTFChars(activity, actStr);
       }
    }
}
}

static jfloat
com_android_internal_app_ActivityTrigger_native_at_animationScalesCheck(JNIEnv *env, jobject clazz, jstring activity, jint scaleType)
com_android_internal_app_ActivityTrigger_native_at_miscActivity(JNIEnv *env, jobject clazz, jint func, jstring activity, jint type, jint flag)
{
    int type = scaleType;
    float scaleValue = -1.0f;
    size_t numlibs = sizeof (mDlLibHandlers) / sizeof (*mDlLibHandlers);
    for (size_t i = 0; i < numlibs; i++) {
        if (mDlLibHandlers[i].animationScalesCheck && activity) {
    if (mDlLibHandler.miscActivity && activity && func) {
        const char *actStr = env->GetStringUTFChars(activity, NULL);
        if (actStr) {
                (*mDlLibHandlers[i].animationScalesCheck)(actStr, type, &scaleValue);
            (*mDlLibHandler.miscActivity)(func, actStr, type, flag, &scaleValue);
            env->ReleaseStringUTFChars(activity, actStr);
        }
    }
    }
    return scaleValue;
}

static void
com_android_internal_app_ActivityTrigger_native_at_networkOptsCheck(JNIEnv *env, jobject clazz, jint flag, jint netType, jstring packageName)
{
    size_t numlibs = sizeof (mDlLibHandlers) / sizeof (*mDlLibHandlers);

    for (size_t i = 0; i < numlibs; i++) {
        if (mDlLibHandlers[i].networkOptsCheck && packageName) {
            const char *actStr = env->GetStringUTFChars(packageName, NULL);
            if (actStr) {
                (*mDlLibHandlers[i].networkOptsCheck)(flag, netType, actStr);
                env->ReleaseStringUTFChars(packageName, actStr);
            }
        }
    }
}
// ----------------------------------------------------------------------------

static JNINativeMethod gMethods[] = {
@@ -317,12 +238,9 @@ static JNINativeMethod gMethods[] = {
    {"native_at_pauseActivity", "(Ljava/lang/String;)V", (void *)com_android_internal_app_ActivityTrigger_native_at_pauseActivity},
    {"native_at_stopActivity", "(Ljava/lang/String;)V", (void *)com_android_internal_app_ActivityTrigger_native_at_stopActivity},
    {"native_at_deinit",         "()V",                   (void *)com_android_internal_app_ActivityTrigger_native_at_deinit},
    {"native_at_startProcessActivity", "(Ljava/lang/String;I)V", (void *)com_android_internal_app_ActivityTrigger_native_at_startProcessActivity},
    {"native_at_animationScalesCheck", "(Ljava/lang/String;I)F", (void *)com_android_internal_app_ActivityTrigger_native_at_animationScalesCheck},
    {"native_at_networkOptsCheck", "(IILjava/lang/String;)V", (void *)com_android_internal_app_ActivityTrigger_native_at_networkOptsCheck},
    {"native_at_miscActivity", "(ILjava/lang/String;II)F", (void *)com_android_internal_app_ActivityTrigger_native_at_miscActivity},
};


int register_com_android_internal_app_ActivityTrigger(JNIEnv *env)
{
    com_android_internal_app_ActivityTrigger_native_at_init();
+1 −0
Original line number Diff line number Diff line
@@ -296,6 +296,7 @@

    <protected-broadcast android:name="android.net.wifi.WIFI_STATE_CHANGED" />
    <protected-broadcast android:name="android.net.wifi.WIFI_AP_STATE_CHANGED" />
    <protected-broadcast android:name="android.net.wifi.WIFI_AP_SUB_SYSTEM_RESTART" />
    <protected-broadcast android:name="android.net.wifi.WIFI_CREDENTIAL_CHANGED" />
    <protected-broadcast android:name="android.net.wifi.WIFI_SCAN_AVAILABLE" />
    <protected-broadcast android:name="android.net.wifi.SCAN_RESULTS" />
+2 −1
Original line number Diff line number Diff line
@@ -1798,4 +1798,5 @@
    <string name="audit_safemode_notification" msgid="6416076898350685856">"يمكنك إعادة تعيين بيانات المصنع لاستخدام هذا الجهاز بدون قيود"</string>
    <string name="audit_safemode_notification_details" msgid="1860601176690176413">"المس للتعرف على مزيد من المعلومات."</string>
    <string name="suspended_widget_accessibility" msgid="6712143096475264190">"تم تعطيل <xliff:g id="LABEL">%1$s</xliff:g>"</string>
    <string name="global_action_reboot">"إعادة التمهيد"</string>
</resources>
 No newline at end of file
Loading