summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoryueg <yueg@google.com>2017-11-20 11:10:06 -0800
committerCopybara-Service <copybara-piper@google.com>2017-11-20 12:30:41 -0800
commit28415da446a2a4d5748296a70ee515ad639346ed (patch)
tree51cf8f7013dcbdd3e52aa6951812f7ecc45261c8
parentc63122fda124c28721cacca96facb930cd9dd074 (diff)
Cancel missed calls in call history when needed.
Including when: - onStop() - switching tabs Also move old CallLogActivityTest to espresso directory. Test: CallLogActivityTest PiperOrigin-RevId: 176387019 Change-Id: Icbb77747882c8a5e35595557baa6917a4dc674b6
-rw-r--r--java/com/android/dialer/app/calllog/CallLogActivity.java50
-rw-r--r--java/com/android/dialer/app/calllog/CallLogFragment.java10
2 files changed, 57 insertions, 3 deletions
diff --git a/java/com/android/dialer/app/calllog/CallLogActivity.java b/java/com/android/dialer/app/calllog/CallLogActivity.java
index c83d992ee..4b65ed934 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.content.Intent;
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.contacts.common.list.ViewPagerTabs;
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 @@ import com.android.dialer.util.ViewUtil;
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 @@ public class CallLogActivity extends TransactionSafeActivity
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 @@ public class CallLogActivity extends TransactionSafeActivity
}
@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 @@ public class CallLogActivity extends TransactionSafeActivity
@Override
public void onPageSelected(int position) {
+ updateMissedCalls(position);
+ selectedPageIndex = position;
if (mIsResumed) {
sendScreenViewForChildFragment();
}
@@ -182,6 +199,26 @@ public class CallLogActivity extends TransactionSafeActivity
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 @@ public class CallLogActivity extends TransactionSafeActivity
@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 5e8da032b..6910f1918 100644
--- a/java/com/android/dialer/app/calllog/CallLogFragment.java
+++ b/java/com/android/dialer/app/calllog/CallLogFragment.java
@@ -20,6 +20,7 @@ import static android.Manifest.permission.READ_CALL_LOG;
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 @@ public class CallLogFragment extends Fragment
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");