OSDN Git Service

Add SSID to Network Details page for Passpoint
authorQuang Luong <qal@google.com>
Thu, 21 Mar 2019 23:37:55 +0000 (16:37 -0700)
committerQuang Luong <qal@google.com>
Thu, 28 Mar 2019 18:54:19 +0000 (11:54 -0700)
Added SSID to Network Details page under the Advanced portion only
when the network is for Passpoint, whose network title is not the
SSID of the underlying connected AP.

Bug: 129092023
Test: atest RunSettingsRoboTests

Change-Id: I13308d46e727fc01fec7a079d8e32ab9f1763e21

res/values/strings.xml
res/xml/wifi_network_details_fragment.xml
src/com/android/settings/wifi/details/WifiDetailPreferenceController.java
tests/robotests/src/com/android/settings/wifi/details/WifiDetailPreferenceControllerTest.java

index 11281c2..421706a 100644 (file)
     </plurals>
     <!-- Wi-Fi settings screen, advanced, settings section.  This is a header shown above advanced wifi settings. [CHAR LIMIT=30] -->
     <string name="wifi_advanced_titlebar">Advanced Wi\u2011Fi</string>
+    <!-- Wi-Fi settings screen, advanced, title of the item to show the Wi-Fi device's SSID. [CHAR LIMIT=20] -->
+    <string name="wifi_advanced_ssid_title">SSID</string>
     <!-- Wi-Fi settings screen, advanced, title of the item to show the Wi-Fi device's MAC address. -->
     <string name="wifi_advanced_mac_address_title">MAC address</string>
     <!-- Title of the screen to adjust IP settings -->
index 782a7cf..8fb19cb 100644 (file)
             android:key="ip_details_category"
             android:title="@string/wifi_setup_detail">
         <Preference
+                android:key="ssid"
+                android:title="@string/wifi_advanced_ssid_title"
+                android:selectable="false"
+                settings:enableCopying="true"/>
+        <Preference
                 android:key="mac_address"
                 android:title="@string/wifi_advanced_mac_address_title"
                 android:selectable="false"
index 955525d..0f6ab6b 100644 (file)
@@ -115,6 +115,8 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController
     @VisibleForTesting
     static final String KEY_SECURITY_PREF = "security";
     @VisibleForTesting
+    static final String KEY_SSID_PREF = "ssid";
+    @VisibleForTesting
     static final String KEY_MAC_ADDRESS_PREF = "mac_address";
     @VisibleForTesting
     static final String KEY_IP_ADDRESS_PREF = "ip_address";
@@ -170,6 +172,7 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController
     private Preference mRxLinkSpeedPref;
     private Preference mFrequencyPref;
     private Preference mSecurityPref;
+    private Preference mSsidPref;
     private Preference mMacAddressPref;
     private Preference mIpAddressPref;
     private Preference mGatewayPref;
@@ -399,6 +402,7 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController
         mFrequencyPref = screen.findPreference(KEY_FREQUENCY_PREF);
         mSecurityPref = screen.findPreference(KEY_SECURITY_PREF);
 
+        mSsidPref = screen.findPreference(KEY_SSID_PREF);
         mMacAddressPref = screen.findPreference(KEY_MAC_ADDRESS_PREF);
         mIpAddressPref = screen.findPreference(KEY_IP_ADDRESS_PREF);
         mGatewayPref = screen.findPreference(KEY_GATEWAY_PREF);
@@ -497,6 +501,8 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController
         refreshRxSpeed();
         // IP related information
         refreshIpLayerInfo();
+        // SSID Pref
+        refreshSsid();
         // MAC Address Pref
         refreshMacAddress();
     }
@@ -645,6 +651,15 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController
                 R.string.rx_link_speed, mWifiInfo.getRxLinkSpeedMbps()));
     }
 
