Merge "Hide esos setting if no app provides esos functionality" into sc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
16fa77369f
@@ -62,7 +62,7 @@ public class EmergencyGestureEntrypointPreferenceController extends BasePreferen
|
|||||||
@Override
|
@Override
|
||||||
public void updateState(Preference preference) {
|
public void updateState(Preference preference) {
|
||||||
super.updateState(preference);
|
super.updateState(preference);
|
||||||
final boolean canHandleClicks = !mUseCustomIntent || mIntent != null;
|
final boolean canHandleClicks = canHandleClicks();
|
||||||
if (preference != null) {
|
if (preference != null) {
|
||||||
preference.setEnabled(canHandleClicks);
|
preference.setEnabled(canHandleClicks);
|
||||||
}
|
}
|
||||||
@@ -86,6 +86,9 @@ public class EmergencyGestureEntrypointPreferenceController extends BasePreferen
|
|||||||
if (!isConfigEnabled) {
|
if (!isConfigEnabled) {
|
||||||
return UNSUPPORTED_ON_DEVICE;
|
return UNSUPPORTED_ON_DEVICE;
|
||||||
}
|
}
|
||||||
|
if (!canHandleClicks()) {
|
||||||
|
return UNSUPPORTED_ON_DEVICE;
|
||||||
|
}
|
||||||
return AVAILABLE;
|
return AVAILABLE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -117,6 +120,13 @@ public class EmergencyGestureEntrypointPreferenceController extends BasePreferen
|
|||||||
return mUseCustomIntent;
|
return mUseCustomIntent;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Whether or not this setting can react to user click
|
||||||
|
*/
|
||||||
|
private boolean canHandleClicks() {
|
||||||
|
return !mUseCustomIntent || mIntent != null;
|
||||||
|
}
|
||||||
|
|
||||||
private boolean canResolveIntent(Intent intent) {
|
private boolean canResolveIntent(Intent intent) {
|
||||||
final ResolveInfo resolveActivity = mContext.getPackageManager()
|
final ResolveInfo resolveActivity = mContext.getPackageManager()
|
||||||
.resolveActivity(intent, 0);
|
.resolveActivity(intent, 0);
|
||||||
|
@@ -52,14 +52,13 @@ public class EmergencyGestureEntrypointPreferenceControllerTest {
|
|||||||
|
|
||||||
private Context mContext;
|
private Context mContext;
|
||||||
private ShadowPackageManager mPackageManager;
|
private ShadowPackageManager mPackageManager;
|
||||||
private EmergencyGestureEntrypointPreferenceController mController;
|
|
||||||
private static final String PREF_KEY = "gesture_emergency_button";
|
private static final String PREF_KEY = "gesture_emergency_button";
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
mContext = ApplicationProvider.getApplicationContext();
|
mContext = ApplicationProvider.getApplicationContext();
|
||||||
mPackageManager = Shadows.shadowOf(mContext.getPackageManager());
|
mPackageManager = Shadows.shadowOf(mContext.getPackageManager());
|
||||||
mController = new EmergencyGestureEntrypointPreferenceController(mContext, PREF_KEY);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@After
|
@After
|
||||||
@@ -69,24 +68,18 @@ public class EmergencyGestureEntrypointPreferenceControllerTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void constructor_hasCustomPackageConfig_shouldSetIntent() {
|
public void constructor_hasCustomPackageConfig_shouldSetIntent() {
|
||||||
final ResolveInfo info = new ResolveInfo();
|
|
||||||
info.activityInfo = new ActivityInfo();
|
|
||||||
info.activityInfo.packageName = TEST_PKG_NAME;
|
|
||||||
info.activityInfo.name = TEST_CLASS_NAME;
|
|
||||||
|
|
||||||
mPackageManager.addResolveInfoForIntent(SETTING_INTENT, info);
|
|
||||||
|
|
||||||
SettingsShadowResources.overrideResource(
|
SettingsShadowResources.overrideResource(
|
||||||
R.bool.config_show_emergency_gesture_settings,
|
R.bool.config_show_emergency_gesture_settings,
|
||||||
Boolean.TRUE);
|
Boolean.TRUE);
|
||||||
|
|
||||||
SettingsShadowResources.overrideResource(
|
SettingsShadowResources.overrideResource(
|
||||||
R.string.emergency_gesture_settings_package,
|
R.string.emergency_gesture_settings_package,
|
||||||
TEST_PKG_NAME);
|
TEST_PKG_NAME);
|
||||||
|
prepareCustomIntent();
|
||||||
|
|
||||||
mController = new EmergencyGestureEntrypointPreferenceController(mContext, PREF_KEY);
|
EmergencyGestureEntrypointPreferenceController controller =
|
||||||
|
new EmergencyGestureEntrypointPreferenceController(mContext, PREF_KEY);
|
||||||
|
|
||||||
assertThat(mController.mIntent).isNotNull();
|
assertThat(controller.mIntent).isNotNull();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -94,8 +87,10 @@ public class EmergencyGestureEntrypointPreferenceControllerTest {
|
|||||||
SettingsShadowResources.overrideResource(
|
SettingsShadowResources.overrideResource(
|
||||||
R.bool.config_show_emergency_gesture_settings,
|
R.bool.config_show_emergency_gesture_settings,
|
||||||
Boolean.TRUE);
|
Boolean.TRUE);
|
||||||
|
EmergencyGestureEntrypointPreferenceController controller =
|
||||||
|
new EmergencyGestureEntrypointPreferenceController(mContext, PREF_KEY);
|
||||||
|
|
||||||
assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
|
assertThat(controller.getAvailabilityStatus()).isEqualTo(AVAILABLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -103,7 +98,34 @@ public class EmergencyGestureEntrypointPreferenceControllerTest {
|
|||||||
SettingsShadowResources.overrideResource(
|
SettingsShadowResources.overrideResource(
|
||||||
R.bool.config_show_emergency_gesture_settings,
|
R.bool.config_show_emergency_gesture_settings,
|
||||||
Boolean.FALSE);
|
Boolean.FALSE);
|
||||||
|
EmergencyGestureEntrypointPreferenceController controller =
|
||||||
|
new EmergencyGestureEntrypointPreferenceController(mContext, PREF_KEY);
|
||||||
|
|
||||||
assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
|
assertThat(controller.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getAvailabilityStatus_noSuitableIntent_shouldReturnUnsupported() {
|
||||||
|
SettingsShadowResources.overrideResource(
|
||||||
|
R.bool.config_show_emergency_gesture_settings,
|
||||||
|
Boolean.TRUE);
|
||||||
|
// Provide override package name but don't provide resolvable intent
|
||||||
|
SettingsShadowResources.overrideResource(
|
||||||
|
R.string.emergency_gesture_settings_package,
|
||||||
|
TEST_PKG_NAME);
|
||||||
|
|
||||||
|
EmergencyGestureEntrypointPreferenceController controller =
|
||||||
|
new EmergencyGestureEntrypointPreferenceController(mContext, PREF_KEY);
|
||||||
|
|
||||||
|
assertThat(controller.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void prepareCustomIntent() {
|
||||||
|
final ResolveInfo info = new ResolveInfo();
|
||||||
|
info.activityInfo = new ActivityInfo();
|
||||||
|
info.activityInfo.packageName = TEST_PKG_NAME;
|
||||||
|
info.activityInfo.name = TEST_CLASS_NAME;
|
||||||
|
|
||||||
|
mPackageManager.addResolveInfoForIntent(SETTING_INTENT, info);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user