summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--java/com/android/dialer/app/DialtactsActivity.java6
-rw-r--r--java/com/android/dialer/app/calllog/CallLogFragment.java30
-rw-r--r--java/com/android/dialer/dialpadview/DialpadFragment.java7
-rw-r--r--java/com/android/dialer/main/impl/OldMainActivityPeer.java6
-rw-r--r--java/com/android/dialer/main/impl/toolbar/MainToolbar.java7
-rw-r--r--java/com/android/dialer/main/impl/toolbar/SearchBarView.java15
6 files changed, 49 insertions, 22 deletions
diff --git a/java/com/android/dialer/app/DialtactsActivity.java b/java/com/android/dialer/app/DialtactsActivity.java
index b8fd57159..37b241bcd 100644
--- a/java/com/android/dialer/app/DialtactsActivity.java
+++ b/java/com/android/dialer/app/DialtactsActivity.java
@@ -1454,6 +1454,12 @@ public class DialtactsActivity extends TransactionSafeActivity
}
@Override
+ public boolean shouldShowDialpadChooser() {
+ // Show the dialpad chooser if we're in a call
+ return true;
+ }
+
+ @Override
public void onSearchListTouch() {
if (isDialpadShown) {
PerformanceReport.recordClick(UiAction.Type.CLOSE_DIALPAD);
diff --git a/java/com/android/dialer/app/calllog/CallLogFragment.java b/java/com/android/dialer/app/calllog/CallLogFragment.java
index 11c249944..7e49cc965 100644
--- a/java/com/android/dialer/app/calllog/CallLogFragment.java
+++ b/java/com/android/dialer/app/calllog/CallLogFragment.java
@@ -222,18 +222,6 @@ public class CallLogFragment extends Fragment
final Activity activity = getActivity();
final ContentResolver resolver = activity.getContentResolver();
callLogQueryHandler = new CallLogQueryHandler(activity, resolver, this, logLimit);
-
- if (PermissionsUtil.hasCallLogReadPermissions(getContext())) {
- resolver.registerContentObserver(CallLog.CONTENT_URI, true, callLogObserver);
- } else {
- LogUtil.w("CallLogFragment.onCreate", "call log permission not available");
- }
- if (PermissionsUtil.hasContactsReadPermissions(getContext())) {
- resolver.registerContentObserver(
- ContactsContract.Contacts.CONTENT_URI, true, contactsObserver);
- } else {
- LogUtil.w("CallLogFragment.onCreate", "contacts permission not available.");
- }
setHasOptionsMenu(true);
}
@@ -412,6 +400,19 @@ public class CallLogFragment extends Fragment
updateEmptyMessage(callTypeFilter);
}
+ ContentResolver resolver = getActivity().getContentResolver();
+ if (PermissionsUtil.hasCallLogReadPermissions(getContext())) {
+ resolver.registerContentObserver(CallLog.CONTENT_URI, true, callLogObserver);
+ } else {
+ LogUtil.w("CallLogFragment.onCreate", "call log permission not available");
+ }
+ if (PermissionsUtil.hasContactsReadPermissions(getContext())) {
+ resolver.registerContentObserver(
+ ContactsContract.Contacts.CONTENT_URI, true, contactsObserver);
+ } else {
+ LogUtil.w("CallLogFragment.onCreate", "contacts permission not available.");
+ }
+
this.hasReadCallLogPermission = hasReadCallLogPermission;
/*
@@ -432,6 +433,8 @@ public class CallLogFragment extends Fragment
@Override
public void onPause() {
LogUtil.enterBlock("CallLogFragment.onPause");
+ getActivity().getContentResolver().unregisterContentObserver(callLogObserver);
+ getActivity().getContentResolver().unregisterContentObserver(contactsObserver);
if (getUserVisibleHint()) {
onNotVisible();
}
@@ -465,9 +468,6 @@ public class CallLogFragment extends Fragment
if (adapter != null) {
adapter.changeCursor(null);
}
-
- getActivity().getContentResolver().unregisterContentObserver(callLogObserver);
- getActivity().getContentResolver().unregisterContentObserver(contactsObserver);
super.onDestroy();
}
diff --git a/java/com/android/dialer/dialpadview/DialpadFragment.java b/java/com/android/dialer/dialpadview/DialpadFragment.java
index 680159057..f09333280 100644
--- a/java/com/android/dialer/dialpadview/DialpadFragment.java
+++ b/java/com/android/dialer/dialpadview/DialpadFragment.java
@@ -1312,7 +1312,9 @@ public class DialpadFragment extends Fragment
* or ringing or dialing, or on hold).
*/
private boolean isPhoneInUse() {
- return getContext() != null && TelecomUtil.isInManagedCall(getContext());
+ return getContext() != null
+ && TelecomUtil.isInManagedCall(getContext())
+ && FragmentUtils.getParentUnsafe(this, HostInterface.class).shouldShowDialpadChooser();
}
/** @return true if the phone is a CDMA phone type */
@@ -1584,6 +1586,9 @@ public class DialpadFragment extends Fragment
* unless there happens to be content showing.
*/
boolean onDialpadSpacerTouchWithEmptyQuery();
+
+ /** Returns true if this fragment's parent want the dialpad to show the dialpad chooser. */
+ boolean shouldShowDialpadChooser();
}
/**
diff --git a/java/com/android/dialer/main/impl/OldMainActivityPeer.java b/java/com/android/dialer/main/impl/OldMainActivityPeer.java
index 2999c6b0b..ee0dad5b8 100644
--- a/java/com/android/dialer/main/impl/OldMainActivityPeer.java
+++ b/java/com/android/dialer/main/impl/OldMainActivityPeer.java
@@ -651,6 +651,12 @@ public class OldMainActivityPeer implements MainActivityPeer, FragmentUtilListen
// No-op, just let the clicks fall through to the search list
return false;
}
+
+ @Override
+ public boolean shouldShowDialpadChooser() {
+ // Never show the dialpad chooser. Ever.
+ return false;
+ }
}
/** @see CallLogAdapter.OnActionModeStateChangedListener */
diff --git a/java/com/android/dialer/main/impl/toolbar/MainToolbar.java b/java/com/android/dialer/main/impl/toolbar/MainToolbar.java
index fc4bd0312..2f36717c9 100644
--- a/java/com/android/dialer/main/impl/toolbar/MainToolbar.java
+++ b/java/com/android/dialer/main/impl/toolbar/MainToolbar.java
@@ -19,6 +19,7 @@ package com.android.dialer.main.impl.toolbar;
import android.animation.ValueAnimator;
import android.animation.ValueAnimator.AnimatorUpdateListener;
import android.content.Context;
+import android.support.annotation.NonNull;
import android.support.annotation.StringRes;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
@@ -66,9 +67,9 @@ public final class MainToolbar extends Toolbar implements PopupMenu.OnMenuItemCl
return listener.onMenuItemClicked(menuItem);
}
- public void setSearchBarListener(SearchBarListener listener) {
- this.listener = listener;
- ((SearchBarView) findViewById(R.id.search_view_container)).setSearchBarListener(listener);
+ public void setSearchBarListener(@NonNull SearchBarListener listener) {
+ this.listener = Assert.isNotNull(listener);
+ searchBar.setSearchBarListener(listener);
}
/** Slides the toolbar up and off the screen. */
diff --git a/java/com/android/dialer/main/impl/toolbar/SearchBarView.java b/java/com/android/dialer/main/impl/toolbar/SearchBarView.java
index 78cabf733..299985057 100644
--- a/java/com/android/dialer/main/impl/toolbar/SearchBarView.java
+++ b/java/com/android/dialer/main/impl/toolbar/SearchBarView.java
@@ -32,6 +32,7 @@ import android.widget.EditText;
import android.widget.FrameLayout;
import android.widget.TextView;
import com.android.dialer.animation.AnimUtils;
+import com.android.dialer.common.Assert;
import com.android.dialer.common.UiUtil;
import com.android.dialer.util.DialerUtils;
import com.google.common.base.Optional;
@@ -188,8 +189,8 @@ final class SearchBarView extends FrameLayout {
requestLayout();
}
- /* package-private */ void setSearchBarListener(SearchBarListener listener) {
- this.listener = listener;
+ /* package-private */ void setSearchBarListener(@NonNull SearchBarListener listener) {
+ this.listener = Assert.isNotNull(listener);
}
public String getQuery() {
@@ -236,7 +237,15 @@ final class SearchBarView extends FrameLayout {
return;
}
- listener.onSearchQueryUpdated(s.toString());
+ // afterTextChanged is called each time the device is rotated (or the activity is recreated).
+ // That means that this method could potentially be called before the listener is set and
+ // we should check if it's null. In the case that it is null, assert that the query is empty
+ // because the listener must be notified of non-empty queries.
+ if (listener != null) {
+ listener.onSearchQueryUpdated(s.toString());
+ } else {
+ Assert.checkArgument(TextUtils.isEmpty(s.toString()));
+ }
}
}
}