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

Commit fb6e91a3 authored by Yohei Yukawa's avatar Yohei Yukawa Committed by android-build-merger
Browse files

Fix a bug in RegisterStatusBarResult parceling am: 17c1af43

am: 06d289e7

Change-Id: I90ce51dd6b42f46a1725734528bc4965e961c5ef
parents ec797fd9 06d289e7
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -78,8 +78,8 @@ public final class RegisterStatusBarResult implements Parcelable {
        dest.writeInt(mFullscreenStackSysUiVisibility);
        dest.writeInt(mDockedStackSysUiVisibility);
        dest.writeStrongBinder(mImeToken);
        dest.writeParcelable(mFullscreenStackBounds, flags);
        dest.writeParcelable(mDockedStackBounds, flags);
        dest.writeTypedObject(mFullscreenStackBounds, flags);
        dest.writeTypedObject(mDockedStackBounds, flags);
    }

    /**
@@ -101,8 +101,8 @@ public final class RegisterStatusBarResult implements Parcelable {
                    final int fullscreenStackSysUiVisibility = source.readInt();
                    final int dockedStackSysUiVisibility = source.readInt();
                    final IBinder imeToken = source.readStrongBinder();
                    final Rect fullscreenStackBounds = Rect.CREATOR.createFromParcel(source);
                    final Rect dockedStackBounds = Rect.CREATOR.createFromParcel(source);
                    final Rect fullscreenStackBounds = source.readTypedObject(Rect.CREATOR);
                    final Rect dockedStackBounds = source.readTypedObject(Rect.CREATOR);
                    return new RegisterStatusBarResult(icons, disabledFlags1, systemUiVisibility,
                            menuVisible, imeWindowVis, imeBackDisposition, showImeSwitcher,
                            disabledFlags2, fullscreenStackSysUiVisibility,
+98 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2019 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 com.android.internal.statusbar;

import static com.google.common.truth.Truth.assertThat;

import android.graphics.Rect;
import android.os.Binder;
import android.os.Parcel;
import android.os.UserHandle;
import android.util.ArrayMap;

import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.SmallTest;

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


@RunWith(AndroidJUnit4.class)
@SmallTest
public class RegisterStatusBarResultTest {

    /**
     * Test {@link RegisterStatusBarResult} can be stored then restored with {@link Parcel}.
     */
    @Test
    public void testParcelable() {
        final String dumyIconKey = "dummyIcon1";
        final ArrayMap<String, StatusBarIcon> iconMap = new ArrayMap<>();
        iconMap.put(dumyIconKey, new StatusBarIcon("com.android.internal.statusbar.test",
                UserHandle.of(100), 123, 1, 2, "dummyIconDescription"));

        final RegisterStatusBarResult original = new RegisterStatusBarResult(iconMap,
                0x2 /* disabledFlags1 */,
                0x4 /* systemUiVisibility */,
                true /* menuVisible */,
                0x8 /* imeWindowVis */,
                0x10 /* imeBackDisposition */,
                false /* showImeSwitcher */,
                0x20 /* disabledFlags2 */,
                0x40 /* fullscreenStackSysUiVisibility */,
                0x80 /* dockedStackSysUiVisibility */,
                new Binder() /* imeToken */,
                new Rect(0x100, 0x200, 0x400, 0x800) /* fullscreenStackBounds */,
                new Rect(0x1000, 0x2000, 0x4000, 0x8000) /* dockedStackBounds */);

        final RegisterStatusBarResult copy = clone(original);

        assertThat(copy.mIcons).hasSize(original.mIcons.size());
        // We already test that StatusBarIcon is Parcelable.  Only check StatusBarIcon.user here.
        assertThat(copy.mIcons.get(dumyIconKey).user)
                .isEqualTo(original.mIcons.get(dumyIconKey).user);

        assertThat(copy.mDisabledFlags1).isEqualTo(original.mDisabledFlags1);
        assertThat(copy.mSystemUiVisibility).isEqualTo(original.mSystemUiVisibility);
        assertThat(copy.mMenuVisible).isEqualTo(original.mMenuVisible);
        assertThat(copy.mImeWindowVis).isEqualTo(original.mImeWindowVis);
        assertThat(copy.mImeBackDisposition).isEqualTo(original.mImeBackDisposition);
        assertThat(copy.mShowImeSwitcher).isEqualTo(original.mShowImeSwitcher);
        assertThat(copy.mDisabledFlags2).isEqualTo(original.mDisabledFlags2);
        assertThat(copy.mFullscreenStackSysUiVisibility)
                .isEqualTo(original.mFullscreenStackSysUiVisibility);
        assertThat(copy.mDockedStackSysUiVisibility)
                .isEqualTo(original.mDockedStackSysUiVisibility);
        assertThat(copy.mImeToken).isSameAs(original.mImeToken);
        assertThat(copy.mFullscreenStackBounds).isEqualTo(original.mFullscreenStackBounds);
        assertThat(copy.mDockedStackBounds).isEqualTo(original.mDockedStackBounds);
    }

    private RegisterStatusBarResult clone(RegisterStatusBarResult original) {
        Parcel parcel = null;
        try {
            parcel = Parcel.obtain();
            original.writeToParcel(parcel, 0);
            parcel.setDataPosition(0);
            return RegisterStatusBarResult.CREATOR.createFromParcel(parcel);
        } finally {
            if (parcel != null) {
                parcel.recycle();
            }
        }
    }
}
+73 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2019 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 com.android.internal.statusbar;

import static com.google.common.truth.Truth.assertThat;

import android.os.Parcel;
import android.os.UserHandle;

import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.SmallTest;

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


@RunWith(AndroidJUnit4.class)
@SmallTest
public class StatusBarIconTest {

    /**
     * Test {@link StatusBarIcon} can be stored then restored with {@link Parcel}.
     */
    @Test
    public void testParcelable() {
        final UserHandle dummyUserHandle = UserHandle.of(100);
        final String dummyIconPackageName = "com.android.internal.statusbar.test";
        final int dummyIconId = 123;
        final int dummyIconLevel = 1;
        final int dummyIconNumber = 2;
        final CharSequence dummyIconContentDescription = "dummyIcon";
        final StatusBarIcon original = new StatusBarIcon(dummyIconPackageName, dummyUserHandle,
                dummyIconId, dummyIconLevel, dummyIconNumber, dummyIconContentDescription);

        final StatusBarIcon copy = clone(original);

        assertThat(copy.user).isEqualTo(original.user);
        assertThat(copy.pkg).isEqualTo(original.pkg);
        assertThat(copy.icon.sameAs(original.icon)).isTrue();
        assertThat(copy.iconLevel).isEqualTo(original.iconLevel);
        assertThat(copy.visible).isEqualTo(original.visible);
        assertThat(copy.number).isEqualTo(original.number);
        assertThat(copy.contentDescription).isEqualTo(original.contentDescription);
    }

    private StatusBarIcon clone(StatusBarIcon original) {
        Parcel parcel = null;
        try {
            parcel = Parcel.obtain();
            original.writeToParcel(parcel, 0);
            parcel.setDataPosition(0);
            return StatusBarIcon.CREATOR.createFromParcel(parcel);
        } finally {
            if (parcel != null) {
                parcel.recycle();
            }
        }
    }
}