diff options
author | 2024-07-02 22:01:49 +0000 | |
---|---|---|
committer | 2024-07-02 22:01:49 +0000 | |
commit | 35f46da48550f7129f0b0deb7bd5a1a8703b7ef9 (patch) | |
tree | 9546795de68dd866572d705d058d5b816594ee70 | |
parent | 90bc0740e846172ae7aaebb6bc2c3bdd266f4720 (diff) | |
parent | c40b465f3058218914b2f292ce433ecbbb85abce (diff) |
Merge "Displaying the base activity's icon and app label in app header" into main
2 files changed, 12 insertions, 7 deletions
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecoration.java b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecoration.java index f53c21d352b3..2a95fa3869a0 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecoration.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecoration.java @@ -31,6 +31,7 @@ import static com.android.wm.shell.windowdecor.DragResizeWindowGeometry.getResiz import android.annotation.NonNull; import android.app.ActivityManager; import android.app.WindowConfiguration.WindowingMode; +import android.content.ComponentName; import android.content.Context; import android.content.pm.ActivityInfo; import android.content.pm.ApplicationInfo; @@ -600,12 +601,13 @@ public class DesktopModeWindowDecoration extends WindowDecoration<WindowDecorLin if (mAppIconBitmap != null && mAppName != null) { return; } - final ActivityInfo activityInfo = mTaskInfo.topActivityInfo; - if (activityInfo == null) { - Log.e(TAG, "Top activity info not found in task"); + final ComponentName baseActivity = mTaskInfo.baseActivity; + if (baseActivity == null) { + Log.e(TAG, "Base activity component not found in task"); return; } - PackageManager pm = mContext.getApplicationContext().getPackageManager(); + final PackageManager pm = mContext.getApplicationContext().getPackageManager(); + final ActivityInfo activityInfo = pm.getActivityInfo(baseActivity, 0 /* flags */); final IconProvider provider = new IconProvider(mContext); final Drawable appIconDrawable = provider.getIcon(activityInfo); final BaseIconFactory headerIconFactory = createIconFactory(mContext, @@ -619,6 +621,8 @@ public class DesktopModeWindowDecoration extends WindowDecoration<WindowDecorLin final ApplicationInfo applicationInfo = activityInfo.applicationInfo; mAppName = pm.getApplicationLabel(applicationInfo); + } catch (PackageManager.NameNotFoundException e) { + Log.e(TAG, "Base activity's component name cannot be found on the system"); } finally { Trace.endSection(); } diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorationTests.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorationTests.java index 36e8a4671a46..8165e595d5a8 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorationTests.java +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorationTests.java @@ -170,7 +170,7 @@ public class DesktopModeWindowDecorationTests extends ShellTestCase { } @Before - public void setUp() { + public void setUp() throws PackageManager.NameNotFoundException { mMockitoSession = mockitoSession() .strictness(Strictness.LENIENT) .spyStatic(DesktopModeStatus.class) @@ -186,6 +186,9 @@ public class DesktopModeWindowDecorationTests extends ShellTestCase { mTestableContext.ensureTestableResources(); mContext.setMockPackageManager(mMockPackageManager); when(mMockPackageManager.getApplicationLabel(any())).thenReturn("applicationLabel"); + final ActivityInfo activityInfo = new ActivityInfo(); + activityInfo.applicationInfo = new ApplicationInfo(); + when(mMockPackageManager.getActivityInfo(any(), anyInt())).thenReturn(activityInfo); final Display defaultDisplay = mock(Display.class); doReturn(defaultDisplay).when(mMockDisplayController).getDisplay(Display.DEFAULT_DISPLAY); doReturn(mInsetsState).when(mMockDisplayController).getInsetsState(anyInt()); @@ -608,8 +611,6 @@ public class DesktopModeWindowDecorationTests extends ShellTestCase { .setTaskDescriptionBuilder(taskDescriptionBuilder) .setVisible(visible) .build(); - taskInfo.topActivityInfo = new ActivityInfo(); - taskInfo.topActivityInfo.applicationInfo = new ApplicationInfo(); taskInfo.realActivity = new ComponentName("com.android.wm.shell.windowdecor", "DesktopModeWindowDecorationTests"); taskInfo.baseActivity = new ComponentName("com.android.wm.shell.windowdecor", |