diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/Bubble.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/Bubble.java index 24fd86b45df41..e396ba13f154d 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/Bubble.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/Bubble.java @@ -300,7 +300,8 @@ public class Bubble implements BubbleViewProvider { getShortcutId(), getIcon(), getUser().getIdentifier(), - getPackageName()); + getPackageName(), + getTitle()); } @Override diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/common/bubbles/BubbleInfo.java b/libs/WindowManager/Shell/src/com/android/wm/shell/common/bubbles/BubbleInfo.java index d27d05b207a6f..baa23e3040c40 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/common/bubbles/BubbleInfo.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/bubbles/BubbleInfo.java @@ -30,7 +30,6 @@ import java.util.Objects; */ public class BubbleInfo implements Parcelable { - // TODO(b/269672147): needs a title string for a11y & that comes from notification // TODO(b/269671451): needs whether the bubble is an 'important person' or not private String mKey; // Same key as the Notification @@ -46,24 +45,28 @@ public class BubbleInfo implements Parcelable { */ @Nullable private Icon mIcon; + @Nullable + private String mTitle; public BubbleInfo(String key, int flags, @Nullable String shortcutId, @Nullable Icon icon, - int userId, String packageName) { + int userId, String packageName, @Nullable String title) { mKey = key; mFlags = flags; mShortcutId = shortcutId; mIcon = icon; mUserId = userId; mPackageName = packageName; + mTitle = title; } - public BubbleInfo(Parcel source) { + private BubbleInfo(Parcel source) { mKey = source.readString(); mFlags = source.readInt(); mShortcutId = source.readString(); mIcon = source.readTypedObject(Icon.CREATOR); mUserId = source.readInt(); mPackageName = source.readString(); + mTitle = source.readString(); } public String getKey() { @@ -92,6 +95,11 @@ public class BubbleInfo implements Parcelable { return mPackageName; } + @Nullable + public String getTitle() { + return mTitle; + } + /** * Whether this bubble is currently being hidden from the stack. */ @@ -141,11 +149,12 @@ public class BubbleInfo implements Parcelable { parcel.writeTypedObject(mIcon, flags); parcel.writeInt(mUserId); parcel.writeString(mPackageName); + parcel.writeString(mTitle); } @NonNull public static final Creator CREATOR = - new Creator() { + new Creator<>() { public BubbleInfo createFromParcel(Parcel source) { return new BubbleInfo(source); } diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/common/bubbles/BubbleInfoTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/common/bubbles/BubbleInfoTest.kt new file mode 100644 index 0000000000000..8fbac1db86531 --- /dev/null +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/common/bubbles/BubbleInfoTest.kt @@ -0,0 +1,49 @@ +/* + * Copyright (C) 2023 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.wm.shell.common.bubbles + +import android.os.Parcel +import android.os.Parcelable.PARCELABLE_WRITE_RETURN_VALUE +import android.testing.AndroidTestingRunner +import androidx.test.filters.SmallTest +import com.android.wm.shell.ShellTestCase +import com.google.common.truth.Truth.assertThat +import org.junit.Test +import org.junit.runner.RunWith + +@SmallTest +@RunWith(AndroidTestingRunner::class) +class BubbleInfoTest : ShellTestCase() { + + @Test + fun bubbleInfo() { + val bubbleInfo = BubbleInfo("key", 0, "shortcut id", null, 6, "com.some.package", "title") + val parcel = Parcel.obtain() + bubbleInfo.writeToParcel(parcel, PARCELABLE_WRITE_RETURN_VALUE) + parcel.setDataPosition(0) + + val bubbleInfoFromParcel = BubbleInfo.CREATOR.createFromParcel(parcel) + + assertThat(bubbleInfo.key).isEqualTo(bubbleInfoFromParcel.key) + assertThat(bubbleInfo.flags).isEqualTo(bubbleInfoFromParcel.flags) + assertThat(bubbleInfo.shortcutId).isEqualTo(bubbleInfoFromParcel.shortcutId) + assertThat(bubbleInfo.icon).isEqualTo(bubbleInfoFromParcel.icon) + assertThat(bubbleInfo.userId).isEqualTo(bubbleInfoFromParcel.userId) + assertThat(bubbleInfo.packageName).isEqualTo(bubbleInfoFromParcel.packageName) + assertThat(bubbleInfo.title).isEqualTo(bubbleInfoFromParcel.title) + } +}