From 26f520249eccdcf2352806ba8d6a54bb8e5045a6 Mon Sep 17 00:00:00 2001 From: zachh Date: Fri, 26 Jan 2018 16:28:44 -0800 Subject: Reworked the internals of DialerPhoneNumber. It turns out the storing the libphonenumber representation of the number is not particularly useful because even formatting these objects cannot be done on the main thread. Rather than propagate the requirement of using PhoneNumberUtil (and background threads by extension) in the call log UI, we now just store a dialer-normalized version of the number which contains all information required by the UI in a way that allows us to avoid any background work in the UI code. Bug: 72563861 Test: existing PiperOrigin-RevId: 183463907 Change-Id: I4bdadaccb7a84033b3c72c54fe3833064f587ee3 --- .../dialer/calldetails/CallDetailsActivity.java | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) (limited to 'java/com/android/dialer/calldetails') diff --git a/java/com/android/dialer/calldetails/CallDetailsActivity.java b/java/com/android/dialer/calldetails/CallDetailsActivity.java index bf978ecf3..26b38ed82 100644 --- a/java/com/android/dialer/calldetails/CallDetailsActivity.java +++ b/java/com/android/dialer/calldetails/CallDetailsActivity.java @@ -40,7 +40,6 @@ import android.support.v7.widget.Toolbar; import android.view.View; import android.widget.Toast; import com.android.dialer.CoalescedIds; -import com.android.dialer.DialerPhoneNumber; import com.android.dialer.assisteddialing.ui.AssistedDialingSettingActivity; import com.android.dialer.calldetails.CallDetailsEntries.CallDetailsEntry; import com.android.dialer.callintent.CallInitiationType; @@ -65,13 +64,14 @@ import com.android.dialer.logging.DialerImpression; import com.android.dialer.logging.Logger; import com.android.dialer.logging.UiAction; import com.android.dialer.performancereport.PerformanceReport; -import com.android.dialer.phonenumberproto.DialerPhoneNumberUtil; import com.android.dialer.postcall.PostCall; import com.android.dialer.precall.PreCall; import com.android.dialer.protos.ProtoParsers; import com.google.common.base.Optional; import com.google.common.base.Preconditions; +import com.google.i18n.phonenumbers.NumberParseException; import com.google.i18n.phonenumbers.PhoneNumberUtil; +import com.google.i18n.phonenumbers.Phonenumber.PhoneNumber; import java.lang.ref.WeakReference; import java.util.Collections; import java.util.List; @@ -441,10 +441,17 @@ public class CallDetailsActivity extends AppCompatActivity { @Override public Integer doInBackground(@NonNull String phoneNumber) { - DialerPhoneNumberUtil dialerPhoneNumberUtil = - new DialerPhoneNumberUtil(PhoneNumberUtil.getInstance()); - DialerPhoneNumber parsedNumber = dialerPhoneNumberUtil.parse(phoneNumber, null); - return parsedNumber.getDialerInternalPhoneNumber().getCountryCode(); + PhoneNumber parsedNumber = null; + try { + parsedNumber = PhoneNumberUtil.getInstance().parse(phoneNumber, null); + } catch (NumberParseException e) { + LogUtil.w( + "AssistedDialingNumberParseWorker.doInBackground", + "couldn't parse phone number: " + LogUtil.sanitizePii(phoneNumber), + e); + return 0; + } + return parsedNumber.getCountryCode(); } } -- cgit v1.2.3