diff options
28 files changed, 120 insertions, 61 deletions
diff --git a/libs/WindowManager/Shell/OWNERS b/libs/WindowManager/Shell/OWNERS index 394093c6ab30..f01e8d665d12 100644 --- a/libs/WindowManager/Shell/OWNERS +++ b/libs/WindowManager/Shell/OWNERS @@ -3,5 +3,5 @@ pbdr@google.com pragyabajoria@google.com # Give submodule owners in shell resource approval -per-file res*/*/*.xml = atsjenk@google.com, hwwang@google.com, jorgegil@google.com, lbill@google.com, madym@google.com, vaniadesmonda@google.com, pbdr@google.com, tkachenkoi@google.com, mpodolian@google.com, liranb@google.com, pragyabajoria@google.com, uysalorhan@google.com, gsennton@google.com, mattsziklay@google.com, mdehaini@google.com +per-file res*/*/*.xml = atsjenk@google.com, hwwang@google.com, jorgegil@google.com, lbill@google.com, madym@google.com, vaniadesmonda@google.com, pbdr@google.com, mpodolian@google.com, liranb@google.com, pragyabajoria@google.com, uysalorhan@google.com, gsennton@google.com, mattsziklay@google.com, mdehaini@google.com per-file res*/*/tv_*.xml = bronger@google.com diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/OWNERS b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/OWNERS index afdda8ff865e..47b3ae8fc11b 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/OWNERS +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/OWNERS @@ -3,7 +3,6 @@ atsjenk@google.com jorgegil@google.com madym@google.com pbdr@google.com -tkachenkoi@google.com vaniadesmonda@google.com pragyabajoria@google.com uysalorhan@google.com diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/freeform/OWNERS b/libs/WindowManager/Shell/src/com/android/wm/shell/freeform/OWNERS index 83b5bf658459..44d46eea9c55 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/freeform/OWNERS +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/freeform/OWNERS @@ -4,7 +4,6 @@ jorgegil@google.com madym@google.com nmusgrave@google.com pbdr@google.com -tkachenkoi@google.com vaniadesmonda@google.com pragyabajoria@google.com uysalorhan@google.com diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModel.java b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModel.java index e3a301db4cca..1cc04b421132 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModel.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModel.java @@ -911,7 +911,7 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel, private boolean mIsCustomHeaderGesture; private boolean mIsResizeGesture; private boolean mIsDragging; - private boolean mTouchscreenInUse; + private boolean mLongClickDisabled; private int mDragPointerId = -1; private MotionEvent mMotionEvent; @@ -997,10 +997,12 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel, mMotionEvent = e; final int id = v.getId(); final DesktopModeWindowDecoration decoration = mWindowDecorByTaskId.get(mTaskId); - if ((e.getSource() & SOURCE_TOUCHSCREEN) == SOURCE_TOUCHSCREEN) { - mTouchscreenInUse = e.getActionMasked() != ACTION_UP - && e.getActionMasked() != ACTION_CANCEL; - } + final boolean touchscreenSource = + (e.getSource() & SOURCE_TOUCHSCREEN) == SOURCE_TOUCHSCREEN; + // Disable long click during events from a non-touchscreen source + mLongClickDisabled = !touchscreenSource && e.getActionMasked() != ACTION_UP + && e.getActionMasked() != ACTION_CANCEL; + if (id != R.id.caption_handle && id != R.id.desktop_mode_caption && id != R.id.open_menu_button && id != R.id.close_window && id != R.id.maximize_window && id != R.id.minimize_window) { @@ -1070,7 +1072,7 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel, @Override public boolean onLongClick(View v) { final int id = v.getId(); - if (id == R.id.maximize_window && mTouchscreenInUse) { + if (id == R.id.maximize_window && !mLongClickDisabled) { final DesktopModeWindowDecoration decoration = mWindowDecorByTaskId.get(mTaskId); moveTaskToFront(decoration.mTaskInfo); if (decoration.isMaximizeMenuActive()) { diff --git a/media/tests/aidltests/src/com/android/media/AidlConversionUnitTests.java b/media/tests/aidltests/src/com/android/media/AidlConversionUnitTests.java index d9a1221e529c..06cf6096f4e5 100644 --- a/media/tests/aidltests/src/com/android/media/AidlConversionUnitTests.java +++ b/media/tests/aidltests/src/com/android/media/AidlConversionUnitTests.java @@ -472,6 +472,19 @@ public final class AidlConversionUnitTests { } @Test + public void testAudioDeviceAttributesConversion_MultichannelGroup() { + AudioDeviceAttributes attributes = + new AudioDeviceAttributes(AudioSystem.DEVICE_OUT_MULTICHANNEL_GROUP, "myAddress"); + AudioPort port = AidlConversion.api2aidl_AudioDeviceAttributes_AudioPort(attributes); + assertEquals("", port.name); + assertEquals(0, port.extraAudioDescriptors.length); + assertEquals("myAddress", port.ext.getDevice().device.address.getId()); + assertEquals(AudioDeviceDescription.CONNECTION_VIRTUAL, + port.ext.getDevice().device.type.connection); + assertEquals(AudioDeviceType.OUT_MULTICHANNEL_GROUP, port.ext.getDevice().device.type.type); + } + + @Test public void testAudioDeviceAttributesConversion() { AudioDescriptor audioDescriptor1 = AidlConversion.aidl2api_ExtraAudioDescriptor_AudioDescriptor( diff --git a/packages/SettingsLib/src/com/android/settingslib/drawer/CategoryKey.java b/packages/SettingsLib/src/com/android/settingslib/drawer/CategoryKey.java index 96e875b9bdcb..fb384ff9fdd0 100644 --- a/packages/SettingsLib/src/com/android/settingslib/drawer/CategoryKey.java +++ b/packages/SettingsLib/src/com/android/settingslib/drawer/CategoryKey.java @@ -72,6 +72,8 @@ public final class CategoryKey { "com.android.settings.category.ia.communal"; public static final String CATEGORY_MORE_SECURITY_PRIVACY_SETTINGS = "com.android.settings.category.ia.more_security_privacy_settings"; + public static final String CATEGORY_SUPERVISION = + "com.android.settings.category.ia.supervision"; public static final Map<String, String> KEY_COMPAT_MAP; diff --git a/packages/SettingsLib/src/com/android/settingslib/media/OWNERS b/packages/SettingsLib/src/com/android/settingslib/media/OWNERS index d58add4bb5eb..a34876dd1e0e 100644 --- a/packages/SettingsLib/src/com/android/settingslib/media/OWNERS +++ b/packages/SettingsLib/src/com/android/settingslib/media/OWNERS @@ -3,5 +3,8 @@ ethibodeau@google.com michaelmikhil@google.com apotapov@google.com +# Output Switcher OWNERS +file:/packages/SystemUI/src/com/android/systemui/media/dialog/OWNERS + #Android Media - For minor changes and renames only. aquilescanta@google.com #{LAST_RESORT_SUGGESTION} diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/CategoryKeyTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/CategoryKeyTest.java index c9dc1ba5d5d7..c36f32ac5d3c 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/CategoryKeyTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/CategoryKeyTest.java @@ -61,8 +61,9 @@ public class CategoryKeyTest { allKeys.add(CategoryKey.CATEGORY_NIGHT_DISPLAY); allKeys.add(CategoryKey.CATEGORY_SMART_BATTERY_SETTINGS); allKeys.add(CategoryKey.CATEGORY_COMMUNAL_SETTINGS); + allKeys.add(CategoryKey.CATEGORY_SUPERVISION); // DO NOT REMOVE ANYTHING ABOVE - assertThat(allKeys.size()).isEqualTo(20); + assertThat(allKeys.size()).isEqualTo(21); } } diff --git a/packages/SystemUI/OWNERS b/packages/SystemUI/OWNERS index 33e9919f06eb..236654deefb5 100644 --- a/packages/SystemUI/OWNERS +++ b/packages/SystemUI/OWNERS @@ -13,7 +13,6 @@ alexflo@google.com andonian@google.com amiko@google.com austindelgado@google.com -aroederer@google.com arteiro@google.com asc@google.com awickham@google.com @@ -104,7 +103,6 @@ stwu@google.com syeonlee@google.com sunnygoyal@google.com thiruram@google.com -tkachenkoi@google.com tracyzhou@google.com tsuji@google.com twickham@google.com diff --git a/packages/SystemUI/aconfig/systemui.aconfig b/packages/SystemUI/aconfig/systemui.aconfig index f4be41eef9d9..5b989cb6abc4 100644 --- a/packages/SystemUI/aconfig/systemui.aconfig +++ b/packages/SystemUI/aconfig/systemui.aconfig @@ -2013,3 +2013,10 @@ flag { description: "Decouple view and controller in AnimLib." bug: "393241010" } + +flag { + name: "clock_fidget_animation" + namespace: "systemui" + description: "Enables the clock fidget animation" + bug: "364664389" +} diff --git a/packages/SystemUI/res/drawable/magic_action_button_background.xml b/packages/SystemUI/res/drawable/magic_action_button_background.xml new file mode 100644 index 000000000000..7199b2dfbe5a --- /dev/null +++ b/packages/SystemUI/res/drawable/magic_action_button_background.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> + +<ripple xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:androidprv="http://schemas.android.com/apk/prv/res/android" + android:color="@color/notification_ripple_untinted_color"> + <item> + <inset + android:insetBottom="8dp" + android:insetLeft="0dp" + android:insetRight="0dp" + android:insetTop="8dp"> + <shape android:shape="rectangle"> + <corners android:radius="@dimen/magic_action_button_corner_radius" /> + <solid android:color="@androidprv:color/materialColorPrimaryContainer" /> + <stroke + android:width="@dimen/magic_action_button_outline_stroke_width" + android:color="@androidprv:color/materialColorOutlineVariant" /> + </shape> + </inset> + </item> +</ripple> diff --git a/packages/SystemUI/res/layout/magic_action_button.xml b/packages/SystemUI/res/layout/magic_action_button.xml index 59392ef0fb33..82d8d7043ff0 100644 --- a/packages/SystemUI/res/layout/magic_action_button.xml +++ b/packages/SystemUI/res/layout/magic_action_button.xml @@ -1,19 +1,16 @@ <Button xmlns:android="http://schemas.android.com/apk/res/android" - style="@android:style/Widget.Material.Button" - android:stateListAnimator="@null" - android:layout_width="wrap_content" - android:layout_height="match_parent" - android:minWidth="0dp" - android:minHeight="@dimen/smart_reply_button_min_height" - android:paddingVertical="@dimen/smart_reply_button_padding_vertical" - android:background="@drawable/smart_reply_button_background" - android:gravity="center" - android:fontFamily="roboto-medium" - android:textSize="@dimen/smart_reply_button_font_size" - android:lineSpacingExtra="@dimen/smart_reply_button_line_spacing_extra" - android:textColor="@color/smart_reply_button_text" - android:paddingStart="@dimen/smart_reply_button_action_padding_left" - android:paddingEnd="@dimen/smart_reply_button_padding_horizontal" - android:drawablePadding="@dimen/smart_action_button_icon_padding" - android:textStyle="normal" - android:ellipsize="none"/> + style="@android:style/Widget.Material.Button" + android:layout_width="wrap_content" + android:layout_height="@dimen/magic_action_button_touch_target_height" + android:background="@drawable/magic_action_button_background" + android:drawablePadding="@dimen/magic_action_button_drawable_padding" + android:ellipsize="none" + android:fontFamily="google-sans-flex" + android:gravity="center" + android:minWidth="0dp" + android:paddingHorizontal="@dimen/magic_action_button_padding_horizontal" + android:paddingVertical="@dimen/magic_action_button_inset_vertical" + android:stateListAnimator="@null" + android:textColor="@color/magic_action_button_text_color" + android:textSize="@dimen/magic_action_button_font_size" + android:textStyle="normal" /> diff --git a/packages/SystemUI/res/values/colors.xml b/packages/SystemUI/res/values/colors.xml index 015e0e83e57d..5f8f77993245 100644 --- a/packages/SystemUI/res/values/colors.xml +++ b/packages/SystemUI/res/values/colors.xml @@ -145,6 +145,9 @@ <color name="smart_reply_button_background">#ffffffff</color> <color name="smart_reply_button_stroke">@*android:color/accent_device_default</color> + <!-- Magic Action colors --> + <color name="magic_action_button_text_color">@androidprv:color/materialColorOnSurfaceVariant</color> + <!-- Biometric dialog colors --> <color name="biometric_dialog_gray">#ff757575</color> <color name="biometric_dialog_accent">@color/material_dynamic_primary40</color> diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml index 220d8a99d130..2d3c07b93cb1 100644 --- a/packages/SystemUI/res/values/dimens.xml +++ b/packages/SystemUI/res/values/dimens.xml @@ -1129,6 +1129,17 @@ <dimen name="smart_action_button_icon_padding">8dp</dimen> <dimen name="smart_action_button_outline_stroke_width">2dp</dimen> + <!-- Magic Action params. --> + <!-- Corner radius = half of min_height to create rounded sides. --> + <dimen name="magic_action_button_corner_radius">16dp</dimen> + <dimen name="magic_action_button_icon_size">20dp</dimen> + <dimen name="magic_action_button_outline_stroke_width">1dp</dimen> + <dimen name="magic_action_button_padding_horizontal">12dp</dimen> + <dimen name="magic_action_button_inset_vertical">8dp</dimen> + <dimen name="magic_action_button_drawable_padding">8dp</dimen> + <dimen name="magic_action_button_touch_target_height">48dp</dimen> + <dimen name="magic_action_button_font_size">12sp</dimen> + <!-- A reasonable upper bound for the height of the smart reply button. The measuring code needs to start with a guess for the maximum size. Currently two-line smart reply buttons add about 88dp of height to the notifications. --> diff --git a/packages/SystemUI/src/com/android/keyguard/ClockEventController.kt b/packages/SystemUI/src/com/android/keyguard/ClockEventController.kt index 6753b37bf1ec..1b8282bf9b93 100644 --- a/packages/SystemUI/src/com/android/keyguard/ClockEventController.kt +++ b/packages/SystemUI/src/com/android/keyguard/ClockEventController.kt @@ -565,6 +565,10 @@ constructor( } fun handleFidgetTap(x: Float, y: Float) { + if (!com.android.systemui.Flags.clockFidgetAnimation()) { + return + } + clock?.run { smallClock.animations.onFidgetTap(x, y) largeClock.animations.onFidgetTap(x, y) diff --git a/packages/SystemUI/src/com/android/systemui/notetask/OWNERS b/packages/SystemUI/src/com/android/systemui/notetask/OWNERS index 0ec996be72de..9b4902a9e7b2 100644 --- a/packages/SystemUI/src/com/android/systemui/notetask/OWNERS +++ b/packages/SystemUI/src/com/android/systemui/notetask/OWNERS @@ -6,5 +6,4 @@ madym@google.com mgalhardo@google.com petrcermak@google.com stevenckng@google.com -tkachenkoi@google.com -vanjan@google.com
\ No newline at end of file +vanjan@google.com diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/OWNERS b/packages/SystemUI/src/com/android/systemui/statusbar/notification/OWNERS index 0a7f08d5860b..d06f24fdb81b 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/OWNERS +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/OWNERS @@ -6,7 +6,6 @@ jeffdq@google.com juliacr@google.com aioana@google.com -aroederer@google.com asc@google.com iyz@google.com juliatuttle@google.com diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/SmartReplyStateInflater.kt b/packages/SystemUI/src/com/android/systemui/statusbar/policy/SmartReplyStateInflater.kt index 1887db948b5a..d3af1e5b65fe 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/SmartReplyStateInflater.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/SmartReplyStateInflater.kt @@ -409,16 +409,6 @@ constructor( as Button) .apply { text = action.title - // TODO: Move the MagicActionBackgroundDrawable to MagicActionButton once - // MagicActionButton is created. - if (isMagicAction) { - background = MagicActionBackgroundDrawable(parent.context) - val textColor = - parent.context.getColor( - com.android.internal.R.color.materialColorOnPrimaryContainer - ) - setTextColor(textColor) - } // We received the Icon from the application - so use the Context of the application // to diff --git a/packages/SystemUI/tests/src/com/android/systemui/notetask/OWNERS b/packages/SystemUI/tests/src/com/android/systemui/notetask/OWNERS index 0ec996be72de..9b4902a9e7b2 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/notetask/OWNERS +++ b/packages/SystemUI/tests/src/com/android/systemui/notetask/OWNERS @@ -6,5 +6,4 @@ madym@google.com mgalhardo@google.com petrcermak@google.com stevenckng@google.com -tkachenkoi@google.com -vanjan@google.com
\ No newline at end of file +vanjan@google.com diff --git a/packages/SystemUI/tests/src/com/android/systemui/stylus/OWNERS b/packages/SystemUI/tests/src/com/android/systemui/stylus/OWNERS index 0ec996be72de..9b4902a9e7b2 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/stylus/OWNERS +++ b/packages/SystemUI/tests/src/com/android/systemui/stylus/OWNERS @@ -6,5 +6,4 @@ madym@google.com mgalhardo@google.com petrcermak@google.com stevenckng@google.com -tkachenkoi@google.com -vanjan@google.com
\ No newline at end of file +vanjan@google.com diff --git a/services/core/java/com/android/server/notification/OWNERS b/services/core/java/com/android/server/notification/OWNERS index 9f16662fd749..43c68d10b3ce 100644 --- a/services/core/java/com/android/server/notification/OWNERS +++ b/services/core/java/com/android/server/notification/OWNERS @@ -2,8 +2,7 @@ juliacr@google.com yurilin@google.com -aroederer@google.com matiashe@google.com valiiftime@google.com jeffdq@google.com -dsandler@android.com
\ No newline at end of file +dsandler@android.com diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index 61429a41370c..8343935425cd 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -1477,7 +1477,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService ArchiveState archiveState; synchronized (mLock) { PackageSetting ps = mSettings.getPackageLPr(packageName); - if (ps == null) { + if (ps == null || snapshot.shouldFilterApplication(ps, binderUid, userId)) { return null; } var psi = ps.getUserStateOrDefault(userId); diff --git a/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java b/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java index d9c79b5c40bb..ef63229f55e2 100644 --- a/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java +++ b/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java @@ -20,7 +20,6 @@ import static android.Manifest.permission.INTERACT_ACROSS_USERS_FULL; import static android.Manifest.permission.MANAGE_EXTERNAL_STORAGE; import static android.Manifest.permission.READ_WALLPAPER_INTERNAL; import static android.app.ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND; -import static android.app.Flags.enableConnectedDisplaysWallpaper; import static android.app.Flags.fixWallpaperChanged; import static android.app.Flags.liveWallpaperContentHandling; import static android.app.Flags.removeNextWallpaperComponent; @@ -46,6 +45,7 @@ import static com.android.server.wallpaper.WallpaperUtils.WALLPAPER_INFO; import static com.android.server.wallpaper.WallpaperUtils.WALLPAPER_LOCK_ORIG; import static com.android.server.wallpaper.WallpaperUtils.getWallpaperDir; import static com.android.server.wallpaper.WallpaperUtils.makeWallpaperIdLocked; +import static com.android.server.wm.DesktopModeHelper.isDeviceEligibleForDesktopExperienceWallpaper; import static com.android.window.flags.Flags.avoidRebindingIntentionallyDisconnectedWallpaper; import static com.android.window.flags.Flags.multiCrop; import static com.android.window.flags.Flags.offloadColorExtraction; @@ -756,7 +756,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub } // Image wallpaper - if (enableConnectedDisplaysWallpaper()) { + if (isDeviceEligibleForDesktopExperienceWallpaper(mContext)) { // TODO(b/384519749): check display's resolution and image wallpaper cropped image // aspect ratio. return displayId == DEFAULT_DISPLAY @@ -792,7 +792,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub return; } - if (enableConnectedDisplaysWallpaper()) { + if (isDeviceEligibleForDesktopExperienceWallpaper(mContext)) { mWallpaperDisplayHelper.forEachDisplayData(displayData -> { int displayId = displayData.mDisplayId; // If the display is already connected to the desired wallpaper(s), either the @@ -914,7 +914,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub return; } int which = wallpaper.mWhich; - if (enableConnectedDisplaysWallpaper()) { + if (isDeviceEligibleForDesktopExperienceWallpaper(mContext)) { which = mWhich; } TimingsTraceAndSlog t = new TimingsTraceAndSlog(TAG); @@ -1438,7 +1438,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub // changes to currentSystem.mWhich alone won't update the corresponding // flag in currentSystem.connection.mWallpaper.mWhich. Let's point // currentSystem.connection.mWallpaper back to currentSystem. - if (enableConnectedDisplaysWallpaper() + if (isDeviceEligibleForDesktopExperienceWallpaper(mContext) && currentSystem.connection != null) { currentSystem.connection.mWallpaper = currentSystem; } @@ -1464,7 +1464,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub WallpaperData currentSystem = mWallpaperMap.get(mNewWallpaper.userId); if (currentSystem.wallpaperId == mOriginalSystem.wallpaperId) { // Fixing the reference, see above for more details. - if (enableConnectedDisplaysWallpaper() + if (isDeviceEligibleForDesktopExperienceWallpaper(mContext) && currentSystem.connection != null) { currentSystem.connection.mWallpaper = currentSystem; } @@ -1654,7 +1654,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub mShuttingDown = false; mImageWallpaper = ComponentName.unflattenFromString( context.getResources().getString(R.string.image_wallpaper_component)); - if (enableConnectedDisplaysWallpaper()) { + if (isDeviceEligibleForDesktopExperienceWallpaper(mContext)) { mFallbackWallpaperComponent = ComponentName.unflattenFromString( context.getResources().getString(R.string.fallback_wallpaper_component)); } else { @@ -4034,7 +4034,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub return; } int useFallbackWallpaperWhich = 0; - if (enableConnectedDisplaysWallpaper()) { + if (isDeviceEligibleForDesktopExperienceWallpaper(mContext)) { List<WallpaperData> wallpapers = new ArrayList<>(); wallpapers.add(mLastWallpaper); // If the system and the lock wallpapers are not the same, we should also @@ -4095,7 +4095,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub // removed to start mirroring. private void onDisplayRemovedInternal(int displayId) { synchronized (mLock) { - if (enableConnectedDisplaysWallpaper()) { + if (isDeviceEligibleForDesktopExperienceWallpaper(mContext)) { // There could be at most 2 wallpaper connections per display: // 1. system & lock are the same: mLastWallpaper // 2. system, lock are different: mLastWallpaper, mLastLockWallpaper diff --git a/services/core/java/com/android/server/wm/DesktopModeHelper.java b/services/core/java/com/android/server/wm/DesktopModeHelper.java index 0eea30a29580..a1faa7573a0c 100644 --- a/services/core/java/com/android/server/wm/DesktopModeHelper.java +++ b/services/core/java/com/android/server/wm/DesktopModeHelper.java @@ -16,6 +16,8 @@ package com.android.server.wm; +import static android.app.Flags.enableConnectedDisplaysWallpaper; + import android.annotation.NonNull; import android.content.Context; import android.os.SystemProperties; @@ -82,4 +84,9 @@ public final class DesktopModeHelper { return (isDesktopModeEnabled() && isDeviceEligibleForDesktopMode(context)) || isDesktopModeEnabledByDevOption(context); } + + /** Returns {@code true} if desktop experience wallpaper is supported on this device. */ + public static boolean isDeviceEligibleForDesktopExperienceWallpaper(@NonNull Context context) { + return enableConnectedDisplaysWallpaper() && isDeviceEligibleForDesktopMode(context); + } } diff --git a/services/tests/mockingservicestests/src/com/android/server/wallpaper/WallpaperManagerServiceTests.java b/services/tests/mockingservicestests/src/com/android/server/wallpaper/WallpaperManagerServiceTests.java index ef77a0ee067f..a5073599b29e 100644 --- a/services/tests/mockingservicestests/src/com/android/server/wallpaper/WallpaperManagerServiceTests.java +++ b/services/tests/mockingservicestests/src/com/android/server/wallpaper/WallpaperManagerServiceTests.java @@ -64,6 +64,7 @@ import android.content.pm.IPackageManager; import android.content.pm.PackageManager; import android.content.pm.ParceledListSlice; import android.content.pm.ServiceInfo; +import android.content.res.Resources; import android.graphics.Color; import android.hardware.display.DisplayManager; import android.hardware.display.DisplayManager.DisplayListener; @@ -148,6 +149,8 @@ public class WallpaperManagerServiceTests { private IPackageManager mIpm = AppGlobals.getPackageManager(); + private Resources mResources = sContext.getResources(); + @Mock private DisplayManager mDisplayManager; @@ -245,6 +248,8 @@ public class WallpaperManagerServiceTests { doReturn(displays).when(mDisplayManager).getDisplays(); spyOn(mIpm); + spyOn(mResources); + doReturn(true).when(mResources).getBoolean(eq(R.bool.config_isDesktopModeSupported)); mService = new TestWallpaperManagerService(sContext); spyOn(mService); mService.systemReady(); diff --git a/services/tests/ondeviceintelligencetests/OWNERS b/services/tests/ondeviceintelligencetests/OWNERS index a4fc7582a785..d08d34ad3108 100644 --- a/services/tests/ondeviceintelligencetests/OWNERS +++ b/services/tests/ondeviceintelligencetests/OWNERS @@ -1,3 +1,2 @@ shiqing@google.com sandeepbandaru@google.com -shivanker@google.com diff --git a/tests/SharedLibrary/lib/Android.bp b/tests/SharedLibrary/lib/Android.bp index 0595cb1e116a..abfd0e869b45 100644 --- a/tests/SharedLibrary/lib/Android.bp +++ b/tests/SharedLibrary/lib/Android.bp @@ -15,6 +15,7 @@ android_app { export_package_resources: true, privileged: true, optimize: { + keep_runtime_invisible_annotations: true, proguard_flags_files: ["proguard.proguard"], }, } diff --git a/tests/SharedLibrary/lib/proguard.proguard b/tests/SharedLibrary/lib/proguard.proguard index e5dfbe1c453d..699fbdaaadad 100644 --- a/tests/SharedLibrary/lib/proguard.proguard +++ b/tests/SharedLibrary/lib/proguard.proguard @@ -1,6 +1,8 @@ -keepparameternames -keepattributes Exceptions,InnerClasses,Signature,Deprecated, - SourceFile,LineNumberTable,*Annotation*,EnclosingMethod + SourceFile,LineNumberTable,EnclosingMethod, + RuntimeVisibleAnnotations,RuntimeVisibleParameterAnnotations, + RuntimeVisibleTypeAnnotations,AnnotationDefault -keep public class * { public protected *; |