Merge "Move PermissionsInfo to SettingsLib"
diff --git a/res/layout/mac_preference.xml b/res/layout/mac_preference.xml
deleted file mode 100644
index f096b07..0000000
--- a/res/layout/mac_preference.xml
+++ /dev/null
@@ -1,79 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2014 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.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:minHeight="?android:attr/listPreferredItemHeightSmall"
-    android:gravity="center_vertical"
-    android:orientation="vertical"
-    android:background="?android:attr/selectableItemBackground">
-
-    <View
-        android:layout_width="fill_parent"
-        android:layout_height="@dimen/wifi_divider_height"
-        android:background="@color/wifi_divider" />
-
-    <LinearLayout
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:minHeight="?android:attr/listPreferredItemHeightSmall"
-        android:gravity="center_vertical"
-        android:background="?android:attr/selectableItemBackground">
-
-        <RelativeLayout
-            android:layout_width="0dip"
-            android:layout_height="wrap_content"
-            android:layout_weight="1"
-            android:paddingTop="6dip"
-            android:paddingBottom="6dip">
-
-            <TextView
-                android:id="@+android:id/title"
-                android:layout_width="match_parent"
-                android:layout_height="match_parent"
-                android:paddingStart="16dip"
-                android:paddingEnd="16dip"
-                android:singleLine="true"
-                android:textAppearance="?android:attr/textAppearanceSmall"
-                android:ellipsize="marquee"
-                android:fadingEdge="horizontal" />
-
-            <TextView
-                android:id="@android:id/summary"
-                android:layout_width="match_parent"
-                android:layout_height="match_parent"
-                android:layout_below="@android:id/title"
-                android:layout_alignStart="@android:id/title"
-                android:paddingStart="16dip"
-                android:layout_marginEnd="16dip"
-                android:visibility="gone"
-                android:textAppearance="?android:attr/textAppearanceSmall"
-                android:textColor="?android:attr/textColorSecondary"
-                android:maxLines="4" />
-
-        </RelativeLayout>
-
-        <LinearLayout
-            android:id="@android:id/widget_frame"
-            android:layout_width="wrap_content"
-            android:layout_height="match_parent"
-            android:gravity="center_vertical"
-            android:orientation="vertical" />
-
-    </LinearLayout>
-
-</LinearLayout>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index dbd842d0..153492b 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -1444,10 +1444,6 @@
     <string name="wifi_menu_scan">Scan</string>
     <!-- Menu option to Wi-Fi advanced settings -->
     <string name="wifi_menu_advanced">Advanced</string>
-    <!-- Menu option to show app icons instead of WiFi strength [CHAR LIMIT=20]-->
-    <string name="wifi_menu_apps">Show Apps</string>
-    <!-- Menu option to show WiFi strength icons [CHAR LIMIT=20]-->
-    <string name="wifi_menu_apps_strength">Show WiFi Strength</string>
     <!-- Menu option to connect to a Wi-Fi network -->
     <string name="wifi_menu_connect">Connect to network</string>
     <!-- Menu option to remember a temporary Wi-Fi network -->
diff --git a/res/xml/wifi_advanced_settings.xml b/res/xml/wifi_advanced_settings.xml
index 1fc1cda..ed6cfbd 100644
--- a/res/xml/wifi_advanced_settings.xml
+++ b/res/xml/wifi_advanced_settings.xml
@@ -69,7 +69,7 @@
     <Preference
             android:key="mac_address"
             android:title="@string/wifi_advanced_mac_address_title"
-            android:layout="@layout/mac_preference" />
+            android:layout="@layout/wifi_advance_layout" />
 
     <Preference
             android:key="current_ip_address"
diff --git a/src/com/android/settings/FingerprintSettings.java b/src/com/android/settings/FingerprintSettings.java
index 749ac11..00f4b43 100644
--- a/src/com/android/settings/FingerprintSettings.java
+++ b/src/com/android/settings/FingerprintSettings.java
@@ -92,6 +92,7 @@
         private static final String KEY_MANAGE_CATEGORY = "fingerprint_manage_category";
         private static final String KEY_FINGERPRINT_ENABLE_KEYGUARD_TOGGLE =
                 "fingerprint_enable_keyguard_toggle";
+        private static final String KEY_LAUNCHED_CONFIRM = "launched_confirm";
 
         private static final int MSG_REFRESH_FINGERPRINT_TEMPLATES = 1000;
         private static final int MSG_HIGHLIGHT_FINGERPRINT_ITEM = 1001;
