Loading core/java/com/android/internal/app/ActivityTrigger.java +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 Loading Loading @@ -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(); Loading Loading @@ -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); Loading @@ -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); } core/jni/com_android_internal_app_ActivityTrigger.cpp +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 Loading Loading @@ -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 Loading @@ -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[] = { Loading @@ -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(); Loading services/core/java/com/android/server/am/ActivityManagerService.java +8 −3 Original line number Diff line number Diff line Loading @@ -571,6 +571,11 @@ public final class ActivityManagerService extends ActivityManagerNative private int lBoost_v2_TimeOut = 0; private int lBoost_v2_ParamVal[]; /*define misc. activty trigger function*/ static final int START_PROCESS = 1; static final int NETWORK_OPTS = 2; static final int ANIMATION_SCALE = 3; /** All system services */ SystemServiceManager mSystemServiceManager; Loading Loading @@ -2985,11 +2990,11 @@ public final class ActivityManagerService extends ActivityManagerNative /* netType: 0 for Mobile, 1 for WIFI*/ int netType = netInfo.getType(); if (mActivityTrigger != null) { mActivityTrigger.networkOptsCheck(flag, netType, packageName); mActivityTrigger.activityMiscTrigger(NETWORK_OPTS, packageName, netType, flag); } } else { if (mActivityTrigger != null) { mActivityTrigger.networkOptsCheck(flag, ConnectivityManager.TYPE_NONE, packageName); mActivityTrigger.activityMiscTrigger(NETWORK_OPTS, packageName, ConnectivityManager.TYPE_NONE, flag); } } } Loading Loading @@ -3950,7 +3955,7 @@ public final class ActivityManagerService extends ActivityManagerNative } checkTime(startTime, "startProcess: done updating pids map"); if ("activity".equals(hostingType) || "service".equals(hostingType)) { mActivityTrigger.activityStartProcessTrigger(app.processName, startResult.pid); mActivityTrigger.activityMiscTrigger(START_PROCESS, app.processName, startResult.pid, 0); } } catch (RuntimeException e) { Slog.e(TAG, "Failure starting process " + app.processName, e); Loading services/core/java/com/android/server/wm/WindowManagerService.java +6 −1 Original line number Diff line number Diff line Loading @@ -342,6 +342,11 @@ public class WindowManagerService extends IWindowManager.Stub private static final String PROPERTY_BUILD_DATE_UTC = "ro.build.date.utc"; /*define misc. activty trigger function*/ static final int START_PROCESS = 1; static final int NETWORK_OPTS = 2; static final int ANIMATION_SCALE = 3; // Enums for animation scale update types. @Retention(RetentionPolicy.SOURCE) @IntDef({WINDOW_ANIMATION_SCALE, TRANSITION_ANIMATION_SCALE, ANIMATION_DURATION_SCALE}) Loading Loading @@ -5563,7 +5568,7 @@ public class WindowManagerService extends IWindowManager.Stub mActivityTrigger = new ActivityTrigger(); } if (mActivityTrigger != null) { value = mActivityTrigger.animationScalesCheck(mFocusingActivity, which); value = mActivityTrigger.activityMiscTrigger(ANIMATION_SCALE, mFocusingActivity, which, 0); } } } Loading Loading
core/java/com/android/internal/app/ActivityTrigger.java +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 Loading Loading @@ -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(); Loading Loading @@ -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); Loading @@ -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); }
core/jni/com_android_internal_app_ActivityTrigger.cpp +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 Loading Loading @@ -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 Loading @@ -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[] = { Loading @@ -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(); Loading
services/core/java/com/android/server/am/ActivityManagerService.java +8 −3 Original line number Diff line number Diff line Loading @@ -571,6 +571,11 @@ public final class ActivityManagerService extends ActivityManagerNative private int lBoost_v2_TimeOut = 0; private int lBoost_v2_ParamVal[]; /*define misc. activty trigger function*/ static final int START_PROCESS = 1; static final int NETWORK_OPTS = 2; static final int ANIMATION_SCALE = 3; /** All system services */ SystemServiceManager mSystemServiceManager; Loading Loading @@ -2985,11 +2990,11 @@ public final class ActivityManagerService extends ActivityManagerNative /* netType: 0 for Mobile, 1 for WIFI*/ int netType = netInfo.getType(); if (mActivityTrigger != null) { mActivityTrigger.networkOptsCheck(flag, netType, packageName); mActivityTrigger.activityMiscTrigger(NETWORK_OPTS, packageName, netType, flag); } } else { if (mActivityTrigger != null) { mActivityTrigger.networkOptsCheck(flag, ConnectivityManager.TYPE_NONE, packageName); mActivityTrigger.activityMiscTrigger(NETWORK_OPTS, packageName, ConnectivityManager.TYPE_NONE, flag); } } } Loading Loading @@ -3950,7 +3955,7 @@ public final class ActivityManagerService extends ActivityManagerNative } checkTime(startTime, "startProcess: done updating pids map"); if ("activity".equals(hostingType) || "service".equals(hostingType)) { mActivityTrigger.activityStartProcessTrigger(app.processName, startResult.pid); mActivityTrigger.activityMiscTrigger(START_PROCESS, app.processName, startResult.pid, 0); } } catch (RuntimeException e) { Slog.e(TAG, "Failure starting process " + app.processName, e); Loading
services/core/java/com/android/server/wm/WindowManagerService.java +6 −1 Original line number Diff line number Diff line Loading @@ -342,6 +342,11 @@ public class WindowManagerService extends IWindowManager.Stub private static final String PROPERTY_BUILD_DATE_UTC = "ro.build.date.utc"; /*define misc. activty trigger function*/ static final int START_PROCESS = 1; static final int NETWORK_OPTS = 2; static final int ANIMATION_SCALE = 3; // Enums for animation scale update types. @Retention(RetentionPolicy.SOURCE) @IntDef({WINDOW_ANIMATION_SCALE, TRANSITION_ANIMATION_SCALE, ANIMATION_DURATION_SCALE}) Loading Loading @@ -5563,7 +5568,7 @@ public class WindowManagerService extends IWindowManager.Stub mActivityTrigger = new ActivityTrigger(); } if (mActivityTrigger != null) { value = mActivityTrigger.animationScalesCheck(mFocusingActivity, which); value = mActivityTrigger.activityMiscTrigger(ANIMATION_SCALE, mFocusingActivity, which, 0); } } } Loading