Merge "Rename WifiManager.enableVerboseLogging/getVerboseLoggingLevel"
diff --git a/OWNERS b/OWNERS
index e5b26dc..16fc48c 100644
--- a/OWNERS
+++ b/OWNERS
@@ -12,8 +12,5 @@
 tmfang@google.com
 yantingyang@google.com
 
-# Emergency approvers in case the above are not available
-zhfan@google.com
-
 # Exempt resource files (because they are in a flat directory and too hard to manage via OWNERS)
 per-file *.xml=*
diff --git a/res/values/arrays.xml b/res/values/arrays.xml
index 396a485..9c3a622 100644
--- a/res/values/arrays.xml
+++ b/res/values/arrays.xml
@@ -957,6 +957,9 @@
         <item>IPSec Xauth PSK</item>
         <item>IPSec Xauth RSA</item>
         <item>IPSec Hybrid RSA</item>
+        <item>IKEv2/IPSec MSCHAPv2</item>
+        <item>IKEv2/IPSec PSK</item>
+        <item>IKEv2/IPSec RSA</item>
     </string-array>
 
     <!-- Match this with the constants in VpnProfile. --> <skip />
@@ -968,6 +971,9 @@
         <item>IPSec VPN with pre-shared keys and Xauth authentication</item>
         <item>IPSec VPN with certificates and Xauth authentication</item>
         <item>IPSec VPN with certificates and hybrid authentication</item>
+        <item>IKEv2/IPSec VPN with certificates and username/password authentication</item>
+        <item>IKEv2/IPSec VPN with pre-shared keys</item>
+        <item>IKEv2/IPSec VPN with certificates</item>
     </string-array>
 
     <!-- VPN proxy settings. -->
diff --git a/src/com/android/settings/datausage/DataUsageUtils.java b/src/com/android/settings/datausage/DataUsageUtils.java
index 5ed62fb..433d1ed 100644
--- a/src/com/android/settings/datausage/DataUsageUtils.java
+++ b/src/com/android/settings/datausage/DataUsageUtils.java
@@ -66,7 +66,7 @@
             return SystemProperties.get(DataUsageUtils.TEST_RADIOS_PROP).contains(ETHERNET);
         }
 
-        final ConnectivityManager conn = ConnectivityManager.from(context);
+        final ConnectivityManager conn = context.getSystemService(ConnectivityManager.class);
         if (!conn.isNetworkSupported(ConnectivityManager.TYPE_ETHERNET)) {
             return false;
         }
@@ -93,7 +93,8 @@
      * TODO: This is the opposite to Utils.isWifiOnly(), it should be refactored into 1 method.
      */
     public static boolean hasMobileData(Context context) {
-        ConnectivityManager connectivityManager = ConnectivityManager.from(context);
+        final ConnectivityManager connectivityManager =
+                context.getSystemService(ConnectivityManager.class);
         return connectivityManager != null && connectivityManager
                 .isNetworkSupported(ConnectivityManager.TYPE_MOBILE);
     }
@@ -106,7 +107,8 @@
             return SystemProperties.get(DataUsageUtils.TEST_RADIOS_PROP).contains("mobile");
         }
         final List<SubscriptionInfo> subInfoList =
-                SubscriptionManager.from(context).getActiveSubscriptionInfoList();
+                context.getSystemService(SubscriptionManager.class)
+                .getActiveSubscriptionInfoList();
         // No activated Subscriptions
         if (subInfoList == null) {
             if (LOGD) {
@@ -123,7 +125,7 @@
                 Log.d(TAG, "hasReadyMobileRadio: subInfo=" + subInfo);
             }
         }
-        final ConnectivityManager conn = ConnectivityManager.from(context);
+        final ConnectivityManager conn = context.getSystemService(ConnectivityManager.class);
         final boolean retVal = conn.isNetworkSupported(TYPE_MOBILE) && isReady;
         if (LOGD) {
             Log.d(TAG, "hasReadyMobileRadio:"
@@ -142,7 +144,8 @@
             return SystemProperties.get(TEST_RADIOS_PROP).contains("wifi");
         }
 
-        final ConnectivityManager connectivityManager = ConnectivityManager.from(context);
+        final ConnectivityManager connectivityManager =
+                context.getSystemService(ConnectivityManager.class);
         return connectivityManager != null && connectivityManager.isNetworkSupported(TYPE_WIFI);
     }
 
