diff --git a/res/layout/wifi_status_test.xml b/res/layout/wifi_status_test.xml
index d7ba0992291..e4de1f34258 100644
--- a/res/layout/wifi_status_test.xml
+++ b/res/layout/wifi_status_test.xml
@@ -90,10 +90,16 @@
-
+
-
-
+
+
+
+
+
+
+
+
diff --git a/res/values/strings.xml b/res/values/strings.xml
index c80ba95735f..1bf45b5183e 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -1832,8 +1832,10 @@
Sign in
Tap here to sign in to network
-
- %1$d Mbps
+
+ %1$d Mbps
+
+ %1$d Mbps
%s wants to turn on Wi-Fi
@@ -2028,8 +2030,10 @@
Signal strength
Status
-
- Link speed
+
+ Transmit link speed
+
+ Receive link speed
Frequency
@@ -2381,7 +2385,10 @@
Network ID:
- Link speed:
+ Transmit link speed:
+
+ Receive link speed:
Scan results:
diff --git a/res/xml/wifi_network_details_fragment.xml b/res/xml/wifi_network_details_fragment.xml
index 70bd1944309..7c542d851aa 100644
--- a/res/xml/wifi_network_details_fragment.xml
+++ b/res/xml/wifi_network_details_fragment.xml
@@ -96,8 +96,13 @@
android:selectable="false"
settings:enableCopying="true"/>
+
diff --git a/src/com/android/settings/wifi/WifiConfigController.java b/src/com/android/settings/wifi/WifiConfigController.java
index 67f59ea5de3..acf7474eb0a 100644
--- a/src/com/android/settings/wifi/WifiConfigController.java
+++ b/src/com/android/settings/wifi/WifiConfigController.java
@@ -363,9 +363,14 @@ public class WifiConfigController implements TextWatcher,
}
WifiInfo info = mAccessPoint.getInfo();
- if (info != null && info.getLinkSpeed() != -1) {
- addRow(group, R.string.wifi_speed, String.format(
- res.getString(R.string.link_speed), info.getLinkSpeed()));
+ if (info != null && info.getTxLinkSpeedMbps() != -1) {
+ addRow(group, R.string.tx_wifi_speed, String.format(
+ res.getString(R.string.tx_link_speed), info.getTxLinkSpeedMbps()));
+ }
+
+ if (info != null && info.getRxLinkSpeedMbps() != -1) {
+ addRow(group, R.string.rx_wifi_speed, String.format(
+ res.getString(R.string.rx_link_speed), info.getRxLinkSpeedMbps()));
}
if (info != null && info.getFrequency() != -1) {
diff --git a/src/com/android/settings/wifi/WifiStatusTest.java b/src/com/android/settings/wifi/WifiStatusTest.java
index 4c3873cbb10..6c1a3fc7865 100644
--- a/src/com/android/settings/wifi/WifiStatusTest.java
+++ b/src/com/android/settings/wifi/WifiStatusTest.java
@@ -64,7 +64,8 @@ public class WifiStatusTest extends Activity {
private TextView mIPAddr;
private TextView mMACAddr;
private TextView mNetworkId;
- private TextView mLinkSpeed;
+ private TextView mTxLinkSpeed;
+ private TextView mRxLinkSpeed;
private TextView mScanList;
@@ -142,7 +143,8 @@ public class WifiStatusTest extends Activity {
mIPAddr = (TextView) findViewById(R.id.ipaddr);
mMACAddr = (TextView) findViewById(R.id.macaddr);
mNetworkId = (TextView) findViewById(R.id.networkid);
- mLinkSpeed = (TextView) findViewById(R.id.link_speed);
+ mTxLinkSpeed = (TextView) findViewById(R.id.tx_link_speed);
+ mRxLinkSpeed = (TextView) findViewById(R.id.rx_link_speed);
mScanList = (TextView) findViewById(R.id.scan_list);
@@ -186,7 +188,8 @@ public class WifiStatusTest extends Activity {
append((ipAddr >>>= 8) & 0xff);
mIPAddr.setText(ipBuf);
- mLinkSpeed.setText(String.valueOf(wifiInfo.getLinkSpeed())+" Mbps");
+ mTxLinkSpeed.setText(String.valueOf(wifiInfo.getTxLinkSpeedMbps())+" Mbps");
+ mRxLinkSpeed.setText(String.valueOf(wifiInfo.getRxLinkSpeedMbps())+" Mbps");
mMACAddr.setText(wifiInfo.getMacAddress());
mNetworkId.setText(String.valueOf(wifiInfo.getNetworkId()));
mRSSI.setText(String.valueOf(wifiInfo.getRssi()));
diff --git a/src/com/android/settings/wifi/details/WifiDetailPreferenceController.java b/src/com/android/settings/wifi/details/WifiDetailPreferenceController.java
index fe71991d9a5..4387459845c 100644
--- a/src/com/android/settings/wifi/details/WifiDetailPreferenceController.java
+++ b/src/com/android/settings/wifi/details/WifiDetailPreferenceController.java
@@ -99,7 +99,9 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController
@VisibleForTesting
static final String KEY_SIGNAL_STRENGTH_PREF = "signal_strength";
@VisibleForTesting
- static final String KEY_LINK_SPEED = "link_speed";
+ static final String KEY_TX_LINK_SPEED = "tx_link_speed";
+ @VisibleForTesting
+ static final String KEY_RX_LINK_SPEED = "rx_link_speed";
@VisibleForTesting
static final String KEY_FREQUENCY_PREF = "frequency";
@VisibleForTesting
@@ -138,7 +140,8 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController
private ActionButtonsPreference mButtonsPref;
private EntityHeaderController mEntityHeaderController;
private Preference mSignalStrengthPref;
- private Preference mLinkSpeedPref;
+ private Preference mTxLinkSpeedPref;
+ private Preference mRxLinkSpeedPref;
private Preference mFrequencyPref;
private Preference mSecurityPref;
private Preference mMacAddressPref;
@@ -291,7 +294,8 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController
.setButton3OnClickListener(view -> shareNetwork());
mSignalStrengthPref = screen.findPreference(KEY_SIGNAL_STRENGTH_PREF);
- mLinkSpeedPref = screen.findPreference(KEY_LINK_SPEED);
+ mTxLinkSpeedPref = screen.findPreference(KEY_TX_LINK_SPEED);
+ mRxLinkSpeedPref = screen.findPreference(KEY_RX_LINK_SPEED);
mFrequencyPref = screen.findPreference(KEY_FREQUENCY_PREF);
mSecurityPref = screen.findPreference(KEY_SECURITY_PREF);
@@ -367,11 +371,17 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController
// MAC Address Pref
mMacAddressPref.setSummary(mWifiInfo.getMacAddress());
- // Link Speed Pref
- int linkSpeedMbps = mWifiInfo.getLinkSpeed();
- mLinkSpeedPref.setVisible(linkSpeedMbps >= 0);
- mLinkSpeedPref.setSummary(mContext.getString(
- R.string.link_speed, mWifiInfo.getLinkSpeed()));
+ // Transmit Link Speed Pref
+ int txLinkSpeedMbps = mWifiInfo.getTxLinkSpeedMbps();
+ mTxLinkSpeedPref.setVisible(txLinkSpeedMbps >= 0);
+ mTxLinkSpeedPref.setSummary(mContext.getString(
+ R.string.tx_link_speed, mWifiInfo.getTxLinkSpeedMbps()));
+
+ // Receive Link Speed Pref
+ int rxLinkSpeedMbps = mWifiInfo.getRxLinkSpeedMbps();
+ mRxLinkSpeedPref.setVisible(rxLinkSpeedMbps >= 0);
+ mRxLinkSpeedPref.setSummary(mContext.getString(
+ R.string.rx_link_speed, mWifiInfo.getRxLinkSpeedMbps()));
// Frequency Pref
final int frequency = mWifiInfo.getFrequency();
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 7e1d389b385..e80e931d9e6 100644
--- a/tests/robotests/src/com/android/settings/wifi/details/WifiDetailPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/details/WifiDetailPreferenceControllerTest.java
@@ -100,7 +100,8 @@ public class WifiDetailPreferenceControllerTest {
private static final int LEVEL = 1;
private static final int RSSI = -55;
- private static final int LINK_SPEED = 123;
+ private static final int TX_LINK_SPEED = 123;
+ private static final int RX_LINK_SPEED = 54;
private static final String MAC_ADDRESS = WifiInfo.DEFAULT_MAC_ADDRESS;
private static final String SECURITY = "None";
@@ -142,7 +143,9 @@ public class WifiDetailPreferenceControllerTest {
@Mock
private Preference mockSignalStrengthPref;
@Mock
- private Preference mockLinkSpeedPref;
+ private Preference mockTxLinkSpeedPref;
+ @Mock
+ private Preference mockRxLinkSpeedPref;
@Mock
private Preference mockFrequencyPref;
@Mock
@@ -247,7 +250,8 @@ public class WifiDetailPreferenceControllerTest {
when(mockButtonsPref.setButton1OnClickListener(mForgetClickListener.capture()))
.thenReturn(mockButtonsPref);
- when(mockWifiInfo.getLinkSpeed()).thenReturn(LINK_SPEED);
+ when(mockWifiInfo.getTxLinkSpeedMbps()).thenReturn(TX_LINK_SPEED);
+ when(mockWifiInfo.getRxLinkSpeedMbps()).thenReturn(RX_LINK_SPEED);
when(mockWifiInfo.getRssi()).thenReturn(RSSI);
when(mockWifiInfo.getMacAddress()).thenReturn(MAC_ADDRESS);
when(mockWifiManager.getConnectionInfo()).thenReturn(mockWifiInfo);
@@ -294,8 +298,10 @@ public class WifiDetailPreferenceControllerTest {
.thenReturn(mockButtonsPref);
when(mockScreen.findPreference(WifiDetailPreferenceController.KEY_SIGNAL_STRENGTH_PREF))
.thenReturn(mockSignalStrengthPref);
- when(mockScreen.findPreference(WifiDetailPreferenceController.KEY_LINK_SPEED))
- .thenReturn(mockLinkSpeedPref);
+ when(mockScreen.findPreference(WifiDetailPreferenceController.KEY_TX_LINK_SPEED))
+ .thenReturn(mockTxLinkSpeedPref);
+ when(mockScreen.findPreference(WifiDetailPreferenceController.KEY_RX_LINK_SPEED))
+ .thenReturn(mockRxLinkSpeedPref);
when(mockScreen.findPreference(WifiDetailPreferenceController.KEY_FREQUENCY_PREF))
.thenReturn(mockFrequencyPref);
when(mockScreen.findPreference(WifiDetailPreferenceController.KEY_SECURITY_PREF))
@@ -414,20 +420,38 @@ public class WifiDetailPreferenceControllerTest {
@Test
public void linkSpeedPref_shouldHaveDetailTextSet() {
- String expectedLinkSpeed = mContext.getString(R.string.link_speed, LINK_SPEED);
+ String expectedLinkSpeed = mContext.getString(R.string.tx_link_speed, TX_LINK_SPEED);
displayAndResume();
- verify(mockLinkSpeedPref).setSummary(expectedLinkSpeed);
+ verify(mockTxLinkSpeedPref).setSummary(expectedLinkSpeed);
}
@Test
public void linkSpeedPref_shouldNotShowIfNotSet() {
- when(mockWifiInfo.getLinkSpeed()).thenReturn(-1);
+ when(mockWifiInfo.getTxLinkSpeedMbps()).thenReturn(-1);
displayAndResume();
- verify(mockLinkSpeedPref).setVisible(false);
+ verify(mockTxLinkSpeedPref).setVisible(false);
+ }
+
+ @Test
+ public void rxLinkSpeedPref_shouldHaveDetailTextSet() {
+ String expectedLinkSpeed = mContext.getString(R.string.rx_link_speed, RX_LINK_SPEED);
+
+ displayAndResume();
+
+ verify(mockRxLinkSpeedPref).setSummary(expectedLinkSpeed);
+ }
+
+ @Test
+ public void rxLinkSpeedPref_shouldNotShowIfNotSet() {
+ when(mockWifiInfo.getRxLinkSpeedMbps()).thenReturn(-1);
+
+ displayAndResume();
+
+ verify(mockRxLinkSpeedPref).setVisible(false);
}
@Test