Merge changes Ib41607a0,Icbb77747,I02bb3f67

* changes:
  Fixing verizon TOS text
  Cancel missed calls in call history when needed.
  Add more Cequint provider and signature check.
diff --git a/java/com/android/dialer/app/calllog/CallLogActivity.java b/java/com/android/dialer/app/calllog/CallLogActivity.java
index c83d992..4b65ed9 100644
--- a/java/com/android/dialer/app/calllog/CallLogActivity.java
+++ b/java/com/android/dialer/app/calllog/CallLogActivity.java
@@ -21,6 +21,7 @@
 import android.os.Bundle;
 import android.provider.CallLog;
 import android.provider.CallLog.Calls;
+import android.support.annotation.VisibleForTesting;
 import android.support.design.widget.Snackbar;
 import android.support.v13.app.FragmentPagerAdapter;
 import android.support.v4.view.ViewPager;
@@ -33,6 +34,7 @@
 import com.android.dialer.app.DialtactsActivity;
 import com.android.dialer.app.R;
 import com.android.dialer.calldetails.CallDetailsActivity;
+import com.android.dialer.common.Assert;
 import com.android.dialer.constants.ActivityRequestCodes;
 import com.android.dialer.database.CallLogQueryHandler;
 import com.android.dialer.logging.Logger;
@@ -47,15 +49,17 @@
 public class CallLogActivity extends TransactionSafeActivity
     implements ViewPager.OnPageChangeListener {
 
-  private static final int TAB_INDEX_ALL = 0;
-  private static final int TAB_INDEX_MISSED = 1;
+  @VisibleForTesting static final int TAB_INDEX_ALL = 0;
+  @VisibleForTesting static final int TAB_INDEX_MISSED = 1;
   private static final int TAB_INDEX_COUNT = 2;
   private ViewPager mViewPager;
   private ViewPagerTabs mViewPagerTabs;
   private ViewPagerAdapter mViewPagerAdapter;
   private CallLogFragment mAllCallsFragment;
+  private CallLogFragment mMissedCallsFragment;
   private String[] mTabTitles;
   private boolean mIsResumed;
+  private int selectedPageIndex;
 
   @Override
   protected void onCreate(Bundle savedInstanceState) {
@@ -78,6 +82,7 @@
         startingTab = TAB_INDEX_MISSED;
       }
     }
+    selectedPageIndex = startingTab;
 
     mTabTitles = new String[TAB_INDEX_COUNT];
     mTabTitles[0] = getString(R.string.call_log_all_title);
@@ -117,6 +122,16 @@
   }
 
   @Override
+  protected void onStop() {
+    if (!isChangingConfigurations() && mViewPager != null) {
+      // Make sure current index != selectedPageIndex
+      selectedPageIndex = -1;
+      updateMissedCalls(mViewPager.getCurrentItem());
+    }
+    super.onStop();
+  }
+
+  @Override
   public boolean onCreateOptionsMenu(Menu menu) {
     final MenuInflater inflater = getMenuInflater();
     inflater.inflate(R.menu.call_log_options, menu);
@@ -160,6 +175,8 @@
 
   @Override
   public void onPageSelected(int position) {
+    updateMissedCalls(position);
+    selectedPageIndex = position;
     if (mIsResumed) {
       sendScreenViewForChildFragment();
     }
@@ -182,6 +199,26 @@
     return position;
   }
 
+  private void updateMissedCalls(int position) {
+    if (position == selectedPageIndex) {
+      return;
+    }
+    switch (getRtlPosition(position)) {
+      case TAB_INDEX_ALL:
+        if (mAllCallsFragment != null) {
+          mAllCallsFragment.markMissedCallsAsReadAndRemoveNotifications();
+        }
+        break;
+      case TAB_INDEX_MISSED:
+        if (mMissedCallsFragment != null) {
+          mMissedCallsFragment.markMissedCallsAsReadAndRemoveNotifications();
+        }
+        break;
+      default:
+        throw Assert.createIllegalStateFailException("Invalid position: " + position);
+    }
+  }
+
   @Override
   public void onBackPressed() {
     PerformanceReport.recordClick(UiAction.Type.PRESS_ANDROID_BACK_BUTTON);
@@ -216,8 +253,15 @@
     @Override
     public Object instantiateItem(ViewGroup container, int position) {
       final CallLogFragment fragment = (CallLogFragment) super.instantiateItem(container, position);
-      if (getRtlPosition(position) == TAB_INDEX_ALL) {
+      switch (getRtlPosition(position)) {
+        case TAB_INDEX_ALL:
           mAllCallsFragment = fragment;
+          break;
+        case TAB_INDEX_MISSED:
+          mMissedCallsFragment = fragment;
+          break;
+        default:
+          throw Assert.createIllegalStateFailException("Invalid position: " + position);
       }
       return fragment;
     }
diff --git a/java/com/android/dialer/app/calllog/CallLogFragment.java b/java/com/android/dialer/app/calllog/CallLogFragment.java
index 5e8da03..6910f19 100644
--- a/java/com/android/dialer/app/calllog/CallLogFragment.java
+++ b/java/com/android/dialer/app/calllog/CallLogFragment.java
@@ -20,6 +20,7 @@
 
 import android.app.Activity;
 import android.app.Fragment;
+import android.app.KeyguardManager;
 import android.content.ContentResolver;
 import android.content.Context;
 import android.content.pm.PackageManager;
@@ -602,6 +603,15 @@
     mDisplayUpdateHandler.removeMessages(EVENT_UPDATE_DISPLAY);
   }
 
+  /** Mark all missed calls as read if Keyguard not locked and possible. */
+  void markMissedCallsAsReadAndRemoveNotifications() {
+    if (mCallLogQueryHandler != null
+        && !getContext().getSystemService(KeyguardManager.class).isKeyguardLocked()) {
+      mCallLogQueryHandler.markMissedCallsAsRead();
+      CallLogNotificationsService.cancelAllMissedCalls(getContext());
+    }
+  }
+
   @CallSuper
   public void onVisible() {
     LogUtil.enterBlock("CallLogFragment.onPageSelected");
diff --git a/java/com/android/dialer/app/voicemail/error/VoicemailTosMessageCreator.java b/java/com/android/dialer/app/voicemail/error/VoicemailTosMessageCreator.java
index b7c8ed7..2787320 100644
--- a/java/com/android/dialer/app/voicemail/error/VoicemailTosMessageCreator.java
+++ b/java/com/android/dialer/app/voicemail/error/VoicemailTosMessageCreator.java
@@ -403,10 +403,6 @@
   }
 
   private CharSequence getVvmDialerTos() {
-    if (!isVoicemailTranscriptionEnabled()) {
-      return "";
-    }
-
     return context.getString(R.string.dialer_terms_and_conditions_for_verizon_1_0);
   }