Add link speed to Wifi details page.

Also make detail items unselectable.

Bug: 36444504
Test: make RunSettingsRoboTests
Change-Id: I393a3a25c8c036da1df1dc2788accfecb3563e14
diff --git a/res/xml/wifi_network_details_fragment.xml b/res/xml/wifi_network_details_fragment.xml
index dbbf0c3..09bcf86 100644
--- a/res/xml/wifi_network_details_fragment.xml
+++ b/res/xml/wifi_network_details_fragment.xml
@@ -34,40 +34,52 @@
 
         <com.android.settings.wifi.WifiDetailPreference
                 android:key="signal_strength"
-                android:title="@string/wifi_signal" />
+                android:title="@string/wifi_signal"
+                android:selectable="false"/>
 
         <com.android.settings.wifi.WifiDetailPreference
                 android:key="frequency"
                 android:icon="@drawable/ic_frequency_antenna"
-                android:title="@string/wifi_frequency" />
+                android:title="@string/wifi_frequency"
+                android:selectable="false"/>
 
         <com.android.settings.wifi.WifiDetailPreference
                 android:key="security"
                 android:icon="@drawable/ic_security_lock_24dp"
-                android:title="@string/wifi_security" />
+                android:title="@string/wifi_security"
+                android:selectable="false"/>
     </PreferenceCategory>
 
-    <!-- IP Details -->
+    <!-- Network Details -->
     <PreferenceCategory
             android:key="ip_details_category"
-            android:title="@string/wifi_ip_address">
+            android:title="@string/wifi_setup_detail">
         <com.android.settings.wifi.WifiDetailPreference
                 android:key="ip_address"
-                android:title="@string/wifi_ip_address" />
+                android:title="@string/wifi_ip_address"
+                android:selectable="false"/>
         <com.android.settings.wifi.WifiDetailPreference
                 android:key="router"
-                android:title="@string/wifi_gateway" />
+                android:title="@string/wifi_gateway"
+                android:selectable="false"/>
         <com.android.settings.wifi.WifiDetailPreference
                 android:key="subnet_mask"
-                android:title="@string/wifi_details_subnet_mask" />
+                android:title="@string/wifi_details_subnet_mask"
+                android:selectable="false"/>
         <com.android.settings.wifi.WifiDetailPreference
                 android:key="dns"
-                android:title="@string/wifi_details_dns" />
+                android:title="@string/wifi_details_dns"
+                android:selectable="false"/>
+        <com.android.settings.wifi.WifiDetailPreference
+                android:key="link_speed"
+                android:title="@string/wifi_speed"
+                android:selectable="false"/>
     </PreferenceCategory>
 
     <!-- IPv6 Details -->
     <PreferenceCategory
             android:key="ipv6_details_category"
-            android:title="@string/wifi_details_ipv6_address_header" />
+            android:title="@string/wifi_details_ipv6_address_header"
+            android:selectable="false"/>
 
 </PreferenceScreen>
diff --git a/src/com/android/settings/wifi/details/WifiDetailPreferenceController.java b/src/com/android/settings/wifi/details/WifiDetailPreferenceController.java
index d0e21e926..85c0929 100644
--- a/src/com/android/settings/wifi/details/WifiDetailPreferenceController.java
+++ b/src/com/android/settings/wifi/details/WifiDetailPreferenceController.java
@@ -59,6 +59,8 @@
     @VisibleForTesting
     static final String KEY_SIGNAL_STRENGTH_PREF = "signal_strength";
     @VisibleForTesting
+    static final String KEY_LINK_SPEED = "link_speed";
+    @VisibleForTesting
     static final String KEY_FREQUENCY_PREF = "frequency";
     @VisibleForTesting
     static final String KEY_SECURITY_PREF = "security";
@@ -85,6 +87,7 @@
     // Preferences - in order of appearance
     private Preference mConnectionDetailPref;
     private WifiDetailPreference mSignalStrengthPref;
