Consolidate wake-screen settings page

UX decided to have a single settings page instead of two

Test: manual
Bug: 111414690
Change-Id: I8e0eee3ea00b1eb9cbe534cc60bfccec43cf8e31
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 10f9ade..525a5fb 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -9770,11 +9770,6 @@
     <!-- Summary text for ambient display (device) [CHAR LIMIT=NONE]-->
     <string name="ambient_display_pickup_summary" product="device">To check time, notifications, and other info, pick up your device.</string>
 
-    <!-- Preference and settings suggestion title text for gesture that shows the lock screen [CHAR LIMIT=60]-->
-    <string name="ambient_display_wake_lock_screen_title">Wake lock screen gesture</string>
-    <!-- Summary text for ambient display [CHAR LIMIT=NONE]-->
-    <string name="ambient_display_wake_lock_screen_summary" product="default"></string>
-
     <!-- Preference and settings suggestion title text for ambient display tap (phone) [CHAR LIMIT=60]-->
     <string name="ambient_display_tap_screen_title" product="default">Tap to check phone</string>
     <!-- Preference and settings suggestion title text for ambient display tap (tablet) [CHAR LIMIT=60]-->
diff --git a/res/xml/gestures.xml b/res/xml/gestures.xml
index 4b17bd9..b1250ec 100644
--- a/res/xml/gestures.xml
+++ b/res/xml/gestures.xml
@@ -34,12 +34,6 @@
         settings:controller="com.android.settings.gestures.WakeScreenGesturePreferenceController" />
 
     <Preference
-        android:key="gesture_wake_lock_screen_summary"
-        android:title="@string/ambient_display_wake_lock_screen_title"
-        android:fragment="com.android.settings.gestures.WakeLockScreenGestureSettings"
-        settings:controller="com.android.settings.gestures.WakeLockScreenGesturePreferenceController" />
-
-    <Preference
         android:key="gesture_swipe_down_fingerprint_input_summary"
         android:title="@string/fingerprint_swipe_for_notifications_title"
         android:fragment="com.android.settings.gestures.SwipeToNotificationSettings"
