Merge "Move assist gestures settings to overlay" into oc-dr1-dev
diff --git a/res/xml/assist_gesture_settings.xml b/res/xml/assist_gesture_settings.xml
index d941c80..cf84e8a 100644
--- a/res/xml/assist_gesture_settings.xml
+++ b/res/xml/assist_gesture_settings.xml
@@ -31,10 +31,4 @@
android:summary="@string/assist_gesture_summary"
app:keywords="@string/keywords_squeeze_to_launch_gesture"/>
- <com.android.settings.widget.SeekBarPreference
- android:key="gesture_assist_sensitivity"
- android:title="@string/assist_gesture_sensitivity_title"
- android:defaultValue="5"
- android:max="10" />
-
</PreferenceScreen>
diff --git a/src/com/android/settings/gestures/AssistGestureFeatureProvider.java b/src/com/android/settings/gestures/AssistGestureFeatureProvider.java
index f06f6c1..8902393 100644
--- a/src/com/android/settings/gestures/AssistGestureFeatureProvider.java
+++ b/src/com/android/settings/gestures/AssistGestureFeatureProvider.java
@@ -18,10 +18,24 @@
import android.content.Context;
+import com.android.settings.core.PreferenceController;
+import com.android.settingslib.core.lifecycle.Lifecycle;
+
+import java.util.List;
+
/** Feature provider for the assist gesture. */
public interface AssistGestureFeatureProvider {
/** Returns true if the assist gesture is supported. */
boolean isSupported(Context context);
+ /** Returns true if the sensor is available. */
+ boolean isSensorAvailable(Context context);
+
+ /** Returns the resource */
+ int getPreferenceResourceId();
+
+ /** Returns a list of additional preference controllers */
+ List<PreferenceController> getControllers(Context context, Lifecycle lifecycle);
+
}
diff --git a/src/com/android/settings/gestures/AssistGestureFeatureProviderImpl.java b/src/com/android/settings/gestures/AssistGestureFeatureProviderImpl.java
index b17d892..a2579ac 100644
--- a/src/com/android/settings/gestures/AssistGestureFeatureProviderImpl.java
+++ b/src/com/android/settings/gestures/AssistGestureFeatureProviderImpl.java
@@ -18,6 +18,13 @@
import android.content.Context;
+import com.android.settings.R;
+import com.android.settings.core.PreferenceController;
+import com.android.settingslib.core.lifecycle.Lifecycle;
+
+import java.util.ArrayList;
+import java.util.List;
+
public class AssistGestureFeatureProviderImpl implements AssistGestureFeatureProvider {
@Override
@@ -25,4 +32,19 @@
return false;
}
+ @Override
+ public boolean isSensorAvailable(Context context) {
+ return false;
+ }
+
+ @Override
+ public int getPreferenceResourceId() {
+ return R.xml.assist_gesture_settings;
+ }
+
+ @Override
+ public List<PreferenceController> getControllers(Context context, Lifecycle lifecycle) {
+ return new ArrayList<>();
+ }
+
}
diff --git a/src/com/android/settings/gestures/AssistGestureSensitivityPreferenceController.java b/src/com/android/settings/gestures/AssistGestureSensitivityPreferenceController.java
deleted file mode 100644
index 0f42803..0000000
--- a/src/com/android/settings/gestures/AssistGestureSensitivityPreferenceController.java
+++ /dev/null
@@ -1,151 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.settings.gestures;
-
-import android.content.ContentResolver;
-import android.content.Context;
-import android.database.ContentObserver;
-import android.net.Uri;
-import android.provider.Settings;
-import android.support.v7.preference.Preference;
-import android.support.v7.preference.PreferenceScreen;
-
-import com.android.settings.widget.SeekBarPreference;
-import com.android.settings.core.PreferenceController;
-import com.android.settings.overlay.FeatureFactory;
-import com.android.settingslib.core.lifecycle.Lifecycle;
-import com.android.settingslib.core.lifecycle.LifecycleObserver;
-import com.android.settingslib.core.lifecycle.events.OnPause;
-import com.android.settingslib.core.lifecycle.events.OnResume;
-
-public class AssistGestureSensitivityPreferenceController extends PreferenceController
- implements Preference.OnPreferenceChangeListener, LifecycleObserver, OnPause, OnResume {
-
- private static final String PREF_KEY_ASSIST_GESTURE_SENSITIVITY = "gesture_assist_sensitivity";
-
- private final AssistGestureFeatureProvider mFeatureProvider;
- private final SettingObserver mSettingObserver;
-
- private PreferenceScreen mScreen;
- private SeekBarPreference mPreference;
-
- public AssistGestureSensitivityPreferenceController(Context context, Lifecycle lifecycle) {
- super(context);
- mFeatureProvider = FeatureFactory.getFactory(context).getAssistGestureFeatureProvider();
- mSettingObserver = new SettingObserver();
-
- if (lifecycle != null) {
- lifecycle.addObserver(this);
- }
- }
-
- @Override
- public void onResume() {
- mSettingObserver.register(mContext.getContentResolver(), true /* register */);
- updatePreference();
- }
-
- @Override
- public void onPause() {
- mSettingObserver.register(mContext.getContentResolver(), false /* register */);
- }
-
- @Override
- public boolean isAvailable() {
- // The sensitivity control is contingent on the assist gesture being supported and the
- // gesture being enabled.
- final int gestureEnabled = Settings.Secure.getInt(
- mContext.getContentResolver(),
- Settings.Secure.ASSIST_GESTURE_ENABLED,
- 1);
- return (gestureEnabled == 1) && mFeatureProvider.isSupported(mContext);
- }
-
- @Override
- public void displayPreference(PreferenceScreen screen) {
- mScreen = screen;
- mPreference = (SeekBarPreference) screen.findPreference(getPreferenceKey());
- // Call super last or AbstractPreferenceController might remove the preference from the
- // screen (if !isAvailable()) before we can save a reference to it.
- super.displayPreference(screen);
- }
-
- @Override
- public void updateState(Preference preference) {
- super.updateState(preference);
- updatePreference();
- }
-
- private void updatePreference() {
- if (mPreference == null) {
- return;
- }
-
- if (isAvailable()) {
- if (mScreen.findPreference(getPreferenceKey()) == null) {
- mScreen.addPreference(mPreference);
- }
- } else {
- mScreen.removePreference(mPreference);
- }
-
- final int sensitivity = Settings.Secure.getInt(
- mContext.getContentResolver(),
- Settings.Secure.ASSIST_GESTURE_SENSITIVITY,
- mPreference.getProgress());
- mPreference.setProgress(sensitivity);
- }
-
- @Override
- public boolean onPreferenceChange(Preference preference, Object newValue) {
- final int sensitivity = (int) newValue;
- Settings.Secure.putInt(mContext.getContentResolver(),
- Settings.Secure.ASSIST_GESTURE_SENSITIVITY, sensitivity);
- return true;
- }
-
- @Override
- public String getPreferenceKey() {
- return PREF_KEY_ASSIST_GESTURE_SENSITIVITY;
- }
-
- class SettingObserver extends ContentObserver {
-
- private final Uri ASSIST_GESTURE_ENABLED_URI =
- Settings.Secure.getUriFor(Settings.Secure.ASSIST_GESTURE_ENABLED);
- private final Uri ASSIST_GESTURE_SENSITIVITY_URI =
- Settings.Secure.getUriFor(Settings.Secure.ASSIST_GESTURE_SENSITIVITY);
-
- public SettingObserver() {
- super(null /* handler */);
- }
-
- public void register(ContentResolver cr, boolean register) {
- if (register) {
- cr.registerContentObserver(ASSIST_GESTURE_ENABLED_URI, false, this);
- cr.registerContentObserver(ASSIST_GESTURE_SENSITIVITY_URI, false, this);
- } else {
- cr.unregisterContentObserver(this);
- }
- }
-
- @Override
- public void onChange(boolean selfChange) {
- updatePreference();
- }
- }
-}
diff --git a/src/com/android/settings/gestures/AssistGestureSettings.java b/src/com/android/settings/gestures/AssistGestureSettings.java
index 64187a3..93d3a39 100644
--- a/src/com/android/settings/gestures/AssistGestureSettings.java
+++ b/src/com/android/settings/gestures/AssistGestureSettings.java
@@ -23,6 +23,7 @@
import com.android.settings.R;
import com.android.settings.core.PreferenceController;
import com.android.settings.dashboard.DashboardFragment;
+import com.android.settings.overlay.FeatureFactory;
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settingslib.core.lifecycle.Lifecycle;
@@ -48,7 +49,8 @@
@Override
protected int getPreferenceScreenResId() {
- return R.xml.assist_gesture_settings;
+ return FeatureFactory.getFactory(getContext())
+ .getAssistGestureFeatureProvider().getPreferenceResourceId();
}
@Override
@@ -60,7 +62,9 @@
Lifecycle lifecycle) {
final List<PreferenceController> controllers = new ArrayList<>();
controllers.add(new AssistGesturePreferenceController(context, lifecycle, KEY_ASSIST));
- controllers.add(new AssistGestureSensitivityPreferenceController(context, lifecycle));
+ controllers.addAll(FeatureFactory.getFactory(context).getAssistGestureFeatureProvider()
+ .getControllers(context, lifecycle));
+
return controllers;
}
diff --git a/tests/robotests/src/com/android/settings/gestures/AssistGestureSensitivityPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/gestures/AssistGestureSensitivityPreferenceControllerTest.java
deleted file mode 100644
index 349ca4f..0000000
--- a/tests/robotests/src/com/android/settings/gestures/AssistGestureSensitivityPreferenceControllerTest.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.settings.gestures;
-
-import android.content.Context;
-import android.provider.Settings;
-
-import com.android.settings.testutils.SettingsRobolectricTestRunner;
-import com.android.settings.TestConfig;
-import com.android.settings.testutils.FakeFeatureFactory;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Answers;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.annotation.Config;
-
-import static com.google.common.truth.Truth.assertThat;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-@RunWith(SettingsRobolectricTestRunner.class)
-@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
-public class AssistGestureSensitivityPreferenceControllerTest {
-
- @Mock(answer = Answers.RETURNS_DEEP_STUBS)
- private Context mContext;
- private FakeFeatureFactory mFactory;
- private AssistGestureSensitivityPreferenceController mController;
-
- @Before
- public void setUp() {
- MockitoAnnotations.initMocks(this);
- FakeFeatureFactory.setupForTest(mContext);
- mFactory = (FakeFeatureFactory) FakeFeatureFactory.getFactory(mContext);
- mController = new AssistGestureSensitivityPreferenceController(mContext, null);
- }
-
- @Test
- public void isAvailable_whenSupportedAndEnabled_shouldReturnTrue() {
- Settings.Secure.putInt(mContext.getContentResolver(),
- Settings.Secure.ASSIST_GESTURE_ENABLED, 1);
- when(mFactory.assistGestureFeatureProvider.isSupported(mContext)).thenReturn(true);
-
- assertThat(mController.isAvailable()).isTrue();
- }
-
- @Test
- public void isAvailable_whenSupportedAndDisabled_shouldReturnFalse() {
- Settings.Secure.putInt(mContext.getContentResolver(),
- Settings.Secure.ASSIST_GESTURE_ENABLED, 0);
- when(mFactory.assistGestureFeatureProvider.isSupported(mContext)).thenReturn(true);
-
- assertThat(mController.isAvailable()).isFalse();
- }
-
- @Test
- public void isAvailable_whenUnsupportedAndEnabled_shouldReturnFalse() {
- Settings.Secure.putInt(mContext.getContentResolver(),
- Settings.Secure.ASSIST_GESTURE_ENABLED, 1);
- when(mFactory.assistGestureFeatureProvider.isSupported(mContext)).thenReturn(false);
-
- assertThat(mController.isAvailable()).isFalse();
- }
-
- @Test
- public void isAvailable_whenUnsupportedAndDisabled_shouldReturnFalse() {
- Settings.Secure.putInt(mContext.getContentResolver(),
- Settings.Secure.ASSIST_GESTURE_ENABLED, 0);
- when(mFactory.assistGestureFeatureProvider.isSupported(mContext)).thenReturn(false);
-
- assertThat(mController.isAvailable()).isFalse();
- }
-}
-
diff --git a/tests/robotests/src/com/android/settings/gestures/AssistGestureSettingsTest.java b/tests/robotests/src/com/android/settings/gestures/AssistGestureSettingsTest.java
index ba0a90a..17fa17b 100644
--- a/tests/robotests/src/com/android/settings/gestures/AssistGestureSettingsTest.java
+++ b/tests/robotests/src/com/android/settings/gestures/AssistGestureSettingsTest.java
@@ -20,6 +20,7 @@
import android.provider.SearchIndexableResource;
import com.android.settings.R;
+import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.TestConfig;
import com.android.settings.core.PreferenceController;
@@ -35,22 +36,28 @@
import java.util.List;
import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.Mockito.when;
@RunWith(SettingsRobolectricTestRunner.class)
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
public class AssistGestureSettingsTest {
@Mock
private Context mContext;
+ private FakeFeatureFactory mFakeFeatureFactory;
+ private AssistGestureFeatureProvider mFeatureProvider;
private AssistGestureSettings mSettings;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
+ mFakeFeatureFactory = (FakeFeatureFactory) FakeFeatureFactory.getFactory(mContext);
+ mFeatureProvider = mFakeFeatureFactory.getAssistGestureFeatureProvider();
mSettings = new AssistGestureSettings();
}
@Test
public void testGetPreferenceScreenResId() {
+ when(mFeatureProvider.getPreferenceResourceId()).thenReturn(R.xml.assist_gesture_settings);
assertThat(mSettings.getPreferenceScreenResId())
.isEqualTo(R.xml.assist_gesture_settings);
}
@@ -69,6 +76,7 @@
ShadowApplication.getInstance().getApplicationContext(),
true /* enabled */);
+ when(mFeatureProvider.getPreferenceResourceId()).thenReturn(R.xml.assist_gesture_settings);
assertThat(indexRes).isNotNull();
assertThat(indexRes.get(0).xmlResId).isEqualTo(mSettings.getPreferenceScreenResId());
}