diff options
author | 2018-05-16 15:32:59 +0800 | |
---|---|---|
committer | 2018-05-16 19:04:40 +0800 | |
commit | 76a9d714cce99bd9b99edbed1dedef487b7a1d3e (patch) | |
tree | d9880c85f7f84ef7039681b5dc4a05b441390e9a | |
parent | 68f7d7f12106b4f2a18aad04941281ed8c07e65f (diff) |
Close drawer when back button pressed.
Bug: 63929932
Test: Add small test in SharedInputHandlerTest
Change-Id: Id16d6ab6e7ffcc5d4c5cdb20391c325a05d28b9e
4 files changed, 38 insertions, 6 deletions
diff --git a/src/com/android/documentsui/SharedInputHandler.java b/src/com/android/documentsui/SharedInputHandler.java index 0c91341f9..8d39204cd 100644 --- a/src/com/android/documentsui/SharedInputHandler.java +++ b/src/com/android/documentsui/SharedInputHandler.java @@ -35,18 +35,21 @@ public class SharedInputHandler { private final Procedure mDirPopper; private final Features mFeatures; private final SelectionHelper mSelectionMgr; + private final DrawerController mDrawer; public SharedInputHandler( FocusHandler focusHandler, SelectionHelper selectionMgr, Procedure searchCanceler, Procedure dirPopper, - Features features) { + Features features, + DrawerController drawer) { mFocusManager = focusHandler; mSearchCanceler = searchCanceler; mSelectionMgr = selectionMgr; mDirPopper = dirPopper; mFeatures = features; + mDrawer = drawer; } public boolean onKeyDown(int keyCode, KeyEvent event) { @@ -99,6 +102,11 @@ public class SharedInputHandler { } private boolean onBack() { + if (mDrawer.isPresent() && mDrawer.isOpen()) { + mDrawer.setOpen(false); + return true; + } + if (mSearchCanceler.run()) { return true; } diff --git a/src/com/android/documentsui/files/FilesActivity.java b/src/com/android/documentsui/files/FilesActivity.java index a123ec83c..0050ae12a 100644 --- a/src/com/android/documentsui/files/FilesActivity.java +++ b/src/com/android/documentsui/files/FilesActivity.java @@ -157,7 +157,7 @@ public class FilesActivity extends BaseActivity implements ActionHandler.Addons mInjector.selectionMgr, mInjector.searchManager::cancelSearch, this::popDir, - mInjector.features); + mInjector.features, mDrawer); RootsFragment.show(getFragmentManager(), null); diff --git a/src/com/android/documentsui/picker/PickActivity.java b/src/com/android/documentsui/picker/PickActivity.java index 0b3955362..625270a80 100644 --- a/src/com/android/documentsui/picker/PickActivity.java +++ b/src/com/android/documentsui/picker/PickActivity.java @@ -134,7 +134,7 @@ public class PickActivity extends BaseActivity implements ActionHandler.Addons { mInjector.selectionMgr, mInjector.searchManager::cancelSearch, this::popDir, - mInjector.features); + mInjector.features, mDrawer); setupLayout(intent); mInjector.actions.initLocation(intent); } diff --git a/tests/unit/com/android/documentsui/SharedInputHandlerTest.java b/tests/unit/com/android/documentsui/SharedInputHandlerTest.java index 9c28094a5..a28b4f1ed 100644 --- a/tests/unit/com/android/documentsui/SharedInputHandlerTest.java +++ b/tests/unit/com/android/documentsui/SharedInputHandlerTest.java @@ -19,6 +19,9 @@ package com.android.documentsui; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; import android.support.test.filters.SmallTest; import android.support.test.runner.AndroidJUnit4; @@ -34,6 +37,8 @@ import com.android.documentsui.testing.TestFeatures; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; @RunWith(AndroidJUnit4.class) @SmallTest @@ -43,6 +48,7 @@ public class SharedInputHandlerTest { private SelectionHelper mSelectionMgr = SelectionHelpers.createTestInstance(); private TestFeatures mFeatures = new TestFeatures(); private TestFocusHandler mFocusHandler = new TestFocusHandler(); + @Mock private DrawerController mDrawer; private boolean mDirPopHappened; private boolean mCanceledSearch; private Procedure mDirPopper = new Procedure() { @@ -55,6 +61,8 @@ public class SharedInputHandlerTest { @Before public void setUp() { + MockitoAnnotations.initMocks(this); + mDirPopHappened = false; mSharedInputHandler = new SharedInputHandler( mFocusHandler, @@ -63,7 +71,8 @@ public class SharedInputHandlerTest { return false; }, mDirPopper, - mFeatures); + mFeatures, + mDrawer); } @Test @@ -84,7 +93,8 @@ public class SharedInputHandlerTest { return true; }, mDirPopper, - new TestFeatures()); + new TestFeatures(), + mDrawer); KeyEvent backEvent = new KeyEvent(0, 0, MotionEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK, 0, 0); assertTrue(mSharedInputHandler.onKeyDown(backEvent.getKeyCode(), backEvent)); @@ -92,6 +102,7 @@ public class SharedInputHandlerTest { assertTrue(mCanceledSearch); assertEquals(mSelectionMgr.getSelection().size(), 1); assertFalse(mDirPopHappened); + verify(mDrawer, never()).setOpen(false); } @Test @@ -105,6 +116,7 @@ public class SharedInputHandlerTest { assertFalse(mCanceledSearch); assertEquals(mSelectionMgr.getSelection().size(), 0); assertFalse(mDirPopHappened); + verify(mDrawer, never()).setOpen(false); } @Test @@ -116,6 +128,17 @@ public class SharedInputHandlerTest { assertFalse(mCanceledSearch); assertEquals(mSelectionMgr.getSelection().size(), 0); assertTrue(mDirPopHappened); + verify(mDrawer, never()).setOpen(false); + } + + @Test + public void testBackButton_CloseDrawer() { + KeyEvent backEvent = + new KeyEvent(0, 0, MotionEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK, 0, 0); + when(mDrawer.isPresent()).thenReturn(true); + when(mDrawer.isOpen()).thenReturn(true); + assertTrue(mSharedInputHandler.onKeyDown(backEvent.getKeyCode(), backEvent)); + verify(mDrawer).setOpen(false); } @Test @@ -129,7 +152,8 @@ public class SharedInputHandlerTest { return true; }, mDirPopper, - new TestFeatures()); + new TestFeatures(), + mDrawer); KeyEvent escapeEvent = new KeyEvent(0, 0, MotionEvent.ACTION_DOWN, KeyEvent.KEYCODE_ESCAPE, 0, 0); assertTrue(mSharedInputHandler.onKeyDown(escapeEvent.getKeyCode(), escapeEvent)); |