Merge "Brings back "Control from locked device" setting." into tm-qpr-dev am: d81ae0a645 am: 2a557b75fe
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/20590947
Change-Id: Iefe3c423fae6c6eb720b1b816af196736089067f
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/src/com/android/settings/display/ControlsTrivialPrivacyPreferenceController.java b/src/com/android/settings/display/ControlsTrivialPrivacyPreferenceController.java
index 7239ac7..be2de59 100644
--- a/src/com/android/settings/display/ControlsTrivialPrivacyPreferenceController.java
+++ b/src/com/android/settings/display/ControlsTrivialPrivacyPreferenceController.java
@@ -50,9 +50,11 @@
@Override
public CharSequence getSummary() {
- if (getAvailabilityStatus() == DISABLED_DEPENDENT_SETTING) {
+ if (!CustomizableLockScreenUtils.isFeatureEnabled(mContext)
+ && getAvailabilityStatus() == DISABLED_DEPENDENT_SETTING) {
return mContext.getText(R.string.lockscreen_trivial_disabled_controls_summary);
}
+
return mContext.getText(R.string.lockscreen_trivial_controls_summary);
}
@@ -70,21 +72,22 @@
@Override
public int getAvailabilityStatus() {
- if (CustomizableLockScreenUtils.isFeatureEnabled(mContext)) {
- return UNSUPPORTED_ON_DEVICE;
- }
-
return showDeviceControlsSettingsEnabled() ? AVAILABLE : DISABLED_DEPENDENT_SETTING;
}
private boolean showDeviceControlsSettingsEnabled() {
- return Settings.Secure.getInt(mContext.getContentResolver(), DEPENDENCY_SETTING_KEY, 0)
- != 0;
+ return CustomizableLockScreenUtils.isFeatureEnabled(mContext)
+ || Settings.Secure.getInt(
+ mContext.getContentResolver(), DEPENDENCY_SETTING_KEY, 0) != 0;
}
@Override
public void displayPreference(PreferenceScreen screen) {
super.displayPreference(screen);
+ if (CustomizableLockScreenUtils.isFeatureEnabled(mContext)) {
+ return;
+ }
+
Preference currentPreference = screen.findPreference(getPreferenceKey());
currentPreference.setDependency("lockscreen_privacy_controls_switch");
}
diff --git a/tests/robotests/src/com/android/settings/display/ControlsTrivialPrivacyPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/display/ControlsTrivialPrivacyPreferenceControllerTest.java
index 3d4bc2e..8bb3ff6 100644
--- a/tests/robotests/src/com/android/settings/display/ControlsTrivialPrivacyPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/display/ControlsTrivialPrivacyPreferenceControllerTest.java
@@ -21,10 +21,14 @@
import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.atLeastOnce;
+import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
import android.content.ContentResolver;
import android.content.Context;
+import android.database.Cursor;
+import android.database.MatrixCursor;
import android.provider.Settings;
import androidx.preference.Preference;
@@ -40,6 +44,7 @@
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;
+import org.mockito.stubbing.Answer;
import org.robolectric.RobolectricTestRunner;
@RunWith(RobolectricTestRunner.class)
@@ -62,9 +67,11 @@
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
- mContext = ApplicationProvider.getApplicationContext();
+ mContext = spy(ApplicationProvider.getApplicationContext());
+ mContentResolver = spy(mContext.getContentResolver());
+ when(mContext.getContentResolver()).thenReturn(mContentResolver);
- mContentResolver = mContext.getContentResolver();
+ setCustomizableLockScreenQuickAffordancesEnabled(false);
mController = new ControlsTrivialPrivacyPreferenceController(mContext, TEST_KEY);
}
@@ -131,6 +138,18 @@
}
@Test
+ public void updateStateWithCustomizableLockScreenQuickAffordancesEnabled() {
+ setCustomizableLockScreenQuickAffordancesEnabled(true);
+ Settings.Secure.putInt(mContentResolver, DEPENDENCY_SETTING_KEY, 0);
+
+ mController.updateState(mPreference);
+
+ verify(mPreference).setEnabled(true);
+ verify(mPreference, atLeastOnce()).setSummary(
+ mContext.getString(R.string.lockscreen_trivial_controls_summary));
+ }
+
+ @Test
public void getAvailabilityStatusWithoutDeviceControls() {
Settings.Secure.putInt(mContentResolver, DEPENDENCY_SETTING_KEY, 0);
@@ -139,6 +158,15 @@
}
@Test
+ public void getAvailabilityStatusWithCustomizableLockScreenQuickAffordancesEnabled() {
+ setCustomizableLockScreenQuickAffordancesEnabled(true);
+ Settings.Secure.putInt(mContentResolver, DEPENDENCY_SETTING_KEY, 0);
+
+ assertThat(mController.getAvailabilityStatus()).isEqualTo(
+ BasePreferenceController.AVAILABLE);
+ }
+
+ @Test
public void getAvailabilityStatusWithDeviceControls() {
Settings.Secure.putInt(mContentResolver, DEPENDENCY_SETTING_KEY, 1);
@@ -154,4 +182,22 @@
mController.displayPreference(mPreferenceScreen);
verify(mPreference).setDependency(anyString());
}
+
+ private void setCustomizableLockScreenQuickAffordancesEnabled(boolean isEnabled) {
+ when(
+ mContentResolver.query(
+ CustomizableLockScreenUtils.FLAGS_URI, null, null, null))
+ .thenAnswer((Answer<Cursor>) invocation -> {
+ final MatrixCursor cursor = new MatrixCursor(
+ new String[] {
+ CustomizableLockScreenUtils.NAME,
+ CustomizableLockScreenUtils.VALUE
+ });
+ cursor.addRow(
+ new Object[] {
+ CustomizableLockScreenUtils.ENABLED_FLAG, isEnabled ? 1 : 0
+ });
+ return cursor;
+ });
+ }
}