@@ -159,20 +162,25 @@
      * SubscriptionManager#INVALID_SUBSCRIPTION_ID
      */
     public static int getDefaultSubscriptionId(Context context) {
-        SubscriptionManager subManager = context.getSystemService(SubscriptionManager.class);
-        if (subManager == null) {
+        final SubscriptionManager subscriptionMgr =
+                context.getSystemService(SubscriptionManager.class);
+
+        // default data subscription is first choice
+        final int dataSubId = subscriptionMgr.getDefaultDataSubscriptionId();
+        if (SubscriptionManager.isValidSubscriptionId(dataSubId)) {
+            return dataSubId;
+        }
+
+        // any active subscription is second choice
+        List<SubscriptionInfo> subList = subscriptionMgr.getActiveSubscriptionInfoList();
+        if ((subList == null) || (subList.size() <= 0)) {
+            // any subscription is third choice
+            subList = subscriptionMgr.getAvailableSubscriptionInfoList();
+        }
+        if ((subList == null) || (subList.size() <= 0)) {
             return SubscriptionManager.INVALID_SUBSCRIPTION_ID;
         }
-        SubscriptionInfo subscriptionInfo =
-                subManager.getActiveSubscriptionInfo(subManager.getDefaultDataSubscriptionId());
-        if (subscriptionInfo == null) {
-            List<SubscriptionInfo> list = subManager.getAvailableSubscriptionInfoList();
-            if (list.size() == 0) {
-                return SubscriptionManager.INVALID_SUBSCRIPTION_ID;
-            }
-            subscriptionInfo = list.get(0);
-        }
-        return subscriptionInfo.getSubscriptionId();
+        return subList.get(0).getSubscriptionId();
     }
 
     /**
@@ -180,7 +188,7 @@
      * ethernet template if both mobile data and Wifi are not available.
      */
     public static NetworkTemplate getDefaultTemplate(Context context, int defaultSubId) {
-        if (hasMobileData(context) && defaultSubId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
+        if (SubscriptionManager.isValidSubscriptionId(defaultSubId) && hasMobileData(context)) {
             return getMobileTemplate(context, defaultSubId);
         } else if (hasWifiRadio(context)) {
             return NetworkTemplate.buildTemplateWifiWildcard();
diff --git a/src/com/android/settings/development/OverlayCategoryPreferenceController.java b/src/com/android/settings/development/OverlayCategoryPreferenceController.java
index 6e0b2d0..ce51b54 100644
--- a/src/com/android/settings/development/OverlayCategoryPreferenceController.java
+++ b/src/com/android/settings/development/OverlayCategoryPreferenceController.java
@@ -126,8 +126,8 @@
                         return mOverlayManager.setEnabledExclusiveInCategory(packageName,
                                 USER_SYSTEM);
                     }
-                } catch (RemoteException re) {
-                    Log.w(TAG, "Error enabling overlay.", re);
+                } catch (SecurityException | IllegalStateException | RemoteException e) {
+                    Log.w(TAG, "Error enabling overlay.", e);
                     return false;
                 }
             }
diff --git a/src/com/android/settings/fuelgauge/InactiveApps.java b/src/com/android/settings/fuelgauge/InactiveApps.java
index c386a7d..a5056a9 100644
--- a/src/com/android/settings/fuelgauge/InactiveApps.java
+++ b/src/com/android/settings/fuelgauge/InactiveApps.java
@@ -21,6 +21,7 @@
 import static android.app.usage.UsageStatsManager.STANDBY_BUCKET_FREQUENT;
 import static android.app.usage.UsageStatsManager.STANDBY_BUCKET_NEVER;
 import static android.app.usage.UsageStatsManager.STANDBY_BUCKET_RARE;
+import static android.app.usage.UsageStatsManager.STANDBY_BUCKET_RESTRICTED;
 import static android.app.usage.UsageStatsManager.STANDBY_BUCKET_WORKING_SET;
 
 import android.app.settings.SettingsEnums;
@@ -46,13 +47,14 @@
         implements Preference.OnPreferenceChangeListener {
 
     private static final CharSequence[] SETTABLE_BUCKETS_NAMES =
-            {"ACTIVE", "WORKING_SET", "FREQUENT", "RARE"};
+            {"ACTIVE", "WORKING_SET", "FREQUENT", "RARE", "RESTRICTED"};
 
     private static final CharSequence[] SETTABLE_BUCKETS_VALUES = {
             Integer.toString(STANDBY_BUCKET_ACTIVE),
             Integer.toString(STANDBY_BUCKET_WORKING_SET),
             Integer.toString(STANDBY_BUCKET_FREQUENT),
-            Integer.toString(STANDBY_BUCKET_RARE)
+            Integer.toString(STANDBY_BUCKET_RARE),
+            Integer.toString(STANDBY_BUCKET_RESTRICTED)
     };
 
     private UsageStatsManager mUsageStats;
@@ -83,7 +85,6 @@
         screen.setOrderingAsAdded(false);
         final Context context = getActivity();
         final PackageManager pm = context.getPackageManager();
-        final UsageStatsManager usm = context.getSystemService(UsageStatsManager.class);
         final String settingsPackage = context.getPackageName();
 
         Intent launcherIntent = new Intent(Intent.ACTION_MAIN);
@@ -115,6 +116,7 @@
             case STANDBY_BUCKET_WORKING_SET: return "WORKING_SET";
             case STANDBY_BUCKET_FREQUENT: return "FREQUENT";
             case STANDBY_BUCKET_RARE: return "RARE";
+            case STANDBY_BUCKET_RESTRICTED: return "RESTRICTED";
             case STANDBY_BUCKET_NEVER: return "NEVER";
         }
         return "";
@@ -129,7 +131,7 @@
         // purposes and can either not be changed out of, or might have undesirable
         // side-effects in combination with other assumptions.
         final boolean changeable = appBucket >= STANDBY_BUCKET_ACTIVE
-                && appBucket <= STANDBY_BUCKET_RARE;
+                && appBucket <= STANDBY_BUCKET_RESTRICTED;
         if (changeable) {
             p.setValue(Integer.toString(appBucket));
         }
diff --git a/src/com/android/settings/network/telephony/RenameMobileNetworkDialogFragment.java b/src/com/android/settings/network/telephony/RenameMobileNetworkDialogFragment.java
index 2340236..ab8327c 100644
--- a/src/com/android/settings/network/telephony/RenameMobileNetworkDialogFragment.java
+++ b/src/com/android/settings/network/telephony/RenameMobileNetworkDialogFragment.java
@@ -200,7 +200,7 @@
 
     private Color[] getColors() {
         final Resources res = getContext().getResources();
-        final int[] colorInts = res.getIntArray(com.android.internal.R.array.sim_colors);
+        final int[] colorInts = res.getIntArray(android.R.array.simColors);
         final String[] colorStrings = res.getStringArray(R.array.color_picker);
         final int iconSize = res.getDimensionPixelSize(R.dimen.color_swatch_size);
         final int strokeWidth = res.getDimensionPixelSize(R.dimen.color_swatch_stroke_width);
diff --git a/src/com/android/settings/wifi/WifiConfigController2.java b/src/com/android/settings/wifi/WifiConfigController2.java
index 6a78083..add37dd 100644
--- a/src/com/android/settings/wifi/WifiConfigController2.java
+++ b/src/com/android/settings/wifi/WifiConfigController2.java
@@ -276,7 +276,7 @@
                 mHiddenSettingsSpinner.getSelectedItemPosition() == NOT_HIDDEN_NETWORK
                         ? View.GONE
                         : View.VISIBLE);
-        mSecurityInPosition = new Integer[WifiEntry.SECURITY_MAX_VAL];
+        mSecurityInPosition = new Integer[WifiEntry.NUM_SECURITY_TYPES];
 
         if (mWifiEntry == null) { // new network
             configureSecuritySpinner();
diff --git a/src/com/android/settings/wifi/dpp/WifiDppUtils.java b/src/com/android/settings/wifi/dpp/WifiDppUtils.java
index 93a3530..51cb351 100644
--- a/src/com/android/settings/wifi/dpp/WifiDppUtils.java
+++ b/src/com/android/settings/wifi/dpp/WifiDppUtils.java
@@ -252,11 +252,6 @@
         final WifiConfiguration wifiConfiguration = wifiEntry.getWifiConfiguration();
         setConfiguratorIntentExtra(intent, wifiManager, wifiConfiguration);
 
-        // For a transition mode Wi-Fi AP, creates a QR code that's compatible with more devices
-        if (wifiEntry.getSecurity() == WifiEntry.SECURITY_PSK_SAE_TRANSITION) {
-            intent.putExtra(EXTRA_WIFI_SECURITY, WifiQrCode.SECURITY_WPA_PSK);
-        }
-
         return intent;
     }
 
diff --git a/tests/robotests/src/com/android/settings/wifi/calling/ListWithEntrySummaryPreferenceTest.java b/tests/robotests/src/com/android/settings/wifi/calling/ListWithEntrySummaryPreferenceTest.java
index 307c0ac..b4ad167 100644
--- a/tests/robotests/src/com/android/settings/wifi/calling/ListWithEntrySummaryPreferenceTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/calling/ListWithEntrySummaryPreferenceTest.java
@@ -28,12 +28,14 @@
 import com.android.settings.R;
 
 import org.junit.Before;
+import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.robolectric.RobolectricTestRunner;
 import org.robolectric.RuntimeEnvironment;
 
 @RunWith(RobolectricTestRunner.class)
+@Ignore
 public class ListWithEntrySummaryPreferenceTest {
 
     private Context mContext;