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 Diff line number Diff line
@@ -631,10 +631,12 @@ public final class BinderProxy implements IBinder {
        }
    }

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

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

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

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

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

@@ -59,7 +60,11 @@ android_test {
    resource_dirs: ["res"],
    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
+1 −0
Original line number Diff line number Diff line
@@ -95,6 +95,7 @@

    <uses-permission android:name="android.permission.PACKAGE_USAGE_STATS" />
    <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" />

Loading