Merge "Update bluetooth preference to take user to new screen" into pi-dev
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index fc49e02..e87951b 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -1301,6 +1301,22 @@
             <meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED"
                 android:value="true" />
         </activity>
+        <activity
+            android:name="Settings$ScanningSettingsActivity"
+            android:label="@string/location_scanning_screen_title"
+            android:icon="@drawable/ic_settings_location"
+            android:configChanges="orientation|keyboardHidden|screenSize"
+            android:taskAffinity="com.android.settings"
+            android:parentActivityName="Settings">
+            <intent-filter android:priority="1">
+                <action android:name="android.settings.LOCATION_SCANNING_SETTINGS" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
+                android:value="com.android.settings.location.ScanningSettings" />
+            <meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED"
+                android:value="true" />
+        </activity>
 
         <activity
             android:name=".Settings$SecurityDashboardActivity"
diff --git a/res/values/arrays.xml b/res/values/arrays.xml
index a477a1c..78b64f2 100644
--- a/res/values/arrays.xml
+++ b/res/values/arrays.xml
@@ -274,6 +274,11 @@
         <item>@string/wifi_ap_choose_5G</item>
     </string-array>
 
+    <string-array name="wifi_ap_band_summary_full">
+        <item>@string/wifi_ap_2G</item>
+        <item>@string/wifi_ap_5G</item>
+    </string-array>
+
     <string-array name="wifi_ap_band_config_2G_only">
         <item>@string/wifi_ap_choose_auto</item>
         <item>@string/wifi_ap_choose_2G</item>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index ccb0e43..1dad1fb 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -1985,6 +1985,8 @@
     <string name="wifi_ap_2G">2.4 GHz</string>
     <!-- Label for adding to the list of selected bands when 5.0 GHz is selected -->
     <string name="wifi_ap_5G">5.0 GHz</string>
+    <!-- Label that is shown as a dialog summary informing users they must pick at LEAST one band for their hotspot [CHAR LIMIT=NONE]-->
+    <string name="wifi_ap_band_select_one">Choose at least one band for Wi\u2011Fi hotspot:</string>
     <!-- Label for the spinner to show ip settings [CHAR LIMIT=25] -->
     <string name="wifi_ip_settings">IP settings</string>
     <!-- Label for the check box to share a network with other users on the same device -->
diff --git a/src/com/android/settings/Settings.java b/src/com/android/settings/Settings.java
index e3fcd5c..e5df27a 100644
--- a/src/com/android/settings/Settings.java
+++ b/src/com/android/settings/Settings.java
@@ -67,6 +67,7 @@
     public static class SecurityDashboardActivity extends SettingsActivity { /* empty */ }
     public static class UsageAccessSettingsActivity extends SettingsActivity { /* empty */ }
     public static class LocationSettingsActivity extends SettingsActivity { /* empty */ }
+    public static class ScanningSettingsActivity extends SettingsActivity { /* empty */ }
     public static class PrivacySettingsActivity extends SettingsActivity { /* empty */ }
     public static class FactoryResetActivity extends SettingsActivity { /* empty */ }
     public static class RunningServicesActivity extends SettingsActivity { /* empty */ }
diff --git a/src/com/android/settings/core/gateway/SettingsGateway.java b/src/com/android/settings/core/gateway/SettingsGateway.java
index ede23dc..aa9d7b5 100644
--- a/src/com/android/settings/core/gateway/SettingsGateway.java
+++ b/src/com/android/settings/core/gateway/SettingsGateway.java
@@ -91,6 +91,7 @@
 import com.android.settings.language.LanguageAndInputSettings;
 import com.android.settings.localepicker.LocaleListEditor;
 import com.android.settings.location.LocationSettings;
+import com.android.settings.location.ScanningSettings;
 import com.android.settings.network.ApnEditor;
 import com.android.settings.network.ApnSettings;
 import com.android.settings.network.NetworkDashboardFragment;
@@ -166,6 +167,7 @@
             ProcessStatsUi.class.getName(),
             NotificationStation.class.getName(),
             LocationSettings.class.getName(),
+            ScanningSettings.class.getName(),
             SecuritySettings.class.getName(),
             UsageAccessDetails.class.getName(),
             PrivacySettings.class.getName(),
diff --git a/src/com/android/settings/network/NetworkDashboardFragment.java b/src/com/android/settings/network/NetworkDashboardFragment.java
index 466fa01..ecae214 100644
--- a/src/com/android/settings/network/NetworkDashboardFragment.java
+++ b/src/com/android/settings/network/NetworkDashboardFragment.java
@@ -26,8 +26,6 @@
 import android.provider.SearchIndexableResource;
 import android.support.annotation.VisibleForTesting;
 import android.util.Log;
-import android.view.Menu;
-import android.view.MenuInflater;
 
 import com.android.internal.logging.nano.MetricsProto;
 import com.android.settings.R;
