diff options
author | erfanian <erfanian@google.com> | 2017-07-11 12:24:52 -0700 |
---|---|---|
committer | Eric Erfanian <erfanian@google.com> | 2017-07-12 09:39:33 -0700 |
commit | aa1155809b3b43be345f7219960551918fd6f034 (patch) | |
tree | dae112a33b7380001f8358b6238474975cbcd4d6 /java/com/android/dialer/callintent/CallIntentParser.java | |
parent | 4f85fff264936b2060be9f7f402b35f22eb6caf7 (diff) |
Remove obsolete wrapper bundle from CallIntent Bundle.
Add additional null checks during deseriailzation.
Bug: 63575857
Test: unit tests, on device
PiperOrigin-RevId: 161564824
Change-Id: I54f52e12397adb4473b523325f8c006ff534fbd9
Diffstat (limited to 'java/com/android/dialer/callintent/CallIntentParser.java')
-rw-r--r-- | java/com/android/dialer/callintent/CallIntentParser.java | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/java/com/android/dialer/callintent/CallIntentParser.java b/java/com/android/dialer/callintent/CallIntentParser.java index 01afce06d..336adb66b 100644 --- a/java/com/android/dialer/callintent/CallIntentParser.java +++ b/java/com/android/dialer/callintent/CallIntentParser.java @@ -19,12 +19,13 @@ package com.android.dialer.callintent; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; +import com.android.dialer.common.LogUtil; import com.android.dialer.protos.ProtoParsers; /** Parses data for a call extra to get any dialer specific app data. */ public class CallIntentParser { - static final String EXTRA_CALL_SPECIFIC_APP_DATA_WRAPPER = - "com.android.dialer.callintent.CALL_SPECIFIC_APP_DATA_WRAPPER"; + + @Nullable public static CallSpecificAppData getCallSpecificAppData(@Nullable Bundle extras) { if (extras == null) { @@ -35,19 +36,20 @@ public class CallIntentParser { return null; } + if (extras.getByteArray(Constants.EXTRA_CALL_SPECIFIC_APP_DATA) == null) { + LogUtil.i( + "CallIntentParser.getCallSpecificAppData", + "unexpected null byte array for call specific app data proto"); + return null; + } + return ProtoParsers.getTrusted( - extras.getBundle(Constants.EXTRA_CALL_SPECIFIC_APP_DATA), - EXTRA_CALL_SPECIFIC_APP_DATA_WRAPPER, - CallSpecificAppData.getDefaultInstance()); + extras, Constants.EXTRA_CALL_SPECIFIC_APP_DATA, CallSpecificAppData.getDefaultInstance()); } public static void putCallSpecificAppData( @NonNull Bundle extras, @NonNull CallSpecificAppData callSpecificAppData) { - // We wrap our bundle for consumers that may not have access to ProtoParsers in their class - // loader. This is necessary to prevent ClassNotFoundException's - Bundle wrapperBundle = new Bundle(); - ProtoParsers.put(wrapperBundle, EXTRA_CALL_SPECIFIC_APP_DATA_WRAPPER, callSpecificAppData); - extras.putBundle(Constants.EXTRA_CALL_SPECIFIC_APP_DATA, wrapperBundle); + ProtoParsers.put(extras, Constants.EXTRA_CALL_SPECIFIC_APP_DATA, callSpecificAppData); } private CallIntentParser() {} |