+    private WifiDetailPreference mLinkSpeedPref;
     private WifiDetailPreference mFrequencyPref;
     private WifiDetailPreference mSecurityPref;
     private WifiDetailPreference mIpAddressPref;
@@ -128,6 +131,7 @@
 
         mSignalStrengthPref =
                 (WifiDetailPreference) screen.findPreference(KEY_SIGNAL_STRENGTH_PREF);
+        mLinkSpeedPref = (WifiDetailPreference) screen.findPreference(KEY_LINK_SPEED);
         mFrequencyPref = (WifiDetailPreference) screen.findPreference(KEY_FREQUENCY_PREF);
         mSecurityPref = (WifiDetailPreference) screen.findPreference(KEY_SECURITY_PREF);
 
@@ -178,6 +182,10 @@
         int summarySignalLevel = mAccessPoint.getLevel();
         mSignalStrengthPref.setDetailText(mSignalStr[summarySignalLevel]);
 
+        // Link Speed Pref
+        mLinkSpeedPref.setDetailText(mContext.getString(
+                R.string.link_speed, mWifiInfo.getLinkSpeed()));
+
         // Frequency Pref
         final int frequency = mWifiInfo.getFrequency();
         String band = null;
diff --git a/tests/robotests/src/com/android/settings/wifi/details/WifiDetailPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/wifi/details/WifiDetailPreferenceControllerTest.java
index 88a63b3..0a12ebf 100644
--- a/tests/robotests/src/com/android/settings/wifi/details/WifiDetailPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/details/WifiDetailPreferenceControllerTest.java
@@ -54,6 +54,7 @@
 
     private static final int LEVEL = 1;
     private static final int RSSI = -55;
+    private static final int LINK_SPEED = 123;
     private static final String SECURITY = "None";
 
     @Mock(answer = Answers.RETURNS_DEEP_STUBS)
@@ -67,6 +68,7 @@
 
     @Mock private Preference mockConnectionDetailPref;
     @Mock private WifiDetailPreference mockSignalStrengthPref;
+    @Mock private WifiDetailPreference mockLinkSpeedPref;
     @Mock private WifiDetailPreference mockFrequencyPref;
     @Mock private WifiDetailPreference mockSecurityPref;
     @Mock private WifiDetailPreference mockIpAddressPref;
@@ -97,6 +99,7 @@
         setupMockedPreferenceScreen();
 
         when(mockWifiInfo.getRssi()).thenReturn(RSSI);
+        when(mockWifiInfo.getLinkSpeed()).thenReturn(LINK_SPEED);
         when(mockWifiManager.getConnectionInfo()).thenReturn(mockWifiInfo);
     }
 
@@ -106,6 +109,8 @@
                 .thenReturn(mockConnectionDetailPref);
         when(mockScreen.findPreference(WifiDetailPreferenceController.KEY_SIGNAL_STRENGTH_PREF))
                 .thenReturn(mockSignalStrengthPref);
+        when(mockScreen.findPreference(WifiDetailPreferenceController.KEY_LINK_SPEED))
+                .thenReturn(mockLinkSpeedPref);
         when(mockScreen.findPreference(WifiDetailPreferenceController.KEY_FREQUENCY_PREF))
                 .thenReturn(mockFrequencyPref);
         when(mockScreen.findPreference(WifiDetailPreferenceController.KEY_SECURITY_PREF))
@@ -179,6 +184,15 @@
     }
 
     @Test
+    public void linkSpeedPref_shouldHaveDetailTextSet() {
+        String expectedLinkSpeed = mContext.getString(R.string.link_speed, LINK_SPEED);
+
+        mController.onResume();
+
+        verify(mockLinkSpeedPref).setDetailText(expectedLinkSpeed);
+    }
+
+    @Test
     public void forgetNetwork_ephemeral() {
         WifiConfiguration wifiConfiguration = new WifiConfiguration();
         wifiConfiguration.SSID = "ssid";