summaryrefslogtreecommitdiff
path: root/java/com/android/dialer/main
diff options
context:
space:
mode:
authorcalderwoodra <calderwoodra@google.com>2018-03-12 18:30:32 -0700
committerCopybara-Service <copybara-piper@google.com>2018-03-12 18:32:51 -0700
commitf53ba7be0531904a25c15f69c8e1bfdea88be869 (patch)
tree67ce349c892e04e817c3c96f7210560f49793e07 /java/com/android/dialer/main
parentc8039e034838a030848bb040d10997835153427e (diff)
Keyboard and search now close when appropriate.
Keyboard should close when: - requeting permission - placing a call - leaving the app Search should close when: - placing a call - leaving the app Bug: 74235853 Test: search closing onPause tests already exist (MainActivityOldPeerSearchIntegrationTest#placingCallFromSearchClosesSearch) PiperOrigin-RevId: 188812026 Change-Id: Iaee084c59b4c514d10375deff5d73d5a456ef9df
Diffstat (limited to 'java/com/android/dialer/main')
-rw-r--r--java/com/android/dialer/main/impl/MainSearchController.java32
-rw-r--r--java/com/android/dialer/main/impl/OldMainActivityPeer.java9
-rw-r--r--java/com/android/dialer/main/impl/toolbar/SearchBarListener.java7
3 files changed, 45 insertions, 3 deletions
diff --git a/java/com/android/dialer/main/impl/MainSearchController.java b/java/com/android/dialer/main/impl/MainSearchController.java
index 7d57f9867..92e5651f8 100644
--- a/java/com/android/dialer/main/impl/MainSearchController.java
+++ b/java/com/android/dialer/main/impl/MainSearchController.java
@@ -86,6 +86,14 @@ public class MainSearchController implements SearchBarListener {
private final List<OnSearchShowListener> onSearchShowListenerList = new ArrayList<>();
+ /**
+ * True when an action happens that closes search (like leaving the app or placing a call). We
+ * want to wait until onPause is called otherwise the transition will look extremely janky.
+ */
+ private boolean closeSearchOnPause;
+
+ private boolean requestingPermission;
+
public MainSearchController(
MainActivity mainActivity,
BottomNavBar bottomNav,
@@ -444,15 +452,35 @@ public class MainSearchController implements SearchBarListener {
}
@Override
+ public void onActivityPause() {
+ if (closeSearchOnPause) {
+ closeSearchOnPause = false;
+ if (isInSearch()) {
+ closeSearch(false);
+ }
+ }
+ }
+
+ @Override
public void onUserLeaveHint() {
if (isInSearch()) {
- closeSearch(false);
+ // Requesting a permission causes this to be called and we want search to remain open when
+ // that happens. Otherwise, close search.
+ closeSearchOnPause = !requestingPermission;
+
+ // Always hide the keyboard when the user leaves dialer (including permission requests)
+ toolbar.hideKeyboard();
}
}
@Override
public void onCallPlacedFromSearch() {
- closeSearch(false);
+ closeSearchOnPause = true;
+ }
+
+ @Override
+ public void requestingPermission() {
+ requestingPermission = true;
}
public void onVoiceResults(int resultCode, Intent data) {
diff --git a/java/com/android/dialer/main/impl/OldMainActivityPeer.java b/java/com/android/dialer/main/impl/OldMainActivityPeer.java
index 3c335b380..b6176464b 100644
--- a/java/com/android/dialer/main/impl/OldMainActivityPeer.java
+++ b/java/com/android/dialer/main/impl/OldMainActivityPeer.java
@@ -447,7 +447,9 @@ public class OldMainActivityPeer implements MainActivityPeer, FragmentUtilListen
}
@Override
- public void onActivityPause() {}
+ public void onActivityPause() {
+ searchController.onActivityPause();
+ }
@Override
public void onActivityStop() {
@@ -676,6 +678,11 @@ public class OldMainActivityPeer implements MainActivityPeer, FragmentUtilListen
// TODO(calderwoodra): logging
searchController.onCallPlacedFromSearch();
}
+
+ @Override
+ public void requestingPermission() {
+ searchController.requestingPermission();
+ }
}
/** @see DialpadFragment.HostInterface */
diff --git a/java/com/android/dialer/main/impl/toolbar/SearchBarListener.java b/java/com/android/dialer/main/impl/toolbar/SearchBarListener.java
index 857c4b9c9..d01fe3a39 100644
--- a/java/com/android/dialer/main/impl/toolbar/SearchBarListener.java
+++ b/java/com/android/dialer/main/impl/toolbar/SearchBarListener.java
@@ -16,6 +16,7 @@
package com.android.dialer.main.impl.toolbar;
+import android.app.Activity;
import android.support.v7.app.AppCompatActivity;
import android.view.MenuItem;
@@ -37,12 +38,18 @@ public interface SearchBarListener {
/** Called when a toolbar menu item is clicked. */
boolean onMenuItemClicked(MenuItem menuItem);
+ /** Called when {@link Activity#onPause()} is called. */
+ void onActivityPause();
+
/** Called when {@link AppCompatActivity#onUserLeaveHint()} is called. */
void onUserLeaveHint();
/** Called when the user places a call from search (regular or dialpad). */
void onCallPlacedFromSearch();
+ /** Called when a permission is about to be requested. */
+ void requestingPermission();
+
/** Interface for returning voice results to the search bar. */
interface VoiceSearchResultCallback {