From 5c52bb885d49475ad8c8ed2d49fc669c9d865431 Mon Sep 17 00:00:00 2001 From: Tyler Gunn Date: Tue, 9 Dec 2014 15:09:38 -0800 Subject: Fix potential NPE when generating accessibility text. Traced through the original bug report; the problem is that a call to TextUtils.expandTemplate was being made with a null 2nd parameter. I traced through the callers to find out where a null could be introduced and I was unable to identify a potential source. This change introduces a last-ditch null check to protect against problems upstream. Bug: 18684529 Change-Id: I7b608dfedf052d6933e94d1f23a658763b66059a --- .../dialer/calllog/CallLogListItemHelper.java | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/src/com/android/dialer/calllog/CallLogListItemHelper.java b/src/com/android/dialer/calllog/CallLogListItemHelper.java index 793a1755c..77ad333d9 100644 --- a/src/com/android/dialer/calllog/CallLogListItemHelper.java +++ b/src/com/android/dialer/calllog/CallLogListItemHelper.java @@ -21,6 +21,7 @@ import android.content.res.Resources; import android.provider.CallLog.Calls; import android.text.SpannableStringBuilder; import android.text.TextUtils; +import android.util.Log; import com.android.contacts.common.CallUtil; import com.android.dialer.PhoneCallDetails; @@ -31,6 +32,8 @@ import com.android.dialer.R; * Helper class to fill in the views of a call log entry. */ /* package */class CallLogListItemHelper { + private static final String TAG = "CallLogListItemHelper"; + /** Helper for populating the details of a phone call. */ private final PhoneCallDetailsHelper mPhoneCallDetailsHelper; /** Helper for handling phone numbers. */ @@ -79,25 +82,30 @@ import com.android.dialer.R; * @param views The views associated with the current call log entry. */ public void setActionContentDescriptions(CallLogListItemViews views) { + if (views.nameOrNumber == null) { + Log.e(TAG, "setActionContentDescriptions; name or number is null."); + } + + // Calling expandTemplate with a null parameter will cause a NullPointerException. + // Although we don't expect a null name or number, it is best to protect against it. + CharSequence nameOrNumber = views.nameOrNumber == null ? "" : views.nameOrNumber; + views.callBackButtonView.setContentDescription( TextUtils.expandTemplate( - mResources.getString(R.string.description_call_back_action), - views.nameOrNumber)); + mResources.getString(R.string.description_call_back_action), nameOrNumber)); views.videoCallButtonView.setContentDescription( TextUtils.expandTemplate( mResources.getString(R.string.description_video_call_action), - views.nameOrNumber)); + nameOrNumber)); views.voicemailButtonView.setContentDescription( TextUtils.expandTemplate( - mResources.getString(R.string.description_voicemail_action), - views.nameOrNumber)); + mResources.getString(R.string.description_voicemail_action), nameOrNumber)); views.detailsButtonView.setContentDescription( TextUtils.expandTemplate( - mResources.getString(R.string.description_details_action), - views.nameOrNumber)); + mResources.getString(R.string.description_details_action), nameOrNumber)); } /** -- cgit v1.2.3