Merge "Improve the wifi description for the case of private DNS broken"
diff --git a/src/com/android/settings/wifi/details/WifiDetailPreferenceController.java b/src/com/android/settings/wifi/details/WifiDetailPreferenceController.java
index 5e49b2e..ca2caa3 100644
--- a/src/com/android/settings/wifi/details/WifiDetailPreferenceController.java
+++ b/src/com/android/settings/wifi/details/WifiDetailPreferenceController.java
@@ -235,14 +235,28 @@
return mNetworkCapabilities.hasCapability(cap) != nc.hasCapability(cap);
}
+ private boolean hasPrivateDnsStatusChanged(NetworkCapabilities nc) {
+ // If this is the first time that WifiDetailPreferenceController gets
+ // NetworkCapabilities, report that something has changed and assign nc to
+ // mNetworkCapabilities in onCapabilitiesChanged. Note that the NetworkCapabilities
+ // from onCapabilitiesChanged() will never be null, so calling
+ // mNetworkCapabilities.isPrivateDnsBroken() would be safe next time.
+ if (mNetworkCapabilities == null) {
+ return true;
+ }
+
+ return mNetworkCapabilities.isPrivateDnsBroken() != nc.isPrivateDnsBroken();
+ }
+
@Override
public void onCapabilitiesChanged(Network network, NetworkCapabilities nc) {
// If the network just validated or lost Internet access or detected partial internet
- // connectivity, refresh network state. Don't do this on every NetworkCapabilities
- // change because refreshNetworkState sends IPCs to the system server from the UI
- // thread, which can cause jank.
+ // connectivity or private dns was broken, refresh network state. Don't do this on
+ // every NetworkCapabilities change because refreshEntityHeader sends IPCs to the
+ // system server from the UI thread, which can cause jank.
if (network.equals(mNetwork) && !nc.equals(mNetworkCapabilities)) {
- if (hasCapabilityChanged(nc, NET_CAPABILITY_VALIDATED)
+ if (hasPrivateDnsStatusChanged(nc)
+ || hasCapabilityChanged(nc, NET_CAPABILITY_VALIDATED)
|| hasCapabilityChanged(nc, NET_CAPABILITY_CAPTIVE_PORTAL)
|| hasCapabilityChanged(nc, NET_CAPABILITY_PARTIAL_CONNECTIVITY)) {
mAccessPoint.update(mWifiConfig, mWifiInfo, mNetworkInfo);
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 9a1dd4c..fc682b1 100644
--- a/tests/robotests/src/com/android/settings/wifi/details/WifiDetailPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/details/WifiDetailPreferenceControllerTest.java
@@ -993,6 +993,14 @@
updateNetworkCapabilities(nc);
inOrder.verify(mockHeaderController).setSummary(summary);
+ // UI will be refreshed when private DNS is broken.
+ summary = "Private DNS server cannot be accessed";
+ when(mockAccessPoint.getSettingsSummary(true /* convertSavedAsDisconnected */))
+ .thenReturn(summary);
+ nc.setPrivateDnsBroken(true);
+ updateNetworkCapabilities(nc);
+ inOrder.verify(mockHeaderController).setSummary(summary);
+
// UI will be refreshed when device connects to a partial connectivity network.
summary = "Limited connection";
when(mockAccessPoint.getSettingsSummary(true /*convertSavedAsDisconnected*/))