summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Bill Lin <lbill@google.com> 2019-08-05 16:09:53 +0800
committer Bill Lin <lbill@google.com> 2019-09-11 06:44:46 +0000
commit35bfbefed39d4b10a0e959dbfee5a7256d4e7947 (patch)
treee5af2f309a67a3f25ea8a696b249c04355203bec
parent83e49f470f6145fcdd682baf526891e4425e3b05 (diff)
Intercept KeyDown Event to monitor KEYCODE_SEARCH
Intercept onKeyDown through BaseActivity.java Reuqest focusd for SearchView if KEYCODE_SEARCH trigger Test: atest DocumentsUIGoogleTests Test: adb shell input keyevent 84, then SearchView focued Bug: 137053191 Change-Id: I0b96c081901ef486ccb3cc75fca2b33319c87dc4
-rw-r--r--src/com/android/documentsui/SharedInputHandler.java9
-rw-r--r--src/com/android/documentsui/files/FilesActivity.java7
-rw-r--r--src/com/android/documentsui/picker/PickActivity.java7
-rw-r--r--tests/unit/com/android/documentsui/SharedInputHandlerTest.java29
4 files changed, 37 insertions, 15 deletions
diff --git a/src/com/android/documentsui/SharedInputHandler.java b/src/com/android/documentsui/SharedInputHandler.java
index 28eba70c9..a70a805dd 100644
--- a/src/com/android/documentsui/SharedInputHandler.java
+++ b/src/com/android/documentsui/SharedInputHandler.java
@@ -37,6 +37,7 @@ public class SharedInputHandler {
private final FocusHandler mFocusManager;
private final Procedure mSearchCanceler;
private final Procedure mDirPopper;
+ private final Runnable mSearchExecutor;
private final Features mFeatures;
private final SelectionTracker<String> mSelectionMgr;
private final DrawerController mDrawer;
@@ -47,13 +48,15 @@ public class SharedInputHandler {
Procedure searchCanceler,
Procedure dirPopper,
Features features,
- DrawerController drawer) {
+ DrawerController drawer,
+ Runnable searchExcutor) {
mFocusManager = focusHandler;
mSearchCanceler = searchCanceler;
mSelectionMgr = selectionMgr;
mDirPopper = dirPopper;
mFeatures = features;
mDrawer = drawer;
+ mSearchExecutor = searchExcutor;
}
public boolean onKeyDown(int keyCode, KeyEvent event) {
@@ -73,6 +76,10 @@ public class SharedInputHandler {
case KeyEvent.KEYCODE_TAB:
return onTab();
+ case KeyEvent.KEYCODE_SEARCH:
+ mSearchExecutor.run();
+ return true;
+
default:
// Instead of duplicating the switch-case in #isNavigationKeyCode, best just to
// leave it here.
diff --git a/src/com/android/documentsui/files/FilesActivity.java b/src/com/android/documentsui/files/FilesActivity.java
index 9547961ed..7308272ca 100644
--- a/src/com/android/documentsui/files/FilesActivity.java
+++ b/src/com/android/documentsui/files/FilesActivity.java
@@ -159,7 +159,8 @@ public class FilesActivity extends BaseActivity implements ActionHandler.Addons
mInjector.searchManager::cancelSearch,
this::popDir,
mInjector.features,
- mDrawer);
+ mDrawer,
+ mInjector.searchManager::onSearchBarClicked);
RootsFragment.show(getSupportFragmentManager(), null);
@@ -360,9 +361,7 @@ public class FilesActivity extends BaseActivity implements ActionHandler.Addons
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
return mActivityInputHandler.onKeyDown(keyCode, event)
- || mSharedInputHandler.onKeyDown(
- keyCode,
- event)
+ || mSharedInputHandler.onKeyDown(keyCode, event)
|| super.onKeyDown(keyCode, event);
}
diff --git a/src/com/android/documentsui/picker/PickActivity.java b/src/com/android/documentsui/picker/PickActivity.java
index 48ebc0bed..9530ae82f 100644
--- a/src/com/android/documentsui/picker/PickActivity.java
+++ b/src/com/android/documentsui/picker/PickActivity.java
@@ -146,7 +146,8 @@ public class PickActivity extends BaseActivity implements ActionHandler.Addons {
mInjector.searchManager::cancelSearch,
this::popDir,
mInjector.features,
- mDrawer);
+ mDrawer,
+ mInjector.searchManager::onSearchBarClicked);
setupLayout(intent);
mInjector.actions.initLocation(intent);
Metrics.logPickerLaunchedFrom(Shared.getCallingPackageName(this));
@@ -389,9 +390,7 @@ public class PickActivity extends BaseActivity implements ActionHandler.Addons {
@CallSuper
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
- return mSharedInputHandler.onKeyDown(
- keyCode,
- event)
+ return mSharedInputHandler.onKeyDown(keyCode, event)
|| super.onKeyDown(keyCode, event);
}
diff --git a/tests/unit/com/android/documentsui/SharedInputHandlerTest.java b/tests/unit/com/android/documentsui/SharedInputHandlerTest.java
index d774b85f8..6546117eb 100644
--- a/tests/unit/com/android/documentsui/SharedInputHandlerTest.java
+++ b/tests/unit/com/android/documentsui/SharedInputHandlerTest.java
@@ -47,6 +47,7 @@ public class SharedInputHandlerTest {
private TestDrawerController mDrawer = TestDrawerController.create();
private boolean mDirPopHappened;
private boolean mCanceledSearch;
+ private boolean mSearchExecuted;
private Procedure mDirPopper = new Procedure() {
@Override
public boolean run() {
@@ -54,6 +55,12 @@ public class SharedInputHandlerTest {
return true;
}
};
+ private Runnable mSearchExecutor = new Runnable() {
+ @Override
+ public void run() {
+ mSearchExecuted = true;
+ }
+ };
@Before
public void setUp() {
@@ -61,12 +68,11 @@ public class SharedInputHandlerTest {
mSharedInputHandler = new SharedInputHandler(
mFocusHandler,
mSelectionMgr,
- () -> {
- return false;
- },
+ () -> false,
mDirPopper,
mFeatures,
- mDrawer);
+ mDrawer,
+ mSearchExecutor);
}
@Test
@@ -88,7 +94,8 @@ public class SharedInputHandlerTest {
},
mDirPopper,
new TestFeatures(),
- mDrawer);
+ mDrawer,
+ mSearchExecutor);
KeyEvent backEvent =
new KeyEvent(0, 0, MotionEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK, 0, 0);
assertTrue(mSharedInputHandler.onKeyDown(backEvent.getKeyCode(), backEvent));
@@ -146,7 +153,8 @@ public class SharedInputHandlerTest {
},
mDirPopper,
new TestFeatures(),
- mDrawer);
+ mDrawer,
+ mSearchExecutor);
KeyEvent escapeEvent =
new KeyEvent(0, 0, MotionEvent.ACTION_DOWN, KeyEvent.KEYCODE_ESCAPE, 0, 0);
assertTrue(mSharedInputHandler.onKeyDown(escapeEvent.getKeyCode(), escapeEvent));
@@ -208,4 +216,13 @@ public class SharedInputHandlerTest {
assertTrue(mFocusHandler.focusDirectoryCalled);
}
+
+ @Test
+ public void testSearchKey_LaunchSearchView() {
+ KeyEvent searchEvent =
+ new KeyEvent(0, 0, MotionEvent.ACTION_DOWN, KeyEvent.KEYCODE_SEARCH, 0, 0);
+ assertTrue(mSharedInputHandler.onKeyDown(searchEvent.getKeyCode(), searchEvent));
+
+ assertTrue(mSearchExecuted);
+ }
}