summaryrefslogtreecommitdiffstats
path: root/java
diff options
context:
space:
mode:
authorcalderwoodra <calderwoodra@google.com>2018-02-28 17:10:18 -0800
committerCopybara-Service <copybara-piper@google.com>2018-02-28 17:15:00 -0800
commit76cf7e18da00545145df8a5f215f3a377d605866 (patch)
tree3f9fac1016800841f7d00b383cf08668e187d4ef /java
parent999b5d5a7152c3b7608fe30630b983512e9e4e43 (diff)
downloadandroid_packages_apps_Dialer-76cf7e18da00545145df8a5f215f3a377d605866.tar.gz
android_packages_apps_Dialer-76cf7e18da00545145df8a5f215f3a377d605866.tar.bz2
android_packages_apps_Dialer-76cf7e18da00545145df8a5f215f3a377d605866.zip
Some small bug fixes in NUI.
- Never show the dialpad chooser in MainActivity. - If the call log changed while dialer was in the background, it would trigger the content observer to fetch the new info, which would request it's parent that wasn't there. Now we register/unregister them in onResume/onPause. This is safe to do because we force refresh the data onResume anyways, so any changes will still be shown. Bug: 73972084,73975555,73995512 Test: manual PiperOrigin-RevId: 187407058 Change-Id: Iae86dabbcb852398bb2b9df4627e234261ab8030
Diffstat (limited to 'java')
-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()));
+ }
}
}
}