@@ -110,6 +111,7 @@
         private CancellationSignal mFingerprintCancel;
         private int mMaxFingerprintAttempts;
         private byte[] mToken;
+        private boolean mLaunchedConfirm;
 
         private AuthenticationCallback mAuthCallback = new AuthenticationCallback() {
             @Override
@@ -125,9 +127,12 @@
 
             @Override
             public void onAuthenticationError(int errMsgId, CharSequence errString) {
-                Toast.makeText(getActivity(), errString, Toast.LENGTH_SHORT);
-                if (errMsgId != FingerprintManager.FINGERPRINT_ERROR_CANCELED) {
-                    retryFingerprint(false);
+                // get activity will be null on a screen rotation
+                if (getActivity() != null) {
+                    Toast.makeText(getActivity(), errString, Toast.LENGTH_SHORT);
+                    if (errMsgId != FingerprintManager.FINGERPRINT_ERROR_CANCELED) {
+                        retryFingerprint(false);
+                    }
                 }
             }
 
@@ -191,13 +196,16 @@
             if (savedInstanceState != null) {
                 mToken = savedInstanceState.getByteArray(
                         ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN);
+                mLaunchedConfirm = savedInstanceState.getBoolean(
+                        KEY_LAUNCHED_CONFIRM, false);
             }
 
             mFingerprintManager = (FingerprintManager) getActivity().getSystemService(
                     Context.FINGERPRINT_SERVICE);
 
             // Need to authenticate a session token if none
-            if (mToken == null) {
+            if (mToken == null && mLaunchedConfirm == false) {
+                mLaunchedConfirm = true;
                 launchChooseOrConfirmLock();
             }
         }
@@ -307,6 +315,7 @@
         public void onSaveInstanceState(final Bundle outState) {
             outState.putByteArray(ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN,
                     mToken);
+            outState.putBoolean(KEY_LAUNCHED_CONFIRM, mLaunchedConfirm);
         }
 
         @Override
diff --git a/src/com/android/settings/wifi/AccessPointPreference.java b/src/com/android/settings/wifi/AccessPointPreference.java
index f68410a..8a24bc9 100644
--- a/src/com/android/settings/wifi/AccessPointPreference.java
+++ b/src/com/android/settings/wifi/AccessPointPreference.java
@@ -15,16 +15,9 @@
  */
 package com.android.settings.wifi;
 
-import android.app.AppGlobals;
 import android.content.Context;
-import android.content.pm.ApplicationInfo;
-import android.content.pm.IPackageManager;
-import android.content.pm.PackageManager;
 import android.graphics.drawable.Drawable;
 import android.graphics.drawable.StateListDrawable;
-import android.net.wifi.WifiConfiguration;
-import android.os.RemoteException;
-import android.os.UserHandle;
 import android.preference.Preference;
 import android.view.View;
 import android.widget.TextView;
@@ -67,36 +60,6 @@
         notifyChanged();
     }
 
-    public void showAppIcon() {
-        PackageManager pm = getContext().getPackageManager();
-        String systemName = pm.getNameForUid(android.os.Process.SYSTEM_UID);
-        WifiConfiguration mConfig = mAccessPoint.getConfig();
-
-        Drawable drawable = pm.getDefaultActivityIcon();
-        if (mConfig == null) {
-            drawable.setAlpha(0);
-        } else {
-            int userId = UserHandle.getUserId(mConfig.creatorUid);
-            ApplicationInfo appInfo = null;
-            if (mConfig.creatorName.equals(systemName)) {
-                appInfo = getContext().getApplicationInfo();
-            } else {
-                try {
-                    IPackageManager ipm = AppGlobals.getPackageManager();
-                    appInfo = ipm.getApplicationInfo(mConfig.creatorName, 0 /* flags */, userId);
-                } catch (RemoteException rex) {
-                    // use default app icon
-                }
-            }
-            if (appInfo != null) {
-                drawable = appInfo.loadIcon(pm);
-                drawable = pm.getUserBadgedIcon(drawable, new UserHandle(userId));
-            }
-        }
-
-        setIcon(drawable);
-    }
-
     protected void updateIcon(int level, Context context) {
         if (level == -1) {
             setIcon(null);
diff --git a/src/com/android/settings/wifi/SavedAccessPointsWifiSettings.java b/src/com/android/settings/wifi/SavedAccessPointsWifiSettings.java
index 2627bc4..6726717 100644
--- a/src/com/android/settings/wifi/SavedAccessPointsWifiSettings.java
+++ b/src/com/android/settings/wifi/SavedAccessPointsWifiSettings.java
@@ -16,12 +16,19 @@
 
 package com.android.settings.wifi;
 
+import android.app.AppGlobals;
 import android.app.Dialog;
 import android.content.Context;
 import android.content.DialogInterface;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.IPackageManager;
+import android.content.pm.PackageManager;
 import android.content.res.Resources;
+import android.net.wifi.WifiConfiguration;
 import android.net.wifi.WifiManager;
 import android.os.Bundle;
+import android.os.RemoteException;
+import android.os.UserHandle;
 import android.preference.Preference;
 import android.preference.PreferenceScreen;
 import android.util.Log;
@@ -93,11 +100,32 @@
 
         preferenceScreen.removeAll();
 
+        PackageManager pm = context.getPackageManager();
+        String systemName = pm.getNameForUid(android.os.Process.SYSTEM_UID);
+
         final int accessPointsSize = accessPoints.size();
         for (int i = 0; i < accessPointsSize; ++i){
             AccessPointPreference preference = new AccessPointPreference(accessPoints.get(i),
                     context);
-            preference.setShowSummary(false);
+            WifiConfiguration config = accessPoints.get(i).getConfig();
+            if (config != null) {
+                int userId = UserHandle.getUserId(config.creatorUid);
+                ApplicationInfo appInfo = null;
+                if (config.creatorName != null && config.creatorName.equals(systemName)) {
+                    appInfo = context.getApplicationInfo();
+                } else {
+                    try {
+                        IPackageManager ipm = AppGlobals.getPackageManager();
+                        appInfo = ipm.getApplicationInfo(config.creatorName, 0 /* flags */, userId);
+                    } catch (RemoteException rex) {
+                    }
+                }
+                if (appInfo != null) {
+                    preference.setSummary(getResources().getString(appInfo.labelRes));
+                }
+            } else {
+                preference.setShowSummary(false);
+            }
             preferenceScreen.addPreference(preference);
         }
 
diff --git a/src/com/android/settings/wifi/WifiSettings.java b/src/com/android/settings/wifi/WifiSettings.java
index cb6be53..f46edac 100644
--- a/src/com/android/settings/wifi/WifiSettings.java
+++ b/src/com/android/settings/wifi/WifiSettings.java
@@ -93,7 +93,6 @@
     private static final int MENU_ID_FORGET = Menu.FIRST + 7;
     private static final int MENU_ID_MODIFY = Menu.FIRST + 8;
     private static final int MENU_ID_WRITE_NFC = Menu.FIRST + 9;
-    private static final int MENU_ID_APPS = Menu.FIRST + 10;
 
     public static final int WIFI_DIALOG_ID = 1;
     /* package */ static final int WPS_PBC_DIALOG_ID = 2;
@@ -120,9 +119,6 @@
 
     private TextView mEmptyView;
 
-    private boolean showAppIcons = false;
-    private MenuItem showAppMenuItem = null;
-
     // this boolean extra specifies whether to disable the Next button when not connected. Used by
     // account creation outside of setup wizard.
     private static final String EXTRA_ENABLE_NEXT_ON_CONNECT = "wifi_enable_next_on_connect";
@@ -324,8 +320,6 @@
                .setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
         menu.add(Menu.NONE, MENU_ID_ADVANCED, 0, R.string.wifi_menu_advanced)
                 .setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
-        showAppMenuItem = menu.add(Menu.NONE, MENU_ID_APPS, 0, R.string.wifi_menu_apps);
-        showAppMenuItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
         ta.recycle();
     }
 
@@ -406,16 +400,6 @@
                             null);
                 }
                 return true;
-            case MENU_ID_APPS:
-                showAppIcons = !showAppIcons;
-
-                if (showAppIcons) {
-                    showAppMenuItem.setTitle(R.string.wifi_menu_apps_strength);
-                } else {
-                    showAppMenuItem.setTitle(R.string.wifi_menu_apps);
-                }
-                onAccessPointsChanged();
-                return true;
         }
         return super.onOptionsItemSelected(item);
     }
@@ -584,9 +568,6 @@
                     if (accessPoint.getLevel() != -1) {
                         AccessPointPreference preference = new AccessPointPreference(accessPoint,
                                 getActivity());
-                        if (showAppIcons) {
-                            preference.showAppIcon();
-                        }
 
                         getPreferenceScreen().addPreference(preference);
                         accessPoint.setListener(this);