diff options
-rw-r--r-- | src/com/android/documentsui/DocsSelectionHelper.java | 100 | ||||
-rw-r--r-- | tests/unit/com/android/documentsui/DocsSelectionHelperTest.java | 9 |
2 files changed, 108 insertions, 1 deletions
diff --git a/src/com/android/documentsui/DocsSelectionHelper.java b/src/com/android/documentsui/DocsSelectionHelper.java index 2c6b63b83..ebdfc9b3a 100644 --- a/src/com/android/documentsui/DocsSelectionHelper.java +++ b/src/com/android/documentsui/DocsSelectionHelper.java @@ -21,6 +21,7 @@ import android.support.v7.widget.RecyclerView; import com.android.documentsui.selection.DefaultSelectionHelper; import com.android.documentsui.selection.DefaultSelectionHelper.SelectionMode; +import com.android.documentsui.selection.MutableSelection; import com.android.documentsui.selection.Selection; import com.android.documentsui.selection.SelectionHelper; @@ -37,7 +38,10 @@ public final class DocsSelectionHelper extends SelectionHelper { private final DelegateFactory mFactory; private final @SelectionMode int mSelectionMode; - private @Nullable SelectionHelper mDelegate; + // initialize to a dummy object incase we get some input + // event drive calls before we're properly initialized. + // See: b/69306667. + private SelectionHelper mDelegate = new DummySelectionHelper(); @VisibleForTesting DocsSelectionHelper(DelegateFactory factory, @SelectionMode int mode) { @@ -188,4 +192,98 @@ public final class DocsSelectionHelper extends SelectionHelper { return new DefaultSelectionHelper(mode, adapter, stableIds, canSetState); } } + + /** + * A dummy SelectHelper used by DocsSelectionHelper before a real + * SelectionHelper has been initialized by DirectoryFragment. + */ + private static final class DummySelectionHelper extends SelectionHelper { + + @Override + public void addObserver(SelectionObserver listener) { + } + + @Override + public boolean hasSelection() { + return false; + } + + @Override + public Selection getSelection() { + return new MutableSelection(); + } + + @Override + public void copySelection(Selection dest) { + } + + @Override + public boolean isSelected(String id) { + return false; + } + + @VisibleForTesting + public void replaceSelection(Iterable<String> ids) { + } + + @Override + public void restoreSelection(Selection other) { + } + + @Override + public boolean setItemsSelected(Iterable<String> ids, boolean selected) { + return false; + } + + @Override + public void clearSelection() { + } + + @Override + public boolean select(String modelId) { + return false; + } + + @Override + public boolean deselect(String modelId) { + return false; + } + + @Override + public void startRange(int pos) { + } + + @Override + public void extendRange(int pos) { + } + + @Override + public void extendProvisionalRange(int pos) { + } + + @Override + public void clearProvisionalSelection() { + } + + @Override + public void setProvisionalSelection(Set<String> newSelection) { + } + + @Override + public void mergeProvisionalSelection() { + } + + @Override + public void endRange() { + } + + @Override + public boolean isRangeActive() { + return false; + } + + @Override + public void anchorRange(int position) { + } + } } diff --git a/tests/unit/com/android/documentsui/DocsSelectionHelperTest.java b/tests/unit/com/android/documentsui/DocsSelectionHelperTest.java index 845a5dadb..42f6bb05c 100644 --- a/tests/unit/com/android/documentsui/DocsSelectionHelperTest.java +++ b/tests/unit/com/android/documentsui/DocsSelectionHelperTest.java @@ -17,6 +17,8 @@ package com.android.documentsui; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import android.support.test.filters.SmallTest; @@ -72,6 +74,13 @@ public class DocsSelectionHelperTest { } @Test + public void testCallableBeforeReset() { + mSelectionMgr.hasSelection(); + assertNotNull(mSelectionMgr.getSelection()); + assertFalse(mSelectionMgr.isSelected("poodle")); + } + + @Test public void testReset_CreatesNewInstances() { mSelectionMgr.reset(null, null, null); // nulls are passed to factory. We ignore. mSelectionMgr.reset(null, null, null); // nulls are passed to factory. We ignore. |