From 334c5b36ad08a1dbd69882aa89b360fe333cc2d1 Mon Sep 17 00:00:00 2001 From: Edgar Wang Date: Wed, 20 Nov 2019 18:23:59 +0800 Subject: [PATCH] Hide PIP related preference when device didn't support this feature Fixes: 79945310 Test: atest & manual Change-Id: I24b9de06ec94a008656cbbc016a50a4e217fece1 --- .../PictureInPictureController.java | 4 +++- ...PictureInPictureDetailPreferenceController.java | 4 ++++ ...ureInPictureDetailPreferenceControllerTest.java | 14 ++++++++++++++ 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/com/android/settings/applications/specialaccess/pictureinpicture/PictureInPictureController.java b/src/com/android/settings/applications/specialaccess/pictureinpicture/PictureInPictureController.java index 714b662a7b8..dc1dde163df 100644 --- a/src/com/android/settings/applications/specialaccess/pictureinpicture/PictureInPictureController.java +++ b/src/com/android/settings/applications/specialaccess/pictureinpicture/PictureInPictureController.java @@ -18,6 +18,7 @@ package com.android.settings.applications.specialaccess.pictureinpicture; import android.app.ActivityManager; import android.content.Context; +import android.content.pm.PackageManager; import com.android.settings.core.BasePreferenceController; @@ -30,7 +31,8 @@ public class PictureInPictureController extends BasePreferenceController { @Override public int getAvailabilityStatus() { return !ActivityManager.isLowRamDeviceStatic() - ? AVAILABLE_UNSEARCHABLE + && mContext.getPackageManager().hasSystemFeature( + PackageManager.FEATURE_PICTURE_IN_PICTURE) ? AVAILABLE_UNSEARCHABLE : UNSUPPORTED_ON_DEVICE; } } diff --git a/src/com/android/settings/applications/specialaccess/pictureinpicture/PictureInPictureDetailPreferenceController.java b/src/com/android/settings/applications/specialaccess/pictureinpicture/PictureInPictureDetailPreferenceController.java index 1f94ed1452c..874f707f3ba 100644 --- a/src/com/android/settings/applications/specialaccess/pictureinpicture/PictureInPictureDetailPreferenceController.java +++ b/src/com/android/settings/applications/specialaccess/pictureinpicture/PictureInPictureDetailPreferenceController.java @@ -43,6 +43,10 @@ public class PictureInPictureDetailPreferenceController extends AppInfoPreferenc @Override public int getAvailabilityStatus() { + if (!mContext.getPackageManager().hasSystemFeature( + PackageManager.FEATURE_PICTURE_IN_PICTURE)) { + return UNSUPPORTED_ON_DEVICE; + } return hasPictureInPictureActivites() ? AVAILABLE : DISABLED_FOR_USER; } diff --git a/tests/robotests/src/com/android/settings/applications/specialaccess/pictureinpicture/PictureInPictureDetailPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/applications/specialaccess/pictureinpicture/PictureInPictureDetailPreferenceControllerTest.java index 5746c189301..4906f4bbc18 100644 --- a/tests/robotests/src/com/android/settings/applications/specialaccess/pictureinpicture/PictureInPictureDetailPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/applications/specialaccess/pictureinpicture/PictureInPictureDetailPreferenceControllerTest.java @@ -24,6 +24,7 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.content.Context; +import android.content.pm.PackageManager; import androidx.preference.Preference; @@ -46,6 +47,8 @@ public class PictureInPictureDetailPreferenceControllerTest { private AppInfoDashboardFragment mFragment; @Mock private Preference mPreference; + @Mock + private PackageManager mManager; private Context mContext; private PictureInPictureDetailPreferenceController mController; @@ -61,6 +64,8 @@ public class PictureInPictureDetailPreferenceControllerTest { final String key = mController.getPreferenceKey(); when(mPreference.getKey()).thenReturn(key); + when(mContext.getPackageManager()).thenReturn(mManager); + when(mManager.hasSystemFeature(PackageManager.FEATURE_PICTURE_IN_PICTURE)).thenReturn(true); } @Test @@ -79,6 +84,15 @@ public class PictureInPictureDetailPreferenceControllerTest { .isEqualTo(BasePreferenceController.AVAILABLE); } + @Test + public void getAvailabilityStatus_noPictureInPictureFeature_shouldReturnUnSupported() { + when(mManager.hasSystemFeature(PackageManager.FEATURE_PICTURE_IN_PICTURE)).thenReturn( + false); + + assertThat(mController.getAvailabilityStatus()) + .isEqualTo(BasePreferenceController.UNSUPPORTED_ON_DEVICE); + } + @Test public void getDetailFragmentClass_shouldReturnPictureInPictureDetails() { assertThat(mController.getDetailFragmentClass()).isEqualTo(PictureInPictureDetails.class);