Merge "Modify dialog message for partial connectivity"
This commit is contained in:
@@ -340,7 +340,7 @@
|
||||
android:clearTaskOnLaunch="true"
|
||||
android:excludeFromRecents="true"
|
||||
android:exported="true"
|
||||
android:permission="android.permission.CONNECTIVITY_INTERNAL"
|
||||
android:permission="android.permission.NETWORK_STACK"
|
||||
android:theme="@*android:style/Theme.DeviceDefault.Light.Dialog.Alert">
|
||||
<intent-filter>
|
||||
<action android:name="android.net.conn.PROMPT_UNVALIDATED" />
|
||||
|
@@ -2220,6 +2220,8 @@
|
||||
|
||||
<!-- Dialog text to tell the user that the selected network does not have Internet access. -->
|
||||
<string name="no_internet_access_text">This network has no internet access. Stay connected?</string>
|
||||
<!-- Dialog text to tell the user that the selected network has incomplete Internet access. [CHAR LIMIT=100] -->
|
||||
<string name="partial_connectivity_text">Some apps and services may not work due to limited connectivity. Use anyway?</string>
|
||||
<string name="no_internet_access_remember">Don\u2019t ask again for this network</string>
|
||||
|
||||
<!-- Dialog text to tell the user that the selected network has lost Internet access, and asking the user whether they want to avoid this network. -->
|
||||
|
@@ -17,6 +17,7 @@
|
||||
package com.android.settings.wifi;
|
||||
|
||||
import static android.net.ConnectivityManager.ACTION_PROMPT_LOST_VALIDATION;
|
||||
import static android.net.ConnectivityManager.ACTION_PROMPT_PARTIAL_CONNECTIVITY;
|
||||
import static android.net.ConnectivityManager.ACTION_PROMPT_UNVALIDATED;
|
||||
import static android.net.NetworkCapabilities.NET_CAPABILITY_VALIDATED;
|
||||
|
||||
@@ -53,8 +54,9 @@ public final class WifiNoInternetDialog extends AlertActivity implements
|
||||
private String mAction;
|
||||
|
||||
private boolean isKnownAction(Intent intent) {
|
||||
return intent.getAction().equals(ACTION_PROMPT_UNVALIDATED) ||
|
||||
intent.getAction().equals(ACTION_PROMPT_LOST_VALIDATION);
|
||||
return intent.getAction().equals(ACTION_PROMPT_UNVALIDATED)
|
||||
|| intent.getAction().equals(ACTION_PROMPT_LOST_VALIDATION)
|
||||
|| intent.getAction().equals(ACTION_PROMPT_PARTIAL_CONNECTIVITY);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -131,6 +133,11 @@ public final class WifiNoInternetDialog extends AlertActivity implements
|
||||
ap.mMessage = getString(R.string.no_internet_access_text);
|
||||
ap.mPositiveButtonText = getString(R.string.yes);
|
||||
ap.mNegativeButtonText = getString(R.string.no);
|
||||
} else if (ACTION_PROMPT_PARTIAL_CONNECTIVITY.equals(mAction)) {
|
||||
ap.mTitle = mNetworkName;
|
||||
ap.mMessage = getString(R.string.partial_connectivity_text);
|
||||
ap.mPositiveButtonText = getString(R.string.yes);
|
||||
ap.mNegativeButtonText = getString(R.string.no);
|
||||
} else {
|
||||
ap.mTitle = getString(R.string.lost_internet_access_title);
|
||||
ap.mMessage = getString(R.string.lost_internet_access_text);
|
||||
@@ -146,7 +153,8 @@ public final class WifiNoInternetDialog extends AlertActivity implements
|
||||
ap.mView = checkbox;
|
||||
mAlwaysAllow = (CheckBox) checkbox.findViewById(com.android.internal.R.id.alwaysUse);
|
||||
|
||||
if (ACTION_PROMPT_UNVALIDATED.equals(mAction)) {
|
||||
if (ACTION_PROMPT_UNVALIDATED.equals(mAction)
|
||||
|| ACTION_PROMPT_PARTIAL_CONNECTIVITY.equals(mAction)) {
|
||||
mAlwaysAllow.setText(getString(R.string.no_internet_access_remember));
|
||||
} else {
|
||||
mAlwaysAllow.setText(getString(R.string.lost_internet_access_persist));
|
||||
@@ -174,6 +182,11 @@ public final class WifiNoInternetDialog extends AlertActivity implements
|
||||
final boolean accept = (which == BUTTON_POSITIVE);
|
||||
action = (accept ? "Connect" : "Ignore");
|
||||
mCM.setAcceptUnvalidated(mNetwork, accept, always);
|
||||
} else if (ACTION_PROMPT_PARTIAL_CONNECTIVITY.equals(mAction)) {
|
||||
what = "PARTIAL_CONNECTIVITY";
|
||||
final boolean accept = (which == BUTTON_POSITIVE);
|
||||
action = (accept ? "Connect" : "Ignore");
|
||||
mCM.setAcceptPartialConnectivity(mNetwork, accept, always);
|
||||
} else {
|
||||
what = "LOST_INTERNET";
|
||||
final boolean avoid = (which == BUTTON_POSITIVE);
|
||||
|
@@ -16,6 +16,7 @@
|
||||
package com.android.settings.wifi.details;
|
||||
|
||||
import static android.net.NetworkCapabilities.NET_CAPABILITY_CAPTIVE_PORTAL;
|
||||
import static android.net.NetworkCapabilities.NET_CAPABILITY_PARTIAL_CONNECTIVITY;
|
||||
import static android.net.NetworkCapabilities.NET_CAPABILITY_VALIDATED;
|
||||
import static android.net.NetworkCapabilities.TRANSPORT_WIFI;
|
||||
|
||||
@@ -210,12 +211,14 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController
|
||||
|
||||
@Override
|
||||
public void onCapabilitiesChanged(Network network, NetworkCapabilities nc) {
|
||||
// If the network just validated or lost Internet access, refresh network state.
|
||||
// Don't do this on every NetworkCapabilities change because update accesspoint notify
|
||||
// changed for accesspoint changed on the main thread, which can cause jank.
|
||||
// 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.
|
||||
if (network.equals(mNetwork) && !nc.equals(mNetworkCapabilities)) {
|
||||
if (hasCapabilityChanged(nc, NET_CAPABILITY_VALIDATED) ||
|
||||
hasCapabilityChanged(nc, NET_CAPABILITY_CAPTIVE_PORTAL)) {
|
||||
if (hasCapabilityChanged(nc, NET_CAPABILITY_VALIDATED)
|
||||
|| hasCapabilityChanged(nc, NET_CAPABILITY_CAPTIVE_PORTAL)
|
||||
|| hasCapabilityChanged(nc, NET_CAPABILITY_PARTIAL_CONNECTIVITY)) {
|
||||
mAccessPoint.update(mWifiConfig, mWifiInfo, mNetworkInfo);
|
||||
refreshEntityHeader();
|
||||
}
|
||||
|
@@ -649,6 +649,19 @@ public class WifiDetailPreferenceControllerTest {
|
||||
nc.removeCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED);
|
||||
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()).thenReturn(summary);
|
||||
nc.addCapability(NetworkCapabilities.NET_CAPABILITY_PARTIAL_CONNECTIVITY);
|
||||
updateNetworkCapabilities(nc);
|
||||
inOrder.verify(mockHeaderController).setSummary(summary);
|
||||
|
||||
// Although UI will be refreshed when network become validated. The Settings should
|
||||
// continue to display "Limited connection" if network still provides partial connectivity.
|
||||
nc.addCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED);
|
||||
updateNetworkCapabilities(nc);
|
||||
inOrder.verify(mockHeaderController).setSummary(summary);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
Reference in New Issue
Block a user