Pull clipping related classes to a separate package.

Change-Id: I125d1c34e475f9465e82014cb869f88c9c7cebc4
diff --git a/packages/DocumentsUI/src/com/android/documentsui/DocumentsApplication.java b/packages/DocumentsUI/src/com/android/documentsui/DocumentsApplication.java
index 93eb527..3b2529f 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/DocumentsApplication.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/DocumentsApplication.java
@@ -28,6 +28,9 @@
 import android.os.RemoteException;
 import android.text.format.DateUtils;
 
+import com.android.documentsui.clipping.ClipStorage;
+import com.android.documentsui.clipping.DocumentClipper;
+
 public class DocumentsApplication extends Application {
     private static final long PROVIDER_ANR_TIMEOUT = 20 * DateUtils.SECOND_IN_MILLIS;
 
diff --git a/packages/DocumentsUI/src/com/android/documentsui/FilesActivity.java b/packages/DocumentsUI/src/com/android/documentsui/FilesActivity.java
index c7c53ba..01dd237 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/FilesActivity.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/FilesActivity.java
@@ -39,6 +39,7 @@
 import com.android.documentsui.MenuManager.DirectoryDetails;
 import com.android.documentsui.OperationDialogFragment.DialogType;
 import com.android.documentsui.RecentsProvider.ResumeColumns;
+import com.android.documentsui.clipping.DocumentClipper;
 import com.android.documentsui.dirlist.AnimationView;
 import com.android.documentsui.dirlist.DirectoryFragment;
 import com.android.documentsui.dirlist.FragmentTuner;
diff --git a/packages/DocumentsUI/src/com/android/documentsui/ClipStorage.java b/packages/DocumentsUI/src/com/android/documentsui/clipping/ClipStorage.java
similarity index 69%
rename from packages/DocumentsUI/src/com/android/documentsui/ClipStorage.java
rename to packages/DocumentsUI/src/com/android/documentsui/clipping/ClipStorage.java
index 3f0427f..b9fc93e 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/ClipStorage.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/clipping/ClipStorage.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.android.documentsui;
+package com.android.documentsui.clipping;
 
 import android.content.SharedPreferences;
 import android.net.Uri;
@@ -24,15 +24,13 @@
 import android.system.Os;
 import android.util.Log;
 
+import com.android.documentsui.Files;
+
 import java.io.Closeable;
 import java.io.File;
-import java.io.FileInputStream;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.nio.channels.FileLock;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Scanner;
 import java.util.concurrent.TimeUnit;
 
 /**
@@ -45,7 +43,7 @@
 
     public static final int NO_SELECTION_TAG = -1;
 
-    static final String PREF_NAME = "ClipStoragePref";
+    public static final String PREF_NAME = "ClipStoragePref";
 
     @VisibleForTesting
     static final int NUM_OF_SLOTS = 20;
@@ -90,7 +88,7 @@
      *     file may be overwritten.</li>
      * </ul>
      */
-    public synchronized int claimStorageSlot() {
+    synchronized int claimStorageSlot() {
         int curPos = mNextPos;
         for (int i = 0; i < NUM_OF_SLOTS; ++i, curPos = (curPos + 1) % NUM_OF_SLOTS) {
             createSlotFile(curPos);
@@ -167,9 +165,9 @@
     /**
      * Returns a Reader. Callers must close the reader when finished.
      */
-    public Reader createReader(File file) throws IOException {
+    ClipStorageReader createReader(File file) throws IOException {
         assert(file.getParentFile().getParentFile().equals(mOutDir));
-        return new Reader(file);
+        return new ClipStorageReader(file);
     }
 
     private File toSlotDataFile(int pos) {
@@ -186,7 +184,7 @@
     /**
      * Provides initialization of the clip data storage directory.
      */
-    static File prepareStorage(File cacheDir) {
+    public static File prepareStorage(File cacheDir) {
         File clipDir = getClipDir(cacheDir);
         clipDir.mkdir();
 
@@ -198,96 +196,6 @@
         return new File(cacheDir, "clippings");
     }
 
-    static final class Reader implements Iterable<Uri>, Closeable {
-
-        /**
-         * FileLock can't be held multiple times in a single JVM, but it's possible to have multiple
-         * readers reading the same clip file. Share the FileLock here so that it can be released
-         * when it's not needed.
-         */
-        private static final Map<String, FileLockEntry> sLocks = new HashMap<>();
-
-        private final String mCanonicalPath;
-        private final Scanner mScanner;
-
-        private Reader(File file) throws IOException {
-            FileInputStream inStream = new FileInputStream(file);
-            mScanner = new Scanner(inStream);
-
-            mCanonicalPath = file.getCanonicalPath(); // Resolve symlink
-            synchronized (sLocks) {
-                if (sLocks.containsKey(mCanonicalPath)) {
-                    // Read lock is already held by someone in this JVM, just increment the ref
-                    // count.
-                    sLocks.get(mCanonicalPath).mCount++;
-                } else {
-                    // No map entry, need to lock the file so it won't pass this line until the
-                    // corresponding writer is done writing.
-                    FileLock lock = inStream.getChannel().lock(0L, Long.MAX_VALUE, true);
-                    sLocks.put(mCanonicalPath, new FileLockEntry(1, lock, mScanner));
-                }
-            }
-        }
-
-        @Override
-        public Iterator iterator() {
-            return new Iterator(mScanner);
-        }
-
-        @Override
-        public void close() throws IOException {
-            synchronized (sLocks) {
-                FileLockEntry ref = sLocks.get(mCanonicalPath);
-
-                assert(ref.mCount > 0);
-                if (--ref.mCount == 0) {
-                    // If ref count is 0 now, then there is no one who needs to hold the read lock.
-                    // Release the lock, and remove the entry.
-                    ref.mLock.release();
-                    ref.mScanner.close();
-                    sLocks.remove(mCanonicalPath);
-                }
-
-                if (mScanner != ref.mScanner) {
-                    mScanner.close();
-                }
-            }
-        }
-    }
-
-    private static final class Iterator implements java.util.Iterator {
-        private final Scanner mScanner;
-
-        private Iterator(Scanner scanner) {
-            mScanner = scanner;
-        }
-
-        @Override
-        public boolean hasNext() {
-            return mScanner.hasNextLine();
-        }
-
-        @Override
-        public Uri next() {
-            String line = mScanner.nextLine();
-            return Uri.parse(line);
-        }
-    }
-
-    private static final class FileLockEntry {
-        private int mCount;
-        private FileLock mLock;
-        // We need to keep this scanner here because if the scanner is closed, the file lock is
-        // closed too.
-        private Scanner mScanner;
-
-        private FileLockEntry(int count, FileLock lock, Scanner scanner) {
-            mCount = count;
-            mLock = lock;
-            mScanner = scanner;
-        }
-    }
-
     private static final class Writer implements Closeable {
 
         private final FileOutputStream mOut;
diff --git a/packages/DocumentsUI/src/com/android/documentsui/clipping/ClipStorageReader.java b/packages/DocumentsUI/src/com/android/documentsui/clipping/ClipStorageReader.java
new file mode 100644
index 0000000..2bae0f8
--- /dev/null
+++ b/packages/DocumentsUI/src/com/android/documentsui/clipping/ClipStorageReader.java
@@ -0,0 +1,125 @@
+/*
+ * 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.clipping;
+
+import android.net.Uri;
+
+import java.io.Closeable;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.nio.channels.FileLock;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Scanner;
+
+/**
+ * Reader class used to read uris from clip files stored in {@link ClipStorage}. It provides
+ * synchronization within a single process as an addition to {@link FileLock} which is for
+ * cross-process synchronization.
+ */
+class ClipStorageReader implements Iterable<Uri>, Closeable {
+
+    /**
+     * FileLock can't be held multiple times in a single JVM, but it's possible to have multiple
+     * readers reading the same clip file. Share the FileLock here so that it can be released
+     * when it's not needed.
+     */
+    private static final Map<String, FileLockEntry> sLocks = new HashMap<>();
+
+    private final String mCanonicalPath;
+    private final Scanner mScanner;
+
+    ClipStorageReader(File file) throws IOException {
+        FileInputStream inStream = new FileInputStream(file);
+        mScanner = new Scanner(inStream);
+
+        mCanonicalPath = file.getCanonicalPath(); // Resolve symlink
+        synchronized (sLocks) {
+            if (sLocks.containsKey(mCanonicalPath)) {
+                // Read lock is already held by someone in this JVM, just increment the ref
+                // count.
+                sLocks.get(mCanonicalPath).mCount++;
+            } else {
+                // No map entry, need to lock the file so it won't pass this line until the
+                // corresponding writer is done writing.
+                FileLock lock = inStream.getChannel().lock(0L, Long.MAX_VALUE, true);
+                sLocks.put(mCanonicalPath, new FileLockEntry(1, lock, mScanner));
+            }
+        }
+    }
+
+    @Override
+    public Iterator iterator() {
+        return new Iterator(mScanner);
+    }
+
+    @Override
+    public void close() throws IOException {
+        FileLockEntry ref;
+        synchronized (sLocks) {
+            ref = sLocks.get(mCanonicalPath);
+
+            assert(ref.mCount > 0);
+            if (--ref.mCount == 0) {
+                // If ref count is 0 now, then there is no one who needs to hold the read lock.
+                // Release the lock, and remove the entry.
+                ref.mLock.release();
+                ref.mScanner.close();
+                sLocks.remove(mCanonicalPath);
+            }
+        }
+
+        if (mScanner != ref.mScanner) {
+            mScanner.close();
+        }
+    }
+
+    private static final class Iterator implements java.util.Iterator {
+        private final Scanner mScanner;
+
+        private Iterator(Scanner scanner) {
+            mScanner = scanner;
+        }
+
+        @Override
+        public boolean hasNext() {
+            return mScanner.hasNextLine();
+        }
+
+        @Override
+        public Uri next() {
+            String line = mScanner.nextLine();
+            return Uri.parse(line);
+        }
+    }
+
+    private static final class FileLockEntry {
+        private final FileLock mLock;
+        // We need to keep this scanner here because if the scanner is closed, the file lock is
+        // closed too.
+        private final Scanner mScanner;
+
+        private int mCount;
+
+        private FileLockEntry(int count, FileLock lock, Scanner scanner) {
+            mCount = count;
+            mLock = lock;
+            mScanner = scanner;
+        }
+    }
+}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/DocumentClipper.java b/packages/DocumentsUI/src/com/android/documentsui/clipping/DocumentClipper.java
similarity index 97%
rename from packages/DocumentsUI/src/com/android/documentsui/DocumentClipper.java
rename to packages/DocumentsUI/src/com/android/documentsui/clipping/DocumentClipper.java
index c95ffd1..0b6355a 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/DocumentClipper.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/clipping/DocumentClipper.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2015 The Android Open Source Project
+ * 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.
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.android.documentsui;
+package com.android.documentsui.clipping;
 
 import android.content.ClipData;
 import android.content.ClipDescription;
@@ -27,6 +27,7 @@
 import android.support.annotation.Nullable;
 import android.util.Log;
 
+import com.android.documentsui.Shared;
 import com.android.documentsui.dirlist.MultiSelectManager.Selection;
 import com.android.documentsui.model.DocumentInfo;
 import com.android.documentsui.model.DocumentStack;
@@ -59,7 +60,7 @@
     private final ClipStorage mClipStorage;
     private final ClipboardManager mClipboard;
 
-    DocumentClipper(Context context, ClipStorage storage) {
+    public DocumentClipper(Context context, ClipStorage storage) {
         mContext = context;
         mClipStorage = storage;
         mClipboard = context.getSystemService(ClipboardManager.class);
diff --git a/packages/DocumentsUI/src/com/android/documentsui/UrisSupplier.java b/packages/DocumentsUI/src/com/android/documentsui/clipping/UrisSupplier.java
similarity index 94%
rename from packages/DocumentsUI/src/com/android/documentsui/UrisSupplier.java
rename to packages/DocumentsUI/src/com/android/documentsui/clipping/UrisSupplier.java
index e4a11ef..7b1ba34 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/UrisSupplier.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/clipping/UrisSupplier.java
@@ -14,10 +14,10 @@
  * limitations under the License.
  */
 
-package com.android.documentsui;
+package com.android.documentsui.clipping;
 
-import static com.android.documentsui.DocumentClipper.OP_JUMBO_SELECTION_SIZE;
-import static com.android.documentsui.DocumentClipper.OP_JUMBO_SELECTION_TAG;
+import static com.android.documentsui.clipping.DocumentClipper.OP_JUMBO_SELECTION_SIZE;
+import static com.android.documentsui.clipping.DocumentClipper.OP_JUMBO_SELECTION_TAG;
 
 import android.content.ClipData;
 import android.content.Context;
@@ -28,6 +28,8 @@
 import android.support.annotation.VisibleForTesting;
 import android.util.Log;
 
+import com.android.documentsui.DocumentsApplication;
+import com.android.documentsui.Shared;
 import com.android.documentsui.dirlist.MultiSelectManager.Selection;
 import com.android.documentsui.services.FileOperation;
 
@@ -110,7 +112,7 @@
         private final File mFile;
         private final int mSelectionSize;
 
-        private final transient AtomicReference<ClipStorage.Reader> mReader =
+        private final transient AtomicReference<ClipStorageReader> mReader =
                 new AtomicReference<>();
 
         private JumboUrisSupplier(ClipData clipData, Context context) throws IOException {
@@ -143,7 +145,7 @@
 
         @Override
         Iterable<Uri> getUris(ClipStorage storage) throws IOException {
-            ClipStorage.Reader reader = mReader.getAndSet(storage.createReader(mFile));
+            ClipStorageReader reader = mReader.getAndSet(storage.createReader(mFile));
             if (reader != null) {
                 reader.close();
                 mReader.get().close();
@@ -156,7 +158,7 @@
         @Override
         public void dispose() {
             try {
-                ClipStorage.Reader reader = mReader.get();
+                ClipStorageReader reader = mReader.get();
                 if (reader != null) {
                     reader.close();
                 }
diff --git a/packages/DocumentsUI/src/com/android/documentsui/dirlist/DirectoryFragment.java b/packages/DocumentsUI/src/com/android/documentsui/dirlist/DirectoryFragment.java
index 3980cfc..32e16f2 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/dirlist/DirectoryFragment.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/dirlist/DirectoryFragment.java
@@ -73,7 +73,7 @@
 import com.android.documentsui.BaseActivity;
 import com.android.documentsui.DirectoryLoader;
 import com.android.documentsui.DirectoryResult;
-import com.android.documentsui.DocumentClipper;
+import com.android.documentsui.clipping.DocumentClipper;
 import com.android.documentsui.DocumentsActivity;
 import com.android.documentsui.DocumentsApplication;
 import com.android.documentsui.Events.InputEvent;
@@ -92,7 +92,7 @@
 import com.android.documentsui.Snackbars;
 import com.android.documentsui.State;
 import com.android.documentsui.State.ViewMode;
-import com.android.documentsui.UrisSupplier;
+import com.android.documentsui.clipping.UrisSupplier;
 import com.android.documentsui.dirlist.MultiSelectManager.Selection;
 import com.android.documentsui.dirlist.UserInputHandler.DocumentDetails;
 import com.android.documentsui.model.DocumentInfo;
diff --git a/packages/DocumentsUI/src/com/android/documentsui/services/CopyJob.java b/packages/DocumentsUI/src/com/android/documentsui/services/CopyJob.java
index 7497a83..c8f6a64 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/services/CopyJob.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/services/CopyJob.java
@@ -55,7 +55,7 @@
 import com.android.documentsui.Metrics;
 import com.android.documentsui.R;
 import com.android.documentsui.RootsCache;
-import com.android.documentsui.UrisSupplier;
+import com.android.documentsui.clipping.UrisSupplier;
 import com.android.documentsui.model.DocumentInfo;
 import com.android.documentsui.model.DocumentStack;
 import com.android.documentsui.model.RootInfo;
diff --git a/packages/DocumentsUI/src/com/android/documentsui/services/DeleteJob.java b/packages/DocumentsUI/src/com/android/documentsui/services/DeleteJob.java
index 92440a2..64bc1a7 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/services/DeleteJob.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/services/DeleteJob.java
@@ -26,7 +26,7 @@
 import android.net.Uri;
 import android.util.Log;
 
-import com.android.documentsui.UrisSupplier;
+import com.android.documentsui.clipping.UrisSupplier;
 import com.android.documentsui.Metrics;
 import com.android.documentsui.R;
 import com.android.documentsui.model.DocumentInfo;
diff --git a/packages/DocumentsUI/src/com/android/documentsui/services/FileOperation.java b/packages/DocumentsUI/src/com/android/documentsui/services/FileOperation.java
index c905a35..43c3bd7 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/services/FileOperation.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/services/FileOperation.java
@@ -27,7 +27,7 @@
 import android.os.Parcelable;
 import android.support.annotation.VisibleForTesting;
 
-import com.android.documentsui.UrisSupplier;
+import com.android.documentsui.clipping.UrisSupplier;
 import com.android.documentsui.model.DocumentStack;
 import com.android.documentsui.services.FileOperationService.OpType;
 
diff --git a/packages/DocumentsUI/src/com/android/documentsui/services/Job.java b/packages/DocumentsUI/src/com/android/documentsui/services/Job.java
index f9f49ca..14ae66e 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/services/Job.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/services/Job.java
@@ -40,7 +40,7 @@
 import android.provider.DocumentsContract;
 import android.util.Log;
 
-import com.android.documentsui.UrisSupplier;
+import com.android.documentsui.clipping.UrisSupplier;
 import com.android.documentsui.FilesActivity;
 import com.android.documentsui.Metrics;
 import com.android.documentsui.OperationDialogFragment;
diff --git a/packages/DocumentsUI/src/com/android/documentsui/services/MoveJob.java b/packages/DocumentsUI/src/com/android/documentsui/services/MoveJob.java
index beae9a8..ab0fae1 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/services/MoveJob.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/services/MoveJob.java
@@ -30,7 +30,7 @@
 import android.util.Log;
 
 import com.android.documentsui.R;
-import com.android.documentsui.UrisSupplier;
+import com.android.documentsui.clipping.UrisSupplier;
 import com.android.documentsui.model.DocumentInfo;
 import com.android.documentsui.model.DocumentStack;
 
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/ClipStorageTest.java b/packages/DocumentsUI/tests/src/com/android/documentsui/clipping/ClipStorageTest.java
similarity index 91%
rename from packages/DocumentsUI/tests/src/com/android/documentsui/ClipStorageTest.java
rename to packages/DocumentsUI/tests/src/com/android/documentsui/clipping/ClipStorageTest.java
index 788a5b3..73366f8 100644
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/ClipStorageTest.java
+++ b/packages/DocumentsUI/tests/src/com/android/documentsui/clipping/ClipStorageTest.java
@@ -14,9 +14,9 @@
  * limitations under the License.
  */
 
-package com.android.documentsui;
+package com.android.documentsui.clipping;
 
-import static com.android.documentsui.ClipStorage.NUM_OF_SLOTS;
+import static com.android.documentsui.clipping.ClipStorage.NUM_OF_SLOTS;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
@@ -29,7 +29,6 @@
 import android.support.test.filters.SmallTest;
 import android.support.test.runner.AndroidJUnit4;
 
-import com.android.documentsui.ClipStorage.Reader;
 import com.android.documentsui.testing.TestScheduledExecutorService;
 
 import org.junit.AfterClass;
@@ -89,7 +88,7 @@
         List<Uri> uris = new ArrayList<>();
 
         File copy = mStorage.getFile(mTag);
-        try(Reader provider = mStorage.createReader(copy)) {
+        try(ClipStorageReader provider = mStorage.createReader(copy)) {
             for (Uri uri : provider) {
                 uris.add(uri);
             }
@@ -98,7 +97,7 @@
     }
 
     @Test
-    public void testGetTag_NoAvailableSlot() throws Exception {
+    public void testClaimStorageSlot_NoAvailableSlot() throws Exception {
         int firstTag = mStorage.claimStorageSlot();
         writeAll(firstTag, TEST_URIS);
         mStorage.getFile(firstTag);
@@ -119,8 +118,8 @@
 
         File copy = mStorage.getFile(mTag);
         File copy2 = mStorage.getFile(mTag);
-        try(Reader reader = mStorage.createReader(copy)) {
-            try(Reader reader2 = mStorage.createReader(copy2)){
+        try(ClipStorageReader reader = mStorage.createReader(copy)) {
+            try(ClipStorageReader reader2 = mStorage.createReader(copy2)){
                 Iterator<Uri> iter = reader.iterator();
                 Iterator<Uri> iter2 = reader2.iterator();
 
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/UrisSupplierTest.java b/packages/DocumentsUI/tests/src/com/android/documentsui/clipping/UrisSupplierTest.java
similarity index 97%
rename from packages/DocumentsUI/tests/src/com/android/documentsui/UrisSupplierTest.java
rename to packages/DocumentsUI/tests/src/com/android/documentsui/clipping/UrisSupplierTest.java
index 2622322..9815d0e 100644
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/UrisSupplierTest.java
+++ b/packages/DocumentsUI/tests/src/com/android/documentsui/clipping/UrisSupplierTest.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.android.documentsui;
+package com.android.documentsui.clipping;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
@@ -27,6 +27,7 @@
 import android.support.test.filters.MediumTest;
 import android.support.test.runner.AndroidJUnit4;
 
+import com.android.documentsui.Shared;
 import com.android.documentsui.testing.TestScheduledExecutorService;
 
 import org.junit.AfterClass;
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/services/AbstractJobTest.java b/packages/DocumentsUI/tests/src/com/android/documentsui/services/AbstractJobTest.java
index 053942b..6e4e534 100644
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/services/AbstractJobTest.java
+++ b/packages/DocumentsUI/tests/src/com/android/documentsui/services/AbstractJobTest.java
@@ -27,7 +27,7 @@
 import android.test.AndroidTestCase;
 import android.test.suitebuilder.annotation.MediumTest;
 
-import com.android.documentsui.UrisSupplier;
+import com.android.documentsui.clipping.UrisSupplier;
 import com.android.documentsui.DocumentsProviderHelper;
 import com.android.documentsui.StubProvider;
 import com.android.documentsui.model.DocumentInfo;
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/services/FileOperationServiceTest.java b/packages/DocumentsUI/tests/src/com/android/documentsui/services/FileOperationServiceTest.java
index b49d15d..d6bbe5a 100644
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/services/FileOperationServiceTest.java
+++ b/packages/DocumentsUI/tests/src/com/android/documentsui/services/FileOperationServiceTest.java
@@ -32,7 +32,7 @@
 import android.test.ServiceTestCase;
 import android.test.suitebuilder.annotation.MediumTest;
 
-import com.android.documentsui.UrisSupplier;
+import com.android.documentsui.clipping.UrisSupplier;
 import com.android.documentsui.model.DocumentInfo;
 import com.android.documentsui.model.DocumentStack;
 import com.android.documentsui.testing.DocsProviders;
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/services/TestJob.java b/packages/DocumentsUI/tests/src/com/android/documentsui/services/TestJob.java
index 0c273c0..1fbcf37 100644
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/services/TestJob.java
+++ b/packages/DocumentsUI/tests/src/com/android/documentsui/services/TestJob.java
@@ -23,7 +23,7 @@
 import android.app.Notification.Builder;
 import android.content.Context;
 
-import com.android.documentsui.UrisSupplier;
+import com.android.documentsui.clipping.UrisSupplier;
 import com.android.documentsui.R;
 import com.android.documentsui.model.DocumentInfo;
 import com.android.documentsui.model.DocumentStack;
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/testing/DocsProviders.java b/packages/DocumentsUI/tests/src/com/android/documentsui/testing/DocsProviders.java
index d438892..c08157f 100644
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/testing/DocsProviders.java
+++ b/packages/DocumentsUI/tests/src/com/android/documentsui/testing/DocsProviders.java
@@ -18,7 +18,7 @@
 
 import android.net.Uri;
 
-import com.android.documentsui.UrisSupplier;
+import com.android.documentsui.clipping.UrisSupplier;
 
 import java.util.List;