Hide PIP related preference when device didn't support this feature
Fixes: 79945310 Test: atest & manual Change-Id: I24b9de06ec94a008656cbbc016a50a4e217fece1
This commit is contained in:
@@ -18,6 +18,7 @@ package com.android.settings.applications.specialaccess.pictureinpicture;
|
|||||||
|
|
||||||
import android.app.ActivityManager;
|
import android.app.ActivityManager;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.content.pm.PackageManager;
|
||||||
|
|
||||||
import com.android.settings.core.BasePreferenceController;
|
import com.android.settings.core.BasePreferenceController;
|
||||||
|
|
||||||
@@ -30,7 +31,8 @@ public class PictureInPictureController extends BasePreferenceController {
|
|||||||
@Override
|
@Override
|
||||||
public int getAvailabilityStatus() {
|
public int getAvailabilityStatus() {
|
||||||
return !ActivityManager.isLowRamDeviceStatic()
|
return !ActivityManager.isLowRamDeviceStatic()
|
||||||
? AVAILABLE_UNSEARCHABLE
|
&& mContext.getPackageManager().hasSystemFeature(
|
||||||
|
PackageManager.FEATURE_PICTURE_IN_PICTURE) ? AVAILABLE_UNSEARCHABLE
|
||||||
: UNSUPPORTED_ON_DEVICE;
|
: UNSUPPORTED_ON_DEVICE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -43,6 +43,10 @@ public class PictureInPictureDetailPreferenceController extends AppInfoPreferenc
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getAvailabilityStatus() {
|
public int getAvailabilityStatus() {
|
||||||
|
if (!mContext.getPackageManager().hasSystemFeature(
|
||||||
|
PackageManager.FEATURE_PICTURE_IN_PICTURE)) {
|
||||||
|
return UNSUPPORTED_ON_DEVICE;
|
||||||
|
}
|
||||||
return hasPictureInPictureActivites() ? AVAILABLE : DISABLED_FOR_USER;
|
return hasPictureInPictureActivites() ? AVAILABLE : DISABLED_FOR_USER;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -24,6 +24,7 @@ import static org.mockito.Mockito.verify;
|
|||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.content.pm.PackageManager;
|
||||||
|
|
||||||
import androidx.preference.Preference;
|
import androidx.preference.Preference;
|
||||||
|
|
||||||
@@ -46,6 +47,8 @@ public class PictureInPictureDetailPreferenceControllerTest {
|
|||||||
private AppInfoDashboardFragment mFragment;
|
private AppInfoDashboardFragment mFragment;
|
||||||
@Mock
|
@Mock
|
||||||
private Preference mPreference;
|
private Preference mPreference;
|
||||||
|
@Mock
|
||||||
|
private PackageManager mManager;
|
||||||
|
|
||||||
private Context mContext;
|
private Context mContext;
|
||||||
private PictureInPictureDetailPreferenceController mController;
|
private PictureInPictureDetailPreferenceController mController;
|
||||||
@@ -61,6 +64,8 @@ public class PictureInPictureDetailPreferenceControllerTest {
|
|||||||
|
|
||||||
final String key = mController.getPreferenceKey();
|
final String key = mController.getPreferenceKey();
|
||||||
when(mPreference.getKey()).thenReturn(key);
|
when(mPreference.getKey()).thenReturn(key);
|
||||||
|
when(mContext.getPackageManager()).thenReturn(mManager);
|
||||||
|
when(mManager.hasSystemFeature(PackageManager.FEATURE_PICTURE_IN_PICTURE)).thenReturn(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -79,6 +84,15 @@ public class PictureInPictureDetailPreferenceControllerTest {
|
|||||||
.isEqualTo(BasePreferenceController.AVAILABLE);
|
.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
|
@Test
|
||||||
public void getDetailFragmentClass_shouldReturnPictureInPictureDetails() {
|
public void getDetailFragmentClass_shouldReturnPictureInPictureDetails() {
|
||||||
assertThat(mController.getDetailFragmentClass()).isEqualTo(PictureInPictureDetails.class);
|
assertThat(mController.getDetailFragmentClass()).isEqualTo(PictureInPictureDetails.class);
|
||||||
|
Reference in New Issue
Block a user