diff --git a/res/xml/wake_lock_screen_gesture_settings.xml b/res/xml/wake_lock_screen_gesture_settings.xml
deleted file mode 100644
index 5491bb1..0000000
--- a/res/xml/wake_lock_screen_gesture_settings.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  Copyright (C) 2018 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.
-  -->
-
-<PreferenceScreen
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    android:key="gesture_wake_lock_screen_screen"
-    android:title="@string/ambient_display_wake_lock_screen_title">
-
-    <com.android.settings.widget.VideoPreference
-        android:key="gesture_wake_lock_screen_video"
-        app:animation="@raw/gesture_ambient_wake_lock_screen"
-        app:preview="@drawable/gesture_ambient_wake_lock_screen" />
-
-    <SwitchPreference
-        android:key="gesture_wake_lock_screen"
-        android:title="@string/ambient_display_wake_lock_screen_title"
-        android:summary="@string/ambient_display_wake_lock_screen_summary"
-        app:keywords="@string/keywords_gesture"
-        app:controller="com.android.settings.gestures.WakeLockScreenGesturePreferenceController"
-        app:allowDividerAbove="true" />
-
-</PreferenceScreen>
\ No newline at end of file
diff --git a/src/com/android/settings/gestures/WakeLockScreenGesturePreferenceController.java b/src/com/android/settings/gestures/WakeLockScreenGesturePreferenceController.java
deleted file mode 100644
index 2b61ec8..0000000
--- a/src/com/android/settings/gestures/WakeLockScreenGesturePreferenceController.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Copyright (C) 2018 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 static android.provider.Settings.Secure.DOZE_WAKE_LOCK_SCREEN_GESTURE;
-
-import android.annotation.UserIdInt;
-import android.content.Context;
-import android.os.UserHandle;
-import android.provider.Settings;
-import android.text.TextUtils;
-
-import com.android.internal.hardware.AmbientDisplayConfiguration;
-
-public class WakeLockScreenGesturePreferenceController extends GesturePreferenceController {
-
-    private static final int ON = 1;
-    private static final int OFF = 0;
-
-    private static final String PREF_KEY_VIDEO = "gesture_wake_lock_screen_video";
-    private final String mWakeLockScreenPrefKey;
-
-    private AmbientDisplayConfiguration mAmbientConfig;
-    @UserIdInt
-    private final int mUserId;
-
-    public WakeLockScreenGesturePreferenceController(Context context, String key) {
-        super(context, key);
-        mUserId = UserHandle.myUserId();
-        mWakeLockScreenPrefKey = key;
-    }
-
-    public WakeLockScreenGesturePreferenceController
-        setConfig(AmbientDisplayConfiguration config) {
-        mAmbientConfig = config;
-        return this;
-    }
-
-    @Override
-    public int getAvailabilityStatus() {
-        // No hardware support for this Gesture
-        if (!getAmbientConfig().wakeScreenGestureAvailable()) {
-            return UNSUPPORTED_ON_DEVICE;
-        }
-
-        return AVAILABLE;
-    }
-
-    @Override
-    public boolean isSliceable() {
-        return TextUtils.equals(getPreferenceKey(), "gesture_wake_lock_screen");
-    }
-
-    @Override
-    protected String getVideoPrefKey() {
-        return PREF_KEY_VIDEO;
-    }
-
-    @Override
-    public boolean isChecked() {
-        return getAmbientConfig().wakeLockScreenGestureEnabled(mUserId);
-    }
-
-    @Override
-    public String getPreferenceKey() {
-        return mWakeLockScreenPrefKey;
-    }
-
-    @Override
-    public boolean setChecked(boolean isChecked) {
-        return Settings.Secure.putInt(mContext.getContentResolver(), DOZE_WAKE_LOCK_SCREEN_GESTURE,
-                isChecked ? ON : OFF);
-    }
-
-    private AmbientDisplayConfiguration getAmbientConfig() {
-        if (mAmbientConfig == null) {
-            mAmbientConfig = new AmbientDisplayConfiguration(mContext);
-        }
-
-        return mAmbientConfig;
-    }
-}
diff --git a/src/com/android/settings/gestures/WakeLockScreenGestureSettings.java b/src/com/android/settings/gestures/WakeLockScreenGestureSettings.java
deleted file mode 100644
index 0fbdaa1..0000000
--- a/src/com/android/settings/gestures/WakeLockScreenGestureSettings.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Copyright (C) 2018 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.app.settings.SettingsEnums;
-import android.content.Context;
-import android.content.SharedPreferences;
-import android.provider.SearchIndexableResource;
-
-import com.android.internal.hardware.AmbientDisplayConfiguration;
-import com.android.settings.R;
-import com.android.settings.dashboard.DashboardFragment;
-import com.android.settings.dashboard.suggestions.SuggestionFeatureProvider;
-import com.android.settings.overlay.FeatureFactory;
-import com.android.settings.search.BaseSearchIndexProvider;
-import com.android.settingslib.search.SearchIndexable;
-
-import java.util.Arrays;
-import java.util.List;
-
-@SearchIndexable
-public class WakeLockScreenGestureSettings extends DashboardFragment {
-
-    private static final String TAG = "WakeLockScreenGestureSettings";
-
-    public static final String PREF_KEY_SUGGESTION_COMPLETE =
-            "pref_wake_lock_screen_gesture_suggestion_complete";
-
-    @Override
-    public void onAttach(Context context) {
-        super.onAttach(context);
-        SuggestionFeatureProvider suggestionFeatureProvider = FeatureFactory.getFactory(context)
-                .getSuggestionFeatureProvider(context);
-        SharedPreferences prefs = suggestionFeatureProvider.getSharedPrefs(context);
-        prefs.edit().putBoolean(PREF_KEY_SUGGESTION_COMPLETE, true).apply();
-
-        use(WakeLockScreenGesturePreferenceController.class)
-            .setConfig(new AmbientDisplayConfiguration(context));
-    }
-
-    @Override
-    public int getMetricsCategory() {
-        return SettingsEnums.SETTINGS_GESTURE_WAKE_LOCK_SCREEN;
-    }
-
-    @Override
-    protected String getLogTag() {
-        return TAG;
-    }
-
-    @Override
-    protected int getPreferenceScreenResId() {
-        return R.xml.wake_lock_screen_gesture_settings;
-    }
-
-    public static final SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
-            new BaseSearchIndexProvider() {
-                @Override
-                public List<SearchIndexableResource> getXmlResourcesToIndex(
-                        Context context, boolean enabled) {
-                    final SearchIndexableResource sir = new SearchIndexableResource(context);
-                    sir.xmlResId = R.xml.wake_lock_screen_gesture_settings;
-                    return Arrays.asList(sir);
-                }
-            };
-
-}
diff --git a/src/com/android/settings/gestures/WakeScreenGesturePreferenceController.java b/src/com/android/settings/gestures/WakeScreenGesturePreferenceController.java
index 2c7bed2..a43fad1 100644
--- a/src/com/android/settings/gestures/WakeScreenGesturePreferenceController.java
+++ b/src/com/android/settings/gestures/WakeScreenGesturePreferenceController.java
@@ -26,6 +26,8 @@
 
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.hardware.AmbientDisplayConfiguration;
+import com.android.settings.aware.AwareFeatureProvider;
+import com.android.settings.overlay.FeatureFactory;
 
 public class WakeScreenGesturePreferenceController extends GesturePreferenceController {
 
@@ -34,6 +36,7 @@
 
     private static final String PREF_KEY_VIDEO = "gesture_wake_screen_video";
 
+    private final AwareFeatureProvider mFeatureProvider;
     private AmbientDisplayConfiguration mAmbientConfig;
     @UserIdInt
     private final int mUserId;
@@ -41,16 +44,16 @@
     public WakeScreenGesturePreferenceController(Context context, String key) {
         super(context, key);
         mUserId = UserHandle.myUserId();
+        mFeatureProvider = FeatureFactory.getFactory(context).getAwareFeatureProvider();
     }
 
     @Override
     public int getAvailabilityStatus() {
-        // No hardware support for Wake Screen Gesture
-        if (!getAmbientConfig().wakeScreenGestureAvailable()) {
+        if (!getAmbientConfig().wakeScreenGestureAvailable()
+                || !mFeatureProvider.isSupported(mContext)) {
             return UNSUPPORTED_ON_DEVICE;
         }
-
-        return AVAILABLE;
+        return mFeatureProvider.isEnabled(mContext) ? AVAILABLE : CONDITIONALLY_UNAVAILABLE;
     }
 
     @Override
diff --git a/tests/robotests/src/com/android/settings/gestures/WakeLockScreenGesturePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/gestures/WakeLockScreenGesturePreferenceControllerTest.java
deleted file mode 100644
index cd21351..0000000
--- a/tests/robotests/src/com/android/settings/gestures/WakeLockScreenGesturePreferenceControllerTest.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * Copyright (C) 2018 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 static com.android.settings.core.BasePreferenceController.AVAILABLE;
-import static com.android.settings.core.BasePreferenceController.UNSUPPORTED_ON_DEVICE;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.ArgumentMatchers.anyInt;
-import static org.mockito.Mockito.when;
-
-import android.content.Context;
-
-import com.android.internal.hardware.AmbientDisplayConfiguration;
-
-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.RobolectricTestRunner;
-
-@RunWith(RobolectricTestRunner.class)
-public class WakeLockScreenGesturePreferenceControllerTest {
-
-    private static final String KEY_WAKE_LOCK_SCREEN = "gesture_wake_lock_screen";
-
-    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
-    private Context mContext;
-    @Mock
-    private AmbientDisplayConfiguration mAmbientDisplayConfiguration;
-
-    private WakeLockScreenGesturePreferenceController mController;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        mController = new WakeLockScreenGesturePreferenceController(mContext, KEY_WAKE_LOCK_SCREEN);
-        mController.setConfig(mAmbientDisplayConfiguration);
-    }
-
-    @Test
-    public void testIsChecked_configIsSet_shouldReturnTrue() {
-        // Set the setting to be enabled.
-        when(mAmbientDisplayConfiguration.wakeLockScreenGestureEnabled(anyInt())).thenReturn(true);
-        assertThat(mController.isChecked()).isTrue();
-    }
-
-    @Test
-    public void testIsChecked_configIsNotSet_shouldReturnFalse() {
-        // Set the setting to be disabled.
-        when(mAmbientDisplayConfiguration.wakeLockScreenGestureEnabled(anyInt())).thenReturn(false);
-        assertThat(mController.isChecked()).isFalse();
-    }
-
-    @Test
-    public void getAvailabilityStatus_gestureNotSupported_UNSUPPORTED_ON_DEVICE() {
-        when(mAmbientDisplayConfiguration.wakeScreenGestureAvailable()).thenReturn(false);
-        final int availabilityStatus = mController.getAvailabilityStatus();
-
-        assertThat(availabilityStatus).isEqualTo(UNSUPPORTED_ON_DEVICE);
-    }
-
-    @Test
-    public void getAvailabilityStatus_gestureSupported_AVAILABLE() {
-        when(mAmbientDisplayConfiguration.wakeScreenGestureAvailable()).thenReturn(true);
-        final int availabilityStatus = mController.getAvailabilityStatus();
-
-        assertThat(availabilityStatus).isEqualTo(AVAILABLE);
-    }
-
-    @Test
-    public void isSliceableCorrectKey_returnsTrue() {
-        final WakeLockScreenGesturePreferenceController controller =
-                new WakeLockScreenGesturePreferenceController(mContext, KEY_WAKE_LOCK_SCREEN);
-        assertThat(controller.isSliceable()).isTrue();
-    }
-
-    @Test
-    public void isSliceableIncorrectKey_returnsFalse() {
-        final WakeLockScreenGesturePreferenceController controller =
-                new WakeLockScreenGesturePreferenceController(mContext, "bad_key");
-        assertThat(controller.isSliceable()).isFalse();
-    }
-}
diff --git a/tests/robotests/src/com/android/settings/gestures/WakeLockScreenGestureSettingsTest.java b/tests/robotests/src/com/android/settings/gestures/WakeLockScreenGestureSettingsTest.java
deleted file mode 100644
index 686a0ff..0000000
--- a/tests/robotests/src/com/android/settings/gestures/WakeLockScreenGestureSettingsTest.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright (C) 2018 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 static com.google.common.truth.Truth.assertThat;
-
-import android.provider.SearchIndexableResource;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-
-import java.util.List;
-
-@RunWith(RobolectricTestRunner.class)
-public class WakeLockScreenGestureSettingsTest {
-
-    private WakeLockScreenGestureSettings mSettings;
-
-    @Before
-    public void setUp() {
-        mSettings = new WakeLockScreenGestureSettings();
-    }
-
-    @Test
-    public void testSearchIndexProvider_shouldIndexResource() {
-        final List<SearchIndexableResource> indexRes =
-            WakeLockScreenGestureSettings.SEARCH_INDEX_DATA_PROVIDER.getXmlResourcesToIndex(
-                RuntimeEnvironment.application, true /* enabled */);
-
-        assertThat(indexRes).isNotNull();
-        assertThat(indexRes.get(0).xmlResId).isEqualTo(mSettings.getPreferenceScreenResId());
-    }
-}
diff --git a/tests/robotests/src/com/android/settings/gestures/WakeScreenGesturePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/gestures/WakeScreenGesturePreferenceControllerTest.java
index ebc0f27..6149539 100644
--- a/tests/robotests/src/com/android/settings/gestures/WakeScreenGesturePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/gestures/WakeScreenGesturePreferenceControllerTest.java
@@ -21,12 +21,15 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
+import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.anyInt;
 import static org.mockito.Mockito.when;
 
 import android.content.Context;
 
 import com.android.internal.hardware.AmbientDisplayConfiguration;
+import com.android.settings.aware.AwareFeatureProvider;
+import com.android.settings.testutils.FakeFeatureFactory;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -45,12 +48,15 @@
     private Context mContext;
     @Mock
     private AmbientDisplayConfiguration mAmbientDisplayConfiguration;
-
     private WakeScreenGesturePreferenceController mController;
 
     @Before
     public void setUp() {
         MockitoAnnotations.initMocks(this);
+        AwareFeatureProvider featureProvider =
+                FakeFeatureFactory.setupForTest().getAwareFeatureProvider();
+        when(featureProvider.isSupported(any())).thenReturn(true);
+        when(featureProvider.isEnabled(any())).thenReturn(true);
         mController = new WakeScreenGesturePreferenceController(mContext, KEY_WAKE_SCREEN);
         mController.setConfig(mAmbientDisplayConfiguration);
     }