diff options
author | 2019-12-16 14:51:39 +0800 | |
---|---|---|
committer | 2019-12-16 15:41:40 +0800 | |
commit | 0bd88fb2d38105967ef94f99292441f9e97a93f4 (patch) | |
tree | ebfd0bdb5a9663a1106dd872e1e5dc01a73a6f22 | |
parent | 20c326c34653d8ddc58f06ce76474ba3d175126b (diff) |
Fix crash when stack push
Check current stack peek to avoid push same DocumentInfo into it.
Fix: 142486071
Fix: 144245604
Test: atest DocumentsUIGoogleTests
Change-Id: I2f174168b1804be39d6ca375b78fea9d070fdbc8
-rw-r--r-- | src/com/android/documentsui/AbstractActionHandler.java | 5 | ||||
-rw-r--r-- | tests/unit/com/android/documentsui/picker/ActionHandlerTest.java | 8 |
2 files changed, 13 insertions, 0 deletions
diff --git a/src/com/android/documentsui/AbstractActionHandler.java b/src/com/android/documentsui/AbstractActionHandler.java index a20e3e7e4..fa2c60fa4 100644 --- a/src/com/android/documentsui/AbstractActionHandler.java +++ b/src/com/android/documentsui/AbstractActionHandler.java @@ -412,6 +412,11 @@ public abstract class AbstractActionHandler<T extends FragmentActivity & CommonA } assert(currentDoc != null); + if (currentDoc.equals(mState.stack.peek())) { + Log.w(TAG, "This DocumentInfo is already in current DocumentsStack"); + return; + } + mActivity.notifyDirectoryNavigated(currentDoc.derivedUri); mState.stack.push(currentDoc); diff --git a/tests/unit/com/android/documentsui/picker/ActionHandlerTest.java b/tests/unit/com/android/documentsui/picker/ActionHandlerTest.java index 819b34918..647ce719e 100644 --- a/tests/unit/com/android/documentsui/picker/ActionHandlerTest.java +++ b/tests/unit/com/android/documentsui/picker/ActionHandlerTest.java @@ -256,6 +256,14 @@ public class ActionHandlerTest { } @Test + public void testOpenContainerDocument_sameDocumentInfo() { + mHandler.openContainerDocument(TestEnv.FOLDER_0); + mHandler.openContainerDocument(TestEnv.FOLDER_0); + + assertEquals(1, mEnv.state.stack.size()); + } + + @Test public void testIncreasePickCountRecordCalled() throws Exception { mEnv.state.action = State.ACTION_GET_CONTENT; mEnv.state.stack.changeRoot(TestProvidersAccess.HOME); |