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

Commit 49cf0473 authored by Patrick Williams's avatar Patrick Williams
Browse files

Fix reading null LaunchCookie from parcel

Bug: 304574518
Test: LaunchCookieTest
Change-Id: I3eec76372b70bd750ede248b5505513f21fbb38a
parent 5d01b819
Loading
Loading
Loading
Loading
+8 −4
Original line number Diff line number Diff line
@@ -1974,8 +1974,8 @@ public class ActivityOptions extends ComponentOptions {
            binder = new Binder(descriptor);
        }

        private LaunchCookie(Parcel in) {
            this.binder = in.readStrongBinder();
        private LaunchCookie(IBinder binder) {
            this.binder = binder;
        }

        /** @hide */
@@ -1996,7 +1996,11 @@ public class ActivityOptions extends ComponentOptions {

        /** @hide */
        public static LaunchCookie readFromParcel(@NonNull Parcel in) {
            return new LaunchCookie(in);
            IBinder binder = in.readStrongBinder();
            if (binder == null) {
                return null;
            }
            return new LaunchCookie(binder);
        }

        /** @hide */
@@ -2017,7 +2021,7 @@ public class ActivityOptions extends ComponentOptions {

                    @Override
                    public LaunchCookie createFromParcel(Parcel source) {
                        return new LaunchCookie(source);
                        return LaunchCookie.readFromParcel(source);
                    }

                    @Override
+50 −0
Original line number Diff line number Diff line
/*
 * Copyright 2024 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package android.app;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;

import android.app.ActivityOptions.LaunchCookie;
import android.os.Parcel;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;

@RunWith(JUnit4.class)
public class LaunchCookieTest {

    @Test
    public void parcelNonNullLaunchCookie() {
        LaunchCookie launchCookie = new LaunchCookie();
        Parcel parcel = Parcel.obtain();
        LaunchCookie.writeToParcel(launchCookie, parcel);
        parcel.setDataPosition(0);
        LaunchCookie unparceledLaunchCookie = LaunchCookie.readFromParcel(parcel);
        assertEquals(launchCookie, unparceledLaunchCookie);
    }

    @Test
    public void parcelNullLaunchCookie() {
        Parcel parcel = Parcel.obtain();
        LaunchCookie.writeToParcel(/*launchCookie*/null, parcel);
        LaunchCookie unparceledLaunchCookie = LaunchCookie.readFromParcel(parcel);
        assertNull(unparceledLaunchCookie);
    }

}