summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Tony Huang <tonyychuang@google.com> 2019-12-16 14:51:39 +0800
committer Tony Huang <tonyychuang@google.com> 2019-12-16 15:41:40 +0800
commit0bd88fb2d38105967ef94f99292441f9e97a93f4 (patch)
treeebfd0bdb5a9663a1106dd872e1e5dc01a73a6f22
parent20c326c34653d8ddc58f06ce76474ba3d175126b (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.java5
-rw-r--r--tests/unit/com/android/documentsui/picker/ActionHandlerTest.java8
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);