@@ -48,9 +46,6 @@
         MobilePlanPreferenceHost {
 
     private static final String TAG = "NetworkDashboardFrag";
-    private static final int MENU_NETWORK_RESET = Menu.FIRST;
-
-    private NetworkResetActionMenuController mNetworkResetController;
 
     @Override
     public int getMetricsCategory() {
@@ -70,7 +65,6 @@
     @Override
     public void onAttach(Context context) {
         super.onAttach(context);
-        mNetworkResetController = new NetworkResetActionMenuController(context, MENU_NETWORK_RESET);
 
         use(AirplaneModePreferenceController.class).setFragment(this);
     }
@@ -81,12 +75,6 @@
     }
 
     @Override
-    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
-        super.onCreateOptionsMenu(menu, inflater);
-        mNetworkResetController.buildMenuItem(menu);
-    }
-
-    @Override
     protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
         return buildPreferenceControllers(context, getLifecycle(), mMetricsFeatureProvider, this
                 /* fragment */,
diff --git a/src/com/android/settings/network/NetworkResetActionMenuController.java b/src/com/android/settings/network/NetworkResetActionMenuController.java
deleted file mode 100644
index 08d6d63..0000000
--- a/src/com/android/settings/network/NetworkResetActionMenuController.java
+++ /dev/null
@@ -1,61 +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.network;
-
-import android.content.Context;
-import android.view.Menu;
-import android.view.MenuItem;
-
-import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
-import com.android.settings.R;
-import com.android.settings.ResetNetwork;
-import com.android.settings.core.SubSettingLauncher;
-
-public class NetworkResetActionMenuController {
-
-    private final Context mContext;
-    private final NetworkResetRestrictionChecker mRestrictionChecker;
-    private final int mMenuId;
-
-    public NetworkResetActionMenuController(Context context, int menuId) {
-        mContext = context;
-        mRestrictionChecker = new NetworkResetRestrictionChecker(context);
-        mMenuId = menuId;
-    }
-
-    public void buildMenuItem(Menu menu) {
-        MenuItem item = null;
-        if (isAvailable() && menu != null) {
-            item = menu.add(0, mMenuId, 0, R.string.reset_network_title);
-        }
-        if (item != null) {
-            item.setOnMenuItemClickListener(target -> {
-                new SubSettingLauncher(mContext)
-                        .setDestination(ResetNetwork.class.getName())
-                        .setSourceMetricsCategory(MetricsEvent.SETTINGS_NETWORK_CATEGORY)
-                        .setTitle(R.string.reset_network_title)
-                        .launch();
-                return true;
-            });
-        }
-    }
-
-
-    boolean isAvailable() {
-        return !mRestrictionChecker.hasRestriction();
-    }
-}
diff --git a/tests/robotests/src/com/android/settings/network/NetworkDashboardFragmentTest.java b/tests/robotests/src/com/android/settings/network/NetworkDashboardFragmentTest.java
index 51722e5..06e334a 100644
--- a/tests/robotests/src/com/android/settings/network/NetworkDashboardFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/network/NetworkDashboardFragmentTest.java
@@ -73,17 +73,6 @@
     }
 
     @Test
-    public void testPrepareActionBar_networkResetShouldBeCreated() {
-        final NetworkResetActionMenuController resetController =
-                mock(NetworkResetActionMenuController.class);
-        ReflectionHelpers.setField(mFragment, "mNetworkResetController", resetController);
-
-        mFragment.onCreateOptionsMenu(null, null);
-
-        verify(resetController).buildMenuItem(nullable(Menu.class));
-    }
-
-    @Test
     public void testSummaryProvider_hasMobileAndHotspot_shouldReturnMobileSummary() {
         final MobileNetworkPreferenceController mobileNetworkPreferenceController =
                 mock(MobileNetworkPreferenceController.class);
diff --git a/tests/robotests/src/com/android/settings/network/NetworkResetActionMenuControllerTest.java b/tests/robotests/src/com/android/settings/network/NetworkResetActionMenuControllerTest.java
deleted file mode 100644
index 3135c91..0000000
--- a/tests/robotests/src/com/android/settings/network/NetworkResetActionMenuControllerTest.java
+++ /dev/null
@@ -1,76 +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.network;
-
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.anyInt;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import android.view.Menu;
-import android.view.MenuItem;
-
-import com.android.settings.testutils.SettingsRobolectricTestRunner;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.RuntimeEnvironment;
-import org.robolectric.util.ReflectionHelpers;
-
-@RunWith(SettingsRobolectricTestRunner.class)
-public class NetworkResetActionMenuControllerTest {
-
-    private static final int MENU_ID = Menu.FIRST;
-
-    private NetworkResetActionMenuController mController;
-    @Mock
-    private Menu mMenu;
-    @Mock
-    private MenuItem mMenuItem;
-    @Mock
-    private NetworkResetRestrictionChecker mRestrictionChecker;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        mController = new NetworkResetActionMenuController(RuntimeEnvironment.application, MENU_ID);
-        ReflectionHelpers.setField(mController, "mRestrictionChecker", mRestrictionChecker);
-        when(mMenu.add(anyInt(), anyInt(), anyInt(), anyInt())).thenReturn(mMenuItem);
-    }
-
-    @Test
-    public void buildMenuItem_available_shouldAddToMenu() {
-        when(mRestrictionChecker.hasRestriction()).thenReturn(false);
-        mController.buildMenuItem(mMenu);
-
-        verify(mMenu).add(anyInt(), anyInt(), anyInt(), anyInt());
-        verify(mMenuItem).setOnMenuItemClickListener(any(MenuItem.OnMenuItemClickListener.class));
-    }
-
-    @Test
-    public void buildMenuItem_notAvailable_shouldNotAddToMenu() {
-        when(mRestrictionChecker.hasRestriction()).thenReturn(true);
-
-        mController.buildMenuItem(mMenu);
-
-        verify(mMenu, never()).add(anyInt(), anyInt(), anyInt(), anyInt());
-    }
-}