+    private void refreshSsid() {
+        if (mAccessPoint.isPasspoint() || mAccessPoint.isOsuProvider()) {
+            mSsidPref.setVisible(true);
+            mSsidPref.setSummary(mAccessPoint.getSsidStr());
+        } else {
+            mSsidPref.setVisible(false);
+        }
+    }
+
     private void refreshMacAddress() {
         String macAddress = getMacAddress();
         if (macAddress == null) {
index 0a565cd..f177b5e 100644 (file)
@@ -105,6 +105,7 @@ public class WifiDetailPreferenceControllerTest {
     private static final int RSSI = -55;
     private static final int TX_LINK_SPEED = 123;
     private static final int RX_LINK_SPEED = 54;
+    private static final String SSID = "ssid";
     private static final String MAC_ADDRESS = WifiInfo.DEFAULT_MAC_ADDRESS;
     private static final String SECURITY = "None";
 
@@ -154,6 +155,8 @@ public class WifiDetailPreferenceControllerTest {
     @Mock
     private Preference mockSecurityPref;
     @Mock
+    private Preference mockSsidPref;
+    @Mock
     private Preference mockMacAddressPref;
     @Mock
     private Preference mockIpAddressPref;
@@ -245,6 +248,7 @@ public class WifiDetailPreferenceControllerTest {
         when(mockAccessPoint.getConfig()).thenReturn(mockWifiConfig);
         when(mockAccessPoint.getLevel()).thenReturn(LEVEL);
         when(mockAccessPoint.getSecurityString(false)).thenReturn(SECURITY);
+        when(mockAccessPoint.getSsidStr()).thenReturn(SSID);
         when(mockConnectivityManager.getNetworkInfo(any(Network.class)))
                 .thenReturn(mockNetworkInfo);
         doNothing().when(mockConnectivityManager).registerNetworkCallback(
@@ -314,6 +318,8 @@ public class WifiDetailPreferenceControllerTest {
                 .thenReturn(mockFrequencyPref);
         when(mockScreen.findPreference(WifiDetailPreferenceController.KEY_SECURITY_PREF))
                 .thenReturn(mockSecurityPref);
+        when(mockScreen.findPreference(WifiDetailPreferenceController.KEY_SSID_PREF))
+                .thenReturn(mockSsidPref);
         when(mockScreen.findPreference(WifiDetailPreferenceController.KEY_MAC_ADDRESS_PREF))
                 .thenReturn(mockMacAddressPref);
         when(mockScreen.findPreference(WifiDetailPreferenceController.KEY_IP_ADDRESS_PREF))
@@ -463,6 +469,50 @@ public class WifiDetailPreferenceControllerTest {
     }
 
     @Test
+    public void ssidPref_shouldHaveDetailTextSet() {
+        when(mockAccessPoint.isPasspoint()).thenReturn(true);
+        when(mockAccessPoint.isOsuProvider()).thenReturn(false);
+
+        displayAndResume();
+
+        verify(mockSsidPref, times(1)).setSummary(SSID);
+
+        when(mockAccessPoint.isPasspoint()).thenReturn(false);
+        when(mockAccessPoint.isOsuProvider()).thenReturn(true);
+
+        displayAndResume();
+
+        verify(mockSsidPref, times(2)).setSummary(SSID);
+    }
+
+    @Test
+    public void ssidPref_shouldShowIfPasspointOrOsu() {
+        when(mockAccessPoint.isPasspoint()).thenReturn(true);
+        when(mockAccessPoint.isOsuProvider()).thenReturn(false);
+
+        displayAndResume();
+
+        verify(mockSsidPref, times(1)).setVisible(true);
+
+        when(mockAccessPoint.isPasspoint()).thenReturn(false);
+        when(mockAccessPoint.isOsuProvider()).thenReturn(true);
+
+        displayAndResume();
+
+        verify(mockSsidPref, times(2)).setVisible(true);
+    }
+
+    @Test
+    public void ssidPref_shouldNotShowIfNotPasspoint() {
+        when(mockAccessPoint.isPasspoint()).thenReturn(false);
+        when(mockAccessPoint.isOsuProvider()).thenReturn(false);
+
+        displayAndResume();
+
+        verify(mockSsidPref).setVisible(false);
+    }
+
+    @Test
     public void macAddressPref_shouldHaveDetailTextSet() {
         displayAndResume();