Change reference to Bundle.filterValues

Add to TelephonyUtils and replace method call

Test: atest FrameworksTelephonyTests:ImsCallProfileTest
Bug: 140761560
Change-Id: I5cbc7f771f8443835da7acc9e4330ca238d0f929
Merged-In: I5cbc7f771f8443835da7acc9e4330ca238d0f929
This commit is contained in:
Sarah Chin
2019-12-19 14:14:30 -08:00
parent 69615f86df
commit c8905d008d
2 changed files with 31 additions and 1 deletions

View File

@@ -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 "

View File

@@ -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;
}
}