summaryrefslogtreecommitdiff
path: root/java/com/android/dialer/main
diff options
context:
space:
mode:
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 {