Hide PIP related preference when device didn't support this feature

Fixes: 79945310
Test: atest & manual
Change-Id: I24b9de06ec94a008656cbbc016a50a4e217fece1
This commit is contained in:
Edgar Wang
2019-11-20 18:23:59 +08:00
parent cad7ff1653
commit 334c5b36ad
3 changed files with 21 additions and 1 deletions

View File

@@ -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;
}
}

View File

@@ -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;
}

View File

@@ -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);