summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTreehugger Robot <treehugger-gerrit@google.com>2017-09-07 14:58:52 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2017-09-07 14:58:52 +0000
commit6cd92f57ee71cc36276803807809d0014259b51a (patch)
tree51da6f501246f57d4900c0533f5c773bfe8cd9e4
parent4662229bb3c8053a27b0030a0da359f4d99b042e (diff)
parentcf61ca00e96f7fb723ca2d4406ec24485a60acd1 (diff)
Merge changes I0e8549cf,I12ac7b89,I2c77f0c6,I3ba5795b
* changes: Lazy loading animation of hd icon. Use TelecomManager#isInManagedCall starting from O. Setup SMS filter during activation if legacy mode is used Last contact in search is now visible when dialpad is closed.
-rw-r--r--java/com/android/dialer/app/DialtactsActivity.java2
-rw-r--r--java/com/android/dialer/app/voicemail/VoicemailPlaybackPresenter.java2
-rw-r--r--java/com/android/dialer/callcomposer/CallComposerActivity.java2
-rw-r--r--java/com/android/dialer/dialpadview/DialpadFragment.java2
-rw-r--r--java/com/android/dialer/searchfragment/list/NewSearchFragment.java24
-rw-r--r--java/com/android/dialer/telecom/TelecomUtil.java22
-rw-r--r--java/com/android/incallui/ContactInfoCache.java13
-rw-r--r--java/com/android/incallui/InCallPresenter.java8
-rw-r--r--java/com/android/incallui/ReturnToCallController.java4
-rw-r--r--java/com/android/incallui/StatusBarNotifier.java11
-rw-r--r--java/com/android/incallui/answer/impl/AnswerFragment.java3
-rw-r--r--java/com/android/incallui/contactgrid/ContactGridManager.java2
-rw-r--r--java/com/android/incallui/contactgrid/res/layout/incall_contactgrid_bottom_row.xml1
-rw-r--r--java/com/android/voicemail/impl/ActivationTask.java28
-rw-r--r--java/com/android/voicemail/impl/scheduling/BaseTask.java4
15 files changed, 111 insertions, 17 deletions
diff --git a/java/com/android/dialer/app/DialtactsActivity.java b/java/com/android/dialer/app/DialtactsActivity.java
index 3e6b50cae..a4c075c51 100644
--- a/java/com/android/dialer/app/DialtactsActivity.java
+++ b/java/com/android/dialer/app/DialtactsActivity.java
@@ -1410,7 +1410,7 @@ public class DialtactsActivity extends TransactionSafeActivity
}
private boolean phoneIsInUse() {
- return TelecomUtil.isInCall(this);
+ return TelecomUtil.isInManagedCall(this);
}
private boolean canIntentBeHandled(Intent intent) {
diff --git a/java/com/android/dialer/app/voicemail/VoicemailPlaybackPresenter.java b/java/com/android/dialer/app/voicemail/VoicemailPlaybackPresenter.java
index de4e1cc4a..685357ace 100644
--- a/java/com/android/dialer/app/voicemail/VoicemailPlaybackPresenter.java
+++ b/java/com/android/dialer/app/voicemail/VoicemailPlaybackPresenter.java
@@ -516,7 +516,7 @@ public class VoicemailPlaybackPresenter
mView.disableUiElements();
mIsPrepared = false;
- if (mContext != null && TelecomUtil.isInCall(mContext)) {
+ if (mContext != null && TelecomUtil.isInManagedCall(mContext)) {
handleError(new IllegalStateException("Cannot play voicemail when call is in progress"));
return;
}
diff --git a/java/com/android/dialer/callcomposer/CallComposerActivity.java b/java/com/android/dialer/callcomposer/CallComposerActivity.java
index fa380cc19..4a6cdbbd8 100644
--- a/java/com/android/dialer/callcomposer/CallComposerActivity.java
+++ b/java/com/android/dialer/callcomposer/CallComposerActivity.java
@@ -438,7 +438,7 @@ public class CallComposerActivity extends AppCompatActivity
maybeShowPrivacyToast(data);
if (data.hasImageData()
&& ConfigProviderBindings.get(this).getBoolean("enable_delayed_ec_images", true)
- && !TelecomUtil.isInCall(this)) {
+ && !TelecomUtil.isInManagedCall(this)) {
timeoutHandler.postDelayed(placeTelecomCallRunnable, getRCSTimeoutMillis());
startActivity(
CallPendingActivity.getIntent(
diff --git a/java/com/android/dialer/dialpadview/DialpadFragment.java b/java/com/android/dialer/dialpadview/DialpadFragment.java
index e22250c6f..86a83796e 100644
--- a/java/com/android/dialer/dialpadview/DialpadFragment.java
+++ b/java/com/android/dialer/dialpadview/DialpadFragment.java
@@ -1278,7 +1278,7 @@ public class DialpadFragment extends Fragment
* or ringing or dialing, or on hold).
*/
private boolean isPhoneInUse() {
- return getContext() != null && TelecomUtil.isInCall(getContext());
+ return getContext() != null && TelecomUtil.isInManagedCall(getContext());
}
/** @return true if the phone is a CDMA phone type */
diff --git a/java/com/android/dialer/searchfragment/list/NewSearchFragment.java b/java/com/android/dialer/searchfragment/list/NewSearchFragment.java
index 910e454f8..5b3532cdb 100644
--- a/java/com/android/dialer/searchfragment/list/NewSearchFragment.java
+++ b/java/com/android/dialer/searchfragment/list/NewSearchFragment.java
@@ -32,6 +32,8 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.Interpolator;
+import android.widget.FrameLayout;
+import android.widget.FrameLayout.LayoutParams;
import com.android.contacts.common.extensions.PhoneDirectoryExtenderAccessor;
import com.android.dialer.animation.AnimUtils;
import com.android.dialer.callintent.CallInitiationType;
@@ -198,6 +200,7 @@ public final class NewSearchFragment extends Fragment
}
}
+ /** Translate the search fragment and resize it to fit on the screen. */
public void animatePosition(int start, int end, int duration) {
// Called before the view is ready, prepare a runnable to run in onCreateView
if (getView() == null) {
@@ -206,11 +209,30 @@ public final class NewSearchFragment extends Fragment
}
boolean slideUp = start > end;
Interpolator interpolator = slideUp ? AnimUtils.EASE_IN : AnimUtils.EASE_OUT;
+ int startHeight = getView().getHeight();
+ int endHeight = startHeight - (end - start);
getView().setTranslationY(start);
- getView().animate().translationY(end).setInterpolator(interpolator).setDuration(duration);
+ getView()
+ .animate()
+ .translationY(end)
+ .setInterpolator(interpolator)
+ .setDuration(duration)
+ .setUpdateListener(
+ animation -> setHeight(startHeight, endHeight, animation.getAnimatedFraction()));
updatePositionRunnable = null;
}
+ private void setHeight(int start, int end, float percentage) {
+ View view = getView();
+ if (view == null) {
+ return;
+ }
+
+ FrameLayout.LayoutParams params = (LayoutParams) view.getLayoutParams();
+ params.height = (int) (start + (end - start) * percentage);
+ view.setLayoutParams(params);
+ }
+
@Override
public void onDestroy() {
super.onDestroy();
diff --git a/java/com/android/dialer/telecom/TelecomUtil.java b/java/com/android/dialer/telecom/TelecomUtil.java
index 573bfe2d9..8ff4b3967 100644
--- a/java/com/android/dialer/telecom/TelecomUtil.java
+++ b/java/com/android/dialer/telecom/TelecomUtil.java
@@ -21,6 +21,8 @@ import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
+import android.os.Build.VERSION;
+import android.os.Build.VERSION_CODES;
import android.provider.CallLog.Calls;
import android.support.annotation.Nullable;
import android.support.annotation.VisibleForTesting;
@@ -140,7 +142,11 @@ public abstract class TelecomUtil {
return new ArrayList<>();
}
- public static boolean isInCall(Context context) {
+ /**
+ * Returns true if there is a dialer managed call in progress. Self managed calls starting from O
+ * are not included.
+ */
+ public static boolean isInManagedCall(Context context) {
return instance.isInCall(context);
}
@@ -234,7 +240,19 @@ public abstract class TelecomUtil {
public boolean isInCall(Context context) {
if (hasReadPhoneStatePermission(context)) {
- return getTelecomManager(context).isInCall();
+ // The TelecomManager#isInCall method returns true anytime the user is in a call.
+ // Starting in O, the APIs include support for self-managed ConnectionServices so that other
+ // apps like Duo can tell Telecom about its calls. So, if the user is in a Duo call,
+ // isInCall would return true.
+ // Dialer uses this to determine whether to show the "return to call in progress" when
+ // Dialer is launched.
+ // Instead, Dialer should use TelecomManager#isInManagedCall, which only returns true if the
+ // device is in a managed call which Dialer would know about.
+ if (VERSION.SDK_INT >= VERSION_CODES.O) {
+ return getTelecomManager(context).isInManagedCall();
+ } else {
+ return getTelecomManager(context).isInCall();
+ }
}
return false;
}
diff --git a/java/com/android/incallui/ContactInfoCache.java b/java/com/android/incallui/ContactInfoCache.java
index 9b92b487c..7bac6d329 100644
--- a/java/com/android/incallui/ContactInfoCache.java
+++ b/java/com/android/incallui/ContactInfoCache.java
@@ -25,6 +25,7 @@ import android.net.Uri;
import android.os.Build.VERSION;
import android.os.Build.VERSION_CODES;
import android.os.SystemClock;
+import android.os.Trace;
import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.provider.ContactsContract.Contacts;
import android.provider.ContactsContract.DisplayNameSources;
@@ -123,8 +124,10 @@ public class ContactInfoCache implements OnImageLoadCompleteListener {
}
private ContactInfoCache(Context context) {
+ Trace.beginSection("ContactInfoCache constructor");
mContext = context;
mPhoneNumberService = Bindings.get(context).newPhoneNumberService(context);
+ Trace.endSection();
}
public static synchronized ContactInfoCache getInstance(Context mContext) {
@@ -343,6 +346,7 @@ public class ContactInfoCache implements OnImageLoadCompleteListener {
@NonNull final DialerCall call,
final boolean isIncoming,
@NonNull ContactInfoCacheCallback callback) {
+ Trace.beginSection("ContactInfoCache.findInfo");
Assert.isMainThread();
Objects.requireNonNull(callback);
@@ -364,6 +368,7 @@ public class ContactInfoCache implements OnImageLoadCompleteListener {
callback.onContactInfoComplete(callId, cacheEntry);
// If no other callbacks are in flight, we're done.
if (callBacks == null) {
+ Trace.endSection();
return;
}
}
@@ -374,6 +379,7 @@ public class ContactInfoCache implements OnImageLoadCompleteListener {
callBacks.add(callback);
if (!forceQuery) {
Log.d(TAG, "No need to query again, just return and wait for existing query to finish");
+ Trace.endSection();
return;
}
} else {
@@ -412,6 +418,7 @@ public class ContactInfoCache implements OnImageLoadCompleteListener {
callId, call.getNumberPresentation(), callerInfo, false, queryToken);
sendInfoNotifications(callId, initialCacheEntry);
}
+ Trace.endSection();
}
@AnyThread
@@ -421,6 +428,7 @@ public class ContactInfoCache implements OnImageLoadCompleteListener {
CallerInfo callerInfo,
boolean didLocalLookup,
CallerInfoQueryToken queryToken) {
+ Trace.beginSection("ContactInfoCache.updateCallerInfoInCacheOnAnyThread");
Log.d(
TAG,
"updateCallerInfoInCacheOnAnyThread: callId = "
@@ -488,6 +496,7 @@ public class ContactInfoCache implements OnImageLoadCompleteListener {
Log.d(TAG, "put entry into map if not exists: " + cacheEntry);
mInfoMap.putIfAbsent(callId, cacheEntry);
}
+ Trace.endSection();
return cacheEntry;
}
@@ -644,6 +653,7 @@ public class ContactInfoCache implements OnImageLoadCompleteListener {
/** Sends the updated information to call the callbacks for the entry. */
@MainThread
private void sendInfoNotifications(String callId, ContactCacheEntry entry) {
+ Trace.beginSection("ContactInfoCache.sendInfoNotifications");
Assert.isMainThread();
final Set<ContactInfoCacheCallback> callBacks = mCallBacks.get(callId);
if (callBacks != null) {
@@ -651,10 +661,12 @@ public class ContactInfoCache implements OnImageLoadCompleteListener {
callBack.onContactInfoComplete(callId, entry);
}
}
+ Trace.endSection();
}
@MainThread
private void sendImageNotifications(String callId, ContactCacheEntry entry) {
+ Trace.beginSection("ContactInfoCache.sendImageNotifications");
Assert.isMainThread();
final Set<ContactInfoCacheCallback> callBacks = mCallBacks.get(callId);
if (callBacks != null && entry.photo != null) {
@@ -662,6 +674,7 @@ public class ContactInfoCache implements OnImageLoadCompleteListener {
callBack.onImageLoadComplete(callId, entry);
}
}
+ Trace.endSection();
}
private void clearCallbacks(String callId) {
diff --git a/java/com/android/incallui/InCallPresenter.java b/java/com/android/incallui/InCallPresenter.java
index 9b1f674bd..3f87a592d 100644
--- a/java/com/android/incallui/InCallPresenter.java
+++ b/java/com/android/incallui/InCallPresenter.java
@@ -769,15 +769,19 @@ public class InCallPresenter implements CallList.Listener {
"InCallPresenter.onIncomingCall", "Phone switching state: " + oldState + " -> " + newState);
mInCallState = newState;
+ Trace.beginSection("listener.onIncomingCall");
for (IncomingCallListener listener : mIncomingCallListeners) {
listener.onIncomingCall(oldState, mInCallState, call);
}
+ Trace.endSection();
+ Trace.beginSection("onPrimaryCallStateChanged");
if (mInCallActivity != null) {
// Re-evaluate which fragment is being shown.
mInCallActivity.onPrimaryCallStateChanged();
}
Trace.endSection();
+ Trace.endSection();
}
@Override
@@ -1278,6 +1282,7 @@ public class InCallPresenter implements CallList.Listener {
* UI needs to be started or finished depending on the new state and does it.
*/
private InCallState startOrFinishUi(InCallState newState) {
+ Trace.beginSection("InCallPresenter.startOrFinishUi");
LogUtil.d(
"InCallPresenter.startOrFinishUi", "startOrFinishUi: " + mInCallState + " -> " + newState);
@@ -1286,6 +1291,7 @@ public class InCallPresenter implements CallList.Listener {
// If the state isn't changing we have already done any starting/stopping of activities in
// a previous pass...so lets cut out early
if (newState == mInCallState) {
+ Trace.endSection();
return newState;
}
@@ -1364,6 +1370,7 @@ public class InCallPresenter implements CallList.Listener {
LogUtil.i(
"InCallPresenter.startOrFinishUi",
"Undo the state change: " + newState + " -> " + mInCallState);
+ Trace.endSection();
return mInCallState;
}
@@ -1390,6 +1397,7 @@ public class InCallPresenter implements CallList.Listener {
attemptCleanup();
}
+ Trace.endSection();
return newState;
}
diff --git a/java/com/android/incallui/ReturnToCallController.java b/java/com/android/incallui/ReturnToCallController.java
index e5c761820..e54102ca8 100644
--- a/java/com/android/incallui/ReturnToCallController.java
+++ b/java/com/android/incallui/ReturnToCallController.java
@@ -94,7 +94,7 @@ public class ReturnToCallController implements InCallUiListener, Listener, Audio
if (showing) {
hide();
} else {
- if (TelecomUtil.isInCall(context)) {
+ if (TelecomUtil.isInManagedCall(context)) {
show();
}
}
@@ -175,7 +175,7 @@ public class ReturnToCallController implements InCallUiListener, Listener, Audio
}
if (bubble != null
&& bubble.isVisible()
- && (!TelecomUtil.isInCall(context)
+ && (!TelecomUtil.isInManagedCall(context)
|| CallList.getInstance().getActiveOrBackgroundCall() != null)) {
bubble.showText(context.getText(R.string.incall_call_ended));
}
diff --git a/java/com/android/incallui/StatusBarNotifier.java b/java/com/android/incallui/StatusBarNotifier.java
index e6969c147..92ffae37c 100644
--- a/java/com/android/incallui/StatusBarNotifier.java
+++ b/java/com/android/incallui/StatusBarNotifier.java
@@ -40,6 +40,7 @@ import android.media.AudioAttributes;
import android.net.Uri;
import android.os.Build.VERSION;
import android.os.Build.VERSION_CODES;
+import android.os.Trace;
import android.support.annotation.ColorRes;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
@@ -236,6 +237,7 @@ public class StatusBarNotifier
@RequiresPermission(Manifest.permission.READ_PHONE_STATE)
private void showNotification(final CallList callList, final DialerCall call) {
+ Trace.beginSection("StatusBarNotifier.showNotification");
final boolean isIncoming =
(call.getState() == DialerCall.State.INCOMING
|| call.getState() == DialerCall.State.CALL_WAITING);
@@ -269,20 +271,24 @@ public class StatusBarNotifier
}
}
});
+ Trace.endSection();
}
/** Sets up the main Ui for the notification */
@RequiresPermission(Manifest.permission.READ_PHONE_STATE)
private void buildAndSendNotification(
CallList callList, DialerCall originalCall, ContactCacheEntry contactInfo) {
+ Trace.beginSection("StatusBarNotifier.buildAndSendNotification");
// This can get called to update an existing notification after contact information has come
// back. However, it can happen much later. Before we continue, we need to make sure that
// the call being passed in is still the one we want to show in the notification.
final DialerCall call = getCallToShow(callList);
if (call == null || !call.getId().equals(originalCall.getId())) {
+ Trace.endSection();
return;
}
+ Trace.beginSection("prepare work");
final int callState = call.getState();
// Check if data has changed; if nothing is different, don't issue another notification.
@@ -314,6 +320,7 @@ public class StatusBarNotifier
} else {
notificationType = NOTIFICATION_IN_CALL;
}
+ Trace.endSection(); // prepare work
if (!checkForChangeAndSaveData(
iconResId,
@@ -323,6 +330,7 @@ public class StatusBarNotifier
callState,
notificationType,
contactInfo.contactRingtoneUri)) {
+ Trace.endSection();
return;
}
@@ -409,6 +417,7 @@ public class StatusBarNotifier
addPersonReference(builder, contactInfo, call);
+ Trace.beginSection("fire notification");
// Fire off the notification
Notification notification = builder.build();
@@ -448,8 +457,10 @@ public class StatusBarNotifier
memoryInfo.availMem),
e);
}
+ Trace.endSection();
call.getLatencyReport().onNotificationShown();
mCurrentNotification = notificationType;
+ Trace.endSection();
}
@Nullable
diff --git a/java/com/android/incallui/answer/impl/AnswerFragment.java b/java/com/android/incallui/answer/impl/AnswerFragment.java
index db6d43d49..18de72e8b 100644
--- a/java/com/android/incallui/answer/impl/AnswerFragment.java
+++ b/java/com/android/incallui/answer/impl/AnswerFragment.java
@@ -29,6 +29,7 @@ import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
+import android.os.Trace;
import android.support.annotation.DrawableRes;
import android.support.annotation.FloatRange;
import android.support.annotation.NonNull;
@@ -657,6 +658,7 @@ public class AnswerFragment extends Fragment
@Override
public View onCreateView(
LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
+ Trace.beginSection("AnswerFragment.onCreateView");
Bundle arguments = getArguments();
Assert.checkState(arguments.containsKey(ARG_CALL_ID));
Assert.checkState(arguments.containsKey(ARG_IS_VIDEO_CALL));
@@ -729,6 +731,7 @@ public class AnswerFragment extends Fragment
}
}
+ Trace.endSection();
return view;
}
diff --git a/java/com/android/incallui/contactgrid/ContactGridManager.java b/java/com/android/incallui/contactgrid/ContactGridManager.java
index ddf16e340..18bab6ab3 100644
--- a/java/com/android/incallui/contactgrid/ContactGridManager.java
+++ b/java/com/android/incallui/contactgrid/ContactGridManager.java
@@ -315,6 +315,7 @@ public class ContactGridManager {
info.isAssistedDialedVisisble ? View.VISIBLE : View.GONE);
if (hdIconImageView.getVisibility() == View.GONE) {
if (info.isHdAttemptingIconVisible) {
+ hdIconImageView.setImageResource(R.drawable.asd_hd_icon);
hdIconImageView.setVisibility(View.VISIBLE);
hdIconImageView.setActivated(false);
Drawable drawableCurrent = hdIconImageView.getDrawable().getCurrent();
@@ -322,6 +323,7 @@ public class ContactGridManager {
((Animatable) drawableCurrent).start();
}
} else if (info.isHdIconVisible) {
+ hdIconImageView.setImageResource(R.drawable.asd_hd_icon);
hdIconImageView.setVisibility(View.VISIBLE);
hdIconImageView.setActivated(true);
}
diff --git a/java/com/android/incallui/contactgrid/res/layout/incall_contactgrid_bottom_row.xml b/java/com/android/incallui/contactgrid/res/layout/incall_contactgrid_bottom_row.xml
index 8850dd856..c545c25cd 100644
--- a/java/com/android/incallui/contactgrid/res/layout/incall_contactgrid_bottom_row.xml
+++ b/java/com/android/incallui/contactgrid/res/layout/incall_contactgrid_bottom_row.xml
@@ -29,7 +29,6 @@
<ImageView
android:id="@+id/contactgrid_hdIcon"
style="@style/BottomRowIcon"
- android:src="@drawable/asd_hd_icon"
android:visibility="gone"/>
<ImageView
android:id="@+id/contactgrid_assistedDialingIcon"
diff --git a/java/com/android/voicemail/impl/ActivationTask.java b/java/com/android/voicemail/impl/ActivationTask.java
index 320ea2aaa..d7a122ce3 100644
--- a/java/com/android/voicemail/impl/ActivationTask.java
+++ b/java/com/android/voicemail/impl/ActivationTask.java
@@ -23,6 +23,7 @@ import android.os.Build.VERSION_CODES;
import android.os.Bundle;
import android.provider.Settings;
import android.support.annotation.Nullable;
+import android.support.annotation.VisibleForTesting;
import android.support.annotation.WorkerThread;
import android.telecom.PhoneAccountHandle;
import android.telephony.ServiceState;
@@ -64,6 +65,8 @@ public class ActivationTask extends BaseTask {
private final RetryPolicy mRetryPolicy;
+ @Nullable private OmtpVvmCarrierConfigHelper configForTest;
+
private Bundle mMessageData;
public ActivationTask() {
@@ -132,19 +135,27 @@ public class ActivationTask extends BaseTask {
PreOMigrationHandler.migrate(getContext(), phoneAccountHandle);
- if (!VisualVoicemailSettingsUtil.isEnabled(getContext(), phoneAccountHandle)) {
- VvmLog.i(TAG, "VVM is disabled");
- return;
+ OmtpVvmCarrierConfigHelper helper;
+ if (configForTest != null) {
+ helper = configForTest;
+ } else {
+ helper = new OmtpVvmCarrierConfigHelper(getContext(), phoneAccountHandle);
}
-
- OmtpVvmCarrierConfigHelper helper =
- new OmtpVvmCarrierConfigHelper(getContext(), phoneAccountHandle);
if (!helper.isValid()) {
VvmLog.i(TAG, "VVM not supported on phoneAccountHandle " + phoneAccountHandle);
VvmAccountManager.removeAccount(getContext(), phoneAccountHandle);
return;
}
+ if (!VisualVoicemailSettingsUtil.isEnabled(getContext(), phoneAccountHandle)) {
+ if (helper.isLegacyModeEnabled()) {
+ VvmLog.i(TAG, "Setting up filter for legacy mode");
+ helper.activateSmsFilter();
+ }
+ VvmLog.i(TAG, "VVM is disabled");
+ return;
+ }
+
// OmtpVvmCarrierConfigHelper can start the activation process; it will pass in a vvm
// content provider URI which we will use. On some occasions, setting that URI will
// fail, so we will perform a few attempts to ensure that the vvm content provider has
@@ -278,4 +289,9 @@ public class ActivationTask extends BaseTask {
.createForPhoneAccountHandle(phoneAccountHandle);
return telephonyManager.getServiceState().getState() == ServiceState.STATE_IN_SERVICE;
}
+
+ @VisibleForTesting
+ void setConfigForTest(OmtpVvmCarrierConfigHelper config) {
+ configForTest = config;
+ }
}
diff --git a/java/com/android/voicemail/impl/scheduling/BaseTask.java b/java/com/android/voicemail/impl/scheduling/BaseTask.java
index bbdca8c88..773d026bf 100644
--- a/java/com/android/voicemail/impl/scheduling/BaseTask.java
+++ b/java/com/android/voicemail/impl/scheduling/BaseTask.java
@@ -23,6 +23,7 @@ import android.os.SystemClock;
import android.support.annotation.CallSuper;
import android.support.annotation.MainThread;
import android.support.annotation.NonNull;
+import android.support.annotation.VisibleForTesting;
import android.support.annotation.WorkerThread;
import android.telecom.PhoneAccountHandle;
import com.android.dialer.proguard.UsedByReflection;
@@ -38,7 +39,8 @@ import java.util.List;
@UsedByReflection(value = "Tasks.java")
public abstract class BaseTask implements Task {
- private static final String EXTRA_PHONE_ACCOUNT_HANDLE = "extra_phone_account_handle";
+ @VisibleForTesting
+ public static final String EXTRA_PHONE_ACCOUNT_HANDLE = "extra_phone_account_handle";
private static final String EXTRA_EXECUTION_TIME = "extra_execution_time";