diff options
author | TreeHugger Robot <treehugger-gerrit@google.com> | 2020-04-24 08:32:55 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2020-04-24 08:32:55 +0000 |
commit | fc9e8316cd8b3f97e994815f5fe692c894f38e59 (patch) | |
tree | f8f9fa0e3b8f379f81603a614c5a3fb574202b0c /libs/WifiTrackerLib/src | |
parent | 4564b7cda120fee09a01bc6ce3982cb2c5149931 (diff) | |
parent | c453826dcd7b1c4278fc14614a1e75635748fff3 (diff) | |
download | frameworks_opt_net_wifi-fc9e8316cd8b3f97e994815f5fe692c894f38e59.tar.gz frameworks_opt_net_wifi-fc9e8316cd8b3f97e994815f5fe692c894f38e59.tar.bz2 frameworks_opt_net_wifi-fc9e8316cd8b3f97e994815f5fe692c894f38e59.zip |
Merge "[Wi-Fi] Add IMSI privacy protection warning summary" into rvc-dev
Diffstat (limited to 'libs/WifiTrackerLib/src')
4 files changed, 68 insertions, 0 deletions
diff --git a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/PasspointWifiEntry.java b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/PasspointWifiEntry.java index 0bcd7ccfb..3b2ad3f33 100644 --- a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/PasspointWifiEntry.java +++ b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/PasspointWifiEntry.java @@ -24,6 +24,7 @@ import static com.android.wifitrackerlib.Utils.getAutoConnectDescription; import static com.android.wifitrackerlib.Utils.getBestScanResultByLevel; import static com.android.wifitrackerlib.Utils.getCurrentNetworkCapabilitiesInformation; import static com.android.wifitrackerlib.Utils.getDisconnectedStateDescription; +import static com.android.wifitrackerlib.Utils.getImsiProtectionDescription; import static com.android.wifitrackerlib.Utils.getMeteredDescription; import static com.android.wifitrackerlib.Utils.getNetworkDetailedState; import static com.android.wifitrackerlib.Utils.getSecurityTypeFromWifiConfiguration; @@ -179,6 +180,12 @@ public class PasspointWifiEntry extends WifiEntry { } @Override + public CharSequence getSecondSummary() { + return getConnectedState() == CONNECTED_STATE_CONNECTED + ? getImsiProtectionDescription(mContext, mWifiConfig) : ""; + } + + @Override public int getLevel() { return mLevel; } diff --git a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/StandardWifiEntry.java b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/StandardWifiEntry.java index bc164bf1d..b6afa984a 100644 --- a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/StandardWifiEntry.java +++ b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/StandardWifiEntry.java @@ -28,6 +28,7 @@ import static com.android.wifitrackerlib.Utils.getBestScanResultByLevel; import static com.android.wifitrackerlib.Utils.getCarrierNameForSubId; import static com.android.wifitrackerlib.Utils.getCurrentNetworkCapabilitiesInformation; import static com.android.wifitrackerlib.Utils.getDisconnectedStateDescription; +import static com.android.wifitrackerlib.Utils.getImsiProtectionDescription; import static com.android.wifitrackerlib.Utils.getMeteredDescription; import static com.android.wifitrackerlib.Utils.getNetworkDetailedState; import static com.android.wifitrackerlib.Utils.getSecurityTypeFromWifiConfiguration; @@ -273,6 +274,12 @@ public class StandardWifiEntry extends WifiEntry { } @Override + public CharSequence getSecondSummary() { + return getConnectedState() == CONNECTED_STATE_CONNECTED + ? getImsiProtectionDescription(mContext, getWifiConfiguration()) : ""; + } + + @Override public int getLevel() { return mLevel; } diff --git a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/Utils.java b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/Utils.java index 382fe02c4..5cdecd48e 100644 --- a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/Utils.java +++ b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/Utils.java @@ -48,11 +48,18 @@ import android.telephony.CarrierConfigManager; import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; +import android.text.Annotation; +import android.text.SpannableString; +import android.text.SpannableStringBuilder; import android.text.TextUtils; +import android.text.style.ClickableSpan; +import android.view.View; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import com.android.settingslib.HelpUtils; + import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; @@ -566,4 +573,46 @@ class Utils { return (bundle.getInt(CarrierConfigManager.IMSI_KEY_AVAILABILITY_INT) & TelephonyManager.KEY_TYPE_WLAN) != 0; } + + static CharSequence getImsiProtectionDescription(Context context, + @Nullable WifiConfiguration wifiConfig) { + if (context == null || wifiConfig == null || !isSimCredential(wifiConfig)) { + return ""; + } + + int subId = getSubIdForConfig(context, wifiConfig); + if (subId == SubscriptionManager.INVALID_SUBSCRIPTION_ID + || isImsiPrivacyProtectionProvided(context, subId)) { + return ""; + } + + // IMSI protection is not provided, return warning message. + return linkifyAnnotation(context, context.getText(R.string.imsi_protection_warning), "url", + context.getString(R.string.help_url_imsi_protection)); + } + + /** Find the annotation of specified id in rawText and linkify it with helpUriString. */ + static CharSequence linkifyAnnotation(Context context, CharSequence rawText, String id, + String helpUriString) { + SpannableString spannableText = new SpannableString(rawText); + Annotation[] annotations = spannableText.getSpans(0, spannableText.length(), + Annotation.class); + + for (Annotation annotation : annotations) { + if (TextUtils.equals(annotation.getValue(), id)) { + SpannableStringBuilder builder = new SpannableStringBuilder(spannableText); + ClickableSpan link = new ClickableSpan() { + @Override + public void onClick(View view) { + view.startActivityForResult(HelpUtils.getHelpIntent(context, helpUriString, + view.getClass().getName()), 0); + } + }; + builder.setSpan(link, spannableText.getSpanStart(annotation), + spannableText.getSpanEnd(annotation), spannableText.getSpanFlags(link)); + return builder; + } + } + return rawText; + } } diff --git a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiEntry.java b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiEntry.java index 78b339bf2..989c764aa 100644 --- a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiEntry.java +++ b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/WifiEntry.java @@ -246,6 +246,11 @@ public abstract class WifiEntry implements Comparable<WifiEntry> { return getSummary(true /* concise */); } + /** Returns the second summary, it's for additional information of the WifiEntry */ + public CharSequence getSecondSummary() { + return ""; + } + /** * Returns the display summary. * @param concise Whether to show more information. e.g., verbose logging. |