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

Commit f8e29c1d authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Supplying the IBinder to binderDied"

parents 3e5b5de7 b8f20004
Loading
Loading
Loading
Loading
+5 −3
Original line number Original line Diff line number Diff line
@@ -631,10 +631,12 @@ public final class BinderProxy implements IBinder {
        }
        }
    }
    }


    private static void sendDeathNotice(DeathRecipient recipient) {
    private static void sendDeathNotice(DeathRecipient recipient, IBinder binderProxy) {
        if (false) Log.v("JavaBinder", "sendDeathNotice to " + recipient);
        if (false) {
            Log.v("JavaBinder", "sendDeathNotice to " + recipient + " for " + binderProxy);
        }
        try {
        try {
            recipient.binderDied();
            recipient.binderDied(binderProxy);
        } catch (RuntimeException exc) {
        } catch (RuntimeException exc) {
            Log.w("BinderNative", "Uncaught exception from death notification",
            Log.w("BinderNative", "Uncaught exception from death notification",
                    exc);
                    exc);
+7 −0
Original line number Original line Diff line number Diff line
@@ -285,6 +285,13 @@ public interface IBinder {
     */
     */
    public interface DeathRecipient {
    public interface DeathRecipient {
        public void binderDied();
        public void binderDied();

        /**
         * @hide
         */
        default void binderDied(IBinder who) {
            binderDied();
        }
    }
    }


    /**
    /**
+5 −4
Original line number Original line Diff line number Diff line
@@ -537,9 +537,9 @@ public:
        LOGDEATH("Receiving binderDied() on JavaDeathRecipient %p\n", this);
        LOGDEATH("Receiving binderDied() on JavaDeathRecipient %p\n", this);
        if (mObject != NULL) {
        if (mObject != NULL) {
            JNIEnv* env = javavm_to_jnienv(mVM);
            JNIEnv* env = javavm_to_jnienv(mVM);

            jobject jBinderProxy = javaObjectForIBinder(env, who.promote());
            env->CallStaticVoidMethod(gBinderProxyOffsets.mClass,
            env->CallStaticVoidMethod(gBinderProxyOffsets.mClass,
                    gBinderProxyOffsets.mSendDeathNotice, mObject);
                                      gBinderProxyOffsets.mSendDeathNotice, mObject, jBinderProxy);
            if (env->ExceptionCheck()) {
            if (env->ExceptionCheck()) {
                jthrowable excep = env->ExceptionOccurred();
                jthrowable excep = env->ExceptionOccurred();
                report_exception(env, excep,
                report_exception(env, excep,
@@ -1532,8 +1532,9 @@ static int int_register_android_os_BinderProxy(JNIEnv* env)
    gBinderProxyOffsets.mClass = MakeGlobalRefOrDie(env, clazz);
    gBinderProxyOffsets.mClass = MakeGlobalRefOrDie(env, clazz);
    gBinderProxyOffsets.mGetInstance = GetStaticMethodIDOrDie(env, clazz, "getInstance",
    gBinderProxyOffsets.mGetInstance = GetStaticMethodIDOrDie(env, clazz, "getInstance",
            "(JJ)Landroid/os/BinderProxy;");
            "(JJ)Landroid/os/BinderProxy;");
    gBinderProxyOffsets.mSendDeathNotice = GetStaticMethodIDOrDie(env, clazz, "sendDeathNotice",
    gBinderProxyOffsets.mSendDeathNotice =
            "(Landroid/os/IBinder$DeathRecipient;)V");
            GetStaticMethodIDOrDie(env, clazz, "sendDeathNotice",
                                   "(Landroid/os/IBinder$DeathRecipient;Landroid/os/IBinder;)V");
    gBinderProxyOffsets.mNativeData = GetFieldIDOrDie(env, clazz, "mNativeData", "J");
    gBinderProxyOffsets.mNativeData = GetFieldIDOrDie(env, clazz, "mNativeData", "J");


    clazz = FindClassOrDie(env, "java/lang/Class");
    clazz = FindClassOrDie(env, "java/lang/Class");
+6 −1
Original line number Original line Diff line number Diff line
@@ -8,6 +8,7 @@ android_test {
        "EnabledTestApp/src/**/*.java",
        "EnabledTestApp/src/**/*.java",
        "BinderProxyCountingTestApp/src/**/*.java",
        "BinderProxyCountingTestApp/src/**/*.java",
        "BinderProxyCountingTestService/src/**/*.java",
        "BinderProxyCountingTestService/src/**/*.java",
        "BinderDeathRecipientHelperApp/src/**/*.java",
        "aidl/**/I*.aidl",
        "aidl/**/I*.aidl",
    ],
    ],


@@ -59,7 +60,11 @@ android_test {
    resource_dirs: ["res"],
    resource_dirs: ["res"],
    resource_zips: [":FrameworksCoreTests_apks_as_resources"],
    resource_zips: [":FrameworksCoreTests_apks_as_resources"],


    data: [":BstatsTestApp"],
    data: [
        ":BstatsTestApp",
        ":BinderDeathRecipientHelperApp1",
        ":BinderDeathRecipientHelperApp2",
    ],
}
}


// Rules to copy all the test apks to the intermediate raw resource directory
// Rules to copy all the test apks to the intermediate raw resource directory
+1 −0
Original line number Original line Diff line number Diff line
@@ -95,6 +95,7 @@


    <uses-permission android:name="android.permission.PACKAGE_USAGE_STATS" />
    <uses-permission android:name="android.permission.PACKAGE_USAGE_STATS" />
    <uses-permission android:name="android.permission.KILL_UID" />
    <uses-permission android:name="android.permission.KILL_UID" />
    <uses-permission android:name="android.permission.FORCE_STOP_PACKAGES" />


    <uses-permission android:name="android.permission.ACCESS_SURFACE_FLINGER" />
    <uses-permission android:name="android.permission.ACCESS_SURFACE_FLINGER" />


Loading