Merge "Eliminate a cycle in class hierarchy." into nyc-andromeda-dev
diff --git a/src/com/android/documentsui/dirlist/DirectoryFragment.java b/src/com/android/documentsui/dirlist/DirectoryFragment.java
index 983d82f..f2696d0 100644
--- a/src/com/android/documentsui/dirlist/DirectoryFragment.java
+++ b/src/com/android/documentsui/dirlist/DirectoryFragment.java
@@ -97,7 +97,6 @@
 import com.android.documentsui.clipping.DocumentClipper;
 import com.android.documentsui.clipping.UrisSupplier;
 import com.android.documentsui.dirlist.MultiSelectManager.Selection;
-import com.android.documentsui.dirlist.UserInputHandler.DocumentDetails;
 import com.android.documentsui.dirlist.header.TableHeaderController;
 import com.android.documentsui.model.DocumentInfo;
 import com.android.documentsui.model.RootInfo;
diff --git a/src/com/android/documentsui/dirlist/DocumentDetails.java b/src/com/android/documentsui/dirlist/DocumentDetails.java
new file mode 100644
index 0000000..27a2234
--- /dev/null
+++ b/src/com/android/documentsui/dirlist/DocumentDetails.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.documentsui.dirlist;
+
+import com.android.documentsui.Events.InputEvent;
+
+/**
+ * Interface providing a loose coupling between DocumentHolder.
+ */
+public interface DocumentDetails {
+    String getModelId();
+    int getAdapterPosition();
+    boolean isInSelectionHotspot(InputEvent event);
+}
diff --git a/src/com/android/documentsui/dirlist/DocumentHolder.java b/src/com/android/documentsui/dirlist/DocumentHolder.java
index c2b0bf2..d30d18c 100644
--- a/src/com/android/documentsui/dirlist/DocumentHolder.java
+++ b/src/com/android/documentsui/dirlist/DocumentHolder.java
@@ -30,12 +30,9 @@
 import com.android.documentsui.Events.InputEvent;
 import com.android.documentsui.R;
 import com.android.documentsui.State;
-import com.android.documentsui.dirlist.UserInputHandler.DocumentDetails;
 
 public abstract class DocumentHolder
-        extends RecyclerView.ViewHolder
-        implements View.OnKeyListener,
-        DocumentDetails {
+        extends RecyclerView.ViewHolder implements View.OnKeyListener, DocumentDetails {
 
     static final float DISABLED_ALPHA = 0.3f;
 
diff --git a/src/com/android/documentsui/dirlist/UserInputHandler.java b/src/com/android/documentsui/dirlist/UserInputHandler.java
index 07b0cd8..bd0cbf1 100644
--- a/src/com/android/documentsui/dirlist/UserInputHandler.java
+++ b/src/com/android/documentsui/dirlist/UserInputHandler.java
@@ -26,7 +26,6 @@
 
 import com.android.documentsui.Events;
 import com.android.documentsui.Events.InputEvent;
-import com.android.documentsui.dirlist.DocumentHolder.KeyboardEventListener;
 
 import java.util.function.Function;
 import java.util.function.Predicate;
@@ -36,7 +35,7 @@
  */
 public final class UserInputHandler<T extends InputEvent>
         extends GestureDetector.SimpleOnGestureListener
-        implements KeyboardEventListener {
+        implements DocumentHolder.KeyboardEventListener {
 
     private static final String TAG = "UserInputHandler";
 
@@ -402,15 +401,6 @@
         }
     }
 
-    /**
-     * Class providing limited access to document view info.
-     */
-    public interface DocumentDetails {
-        String getModelId();
-        int getAdapterPosition();
-        boolean isInSelectionHotspot(InputEvent event);
-    }
-
     @FunctionalInterface
     interface EventHandler {
         boolean apply(InputEvent event);
diff --git a/tests/src/com/android/documentsui/dirlist/UserInputHandler_MouseTest.java b/tests/src/com/android/documentsui/dirlist/UserInputHandler_MouseTest.java
index 4c34546..4e7997f 100644
--- a/tests/src/com/android/documentsui/dirlist/UserInputHandler_MouseTest.java
+++ b/tests/src/com/android/documentsui/dirlist/UserInputHandler_MouseTest.java
@@ -22,7 +22,6 @@
 import android.view.MotionEvent;
 
 import com.android.documentsui.Events.InputEvent;
-import com.android.documentsui.dirlist.UserInputHandler.DocumentDetails;
 import com.android.documentsui.testing.TestEvent;
 import com.android.documentsui.testing.TestEvent.Builder;
 import com.android.documentsui.testing.TestPredicate;
diff --git a/tests/src/com/android/documentsui/dirlist/UserInputHandler_RangeTest.java b/tests/src/com/android/documentsui/dirlist/UserInputHandler_RangeTest.java
index 1d763f9..b3032f7 100644
--- a/tests/src/com/android/documentsui/dirlist/UserInputHandler_RangeTest.java
+++ b/tests/src/com/android/documentsui/dirlist/UserInputHandler_RangeTest.java
@@ -21,7 +21,6 @@
 import android.view.MotionEvent;
 
 import com.android.documentsui.Events.InputEvent;
-import com.android.documentsui.dirlist.UserInputHandler.DocumentDetails;
 import com.android.documentsui.testing.TestEvent;
 import com.android.documentsui.testing.TestEvent.Builder;
 import com.android.documentsui.testing.TestPredicate;
diff --git a/tests/src/com/android/documentsui/dirlist/UserInputHandler_TouchTest.java b/tests/src/com/android/documentsui/dirlist/UserInputHandler_TouchTest.java
index 2d1453e..b6e9306 100644
--- a/tests/src/com/android/documentsui/dirlist/UserInputHandler_TouchTest.java
+++ b/tests/src/com/android/documentsui/dirlist/UserInputHandler_TouchTest.java
@@ -22,7 +22,6 @@
 import android.view.MotionEvent;
 
 import com.android.documentsui.Events.InputEvent;
-import com.android.documentsui.dirlist.UserInputHandler.DocumentDetails;
 import com.android.documentsui.testing.TestEvent;
 import com.android.documentsui.testing.TestEvent.Builder;
 import com.android.documentsui.testing.TestPredicate;
diff --git a/tests/src/com/android/documentsui/testing/TestEvent.java b/tests/src/com/android/documentsui/testing/TestEvent.java
index 98fa2de..e59a603 100644
--- a/tests/src/com/android/documentsui/testing/TestEvent.java
+++ b/tests/src/com/android/documentsui/testing/TestEvent.java
@@ -18,7 +18,7 @@
 
 import com.android.documentsui.Events.InputEvent;
 import com.android.documentsui.TestInputEvent;
-import com.android.documentsui.dirlist.UserInputHandler.DocumentDetails;
+import com.android.documentsui.dirlist.DocumentDetails;
 
 /**
  * Events and DocDetails are closely related. For the pursposes of this test