Merge "Clean up AssistGesturePreferenceController" into oc-mr1-dev

am: 14450c5669

Change-Id: I511a265ff31d6ced75bc3915c97e09eb95cbbc51
This commit is contained in:
Kevin Chyn
2017-08-11 03:06:19 +00:00
committed by android-build-merger
6 changed files with 46 additions and 89 deletions

View File

@@ -22,7 +22,7 @@ import android.provider.SearchIndexableResource;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.dashboard.DashboardFragment; import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.gestures.AssistGesturePreferenceController; import com.android.settings.gestures.AssistGestureSettingsPreferenceController;
import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settings.search.Indexable; import com.android.settings.search.Indexable;
import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.AbstractPreferenceController;
@@ -73,8 +73,8 @@ public class ManageAssist extends DashboardFragment {
final List<AbstractPreferenceController> controllers = new ArrayList<>(); final List<AbstractPreferenceController> controllers = new ArrayList<>();
controllers.add(new DefaultAssistPreferenceController(context, "default_assist", controllers.add(new DefaultAssistPreferenceController(context, "default_assist",
true /* showSetting */)); true /* showSetting */));
controllers.add(new AssistGesturePreferenceController(context, lifecycle, KEY_ASSIST, controllers.add(new AssistGestureSettingsPreferenceController(context, lifecycle,
true /* assistOnly */)); KEY_ASSIST, true /* assistOnly */));
controllers.add(new AssistContextPreferenceController(context, lifecycle)); controllers.add(new AssistContextPreferenceController(context, lifecycle));
controllers.add(new AssistScreenshotPreferenceController(context, lifecycle)); controllers.add(new AssistScreenshotPreferenceController(context, lifecycle));
controllers.add(new AssistFlashScreenPreferenceController(context, lifecycle)); controllers.add(new AssistFlashScreenPreferenceController(context, lifecycle));

View File

@@ -35,8 +35,6 @@ public class AssistGestureSettings extends DashboardFragment {
private static final String TAG = "AssistGesture"; private static final String TAG = "AssistGesture";
private static final String KEY_ASSIST = "gesture_assist";
@Override @Override
public int getMetricsCategory() { public int getMetricsCategory() {
return MetricsProto.MetricsEvent.SETTINGS_ASSIST_GESTURE; return MetricsProto.MetricsEvent.SETTINGS_ASSIST_GESTURE;
@@ -60,8 +58,6 @@ public class AssistGestureSettings extends DashboardFragment {
private static List<AbstractPreferenceController> buildPreferenceControllers(Context context, private static List<AbstractPreferenceController> buildPreferenceControllers(Context context,
Lifecycle lifecycle) { Lifecycle lifecycle) {
final List<AbstractPreferenceController> controllers = new ArrayList<>(); final List<AbstractPreferenceController> controllers = new ArrayList<>();
controllers.add(new AssistGesturePreferenceController(context, lifecycle, KEY_ASSIST,
false /* assistOnly */));
controllers.addAll(FeatureFactory.getFactory(context).getAssistGestureFeatureProvider() controllers.addAll(FeatureFactory.getFactory(context).getAssistGestureFeatureProvider()
.getControllers(context, lifecycle)); .getControllers(context, lifecycle));
@@ -86,8 +82,8 @@ public class AssistGestureSettings extends DashboardFragment {
@Override @Override
protected boolean isPageSearchEnabled(Context context) { protected boolean isPageSearchEnabled(Context context) {
return new AssistGesturePreferenceController(context, null /* lifecycle */, return new AssistGestureSettingsPreferenceController(context,
null /* key */, false /* assistOnly */) null /* lifecycle */, null /* key */, false /* assistOnly */)
.isAvailable(); .isAvailable();
} }
}; };

View File

@@ -16,6 +16,9 @@
package com.android.settings.gestures; package com.android.settings.gestures;
import static android.provider.Settings.Secure.ASSIST_GESTURE_ENABLED;
import static android.provider.Settings.Secure.ASSIST_GESTURE_SILENCE_ALERTS_ENABLED;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.provider.Settings; import android.provider.Settings;
@@ -32,19 +35,17 @@ import com.android.settings.search.ResultPayload;
import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.Lifecycle;
import com.android.settingslib.core.lifecycle.events.OnResume; import com.android.settingslib.core.lifecycle.events.OnResume;
import static android.provider.Settings.Secure.ASSIST_GESTURE_ENABLED; public class AssistGestureSettingsPreferenceController extends GesturePreferenceController
public class AssistGesturePreferenceController extends GesturePreferenceController
implements OnResume { implements OnResume {
private final int ON = 1;
private final int OFF = 0;
private static final String PREF_KEY_VIDEO = "gesture_assist_video"; private static final String PREF_KEY_VIDEO = "gesture_assist_video";
private static final String SECURE_KEY_ASSIST = ASSIST_GESTURE_ENABLED;
private static final String SECURE_KEY_SILENCE = ASSIST_GESTURE_SILENCE_ALERTS_ENABLED;
private static final int ON = 1;
private static final int OFF = 0;
private final String mAssistGesturePrefKey; private final String mAssistGesturePrefKey;
private final String SECURE_KEY = ASSIST_GESTURE_ENABLED;
private final AssistGestureFeatureProvider mFeatureProvider; private final AssistGestureFeatureProvider mFeatureProvider;
private boolean mWasAvailable; private boolean mWasAvailable;
@@ -54,8 +55,8 @@ public class AssistGesturePreferenceController extends GesturePreferenceControll
@VisibleForTesting @VisibleForTesting
boolean mAssistOnly; boolean mAssistOnly;
public AssistGesturePreferenceController(Context context, Lifecycle lifecycle, String key, public AssistGestureSettingsPreferenceController(Context context, Lifecycle lifecycle,
boolean assistOnly) { String key, boolean assistOnly) {
super(context, lifecycle); super(context, lifecycle);
mFeatureProvider = FeatureFactory.getFactory(context).getAssistGestureFeatureProvider(); mFeatureProvider = FeatureFactory.getFactory(context).getAssistGestureFeatureProvider();
mWasAvailable = isAvailable(); mWasAvailable = isAvailable();
@@ -76,14 +77,6 @@ public class AssistGesturePreferenceController extends GesturePreferenceControll
public void displayPreference(PreferenceScreen screen) { public void displayPreference(PreferenceScreen screen) {
mScreen = screen; mScreen = screen;
mPreference = screen.findPreference(getPreferenceKey()); mPreference = screen.findPreference(getPreferenceKey());
if (!mFeatureProvider.isSensorAvailable(mContext)) {
removePreference(mScreen, getPreferenceKey());
return;
}
if (!mFeatureProvider.isSupported(mContext)) {
mScreen.removePreference(mPreference);
return;
}
// Call super last or AbstractPreferenceController might remove the preference from the // Call super last or AbstractPreferenceController might remove the preference from the
// screen (if !isAvailable()) before we can save a reference to it. // screen (if !isAvailable()) before we can save a reference to it.
super.displayPreference(screen); super.displayPreference(screen);
@@ -91,14 +84,6 @@ public class AssistGesturePreferenceController extends GesturePreferenceControll
@Override @Override
public void onResume() { public void onResume() {
// This check must be done in case the user disables Assistant while still on the settings
// page. This check is slightly different than isAvailable() in some cases due to this
// setting being in multiple places that require different behavior
if (mScreen != null && !mFeatureProvider.isSupported(mContext)) {
mScreen.removePreference(mPreference);
mWasAvailable = false;
return;
}
if (mWasAvailable != isAvailable()) { if (mWasAvailable != isAvailable()) {
// Only update the preference visibility if the availability has changed -- otherwise // Only update the preference visibility if the availability has changed -- otherwise
// the preference may be incorrectly added to screens with collapsed sections. // the preference may be incorrectly added to screens with collapsed sections.
@@ -112,7 +97,7 @@ public class AssistGesturePreferenceController extends GesturePreferenceControll
return; return;
} }
if (mFeatureProvider.isSupported(mContext)) { if (isAvailable()) {
if (mScreen.findPreference(getPreferenceKey()) == null) { if (mScreen.findPreference(getPreferenceKey()) == null) {
mScreen.addPreference(mPreference); mScreen.addPreference(mPreference);
} }
@@ -121,15 +106,22 @@ public class AssistGesturePreferenceController extends GesturePreferenceControll
} }
} }
private boolean isAssistGestureEnabled() {
return Settings.Secure.getInt(mContext.getContentResolver(),
SECURE_KEY_ASSIST, ON) != 0;
}
private boolean isSilenceGestureEnabled() {
return Settings.Secure.getInt(mContext.getContentResolver(),
SECURE_KEY_SILENCE, ON) != 0;
}
@Override @Override
public void updateState(Preference preference) { public void updateState(Preference preference) {
boolean isEnabled = isSwitchPrefEnabled() && mFeatureProvider.isSupported(mContext); boolean isEnabled = isAssistGestureEnabled() && mFeatureProvider.isSupported(mContext);
if (!mAssistOnly) { if (!mAssistOnly) {
boolean assistGestureSilenceEnabled = Settings.Secure.getInt( isEnabled = isEnabled || isSilenceGestureEnabled();
mContext.getContentResolver(),
Settings.Secure.ASSIST_GESTURE_SILENCE_ALERTS_ENABLED, 1) != 0;
isEnabled = isEnabled || assistGestureSilenceEnabled;
} }
if (preference != null) { if (preference != null) {
@@ -146,7 +138,8 @@ public class AssistGesturePreferenceController extends GesturePreferenceControll
@Override @Override
public boolean onPreferenceChange(Preference preference, Object newValue) { public boolean onPreferenceChange(Preference preference, Object newValue) {
final boolean enabled = (boolean) newValue; final boolean enabled = (boolean) newValue;
Settings.Secure.putInt(mContext.getContentResolver(), SECURE_KEY, enabled ? ON : OFF); Settings.Secure.putInt(mContext.getContentResolver(), SECURE_KEY_ASSIST,
enabled ? ON : OFF);
updateState(preference); updateState(preference);
return true; return true;
} }
@@ -163,9 +156,8 @@ public class AssistGesturePreferenceController extends GesturePreferenceControll
@Override @Override
protected boolean isSwitchPrefEnabled() { protected boolean isSwitchPrefEnabled() {
final int assistGestureEnabled = Settings.Secure.getInt(mContext.getContentResolver(), // Does nothing
SECURE_KEY, ON); return true;
return assistGestureEnabled != 0;
} }
@Override @Override
@@ -174,7 +166,7 @@ public class AssistGesturePreferenceController extends GesturePreferenceControll
AssistGestureSettings.class.getName(), mAssistGesturePrefKey, AssistGestureSettings.class.getName(), mAssistGesturePrefKey,
mContext.getString(R.string.display_settings)); mContext.getString(R.string.display_settings));
return new InlineSwitchPayload(SECURE_KEY, ResultPayload.SettingsSource.SECURE, return new InlineSwitchPayload(SECURE_KEY_ASSIST, ResultPayload.SettingsSource.SECURE,
ON /* onValue */, intent, isAvailable(), ON /* defaultValue */); ON /* onValue */, intent, isAvailable(), ON /* defaultValue */);
} }
} }

View File

@@ -75,8 +75,8 @@ public class GestureSettings extends DashboardFragment {
@NonNull Context context, @Nullable Lifecycle lifecycle, @NonNull Context context, @Nullable Lifecycle lifecycle,
@NonNull AmbientDisplayConfiguration ambientDisplayConfiguration) { @NonNull AmbientDisplayConfiguration ambientDisplayConfiguration) {
final List<AbstractPreferenceController> controllers = new ArrayList<>(); final List<AbstractPreferenceController> controllers = new ArrayList<>();
controllers.add(new AssistGesturePreferenceController(context, lifecycle, KEY_ASSIST, controllers.add(new AssistGestureSettingsPreferenceController(context, lifecycle,
false /* assistOnly */)); KEY_ASSIST, false /* assistOnly */));
controllers.add(new SwipeToNotificationPreferenceController(context, lifecycle, controllers.add(new SwipeToNotificationPreferenceController(context, lifecycle,
KEY_SWIPE_DOWN)); KEY_SWIPE_DOWN));
controllers.add(new DoubleTwistPreferenceController(context, lifecycle, KEY_DOUBLE_TWIST)); controllers.add(new DoubleTwistPreferenceController(context, lifecycle, KEY_DOUBLE_TWIST));

View File

@@ -16,9 +16,6 @@
package com.android.settings.gestures; package com.android.settings.gestures;
import static android.provider.Settings.Secure.ASSIST_GESTURE_ENABLED;
import static android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE;
import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.when; import static org.mockito.Mockito.when;
@@ -26,17 +23,16 @@ import static org.mockito.Mockito.when;
import android.content.ContentResolver; import android.content.ContentResolver;
import android.content.Context; import android.content.Context;
import android.provider.Settings; import android.provider.Settings;
import android.provider.Settings.Secure; import android.provider.Settings.Secure;
import com.android.settings.TestConfig; import com.android.settings.TestConfig;
import com.android.settings.display.AutoBrightnessPreferenceController;
import com.android.settings.search.InlinePayload; import com.android.settings.search.InlinePayload;
import com.android.settings.search.InlineSwitchPayload; import com.android.settings.search.InlineSwitchPayload;
import com.android.settings.search.ResultPayload; import com.android.settings.search.ResultPayload;
import com.android.settings.testutils.FakeFeatureFactory; import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.testutils.shadow.ShadowSecureSettings; import com.android.settings.testutils.shadow.ShadowSecureSettings;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
@@ -45,16 +41,15 @@ import org.mockito.Mock;
import org.mockito.MockitoAnnotations; import org.mockito.MockitoAnnotations;
import org.robolectric.RuntimeEnvironment; import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config; import org.robolectric.annotation.Config;
import org.robolectric.shadows.ShadowApplication;
@RunWith(SettingsRobolectricTestRunner.class) @RunWith(SettingsRobolectricTestRunner.class)
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
public class AssistGesturePreferenceControllerTest { public class AssistGestureSettingsPreferenceControllerTest {
@Mock(answer = Answers.RETURNS_DEEP_STUBS) @Mock(answer = Answers.RETURNS_DEEP_STUBS)
private Context mContext; private Context mContext;
private FakeFeatureFactory mFactory; private FakeFeatureFactory mFactory;
private AssistGesturePreferenceController mController; private AssistGestureSettingsPreferenceController mController;
private static final String KEY_ASSIST = "gesture_assist"; private static final String KEY_ASSIST = "gesture_assist";
@@ -63,7 +58,8 @@ public class AssistGesturePreferenceControllerTest {
MockitoAnnotations.initMocks(this); MockitoAnnotations.initMocks(this);
FakeFeatureFactory.setupForTest(mContext); FakeFeatureFactory.setupForTest(mContext);
mFactory = (FakeFeatureFactory) FakeFeatureFactory.getFactory(mContext); mFactory = (FakeFeatureFactory) FakeFeatureFactory.getFactory(mContext);
mController = new AssistGesturePreferenceController(mContext, null, KEY_ASSIST, false); mController = new AssistGestureSettingsPreferenceController(mContext, null, KEY_ASSIST,
false);
} }
@Test @Test
@@ -79,32 +75,12 @@ public class AssistGesturePreferenceControllerTest {
assertThat(mController.isAvailable()).isFalse(); assertThat(mController.isAvailable()).isFalse();
} }
@Test
public void testSwitchEnabled_configIsSet_shouldReturnTrue() {
// Set the setting to be enabled.
final Context context = ShadowApplication.getInstance().getApplicationContext();
Settings.System.putInt(context.getContentResolver(), ASSIST_GESTURE_ENABLED, 1);
mController = new AssistGesturePreferenceController(context, null, KEY_ASSIST, false);
assertThat(mController.isSwitchPrefEnabled()).isTrue();
}
@Test
public void testSwitchEnabled_configIsNotSet_shouldReturnFalse() {
// Set the setting to be disabled.
final Context context = ShadowApplication.getInstance().getApplicationContext();
Settings.System.putInt(context.getContentResolver(), ASSIST_GESTURE_ENABLED, 0);
mController = new AssistGesturePreferenceController(context, null, KEY_ASSIST, false);
assertThat(mController.isSwitchPrefEnabled()).isFalse();
}
@Test @Test
public void testPreferenceController_ProperResultPayloadType() { public void testPreferenceController_ProperResultPayloadType() {
final Context context = RuntimeEnvironment.application; final Context context = RuntimeEnvironment.application;
AssistGesturePreferenceController controller = AssistGestureSettingsPreferenceController controller =
new AssistGesturePreferenceController(context, null /* lifecycle */, KEY_ASSIST, new AssistGestureSettingsPreferenceController(context, null /* lifecycle */,
false /* assistOnly */); KEY_ASSIST, false /* assistOnly */);
ResultPayload payload = controller.getResultPayload(); ResultPayload payload = controller.getResultPayload();
assertThat(payload).isInstanceOf(InlineSwitchPayload.class); assertThat(payload).isInstanceOf(InlineSwitchPayload.class);
} }

View File

@@ -61,13 +61,6 @@ public class AssistGestureSettingsTest {
.isEqualTo(R.xml.assist_gesture_settings); .isEqualTo(R.xml.assist_gesture_settings);
} }
@Test
public void testGetPreferenceControllers_shouldAllBeCreated() {
final List<AbstractPreferenceController> controllers =
mSettings.getPreferenceControllers(mContext);
assertThat(controllers.isEmpty()).isFalse();
}
@Test @Test
public void testSearchIndexProvider_shouldIndexResource() { public void testSearchIndexProvider_shouldIndexResource() {
final List<SearchIndexableResource> indexRes = final List<SearchIndexableResource> indexRes =