diff options
author | 2019-12-20 22:38:46 +0000 | |
---|---|---|
committer | 2019-12-20 22:38:46 +0000 | |
commit | 43079efe9f10302f2382b72ec67123e7dfb3cd6f (patch) | |
tree | 468e4aa7332be0633c44cf6acdf9633b93a0594e | |
parent | 8d0af4a6a919c3c1661860d95af7af53a13a688b (diff) | |
parent | 16e27b9a3e4874dd9e6fa986fe5796b31b3edeaa (diff) |
Merge "Change reference to Bundle.filterValues" am: 598b5d5340 am: 16e27b9a3e
Change-Id: I7b2eaa1c24d15e18287d5c2c313b91c54b324276
-rw-r--r-- | telephony/java/android/telephony/ims/ImsCallProfile.java | 3 | ||||
-rw-r--r-- | telephony/java/com/android/internal/telephony/util/TelephonyUtils.java | 29 |
2 files changed, 31 insertions, 1 deletions
diff --git a/telephony/java/android/telephony/ims/ImsCallProfile.java b/telephony/java/android/telephony/ims/ImsCallProfile.java index b0ff5dc351e2..87e53919c2a1 100644 --- a/telephony/java/android/telephony/ims/ImsCallProfile.java +++ b/telephony/java/android/telephony/ims/ImsCallProfile.java @@ -32,6 +32,7 @@ import android.util.Log; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.telephony.PhoneConstants; +import com.android.internal.telephony.util.TelephonyUtils; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @@ -833,7 +834,7 @@ public final class ImsCallProfile implements Parcelable { } int startSize = extras.size(); - Bundle filtered = extras.filterValues(); + Bundle filtered = TelephonyUtils.filterValues(extras); int endSize = filtered.size(); if (startSize != endSize) { Log.i(TAG, "maybeCleanseExtras: " + (startSize - endSize) + " extra values were " diff --git a/telephony/java/com/android/internal/telephony/util/TelephonyUtils.java b/telephony/java/com/android/internal/telephony/util/TelephonyUtils.java index a28d65c9abb6..0498d7c31406 100644 --- a/telephony/java/com/android/internal/telephony/util/TelephonyUtils.java +++ b/telephony/java/com/android/internal/telephony/util/TelephonyUtils.java @@ -22,6 +22,8 @@ import android.content.pm.ComponentInfo; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.os.Binder; +import android.os.Bundle; +import android.os.PersistableBundle; import android.os.RemoteException; import android.os.SystemProperties; @@ -71,4 +73,31 @@ public final class TelephonyUtils { if (resolveInfo.providerInfo != null) return resolveInfo.providerInfo; throw new IllegalStateException("Missing ComponentInfo!"); } + + /** + * Filter values in bundle to only basic types. + */ + public static Bundle filterValues(Bundle bundle) { + Bundle ret = new Bundle(bundle); + for (String key : bundle.keySet()) { + Object value = bundle.get(key); + if ((value instanceof Integer) || (value instanceof Long) + || (value instanceof Double) || (value instanceof String) + || (value instanceof int[]) || (value instanceof long[]) + || (value instanceof double[]) || (value instanceof String[]) + || (value instanceof PersistableBundle) || (value == null) + || (value instanceof Boolean) || (value instanceof boolean[])) { + continue; + } + if (value instanceof Bundle) { + ret.putBundle(key, filterValues((Bundle) value)); + continue; + } + if (value.getClass().getName().startsWith("android.")) { + continue; + } + ret.remove(key); + } + return ret; + } } |