summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Steve McKay <smckay@google.com> 2016-09-15 16:36:45 -0700
committer Steve McKay <smckay@google.com> 2016-09-16 06:31:15 -0700
commitd9caa6ab53aa784acaf241c0ded3c4ae2d342bf8 (patch)
tree08f802eb710f2c5149831df7be37beab5e8cd764
parent06c4b1111ec49bb70ec6977e86322f1c8f9bbe58 (diff)
Move State to base and root stuff to roots.
And move Shared to base. And lots more to base. Change-Id: I8b01264a329473c13c59f0cd25a320ba73dbd82d
-rw-r--r--AndroidManifest.xml2
-rw-r--r--app-perf-tests/src/com/android/documentsui/LauncherActivity.java2
-rw-r--r--perf-tests/src/com/android/documentsui/FilesActivityPerfTest.java5
-rw-r--r--src/com/android/documentsui/BaseActivity.java52
-rw-r--r--src/com/android/documentsui/CreateDirectoryFragment.java3
-rw-r--r--src/com/android/documentsui/DirectoryLoader.java2
-rw-r--r--src/com/android/documentsui/DocumentsApplication.java1
-rw-r--r--src/com/android/documentsui/DocumentsMenuManager.java12
-rw-r--r--src/com/android/documentsui/DrawerController.java4
-rw-r--r--src/com/android/documentsui/DropdownBreadcrumb.java1
-rw-r--r--src/com/android/documentsui/EventListener.java32
-rw-r--r--src/com/android/documentsui/FilesMenuManager.java1
-rw-r--r--src/com/android/documentsui/HorizontalBreadcrumb.java6
-rw-r--r--src/com/android/documentsui/IconUtils.java2
-rw-r--r--src/com/android/documentsui/MenuManager.java3
-rw-r--r--src/com/android/documentsui/Metrics.java5
-rw-r--r--src/com/android/documentsui/NavigationViewManager.java3
-rw-r--r--src/com/android/documentsui/OpenExternalDirectoryActivity.java11
-rw-r--r--src/com/android/documentsui/PackageReceiver.java1
-rw-r--r--src/com/android/documentsui/RecentsLoader.java8
-rw-r--r--src/com/android/documentsui/RetainedState.java36
-rw-r--r--src/com/android/documentsui/SearchViewManager.java3
-rw-r--r--src/com/android/documentsui/Snackbars.java2
-rw-r--r--src/com/android/documentsui/ThumbnailCache.java2
-rw-r--r--src/com/android/documentsui/base/Display.java (renamed from src/com/android/documentsui/Display.java)2
-rw-r--r--src/com/android/documentsui/base/DocumentInfo.java2
-rw-r--r--src/com/android/documentsui/base/DurableUtils.java2
-rw-r--r--src/com/android/documentsui/base/Events.java (renamed from src/com/android/documentsui/Events.java)4
-rw-r--r--src/com/android/documentsui/base/Files.java (renamed from src/com/android/documentsui/Files.java)2
-rw-r--r--src/com/android/documentsui/base/FilteringCursorWrapper.java (renamed from src/com/android/documentsui/FilteringCursorWrapper.java)6
-rw-r--r--src/com/android/documentsui/base/LocalPreferences.java (renamed from src/com/android/documentsui/LocalPreferences.java)15
-rw-r--r--src/com/android/documentsui/base/Menus.java (renamed from src/com/android/documentsui/Menus.java)2
-rw-r--r--src/com/android/documentsui/base/MimePredicate.java (renamed from src/com/android/documentsui/MimePredicate.java)3
-rw-r--r--src/com/android/documentsui/base/RootInfo.java4
-rw-r--r--src/com/android/documentsui/base/Shared.java (renamed from src/com/android/documentsui/Shared.java)5
-rw-r--r--src/com/android/documentsui/base/State.java (renamed from src/com/android/documentsui/State.java)8
-rw-r--r--src/com/android/documentsui/clipping/ClipStorage.java2
-rw-r--r--src/com/android/documentsui/clipping/DocumentClipper.java2
-rw-r--r--src/com/android/documentsui/clipping/UrisSupplier.java2
-rw-r--r--src/com/android/documentsui/dirlist/ActionModeController.java6
-rw-r--r--src/com/android/documentsui/dirlist/AnimationView.java2
-rw-r--r--src/com/android/documentsui/dirlist/BandController.java4
-rw-r--r--src/com/android/documentsui/dirlist/DirectoryFragment.java22
-rw-r--r--src/com/android/documentsui/dirlist/DocumentDetails.java2
-rw-r--r--src/com/android/documentsui/dirlist/DocumentHolder.java6
-rw-r--r--src/com/android/documentsui/dirlist/DocumentsAdapter.java2
-rw-r--r--src/com/android/documentsui/dirlist/DocumentsSwipeRefreshLayout.java2
-rw-r--r--src/com/android/documentsui/dirlist/DragShadowBuilder.java2
-rw-r--r--src/com/android/documentsui/dirlist/DragStartListener.java8
-rw-r--r--src/com/android/documentsui/dirlist/FocusManager.java2
-rw-r--r--src/com/android/documentsui/dirlist/FragmentTuner.java14
-rw-r--r--src/com/android/documentsui/dirlist/GestureSelector.java2
-rw-r--r--src/com/android/documentsui/dirlist/GridDirectoryHolder.java4
-rw-r--r--src/com/android/documentsui/dirlist/GridDocumentHolder.java8
-rw-r--r--src/com/android/documentsui/dirlist/IconHelper.java12
-rw-r--r--src/com/android/documentsui/dirlist/ListDocumentHolder.java8
-rw-r--r--src/com/android/documentsui/dirlist/ListeningGestureDetector.java6
-rw-r--r--src/com/android/documentsui/dirlist/Model.java6
-rw-r--r--src/com/android/documentsui/dirlist/ModelBackedDocumentsAdapter.java8
-rw-r--r--src/com/android/documentsui/dirlist/MultiSelectManager.java2
-rw-r--r--src/com/android/documentsui/dirlist/RenameDocumentFragment.java4
-rw-r--r--src/com/android/documentsui/dirlist/SectionBreakDocumentsAdapterWrapper.java2
-rw-r--r--src/com/android/documentsui/dirlist/SelectionMetadata.java2
-rw-r--r--src/com/android/documentsui/dirlist/UserInputHandler.java6
-rw-r--r--src/com/android/documentsui/manager/LauncherActivity.java4
-rw-r--r--src/com/android/documentsui/manager/ManageActivity.java8
-rw-r--r--src/com/android/documentsui/manager/QuickViewIntentBuilder.java6
-rw-r--r--src/com/android/documentsui/picker/LoadLastAccessedStackTask.java12
-rw-r--r--src/com/android/documentsui/picker/PickActivity.java20
-rw-r--r--src/com/android/documentsui/picker/PickFragment.java2
-rw-r--r--src/com/android/documentsui/roots/BootReceiver.java (renamed from src/com/android/documentsui/BootReceiver.java)4
-rw-r--r--src/com/android/documentsui/roots/LoadRootTask.java (renamed from src/com/android/documentsui/LoadRootTask.java)19
-rw-r--r--src/com/android/documentsui/roots/RootCursorWrapper.java (renamed from src/com/android/documentsui/RootCursorWrapper.java)2
-rw-r--r--src/com/android/documentsui/roots/RootsCache.java (renamed from src/com/android/documentsui/RootsCache.java)13
-rw-r--r--src/com/android/documentsui/roots/RootsLoader.java (renamed from src/com/android/documentsui/RootsLoader.java)3
-rw-r--r--src/com/android/documentsui/services/CopyJob.java4
-rw-r--r--src/com/android/documentsui/services/DeleteJob.java2
-rw-r--r--src/com/android/documentsui/services/FileOperationService.java2
-rw-r--r--src/com/android/documentsui/services/FileOperations.java3
-rw-r--r--src/com/android/documentsui/services/Job.java2
-rw-r--r--src/com/android/documentsui/services/MoveJob.java2
-rw-r--r--src/com/android/documentsui/sidebar/EjectRootTask.java2
-rw-r--r--src/com/android/documentsui/sidebar/RootsFragment.java12
-rw-r--r--src/com/android/documentsui/sorting/SortController.java4
-rw-r--r--src/com/android/documentsui/sorting/SortModel.java2
-rw-r--r--tests/src/com/android/documentsui/DocumentsMenuManagerTest.java6
-rw-r--r--tests/src/com/android/documentsui/DocumentsProviderHelper.java1
-rw-r--r--tests/src/com/android/documentsui/FilesMenuManagerTest.java1
-rw-r--r--tests/src/com/android/documentsui/base/StateTest.java (renamed from tests/src/com/android/documentsui/StateTest.java)2
-rw-r--r--tests/src/com/android/documentsui/clipping/UrisSupplierTest.java2
-rw-r--r--tests/src/com/android/documentsui/dirlist/DocumentHolderTest.java2
-rw-r--r--tests/src/com/android/documentsui/dirlist/DragStartListenerTest.java4
-rw-r--r--tests/src/com/android/documentsui/dirlist/ModelBackedDocumentsAdapterTest.java2
-rw-r--r--tests/src/com/android/documentsui/dirlist/ModelTest.java4
-rw-r--r--tests/src/com/android/documentsui/dirlist/SectionBreakDocumentsAdapterWrapperTest.java4
-rw-r--r--tests/src/com/android/documentsui/dirlist/TestModel.java2
-rw-r--r--tests/src/com/android/documentsui/dirlist/UserInputHandler_MouseTest.java2
-rw-r--r--tests/src/com/android/documentsui/dirlist/UserInputHandler_RangeTest.java2
-rw-r--r--tests/src/com/android/documentsui/dirlist/UserInputHandler_TouchTest.java2
-rw-r--r--tests/src/com/android/documentsui/functional/FilesActivityDefaultsUiTest.java2
-rw-r--r--tests/src/com/android/documentsui/roots/RootsCacheTest.java (renamed from tests/src/com/android/documentsui/RootsCacheTest.java)5
-rw-r--r--tests/src/com/android/documentsui/sorting/SortControllerTest.java2
-rw-r--r--tests/src/com/android/documentsui/sorting/SortController_TabletLayoutTest.java2
-rw-r--r--tests/src/com/android/documentsui/testing/TestEvent.java2
104 files changed, 289 insertions, 290 deletions
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 98523c826..f6d89d247 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -116,7 +116,7 @@
</intent-filter>
</receiver>
- <receiver android:name=".BootReceiver" android:enabled="false">
+ <receiver android:name=".roots.BootReceiver" android:enabled="false">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
diff --git a/app-perf-tests/src/com/android/documentsui/LauncherActivity.java b/app-perf-tests/src/com/android/documentsui/LauncherActivity.java
index 21ea8aa94..dd692c694 100644
--- a/app-perf-tests/src/com/android/documentsui/LauncherActivity.java
+++ b/app-perf-tests/src/com/android/documentsui/LauncherActivity.java
@@ -16,7 +16,7 @@
package com.android.documentsui;
-import static com.android.documentsui.Shared.EXTRA_BENCHMARK;
+import static com.android.documentsui.base.Shared.EXTRA_BENCHMARK;
import android.app.Activity;
import android.content.Intent;
diff --git a/perf-tests/src/com/android/documentsui/FilesActivityPerfTest.java b/perf-tests/src/com/android/documentsui/FilesActivityPerfTest.java
index 05c7c95be..921a3eae8 100644
--- a/perf-tests/src/com/android/documentsui/FilesActivityPerfTest.java
+++ b/perf-tests/src/com/android/documentsui/FilesActivityPerfTest.java
@@ -25,10 +25,8 @@ import android.net.Uri;
import android.os.Bundle;
import android.os.RemoteException;
import android.test.suitebuilder.annotation.LargeTest;
-import android.util.Log;
-import android.view.KeyEvent;
-import com.android.documentsui.EventListener;
+import com.android.documentsui.BaseActivity.EventListener;
import com.android.documentsui.base.RootInfo;
import com.android.documentsui.functional.ActivityTest;
import com.android.documentsui.manager.ManageActivity;
@@ -36,7 +34,6 @@ import com.android.documentsui.manager.ManageActivity;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
-import java.util.Random;
import java.util.concurrent.CountDownLatch;
@LargeTest
diff --git a/src/com/android/documentsui/BaseActivity.java b/src/com/android/documentsui/BaseActivity.java
index b61252b8a..0e6246481 100644
--- a/src/com/android/documentsui/BaseActivity.java
+++ b/src/com/android/documentsui/BaseActivity.java
@@ -16,14 +16,14 @@
package com.android.documentsui;
-import static com.android.documentsui.Shared.DEBUG;
-import static com.android.documentsui.Shared.EXTRA_BENCHMARK;
-import static com.android.documentsui.State.ACTION_CREATE;
-import static com.android.documentsui.State.ACTION_GET_CONTENT;
-import static com.android.documentsui.State.ACTION_OPEN;
-import static com.android.documentsui.State.ACTION_OPEN_TREE;
-import static com.android.documentsui.State.ACTION_PICK_COPY_DESTINATION;
-import static com.android.documentsui.State.MODE_GRID;
+import static com.android.documentsui.base.Shared.DEBUG;
+import static com.android.documentsui.base.Shared.EXTRA_BENCHMARK;
+import static com.android.documentsui.base.State.ACTION_CREATE;
+import static com.android.documentsui.base.State.ACTION_GET_CONTENT;
+import static com.android.documentsui.base.State.ACTION_OPEN;
+import static com.android.documentsui.base.State.ACTION_OPEN_TREE;
+import static com.android.documentsui.base.State.ACTION_PICK_COPY_DESTINATION;
+import static com.android.documentsui.base.State.MODE_GRID;
import android.app.Activity;
import android.app.Fragment;
@@ -44,6 +44,7 @@ import android.provider.DocumentsContract.Root;
import android.support.annotation.CallSuper;
import android.support.annotation.LayoutRes;
import android.support.annotation.Nullable;
+import android.support.annotation.VisibleForTesting;
import android.util.Log;
import android.view.KeyEvent;
import android.view.Menu;
@@ -53,15 +54,22 @@ import android.view.View;
import com.android.documentsui.MenuManager.DirectoryDetails;
import com.android.documentsui.NavigationViewManager.Breadcrumb;
import com.android.documentsui.SearchViewManager.SearchManagerListener;
-import com.android.documentsui.State.ViewMode;
import com.android.documentsui.base.DocumentInfo;
import com.android.documentsui.base.DocumentStack;
+import com.android.documentsui.base.Events;
+import com.android.documentsui.base.LocalPreferences;
import com.android.documentsui.base.PairedTask;
import com.android.documentsui.base.RootInfo;
+import com.android.documentsui.base.Shared;
+import com.android.documentsui.base.State;
+import com.android.documentsui.base.State.ViewMode;
import com.android.documentsui.dirlist.AnimationView;
import com.android.documentsui.dirlist.DirectoryFragment;
import com.android.documentsui.dirlist.FragmentTuner;
import com.android.documentsui.dirlist.Model;
+import com.android.documentsui.dirlist.MultiSelectManager.Selection;
+import com.android.documentsui.roots.LoadRootTask;
+import com.android.documentsui.roots.RootsCache;
import com.android.documentsui.services.FileOperationService;
import com.android.documentsui.services.FileOperations;
import com.android.documentsui.sidebar.RootsFragment;
@@ -107,8 +115,7 @@ public abstract class BaseActivity extends Activity
private static final String BENCHMARK_TESTING_PACKAGE = "com.android.documentsui.appperftests";
protected SearchViewManager mSearchManager;
- // TODO: Unpublic this by injecting it into LoadLastAccessedStackTask
- public State mState;
+ protected State mState;
protected @Nullable RetainedState mRetainedState;
protected RootsCache mRoots;
@@ -384,7 +391,7 @@ public abstract class BaseActivity extends Activity
}
protected final void loadRoot(final Uri uri) {
- new LoadRootTask(this, uri).executeOnExecutor(
+ new LoadRootTask(this, mRoots, mState, uri).executeOnExecutor(
ProviderExecutor.forAuthority(uri.getAuthority()));
}
@@ -820,4 +827,25 @@ public abstract class BaseActivity extends Activity
}
}
}
+
+ public final class RetainedState {
+ public @Nullable Selection selection;
+
+ public boolean hasSelection() {
+ return selection != null;
+ }
+ }
+
+ @VisibleForTesting
+ protected interface EventListener {
+ /**
+ * @param uri Uri navigated to. If recents, then null.
+ */
+ void onDirectoryNavigated(@Nullable Uri uri);
+
+ /**
+ * @param uri Uri of the loaded directory. If recents, then null.
+ */
+ void onDirectoryLoaded(@Nullable Uri uri);
+ }
}
diff --git a/src/com/android/documentsui/CreateDirectoryFragment.java b/src/com/android/documentsui/CreateDirectoryFragment.java
index 215f3bb24..486c6172e 100644
--- a/src/com/android/documentsui/CreateDirectoryFragment.java
+++ b/src/com/android/documentsui/CreateDirectoryFragment.java
@@ -16,7 +16,7 @@
package com.android.documentsui;
-import static com.android.documentsui.Shared.TAG;
+import static com.android.documentsui.base.Shared.TAG;
import android.app.AlertDialog;
import android.app.Dialog;
@@ -44,6 +44,7 @@ import android.widget.TextView;
import android.widget.TextView.OnEditorActionListener;
import com.android.documentsui.base.DocumentInfo;
+import com.android.documentsui.base.Shared;
/**
* Dialog to create a new directory.
diff --git a/src/com/android/documentsui/DirectoryLoader.java b/src/com/android/documentsui/DirectoryLoader.java
index 8a14e3179..ab79d011f 100644
--- a/src/com/android/documentsui/DirectoryLoader.java
+++ b/src/com/android/documentsui/DirectoryLoader.java
@@ -30,7 +30,9 @@ import android.provider.DocumentsContract.Document;
import android.util.Log;
import com.android.documentsui.base.DocumentInfo;
+import com.android.documentsui.base.FilteringCursorWrapper;
import com.android.documentsui.base.RootInfo;
+import com.android.documentsui.roots.RootCursorWrapper;
import com.android.documentsui.sorting.SortModel;
import java.io.FileNotFoundException;
diff --git a/src/com/android/documentsui/DocumentsApplication.java b/src/com/android/documentsui/DocumentsApplication.java
index 3b2529fd4..a751539f7 100644
--- a/src/com/android/documentsui/DocumentsApplication.java
+++ b/src/com/android/documentsui/DocumentsApplication.java
@@ -30,6 +30,7 @@ import android.text.format.DateUtils;
import com.android.documentsui.clipping.ClipStorage;
import com.android.documentsui.clipping.DocumentClipper;
+import com.android.documentsui.roots.RootsCache;
public class DocumentsApplication extends Application {
private static final long PROVIDER_ANR_TIMEOUT = 20 * DateUtils.SECOND_IN_MILLIS;
diff --git a/src/com/android/documentsui/DocumentsMenuManager.java b/src/com/android/documentsui/DocumentsMenuManager.java
index 6e191786b..4104a2c47 100644
--- a/src/com/android/documentsui/DocumentsMenuManager.java
+++ b/src/com/android/documentsui/DocumentsMenuManager.java
@@ -16,15 +16,17 @@
package com.android.documentsui;
-import static com.android.documentsui.State.ACTION_CREATE;
-import static com.android.documentsui.State.ACTION_GET_CONTENT;
-import static com.android.documentsui.State.ACTION_OPEN;
-import static com.android.documentsui.State.ACTION_OPEN_TREE;
-import static com.android.documentsui.State.ACTION_PICK_COPY_DESTINATION;
+import static com.android.documentsui.base.State.ACTION_CREATE;
+import static com.android.documentsui.base.State.ACTION_GET_CONTENT;
+import static com.android.documentsui.base.State.ACTION_OPEN;
+import static com.android.documentsui.base.State.ACTION_OPEN_TREE;
+import static com.android.documentsui.base.State.ACTION_PICK_COPY_DESTINATION;
import android.view.Menu;
import android.view.MenuItem;
+import com.android.documentsui.base.State;
+
public final class DocumentsMenuManager extends MenuManager {
private boolean mPicking;
diff --git a/src/com/android/documentsui/DrawerController.java b/src/com/android/documentsui/DrawerController.java
index eca3f0a9b..ebac991b4 100644
--- a/src/com/android/documentsui/DrawerController.java
+++ b/src/com/android/documentsui/DrawerController.java
@@ -16,7 +16,7 @@
package com.android.documentsui;
-import static com.android.documentsui.Shared.DEBUG;
+import static com.android.documentsui.base.Shared.DEBUG;
import android.annotation.IntDef;
import android.app.Activity;
@@ -28,6 +28,8 @@ import android.util.Log;
import android.view.View;
import android.widget.Toolbar;
+import com.android.documentsui.base.Display;
+
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
diff --git a/src/com/android/documentsui/DropdownBreadcrumb.java b/src/com/android/documentsui/DropdownBreadcrumb.java
index f34933072..98597b8dd 100644
--- a/src/com/android/documentsui/DropdownBreadcrumb.java
+++ b/src/com/android/documentsui/DropdownBreadcrumb.java
@@ -30,6 +30,7 @@ import com.android.documentsui.NavigationViewManager.Breadcrumb;
import com.android.documentsui.NavigationViewManager.Environment;
import com.android.documentsui.base.DocumentInfo;
import com.android.documentsui.base.RootInfo;
+import com.android.documentsui.base.State;
import java.util.function.Consumer;
diff --git a/src/com/android/documentsui/EventListener.java b/src/com/android/documentsui/EventListener.java
deleted file mode 100644
index c15e9a641..000000000
--- a/src/com/android/documentsui/EventListener.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * 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;
-
-import android.net.Uri;
-import android.support.annotation.Nullable;
-
-public interface EventListener {
- /**
- * @param uri Uri navigated to. If recents, then null.
- */
- void onDirectoryNavigated(@Nullable Uri uri);
-
- /**
- * @param uri Uri of the loaded directory. If recents, then null.
- */
- void onDirectoryLoaded(@Nullable Uri uri);
-}
diff --git a/src/com/android/documentsui/FilesMenuManager.java b/src/com/android/documentsui/FilesMenuManager.java
index 973c730cd..da989db21 100644
--- a/src/com/android/documentsui/FilesMenuManager.java
+++ b/src/com/android/documentsui/FilesMenuManager.java
@@ -20,6 +20,7 @@ import android.view.Menu;
import android.view.MenuItem;
import com.android.documentsui.base.RootInfo;
+import com.android.documentsui.base.State;
public final class FilesMenuManager extends MenuManager {
diff --git a/src/com/android/documentsui/HorizontalBreadcrumb.java b/src/com/android/documentsui/HorizontalBreadcrumb.java
index b631db5ae..6ed1b5c43 100644
--- a/src/com/android/documentsui/HorizontalBreadcrumb.java
+++ b/src/com/android/documentsui/HorizontalBreadcrumb.java
@@ -60,7 +60,7 @@ public final class HorizontalBreadcrumb extends RecyclerView
@Override
public void setup(Environment env,
- com.android.documentsui.State state,
+ com.android.documentsui.base.State state,
Consumer<Integer> listener) {
mListener = listener;
@@ -145,12 +145,12 @@ public final class HorizontalBreadcrumb extends RecyclerView
extends RecyclerView.Adapter<BreadcrumbHolder> {
private final Environment mEnv;
- private final com.android.documentsui.State mState;
+ private final com.android.documentsui.base.State mState;
private final OnDragListener mDragListener;
// We keep the old item size so the breadcrumb will only re-render views that are necessary
private int mLastItemSize;
- public BreadcrumbAdapter(com.android.documentsui.State state,
+ public BreadcrumbAdapter(com.android.documentsui.base.State state,
Environment env,
OnDragListener dragListener) {
mState = state;
diff --git a/src/com/android/documentsui/IconUtils.java b/src/com/android/documentsui/IconUtils.java
index 177ba0d20..52f3e73c3 100644
--- a/src/com/android/documentsui/IconUtils.java
+++ b/src/com/android/documentsui/IconUtils.java
@@ -23,6 +23,8 @@ import android.graphics.drawable.Drawable;
import android.provider.DocumentsContract.Document;
import android.util.TypedValue;
+import com.android.documentsui.base.State;
+
public class IconUtils {
public static Drawable loadPackageIcon(Context context, String authority, int icon) {
if (icon != 0) {
diff --git a/src/com/android/documentsui/MenuManager.java b/src/com/android/documentsui/MenuManager.java
index e9daa9fa5..f6bc45868 100644
--- a/src/com/android/documentsui/MenuManager.java
+++ b/src/com/android/documentsui/MenuManager.java
@@ -19,7 +19,10 @@ package com.android.documentsui;
import android.view.Menu;
import android.view.MenuItem;
+import com.android.documentsui.base.Menus;
import com.android.documentsui.base.RootInfo;
+import com.android.documentsui.base.Shared;
+import com.android.documentsui.base.State;
import com.android.documentsui.dirlist.DirectoryFragment;
public abstract class MenuManager {
diff --git a/src/com/android/documentsui/Metrics.java b/src/com/android/documentsui/Metrics.java
index d3f4721b7..62b92b0ad 100644
--- a/src/com/android/documentsui/Metrics.java
+++ b/src/com/android/documentsui/Metrics.java
@@ -17,7 +17,7 @@
package com.android.documentsui;
import static android.os.Environment.STANDARD_DIRECTORIES;
-import static com.android.documentsui.Shared.DEBUG;
+import static com.android.documentsui.base.Shared.DEBUG;
import android.annotation.IntDef;
import android.annotation.Nullable;
@@ -30,9 +30,10 @@ import android.net.Uri;
import android.provider.DocumentsContract;
import android.util.Log;
-import com.android.documentsui.State.ActionType;
import com.android.documentsui.base.DocumentInfo;
import com.android.documentsui.base.RootInfo;
+import com.android.documentsui.base.State;
+import com.android.documentsui.base.State.ActionType;
import com.android.documentsui.manager.LauncherActivity;
import com.android.documentsui.services.FileOperationService;
import com.android.documentsui.services.FileOperationService.OpType;
diff --git a/src/com/android/documentsui/NavigationViewManager.java b/src/com/android/documentsui/NavigationViewManager.java
index 43da9671c..6a9d63336 100644
--- a/src/com/android/documentsui/NavigationViewManager.java
+++ b/src/com/android/documentsui/NavigationViewManager.java
@@ -16,7 +16,7 @@
package com.android.documentsui;
-import static com.android.documentsui.Shared.DEBUG;
+import static com.android.documentsui.base.Shared.DEBUG;
import android.annotation.Nullable;
import android.graphics.drawable.Drawable;
@@ -24,6 +24,7 @@ import android.util.Log;
import android.view.View;
import com.android.documentsui.base.RootInfo;
+import com.android.documentsui.base.State;
import com.android.documentsui.dirlist.AnimationView;
import java.util.function.Consumer;
diff --git a/src/com/android/documentsui/OpenExternalDirectoryActivity.java b/src/com/android/documentsui/OpenExternalDirectoryActivity.java
index 245f902e1..77e76f9d2 100644
--- a/src/com/android/documentsui/OpenExternalDirectoryActivity.java
+++ b/src/com/android/documentsui/OpenExternalDirectoryActivity.java
@@ -19,11 +19,6 @@ package com.android.documentsui;
import static android.os.Environment.isStandardDirectory;
import static android.os.storage.StorageVolume.EXTRA_DIRECTORY_NAME;
import static android.os.storage.StorageVolume.EXTRA_STORAGE_VOLUME;
-
-import static com.android.documentsui.LocalPreferences.getScopedAccessPermissionStatus;
-import static com.android.documentsui.LocalPreferences.PERMISSION_ASK_AGAIN;
-import static com.android.documentsui.LocalPreferences.PERMISSION_NEVER_ASK;
-import static com.android.documentsui.LocalPreferences.setScopedAccessPermissionStatus;
import static com.android.documentsui.Metrics.SCOPED_DIRECTORY_ACCESS_ALREADY_DENIED;
import static com.android.documentsui.Metrics.SCOPED_DIRECTORY_ACCESS_ALREADY_GRANTED;
import static com.android.documentsui.Metrics.SCOPED_DIRECTORY_ACCESS_DENIED;
@@ -34,7 +29,11 @@ import static com.android.documentsui.Metrics.SCOPED_DIRECTORY_ACCESS_INVALID_AR
import static com.android.documentsui.Metrics.SCOPED_DIRECTORY_ACCESS_INVALID_DIRECTORY;
import static com.android.documentsui.Metrics.logInvalidScopedAccessRequest;
import static com.android.documentsui.Metrics.logValidScopedAccessRequest;
-import static com.android.documentsui.Shared.DEBUG;
+import static com.android.documentsui.base.LocalPreferences.PERMISSION_ASK_AGAIN;
+import static com.android.documentsui.base.LocalPreferences.PERMISSION_NEVER_ASK;
+import static com.android.documentsui.base.LocalPreferences.getScopedAccessPermissionStatus;
+import static com.android.documentsui.base.LocalPreferences.setScopedAccessPermissionStatus;
+import static com.android.documentsui.base.Shared.DEBUG;
import android.annotation.SuppressLint;
import android.app.Activity;
diff --git a/src/com/android/documentsui/PackageReceiver.java b/src/com/android/documentsui/PackageReceiver.java
index ec6014af2..9c4ebf537 100644
--- a/src/com/android/documentsui/PackageReceiver.java
+++ b/src/com/android/documentsui/PackageReceiver.java
@@ -22,6 +22,7 @@ import android.content.Context;
import android.content.Intent;
import android.net.Uri;
+import com.android.documentsui.base.LocalPreferences;
import com.android.documentsui.picker.LastAccessedProvider;
/**
diff --git a/src/com/android/documentsui/RecentsLoader.java b/src/com/android/documentsui/RecentsLoader.java
index 1b62e9f23..9cb8f7edb 100644
--- a/src/com/android/documentsui/RecentsLoader.java
+++ b/src/com/android/documentsui/RecentsLoader.java
@@ -16,8 +16,8 @@
package com.android.documentsui;
-import static com.android.documentsui.Shared.DEBUG;
-import static com.android.documentsui.Shared.TAG;
+import static com.android.documentsui.base.Shared.DEBUG;
+import static com.android.documentsui.base.Shared.TAG;
import android.app.ActivityManager;
import android.content.AsyncTaskLoader;
@@ -33,7 +33,11 @@ import android.provider.DocumentsContract.Document;
import android.text.format.DateUtils;
import android.util.Log;
+import com.android.documentsui.base.FilteringCursorWrapper;
import com.android.documentsui.base.RootInfo;
+import com.android.documentsui.base.State;
+import com.android.documentsui.roots.RootCursorWrapper;
+import com.android.documentsui.roots.RootsCache;
import com.android.internal.annotations.GuardedBy;
import libcore.io.IoUtils;
diff --git a/src/com/android/documentsui/RetainedState.java b/src/com/android/documentsui/RetainedState.java
deleted file mode 100644
index 57cf3b438..000000000
--- a/src/com/android/documentsui/RetainedState.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * 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;
-
-import android.support.annotation.Nullable;
-
-import com.android.documentsui.dirlist.MultiSelectManager.Selection;
-
-/**
- * Object used to collect retained state from activity and fragments. Used
- * with Activity#onRetainNonConfigurationInstance. Information stored in
- * this class should be primarily ephemeral as instances of the class
- * only last across configuration changes (like device rotation). When
- * an application is fully town down, all instances are lost, fa-evah!
- */
-public final class RetainedState {
- public @Nullable Selection selection;
-
- public boolean hasSelection() {
- return selection != null;
- }
-}
diff --git a/src/com/android/documentsui/SearchViewManager.java b/src/com/android/documentsui/SearchViewManager.java
index 1bbc439e9..6ee455aec 100644
--- a/src/com/android/documentsui/SearchViewManager.java
+++ b/src/com/android/documentsui/SearchViewManager.java
@@ -16,7 +16,7 @@
package com.android.documentsui;
-import static com.android.documentsui.Shared.DEBUG;
+import static com.android.documentsui.base.Shared.DEBUG;
import android.annotation.Nullable;
import android.os.Bundle;
@@ -33,6 +33,7 @@ import android.widget.SearchView;
import android.widget.SearchView.OnQueryTextListener;
import com.android.documentsui.base.RootInfo;
+import com.android.documentsui.base.Shared;
import com.android.documentsui.sorting.SortModel;
/**
diff --git a/src/com/android/documentsui/Snackbars.java b/src/com/android/documentsui/Snackbars.java
index c3a82d779..90254f198 100644
--- a/src/com/android/documentsui/Snackbars.java
+++ b/src/com/android/documentsui/Snackbars.java
@@ -21,6 +21,8 @@ import android.app.Activity;
import android.support.design.widget.Snackbar;
import android.view.View;
+import com.android.documentsui.base.Shared;
+
public final class Snackbars {
private Snackbars() {}
diff --git a/src/com/android/documentsui/ThumbnailCache.java b/src/com/android/documentsui/ThumbnailCache.java
index 639d4fb4f..cfa53579d 100644
--- a/src/com/android/documentsui/ThumbnailCache.java
+++ b/src/com/android/documentsui/ThumbnailCache.java
@@ -26,6 +26,8 @@ import android.util.LruCache;
import android.util.Pair;
import android.util.Pools;
+import com.android.documentsui.base.Shared;
+
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.Comparator;
diff --git a/src/com/android/documentsui/Display.java b/src/com/android/documentsui/base/Display.java
index 8b13222dc..c9088a8b3 100644
--- a/src/com/android/documentsui/Display.java
+++ b/src/com/android/documentsui/base/Display.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.documentsui;
+package com.android.documentsui.base;
import android.app.Activity;
import android.content.Context;
diff --git a/src/com/android/documentsui/base/DocumentInfo.java b/src/com/android/documentsui/base/DocumentInfo.java
index b9432f062..e7932c454 100644
--- a/src/com/android/documentsui/base/DocumentInfo.java
+++ b/src/com/android/documentsui/base/DocumentInfo.java
@@ -28,7 +28,7 @@ import android.provider.DocumentsProvider;
import android.support.annotation.VisibleForTesting;
import com.android.documentsui.DocumentsApplication;
-import com.android.documentsui.RootCursorWrapper;
+import com.android.documentsui.roots.RootCursorWrapper;
import java.io.DataInputStream;
import java.io.DataOutputStream;
diff --git a/src/com/android/documentsui/base/DurableUtils.java b/src/com/android/documentsui/base/DurableUtils.java
index 2b1d16ec0..00f63dfe8 100644
--- a/src/com/android/documentsui/base/DurableUtils.java
+++ b/src/com/android/documentsui/base/DurableUtils.java
@@ -16,7 +16,7 @@
package com.android.documentsui.base;
-import static com.android.documentsui.Shared.TAG;
+import static com.android.documentsui.base.Shared.TAG;
import android.os.BadParcelableException;
import android.os.Parcel;
diff --git a/src/com/android/documentsui/Events.java b/src/com/android/documentsui/base/Events.java
index 0de403907..2231ab5d9 100644
--- a/src/com/android/documentsui/Events.java
+++ b/src/com/android/documentsui/base/Events.java
@@ -14,9 +14,9 @@
* limitations under the License.
*/
-package com.android.documentsui;
+package com.android.documentsui.base;
-import static com.android.documentsui.Shared.DEBUG;
+import static com.android.documentsui.base.Shared.DEBUG;
import android.graphics.Point;
import android.support.v7.widget.RecyclerView;
diff --git a/src/com/android/documentsui/Files.java b/src/com/android/documentsui/base/Files.java
index 009fecb4d..0e35da31e 100644
--- a/src/com/android/documentsui/Files.java
+++ b/src/com/android/documentsui/base/Files.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.documentsui;
+package com.android.documentsui.base;
import java.io.File;
diff --git a/src/com/android/documentsui/FilteringCursorWrapper.java b/src/com/android/documentsui/base/FilteringCursorWrapper.java
index 654719110..660417135 100644
--- a/src/com/android/documentsui/FilteringCursorWrapper.java
+++ b/src/com/android/documentsui/base/FilteringCursorWrapper.java
@@ -14,12 +14,12 @@
* limitations under the License.
*/
-package com.android.documentsui;
+package com.android.documentsui.base;
-import static com.android.documentsui.Shared.DEBUG;
-import static com.android.documentsui.Shared.TAG;
import static com.android.documentsui.base.DocumentInfo.getCursorLong;
import static com.android.documentsui.base.DocumentInfo.getCursorString;
+import static com.android.documentsui.base.Shared.DEBUG;
+import static com.android.documentsui.base.Shared.TAG;
import android.database.AbstractCursor;
import android.database.Cursor;
diff --git a/src/com/android/documentsui/LocalPreferences.java b/src/com/android/documentsui/base/LocalPreferences.java
index c29e81982..e9d8350cd 100644
--- a/src/com/android/documentsui/LocalPreferences.java
+++ b/src/com/android/documentsui/base/LocalPreferences.java
@@ -14,9 +14,9 @@
* limitations under the License.
*/
-package com.android.documentsui;
+package com.android.documentsui.base;
-import static com.android.documentsui.State.MODE_UNKNOWN;
+import static com.android.documentsui.base.State.MODE_UNKNOWN;
import android.annotation.IntDef;
import android.annotation.Nullable;
@@ -26,9 +26,8 @@ import android.content.SharedPreferences.Editor;
import android.os.UserHandle;
import android.preference.PreferenceManager;
-import com.android.documentsui.State.ActionType;
-import com.android.documentsui.State.ViewMode;
-import com.android.documentsui.base.RootInfo;
+import com.android.documentsui.base.State.ActionType;
+import com.android.documentsui.base.State.ViewMode;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -81,7 +80,7 @@ public class LocalPreferences {
*
* <p>Typically called when a package is removed or when user asked to clear its data.
*/
- static void clearPackagePreferences(Context context, String packageName) {
+ public static void clearPackagePreferences(Context context, String packageName) {
clearScopedAccessPreferences(context, packageName);
}
@@ -97,13 +96,13 @@ public class LocalPreferences {
* (typically the emulated volume used for primary storage
* </ol>
*/
- static @PermissionStatus int getScopedAccessPermissionStatus(Context context,
+ public static @PermissionStatus int getScopedAccessPermissionStatus(Context context,
String packageName, @Nullable String uuid, String directory) {
final String key = getScopedAccessDenialsKey(packageName, uuid, directory);
return getPrefs(context).getInt(key, PERMISSION_ASK);
}
- static void setScopedAccessPermissionStatus(Context context, String packageName,
+ public static void setScopedAccessPermissionStatus(Context context, String packageName,
@Nullable String uuid, String directory, @PermissionStatus int status) {
final String key = getScopedAccessDenialsKey(packageName, uuid, directory);
getPrefs(context).edit().putInt(key, status).apply();
diff --git a/src/com/android/documentsui/Menus.java b/src/com/android/documentsui/base/Menus.java
index 5277d2bb8..489f81050 100644
--- a/src/com/android/documentsui/Menus.java
+++ b/src/com/android/documentsui/base/Menus.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.documentsui;
+package com.android.documentsui.base;
import android.view.Menu;
import android.view.MenuItem;
diff --git a/src/com/android/documentsui/MimePredicate.java b/src/com/android/documentsui/base/MimePredicate.java
index 567645e37..b3ba862c7 100644
--- a/src/com/android/documentsui/MimePredicate.java
+++ b/src/com/android/documentsui/base/MimePredicate.java
@@ -14,12 +14,11 @@
* limitations under the License.
*/
-package com.android.documentsui;
+package com.android.documentsui.base;
import android.annotation.Nullable;
import android.provider.DocumentsContract.Document;
-import com.android.documentsui.base.DocumentInfo;
import com.android.internal.util.Predicate;
public class MimePredicate implements Predicate<DocumentInfo> {
diff --git a/src/com/android/documentsui/base/RootInfo.java b/src/com/android/documentsui/base/RootInfo.java
index 2413f4ee5..1b4656a0b 100644
--- a/src/com/android/documentsui/base/RootInfo.java
+++ b/src/com/android/documentsui/base/RootInfo.java
@@ -16,11 +16,11 @@
package com.android.documentsui.base;
-import static com.android.documentsui.Shared.DEBUG;
-import static com.android.documentsui.Shared.compareToIgnoreCaseNullable;
import static com.android.documentsui.base.DocumentInfo.getCursorInt;
import static com.android.documentsui.base.DocumentInfo.getCursorLong;
import static com.android.documentsui.base.DocumentInfo.getCursorString;
+import static com.android.documentsui.base.Shared.DEBUG;
+import static com.android.documentsui.base.Shared.compareToIgnoreCaseNullable;
import android.annotation.IntDef;
import android.annotation.Nullable;
diff --git a/src/com/android/documentsui/Shared.java b/src/com/android/documentsui/base/Shared.java
index 5c4958107..6b8f2d0bb 100644
--- a/src/com/android/documentsui/Shared.java
+++ b/src/com/android/documentsui/base/Shared.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.documentsui;
+package com.android.documentsui.base;
import android.app.Activity;
import android.app.AlertDialog;
@@ -29,6 +29,9 @@ import android.text.format.Time;
import android.util.Log;
import android.view.WindowManager;
+import com.android.documentsui.R;
+import com.android.documentsui.R.bool;
+
import java.text.Collator;
import java.util.ArrayList;
import java.util.List;
diff --git a/src/com/android/documentsui/State.java b/src/com/android/documentsui/base/State.java
index f2d59247f..e2699c978 100644
--- a/src/com/android/documentsui/State.java
+++ b/src/com/android/documentsui/base/State.java
@@ -14,9 +14,9 @@
* limitations under the License.
*/
-package com.android.documentsui;
+package com.android.documentsui.base;
-import static com.android.documentsui.Shared.DEBUG;
+import static com.android.documentsui.base.Shared.DEBUG;
import android.annotation.IntDef;
import android.content.Intent;
@@ -25,10 +25,6 @@ import android.os.Parcelable;
import android.util.Log;
import android.util.SparseArray;
-import com.android.documentsui.base.DocumentInfo;
-import com.android.documentsui.base.DocumentStack;
-import com.android.documentsui.base.DurableUtils;
-import com.android.documentsui.base.RootInfo;
import com.android.documentsui.services.FileOperationService;
import com.android.documentsui.services.FileOperationService.OpType;
import com.android.documentsui.sorting.SortModel;
diff --git a/src/com/android/documentsui/clipping/ClipStorage.java b/src/com/android/documentsui/clipping/ClipStorage.java
index 49edbcf90..84e6adbd2 100644
--- a/src/com/android/documentsui/clipping/ClipStorage.java
+++ b/src/com/android/documentsui/clipping/ClipStorage.java
@@ -24,7 +24,7 @@ import android.system.ErrnoException;
import android.system.Os;
import android.util.Log;
-import com.android.documentsui.Files;
+import com.android.documentsui.base.Files;
import java.io.Closeable;
import java.io.File;
diff --git a/src/com/android/documentsui/clipping/DocumentClipper.java b/src/com/android/documentsui/clipping/DocumentClipper.java
index 86ae2c6d6..fa961999d 100644
--- a/src/com/android/documentsui/clipping/DocumentClipper.java
+++ b/src/com/android/documentsui/clipping/DocumentClipper.java
@@ -27,10 +27,10 @@ import android.provider.DocumentsContract;
import android.support.annotation.Nullable;
import android.util.Log;
-import com.android.documentsui.Shared;
import com.android.documentsui.base.DocumentInfo;
import com.android.documentsui.base.DocumentStack;
import com.android.documentsui.base.RootInfo;
+import com.android.documentsui.base.Shared;
import com.android.documentsui.dirlist.MultiSelectManager.Selection;
import com.android.documentsui.services.FileOperation;
import com.android.documentsui.services.FileOperationService;
diff --git a/src/com/android/documentsui/clipping/UrisSupplier.java b/src/com/android/documentsui/clipping/UrisSupplier.java
index 7b1ba3498..152f96806 100644
--- a/src/com/android/documentsui/clipping/UrisSupplier.java
+++ b/src/com/android/documentsui/clipping/UrisSupplier.java
@@ -29,7 +29,7 @@ import android.support.annotation.VisibleForTesting;
import android.util.Log;
import com.android.documentsui.DocumentsApplication;
-import com.android.documentsui.Shared;
+import com.android.documentsui.base.Shared;
import com.android.documentsui.dirlist.MultiSelectManager.Selection;
import com.android.documentsui.services.FileOperation;
diff --git a/src/com/android/documentsui/dirlist/ActionModeController.java b/src/com/android/documentsui/dirlist/ActionModeController.java
index 6ef793cf6..70c5a6484 100644
--- a/src/com/android/documentsui/dirlist/ActionModeController.java
+++ b/src/com/android/documentsui/dirlist/ActionModeController.java
@@ -16,7 +16,7 @@
package com.android.documentsui.dirlist;
-import static com.android.documentsui.Shared.DEBUG;
+import static com.android.documentsui.base.Shared.DEBUG;
import android.annotation.IdRes;
import android.annotation.Nullable;
@@ -31,10 +31,10 @@ import android.view.MenuItem;
import android.view.View;
import com.android.documentsui.MenuManager;
-import com.android.documentsui.Menus;
import com.android.documentsui.R;
-import com.android.documentsui.Shared;
import com.android.documentsui.base.EventHandler;
+import com.android.documentsui.base.Menus;
+import com.android.documentsui.base.Shared;
import com.android.documentsui.dirlist.MultiSelectManager.Selection;
import java.util.function.Consumer;
diff --git a/src/com/android/documentsui/dirlist/AnimationView.java b/src/com/android/documentsui/dirlist/AnimationView.java
index a66645655..7f75d3bda 100644
--- a/src/com/android/documentsui/dirlist/AnimationView.java
+++ b/src/com/android/documentsui/dirlist/AnimationView.java
@@ -24,7 +24,7 @@ import android.util.AttributeSet;
import android.widget.LinearLayout;
import com.android.documentsui.R;
-import com.android.documentsui.Shared;
+import com.android.documentsui.base.Shared;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
diff --git a/src/com/android/documentsui/dirlist/BandController.java b/src/com/android/documentsui/dirlist/BandController.java
index 9190aae16..57a30e419 100644
--- a/src/com/android/documentsui/dirlist/BandController.java
+++ b/src/com/android/documentsui/dirlist/BandController.java
@@ -16,7 +16,7 @@
package com.android.documentsui.dirlist;
-import static com.android.documentsui.Shared.DEBUG;
+import static com.android.documentsui.base.Shared.DEBUG;
import static com.android.documentsui.dirlist.ModelBackedDocumentsAdapter.ITEM_TYPE_DIRECTORY;
import static com.android.documentsui.dirlist.ModelBackedDocumentsAdapter.ITEM_TYPE_DOCUMENT;
import static com.android.documentsui.dirlist.ViewAutoScroller.NOT_SET;
@@ -35,8 +35,8 @@ import android.util.SparseBooleanArray;
import android.util.SparseIntArray;
import android.view.View;
-import com.android.documentsui.Events.InputEvent;
import com.android.documentsui.R;
+import com.android.documentsui.base.Events.InputEvent;
import com.android.documentsui.dirlist.MultiSelectManager.Selection;
import com.android.documentsui.dirlist.ViewAutoScroller.ScrollActionDelegate;
import com.android.documentsui.dirlist.ViewAutoScroller.ScrollDistanceDelegate;
diff --git a/src/com/android/documentsui/dirlist/DirectoryFragment.java b/src/com/android/documentsui/dirlist/DirectoryFragment.java
index 4965ead3e..8834cdc5b 100644
--- a/src/com/android/documentsui/dirlist/DirectoryFragment.java
+++ b/src/com/android/documentsui/dirlist/DirectoryFragment.java
@@ -16,11 +16,11 @@
package com.android.documentsui.dirlist;
-import static com.android.documentsui.Shared.DEBUG;
-import static com.android.documentsui.State.MODE_GRID;
-import static com.android.documentsui.State.MODE_LIST;
import static com.android.documentsui.base.DocumentInfo.getCursorInt;
import static com.android.documentsui.base.DocumentInfo.getCursorString;
+import static com.android.documentsui.base.Shared.DEBUG;
+import static com.android.documentsui.base.State.MODE_GRID;
+import static com.android.documentsui.base.State.MODE_LIST;
import android.annotation.IntDef;
import android.annotation.StringRes;
@@ -64,30 +64,30 @@ import android.widget.ImageView;
import android.widget.TextView;
import com.android.documentsui.BaseActivity;
+import com.android.documentsui.BaseActivity.RetainedState;
import com.android.documentsui.DirectoryLoader;
import com.android.documentsui.DirectoryResult;
import com.android.documentsui.DocumentsApplication;
-import com.android.documentsui.Events.InputEvent;
-import com.android.documentsui.Events.MotionInputEvent;
import com.android.documentsui.ItemDragListener;
import com.android.documentsui.MenuManager;
import com.android.documentsui.MessageBar;
import com.android.documentsui.Metrics;
import com.android.documentsui.R;
import com.android.documentsui.RecentsLoader;
-import com.android.documentsui.RetainedState;
-import com.android.documentsui.RootsCache;
-import com.android.documentsui.Shared;
import com.android.documentsui.Snackbars;
-import com.android.documentsui.State;
-import com.android.documentsui.State.ViewMode;
+import com.android.documentsui.ThumbnailCache;
import com.android.documentsui.base.DocumentInfo;
+import com.android.documentsui.base.Events.InputEvent;
+import com.android.documentsui.base.Events.MotionInputEvent;
import com.android.documentsui.base.RootInfo;
-import com.android.documentsui.ThumbnailCache;
+import com.android.documentsui.base.Shared;
+import com.android.documentsui.base.State;
+import com.android.documentsui.base.State.ViewMode;
import com.android.documentsui.clipping.DocumentClipper;
import com.android.documentsui.clipping.UrisSupplier;
import com.android.documentsui.dirlist.MultiSelectManager.Selection;
import com.android.documentsui.picker.PickActivity;
+import com.android.documentsui.roots.RootsCache;
import com.android.documentsui.services.FileOperation;
import com.android.documentsui.services.FileOperationService;
import com.android.documentsui.services.FileOperationService.OpType;
diff --git a/src/com/android/documentsui/dirlist/DocumentDetails.java b/src/com/android/documentsui/dirlist/DocumentDetails.java
index 5929b8ff2..28d602e2c 100644
--- a/src/com/android/documentsui/dirlist/DocumentDetails.java
+++ b/src/com/android/documentsui/dirlist/DocumentDetails.java
@@ -16,7 +16,7 @@
package com.android.documentsui.dirlist;
-import com.android.documentsui.Events.InputEvent;
+import com.android.documentsui.base.Events.InputEvent;
/**
* Interface providing a loose coupling between DocumentHolder.
diff --git a/src/com/android/documentsui/dirlist/DocumentHolder.java b/src/com/android/documentsui/dirlist/DocumentHolder.java
index 54256b98f..da6dba2af 100644
--- a/src/com/android/documentsui/dirlist/DocumentHolder.java
+++ b/src/com/android/documentsui/dirlist/DocumentHolder.java
@@ -30,10 +30,10 @@ import android.view.ViewGroup;
import android.view.ViewPropertyAnimator;
import android.widget.ImageView;
-import com.android.documentsui.Events.InputEvent;
+import com.android.documentsui.base.Shared;
+import com.android.documentsui.base.State;
+import com.android.documentsui.base.Events.InputEvent;
import com.android.documentsui.R;
-import com.android.documentsui.Shared;
-import com.android.documentsui.State;
public abstract class DocumentHolder
extends RecyclerView.ViewHolder implements View.OnKeyListener, DocumentDetails {
diff --git a/src/com/android/documentsui/dirlist/DocumentsAdapter.java b/src/com/android/documentsui/dirlist/DocumentsAdapter.java
index 3066ca1fe..00f1f11ca 100644
--- a/src/com/android/documentsui/dirlist/DocumentsAdapter.java
+++ b/src/com/android/documentsui/dirlist/DocumentsAdapter.java
@@ -24,7 +24,7 @@ import android.provider.DocumentsContract.Document;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
-import com.android.documentsui.State;
+import com.android.documentsui.base.State;
import java.util.List;
diff --git a/src/com/android/documentsui/dirlist/DocumentsSwipeRefreshLayout.java b/src/com/android/documentsui/dirlist/DocumentsSwipeRefreshLayout.java
index e0d372ee3..98a09def4 100644
--- a/src/com/android/documentsui/dirlist/DocumentsSwipeRefreshLayout.java
+++ b/src/com/android/documentsui/dirlist/DocumentsSwipeRefreshLayout.java
@@ -23,7 +23,7 @@ import android.support.v4.widget.SwipeRefreshLayout;
import android.util.AttributeSet;
import android.view.MotionEvent;
-import com.android.documentsui.Events;
+import com.android.documentsui.base.Events;
/**
* A {@link SwipeRefreshLayout} that does not intercept any touch events. This relies on its nested
diff --git a/src/com/android/documentsui/dirlist/DragShadowBuilder.java b/src/com/android/documentsui/dirlist/DragShadowBuilder.java
index 5533d2034..d32ede80a 100644
--- a/src/com/android/documentsui/dirlist/DragShadowBuilder.java
+++ b/src/com/android/documentsui/dirlist/DragShadowBuilder.java
@@ -27,8 +27,8 @@ import android.widget.ImageView;
import android.widget.TextView;
import com.android.documentsui.R;
-import com.android.documentsui.Shared;
import com.android.documentsui.base.DocumentInfo;
+import com.android.documentsui.base.Shared;
import com.android.documentsui.dirlist.MultiSelectManager.Selection;
import java.util.List;
diff --git a/src/com/android/documentsui/dirlist/DragStartListener.java b/src/com/android/documentsui/dirlist/DragStartListener.java
index 5d764df93..c22df34d4 100644
--- a/src/com/android/documentsui/dirlist/DragStartListener.java
+++ b/src/com/android/documentsui/dirlist/DragStartListener.java
@@ -16,7 +16,7 @@
package com.android.documentsui.dirlist;
-import static com.android.documentsui.Shared.DEBUG;
+import static com.android.documentsui.base.Shared.DEBUG;
import android.content.ClipData;
import android.content.Context;
@@ -25,10 +25,10 @@ import android.support.annotation.VisibleForTesting;
import android.util.Log;
import android.view.View;
-import com.android.documentsui.Events;
-import com.android.documentsui.Events.InputEvent;
import com.android.documentsui.base.DocumentInfo;
-import com.android.documentsui.State;
+import com.android.documentsui.base.Events;
+import com.android.documentsui.base.State;
+import com.android.documentsui.base.Events.InputEvent;
import com.android.documentsui.clipping.DocumentClipper;
import com.android.documentsui.dirlist.MultiSelectManager.Selection;
import com.android.documentsui.services.FileOperationService;
diff --git a/src/com/android/documentsui/dirlist/FocusManager.java b/src/com/android/documentsui/dirlist/FocusManager.java
index af4b5fd4c..05ce0d172 100644
--- a/src/com/android/documentsui/dirlist/FocusManager.java
+++ b/src/com/android/documentsui/dirlist/FocusManager.java
@@ -38,7 +38,7 @@ import android.view.KeyEvent;
import android.view.View;
import android.widget.TextView;
-import com.android.documentsui.Events;
+import com.android.documentsui.base.Events;
import java.util.ArrayList;
import java.util.List;
diff --git a/src/com/android/documentsui/dirlist/FragmentTuner.java b/src/com/android/documentsui/dirlist/FragmentTuner.java
index c4f37ebfd..2837c6e53 100644
--- a/src/com/android/documentsui/dirlist/FragmentTuner.java
+++ b/src/com/android/documentsui/dirlist/FragmentTuner.java
@@ -16,18 +16,18 @@
package com.android.documentsui.dirlist;
-import static com.android.documentsui.State.ACTION_CREATE;
-import static com.android.documentsui.State.ACTION_GET_CONTENT;
-import static com.android.documentsui.State.ACTION_OPEN;
-import static com.android.documentsui.State.ACTION_OPEN_TREE;
-import static com.android.documentsui.State.ACTION_PICK_COPY_DESTINATION;
+import static com.android.documentsui.base.State.ACTION_CREATE;
+import static com.android.documentsui.base.State.ACTION_GET_CONTENT;
+import static com.android.documentsui.base.State.ACTION_OPEN;
+import static com.android.documentsui.base.State.ACTION_OPEN_TREE;
+import static com.android.documentsui.base.State.ACTION_PICK_COPY_DESTINATION;
import android.content.Context;
import android.provider.DocumentsContract.Document;
import com.android.documentsui.BaseActivity;
-import com.android.documentsui.MimePredicate;
-import com.android.documentsui.State;
+import com.android.documentsui.base.MimePredicate;
+import com.android.documentsui.base.State;
import com.android.documentsui.dirlist.DirectoryFragment.ResultType;
import com.android.documentsui.sorting.SortController;
diff --git a/src/com/android/documentsui/dirlist/GestureSelector.java b/src/com/android/documentsui/dirlist/GestureSelector.java
index cdbbc0fc4..c8799fb8e 100644
--- a/src/com/android/documentsui/dirlist/GestureSelector.java
+++ b/src/com/android/documentsui/dirlist/GestureSelector.java
@@ -21,7 +21,7 @@ import android.support.annotation.VisibleForTesting;
import android.support.v7.widget.RecyclerView;
import android.view.View;
-import com.android.documentsui.Events.InputEvent;
+import com.android.documentsui.base.Events.InputEvent;
import com.android.documentsui.dirlist.ViewAutoScroller.ScrollActionDelegate;
import com.android.documentsui.dirlist.ViewAutoScroller.ScrollDistanceDelegate;
diff --git a/src/com/android/documentsui/dirlist/GridDirectoryHolder.java b/src/com/android/documentsui/dirlist/GridDirectoryHolder.java
index d3026b33a..962f6bcff 100644
--- a/src/com/android/documentsui/dirlist/GridDirectoryHolder.java
+++ b/src/com/android/documentsui/dirlist/GridDirectoryHolder.java
@@ -26,8 +26,8 @@ import android.widget.ImageView;
import android.widget.TextView;
import com.android.documentsui.R;
-import com.android.documentsui.State;
-import com.android.documentsui.Events.InputEvent;
+import com.android.documentsui.base.State;
+import com.android.documentsui.base.Events.InputEvent;
final class GridDirectoryHolder extends DocumentHolder {
diff --git a/src/com/android/documentsui/dirlist/GridDocumentHolder.java b/src/com/android/documentsui/dirlist/GridDocumentHolder.java
index 31ca90a56..f9a78d8d0 100644
--- a/src/com/android/documentsui/dirlist/GridDocumentHolder.java
+++ b/src/com/android/documentsui/dirlist/GridDocumentHolder.java
@@ -33,10 +33,10 @@ import android.widget.ImageView;
import android.widget.TextView;
import com.android.documentsui.R;
-import com.android.documentsui.RootCursorWrapper;
-import com.android.documentsui.Shared;
-import com.android.documentsui.State;
-import com.android.documentsui.Events.InputEvent;
+import com.android.documentsui.base.Shared;
+import com.android.documentsui.base.State;
+import com.android.documentsui.base.Events.InputEvent;
+import com.android.documentsui.roots.RootCursorWrapper;
final class GridDocumentHolder extends DocumentHolder {
diff --git a/src/com/android/documentsui/dirlist/IconHelper.java b/src/com/android/documentsui/dirlist/IconHelper.java
index 65b229d82..14c569d5b 100644
--- a/src/com/android/documentsui/dirlist/IconHelper.java
+++ b/src/com/android/documentsui/dirlist/IconHelper.java
@@ -16,9 +16,9 @@
package com.android.documentsui.dirlist;
-import static com.android.documentsui.Shared.DEBUG;
-import static com.android.documentsui.State.MODE_GRID;
-import static com.android.documentsui.State.MODE_LIST;
+import static com.android.documentsui.base.Shared.DEBUG;
+import static com.android.documentsui.base.State.MODE_GRID;
+import static com.android.documentsui.base.State.MODE_LIST;
import android.content.ContentProviderClient;
import android.content.ContentResolver;
@@ -39,15 +39,15 @@ import android.widget.ImageView;
import com.android.documentsui.DocumentsApplication;
import com.android.documentsui.IconUtils;
-import com.android.documentsui.MimePredicate;
import com.android.documentsui.ProviderExecutor;
import com.android.documentsui.ProviderExecutor.Preemptable;
import com.android.documentsui.R;
-import com.android.documentsui.State;
-import com.android.documentsui.State.ViewMode;
import com.android.documentsui.ThumbnailCache;
import com.android.documentsui.ThumbnailCache.Result;
import com.android.documentsui.base.DocumentInfo;
+import com.android.documentsui.base.MimePredicate;
+import com.android.documentsui.base.State;
+import com.android.documentsui.base.State.ViewMode;
import java.util.function.BiConsumer;
diff --git a/src/com/android/documentsui/dirlist/ListDocumentHolder.java b/src/com/android/documentsui/dirlist/ListDocumentHolder.java
index 30100f9ac..892148942 100644
--- a/src/com/android/documentsui/dirlist/ListDocumentHolder.java
+++ b/src/com/android/documentsui/dirlist/ListDocumentHolder.java
@@ -34,10 +34,10 @@ import android.widget.LinearLayout;
import android.widget.TextView;
import com.android.documentsui.R;
-import com.android.documentsui.RootCursorWrapper;
-import com.android.documentsui.Shared;
-import com.android.documentsui.State;
-import com.android.documentsui.Events.InputEvent;
+import com.android.documentsui.base.Shared;
+import com.android.documentsui.base.State;
+import com.android.documentsui.base.Events.InputEvent;
+import com.android.documentsui.roots.RootCursorWrapper;
final class ListDocumentHolder extends DocumentHolder {
final TextView mTitle;
diff --git a/src/com/android/documentsui/dirlist/ListeningGestureDetector.java b/src/com/android/documentsui/dirlist/ListeningGestureDetector.java
index 35260037e..06a2e2173 100644
--- a/src/com/android/documentsui/dirlist/ListeningGestureDetector.java
+++ b/src/com/android/documentsui/dirlist/ListeningGestureDetector.java
@@ -25,10 +25,10 @@ import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
-import com.android.documentsui.Events;
-import com.android.documentsui.Events.InputEvent;
-import com.android.documentsui.Events.MotionInputEvent;
import com.android.documentsui.base.EventHandler;
+import com.android.documentsui.base.Events;
+import com.android.documentsui.base.Events.InputEvent;
+import com.android.documentsui.base.Events.MotionInputEvent;
//Receives event meant for both directory and empty view, and either pass them to
//{@link UserInputHandler} for simple gestures (Single Tap, Long-Press), or intercept them for
diff --git a/src/com/android/documentsui/dirlist/Model.java b/src/com/android/documentsui/dirlist/Model.java
index 580e6bcb9..504fdd0fb 100644
--- a/src/com/android/documentsui/dirlist/Model.java
+++ b/src/com/android/documentsui/dirlist/Model.java
@@ -16,9 +16,9 @@
package com.android.documentsui.dirlist;
-import static com.android.documentsui.Shared.DEBUG;
import static com.android.documentsui.base.DocumentInfo.getCursorLong;
import static com.android.documentsui.base.DocumentInfo.getCursorString;
+import static com.android.documentsui.base.Shared.DEBUG;
import android.database.Cursor;
import android.database.MergeCursor;
@@ -31,10 +31,10 @@ import android.support.annotation.VisibleForTesting;
import android.util.Log;
import com.android.documentsui.DirectoryResult;
-import com.android.documentsui.RootCursorWrapper;
-import com.android.documentsui.Shared;
import com.android.documentsui.base.DocumentInfo;
+import com.android.documentsui.base.Shared;
import com.android.documentsui.dirlist.MultiSelectManager.Selection;
+import com.android.documentsui.roots.RootCursorWrapper;
import com.android.documentsui.sorting.SortDimension;
import com.android.documentsui.sorting.SortModel;
diff --git a/src/com/android/documentsui/dirlist/ModelBackedDocumentsAdapter.java b/src/com/android/documentsui/dirlist/ModelBackedDocumentsAdapter.java
index 05c55188f..8b11a626e 100644
--- a/src/com/android/documentsui/dirlist/ModelBackedDocumentsAdapter.java
+++ b/src/com/android/documentsui/dirlist/ModelBackedDocumentsAdapter.java
@@ -16,18 +16,18 @@
package com.android.documentsui.dirlist;
-import static com.android.documentsui.Shared.DEBUG;
-import static com.android.documentsui.State.MODE_GRID;
-import static com.android.documentsui.State.MODE_LIST;
import static com.android.documentsui.base.DocumentInfo.getCursorInt;
import static com.android.documentsui.base.DocumentInfo.getCursorString;
+import static com.android.documentsui.base.Shared.DEBUG;
+import static com.android.documentsui.base.State.MODE_GRID;
+import static com.android.documentsui.base.State.MODE_LIST;
import android.database.Cursor;
import android.provider.DocumentsContract.Document;
import android.util.Log;
import android.view.ViewGroup;
-import com.android.documentsui.State;
+import com.android.documentsui.base.State;
import java.util.ArrayList;
import java.util.HashSet;
diff --git a/src/com/android/documentsui/dirlist/MultiSelectManager.java b/src/com/android/documentsui/dirlist/MultiSelectManager.java
index 49eaa3743..9c3aedfb8 100644
--- a/src/com/android/documentsui/dirlist/MultiSelectManager.java
+++ b/src/com/android/documentsui/dirlist/MultiSelectManager.java
@@ -16,7 +16,7 @@
package com.android.documentsui.dirlist;
-import static com.android.documentsui.Shared.DEBUG;
+import static com.android.documentsui.base.Shared.DEBUG;
import android.annotation.IntDef;
import android.os.Parcel;
diff --git a/src/com/android/documentsui/dirlist/RenameDocumentFragment.java b/src/com/android/documentsui/dirlist/RenameDocumentFragment.java
index f205b7eb6..b129016a3 100644
--- a/src/com/android/documentsui/dirlist/RenameDocumentFragment.java
+++ b/src/com/android/documentsui/dirlist/RenameDocumentFragment.java
@@ -16,7 +16,7 @@
package com.android.documentsui.dirlist;
-import static com.android.documentsui.Shared.TAG;
+import static com.android.documentsui.base.Shared.TAG;
import android.app.AlertDialog;
import android.app.Dialog;
@@ -46,9 +46,9 @@ import com.android.documentsui.BaseActivity;
import com.android.documentsui.DocumentsApplication;
import com.android.documentsui.Metrics;
import com.android.documentsui.R;
-import com.android.documentsui.Shared;
import com.android.documentsui.Snackbars;
import com.android.documentsui.base.DocumentInfo;
+import com.android.documentsui.base.Shared;
/**
* Dialog to rename file or directory.
diff --git a/src/com/android/documentsui/dirlist/SectionBreakDocumentsAdapterWrapper.java b/src/com/android/documentsui/dirlist/SectionBreakDocumentsAdapterWrapper.java
index 1778480ff..4aef83212 100644
--- a/src/com/android/documentsui/dirlist/SectionBreakDocumentsAdapterWrapper.java
+++ b/src/com/android/documentsui/dirlist/SectionBreakDocumentsAdapterWrapper.java
@@ -24,7 +24,7 @@ import android.view.ViewGroup;
import android.widget.Space;
import com.android.documentsui.R;
-import com.android.documentsui.State;
+import com.android.documentsui.base.State;
import java.util.List;
diff --git a/src/com/android/documentsui/dirlist/SelectionMetadata.java b/src/com/android/documentsui/dirlist/SelectionMetadata.java
index 6a289f2b3..4c5a32161 100644
--- a/src/com/android/documentsui/dirlist/SelectionMetadata.java
+++ b/src/com/android/documentsui/dirlist/SelectionMetadata.java
@@ -24,7 +24,7 @@ import android.provider.DocumentsContract.Document;
import android.util.Log;
import com.android.documentsui.MenuManager;
-import com.android.documentsui.MimePredicate;
+import com.android.documentsui.base.MimePredicate;
import java.util.function.Function;
diff --git a/src/com/android/documentsui/dirlist/UserInputHandler.java b/src/com/android/documentsui/dirlist/UserInputHandler.java
index 6acbfc258..dcc76e293 100644
--- a/src/com/android/documentsui/dirlist/UserInputHandler.java
+++ b/src/com/android/documentsui/dirlist/UserInputHandler.java
@@ -16,7 +16,7 @@
package com.android.documentsui.dirlist;
-import static com.android.documentsui.Shared.DEBUG;
+import static com.android.documentsui.base.Shared.DEBUG;
import android.support.annotation.VisibleForTesting;
import android.util.Log;
@@ -24,9 +24,9 @@ import android.view.GestureDetector;
import android.view.KeyEvent;
import android.view.MotionEvent;
-import com.android.documentsui.Events;
-import com.android.documentsui.Events.InputEvent;
import com.android.documentsui.base.EventHandler;
+import com.android.documentsui.base.Events;
+import com.android.documentsui.base.Events.InputEvent;
import java.util.Collections;
import java.util.function.Function;
diff --git a/src/com/android/documentsui/manager/LauncherActivity.java b/src/com/android/documentsui/manager/LauncherActivity.java
index 165bb142f..542c2c3f0 100644
--- a/src/com/android/documentsui/manager/LauncherActivity.java
+++ b/src/com/android/documentsui/manager/LauncherActivity.java
@@ -16,7 +16,7 @@
package com.android.documentsui.manager;
-import static com.android.documentsui.Shared.DEBUG;
+import static com.android.documentsui.base.Shared.DEBUG;
import android.app.Activity;
import android.app.ActivityManager;
@@ -29,7 +29,7 @@ import android.provider.DocumentsContract;
import android.support.annotation.Nullable;
import android.util.Log;
-import com.android.documentsui.Shared;
+import com.android.documentsui.base.Shared;
import java.util.List;
diff --git a/src/com/android/documentsui/manager/ManageActivity.java b/src/com/android/documentsui/manager/ManageActivity.java
index 202e6195e..d5212c232 100644
--- a/src/com/android/documentsui/manager/ManageActivity.java
+++ b/src/com/android/documentsui/manager/ManageActivity.java
@@ -17,7 +17,7 @@
package com.android.documentsui.manager;
import static com.android.documentsui.OperationDialogFragment.DIALOG_TYPE_UNKNOWN;
-import static com.android.documentsui.Shared.DEBUG;
+import static com.android.documentsui.base.Shared.DEBUG;
import android.app.Activity;
import android.app.FragmentManager;
@@ -46,17 +46,17 @@ import com.android.documentsui.base.DocumentInfo;
import com.android.documentsui.base.DocumentStack;
import com.android.documentsui.base.PairedTask;
import com.android.documentsui.base.RootInfo;
+import com.android.documentsui.base.Shared;
+import com.android.documentsui.base.State;
import com.android.documentsui.ProviderExecutor;
import com.android.documentsui.R;
-import com.android.documentsui.RootsCache;
-import com.android.documentsui.Shared;
import com.android.documentsui.Snackbars;
-import com.android.documentsui.State;
import com.android.documentsui.clipping.DocumentClipper;
import com.android.documentsui.dirlist.AnimationView;
import com.android.documentsui.dirlist.DirectoryFragment;
import com.android.documentsui.dirlist.FragmentTuner;
import com.android.documentsui.dirlist.FragmentTuner.FilesTuner;
+import com.android.documentsui.roots.RootsCache;
import com.android.documentsui.dirlist.Model;
import com.android.documentsui.services.FileOperationService;
import com.android.documentsui.sidebar.RootsFragment;
diff --git a/src/com/android/documentsui/manager/QuickViewIntentBuilder.java b/src/com/android/documentsui/manager/QuickViewIntentBuilder.java
index e24ad9bd9..320231eb1 100644
--- a/src/com/android/documentsui/manager/QuickViewIntentBuilder.java
+++ b/src/com/android/documentsui/manager/QuickViewIntentBuilder.java
@@ -16,9 +16,9 @@
package com.android.documentsui.manager;
-import static com.android.documentsui.Shared.DEBUG;
-import static com.android.documentsui.Shared.MAX_DOCS_IN_INTENT;
import static com.android.documentsui.base.DocumentInfo.getCursorString;
+import static com.android.documentsui.base.Shared.DEBUG;
+import static com.android.documentsui.base.Shared.MAX_DOCS_IN_INTENT;
import android.content.ClipData;
import android.content.ClipDescription;
@@ -36,9 +36,9 @@ import android.util.Log;
import android.util.Range;
import com.android.documentsui.R;
-import com.android.documentsui.RootCursorWrapper;
import com.android.documentsui.base.DocumentInfo;
import com.android.documentsui.dirlist.Model;
+import com.android.documentsui.roots.RootCursorWrapper;
import java.util.ArrayList;
import java.util.List;
diff --git a/src/com/android/documentsui/picker/LoadLastAccessedStackTask.java b/src/com/android/documentsui/picker/LoadLastAccessedStackTask.java
index 6770895bc..a3e693864 100644
--- a/src/com/android/documentsui/picker/LoadLastAccessedStackTask.java
+++ b/src/com/android/documentsui/picker/LoadLastAccessedStackTask.java
@@ -16,20 +16,20 @@
package com.android.documentsui.picker;
-import static com.android.documentsui.Shared.DEBUG;
+import static com.android.documentsui.base.Shared.DEBUG;
import android.database.Cursor;
import android.net.Uri;
import android.util.Log;
import com.android.documentsui.DocumentsApplication;
-import com.android.documentsui.RootsCache;
-import com.android.documentsui.State;
import com.android.documentsui.base.DurableUtils;
import com.android.documentsui.base.PairedTask;
import com.android.documentsui.base.RootInfo;
+import com.android.documentsui.base.State;
import com.android.documentsui.dirlist.AnimationView;
import com.android.documentsui.picker.LastAccessedProvider.Columns;
+import com.android.documentsui.roots.RootsCache;
import libcore.io.IoUtils;
@@ -49,11 +49,11 @@ final class LoadLastAccessedStackTask
private static final String TAG = "LoadLastAccessedStackTask";
private volatile boolean mRestoredStack;
private volatile boolean mExternal;
- private State mState;
+ private final State mState;
- public LoadLastAccessedStackTask(PickActivity activity) {
+ public LoadLastAccessedStackTask(PickActivity activity, State state) {
super(activity);
- mState = activity.mState;
+ mState = state;
}
@Override
diff --git a/src/com/android/documentsui/picker/PickActivity.java b/src/com/android/documentsui/picker/PickActivity.java
index 64b627575..dbe722f7b 100644
--- a/src/com/android/documentsui/picker/PickActivity.java
+++ b/src/com/android/documentsui/picker/PickActivity.java
@@ -16,12 +16,12 @@
package com.android.documentsui.picker;
-import static com.android.documentsui.Shared.DEBUG;
-import static com.android.documentsui.State.ACTION_CREATE;
-import static com.android.documentsui.State.ACTION_GET_CONTENT;
-import static com.android.documentsui.State.ACTION_OPEN;
-import static com.android.documentsui.State.ACTION_OPEN_TREE;
-import static com.android.documentsui.State.ACTION_PICK_COPY_DESTINATION;
+import static com.android.documentsui.base.Shared.DEBUG;
+import static com.android.documentsui.base.State.ACTION_CREATE;
+import static com.android.documentsui.base.State.ACTION_GET_CONTENT;
+import static com.android.documentsui.base.State.ACTION_OPEN;
+import static com.android.documentsui.base.State.ACTION_OPEN_TREE;
+import static com.android.documentsui.base.State.ACTION_PICK_COPY_DESTINATION;
import android.app.Activity;
import android.app.Fragment;
@@ -47,13 +47,13 @@ import com.android.documentsui.DocumentsMenuManager;
import com.android.documentsui.MenuManager;
import com.android.documentsui.MenuManager.DirectoryDetails;
import com.android.documentsui.base.DocumentInfo;
+import com.android.documentsui.base.MimePredicate;
import com.android.documentsui.base.PairedTask;
import com.android.documentsui.base.RootInfo;
-import com.android.documentsui.MimePredicate;
+import com.android.documentsui.base.Shared;
+import com.android.documentsui.base.State;
import com.android.documentsui.R;
-import com.android.documentsui.Shared;
import com.android.documentsui.Snackbars;
-import com.android.documentsui.State;
import com.android.documentsui.dirlist.DirectoryFragment;
import com.android.documentsui.dirlist.FragmentTuner;
import com.android.documentsui.dirlist.FragmentTuner.DocumentsTuner;
@@ -119,7 +119,7 @@ public class PickActivity extends BaseActivity {
loadRoot(getDefaultRoot());
} else {
if (DEBUG) Log.d(TAG, "Attempting to load last used stack for calling package.");
- new LoadLastAccessedStackTask(this).execute();
+ new LoadLastAccessedStackTask(this, mState).execute();
}
}
}
diff --git a/src/com/android/documentsui/picker/PickFragment.java b/src/com/android/documentsui/picker/PickFragment.java
index bd44f6ee8..a389942d9 100644
--- a/src/com/android/documentsui/picker/PickFragment.java
+++ b/src/com/android/documentsui/picker/PickFragment.java
@@ -32,11 +32,11 @@ import android.widget.Button;
import com.android.documentsui.BaseActivity;
import com.android.documentsui.R;
-import com.android.documentsui.State;
import com.android.documentsui.R.id;
import com.android.documentsui.R.layout;
import com.android.documentsui.R.string;
import com.android.documentsui.base.DocumentInfo;
+import com.android.documentsui.base.State;
import com.android.documentsui.services.FileOperationService.OpType;
/**
diff --git a/src/com/android/documentsui/BootReceiver.java b/src/com/android/documentsui/roots/BootReceiver.java
index cdea9d75f..4d71ddbee 100644
--- a/src/com/android/documentsui/BootReceiver.java
+++ b/src/com/android/documentsui/roots/BootReceiver.java
@@ -14,12 +14,14 @@
* limitations under the License.
*/
-package com.android.documentsui;
+package com.android.documentsui.roots;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
+import com.android.documentsui.DocumentsApplication;
+
/**
* Prime {@link RootsCache} when the system is booted.
*/
diff --git a/src/com/android/documentsui/LoadRootTask.java b/src/com/android/documentsui/roots/LoadRootTask.java
index 1b98ce0bd..aaf9d83c7 100644
--- a/src/com/android/documentsui/LoadRootTask.java
+++ b/src/com/android/documentsui/roots/LoadRootTask.java
@@ -14,34 +14,41 @@
* limitations under the License.
*/
-package com.android.documentsui;
+package com.android.documentsui.roots;
import android.net.Uri;
import android.provider.DocumentsContract;
import android.util.Log;
+import com.android.documentsui.BaseActivity;
import com.android.documentsui.base.PairedTask;
import com.android.documentsui.base.RootInfo;
+import com.android.documentsui.base.State;
-final class LoadRootTask extends PairedTask<BaseActivity, Void, RootInfo> {
- private static final String TAG = "RestoreRootTask";
+public final class LoadRootTask extends PairedTask<BaseActivity, Void, RootInfo> {
+ private static final String TAG = "LoadRootTask";
+ private final State mState;
+ private final RootsCache mRoots;
private final Uri mRootUri;
- public LoadRootTask(BaseActivity activity, Uri rootUri) {
+
+ public LoadRootTask(BaseActivity activity, RootsCache roots, State state, Uri rootUri) {
super(activity);
+ mState = state;
+ mRoots = roots;
mRootUri = rootUri;
}
@Override
protected RootInfo run(Void... params) {
String rootId = DocumentsContract.getRootId(mRootUri);
- return mOwner.mRoots.getRootOneshot(mRootUri.getAuthority(), rootId);
+ return mRoots.getRootOneshot(mRootUri.getAuthority(), rootId);
}
@Override
protected void finish(RootInfo root) {
- mOwner.mState.restored = true;
+ mState.restored = true;
if (root != null) {
mOwner.onRootPicked(root);
diff --git a/src/com/android/documentsui/RootCursorWrapper.java b/src/com/android/documentsui/roots/RootCursorWrapper.java
index 0b58218ab..6e9313360 100644
--- a/src/com/android/documentsui/RootCursorWrapper.java
+++ b/src/com/android/documentsui/roots/RootCursorWrapper.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.documentsui;
+package com.android.documentsui.roots;
import android.database.AbstractCursor;
import android.database.Cursor;
diff --git a/src/com/android/documentsui/RootsCache.java b/src/com/android/documentsui/roots/RootsCache.java
index 1b54777c7..4fa9cb080 100644
--- a/src/com/android/documentsui/RootsCache.java
+++ b/src/com/android/documentsui/roots/RootsCache.java
@@ -14,11 +14,12 @@
* limitations under the License.
*/
-package com.android.documentsui;
-
-import static com.android.documentsui.Shared.DEBUG;
+package com.android.documentsui.roots;
import android.content.BroadcastReceiver.PendingResult;
+
+import static com.android.documentsui.base.Shared.DEBUG;
+
import android.content.ContentProviderClient;
import android.content.ContentResolver;
import android.content.Context;
@@ -40,7 +41,13 @@ import android.provider.DocumentsProvider;
import android.support.annotation.VisibleForTesting;
import android.util.Log;
+import com.android.documentsui.DocumentsApplication;
+import com.android.documentsui.R;
+import com.android.documentsui.R.drawable;
+import com.android.documentsui.R.string;
+import com.android.documentsui.base.MimePredicate;
import com.android.documentsui.base.RootInfo;
+import com.android.documentsui.base.State;
import com.android.internal.annotations.GuardedBy;
import libcore.io.IoUtils;
diff --git a/src/com/android/documentsui/RootsLoader.java b/src/com/android/documentsui/roots/RootsLoader.java
index cddcb0de1..12b107c77 100644
--- a/src/com/android/documentsui/RootsLoader.java
+++ b/src/com/android/documentsui/roots/RootsLoader.java
@@ -14,12 +14,13 @@
* limitations under the License.
*/
-package com.android.documentsui;
+package com.android.documentsui.roots;
import android.content.AsyncTaskLoader;
import android.content.Context;
import com.android.documentsui.base.RootInfo;
+import com.android.documentsui.base.State;
import java.util.Collection;
diff --git a/src/com/android/documentsui/services/CopyJob.java b/src/com/android/documentsui/services/CopyJob.java
index 7253a71a0..eea740462 100644
--- a/src/com/android/documentsui/services/CopyJob.java
+++ b/src/com/android/documentsui/services/CopyJob.java
@@ -23,9 +23,9 @@ import static android.provider.DocumentsContract.getDocumentId;
import static android.provider.DocumentsContract.isChildDocument;
import static com.android.documentsui.OperationDialogFragment.DIALOG_TYPE_CONVERTED;
-import static com.android.documentsui.Shared.DEBUG;
import static com.android.documentsui.base.DocumentInfo.getCursorLong;
import static com.android.documentsui.base.DocumentInfo.getCursorString;
+import static com.android.documentsui.base.Shared.DEBUG;
import static com.android.documentsui.services.FileOperationService.EXTRA_DIALOG_TYPE;
import static com.android.documentsui.services.FileOperationService.EXTRA_OPERATION_TYPE;
import static com.android.documentsui.services.FileOperationService.EXTRA_SRC_LIST;
@@ -54,11 +54,11 @@ import android.webkit.MimeTypeMap;
import com.android.documentsui.DocumentsApplication;
import com.android.documentsui.Metrics;
import com.android.documentsui.R;
-import com.android.documentsui.RootsCache;
import com.android.documentsui.base.DocumentInfo;
import com.android.documentsui.base.DocumentStack;
import com.android.documentsui.base.RootInfo;
import com.android.documentsui.clipping.UrisSupplier;
+import com.android.documentsui.roots.RootsCache;
import com.android.documentsui.services.FileOperationService.OpType;
import libcore.io.IoUtils;
diff --git a/src/com/android/documentsui/services/DeleteJob.java b/src/com/android/documentsui/services/DeleteJob.java
index 310955520..e77beae30 100644
--- a/src/com/android/documentsui/services/DeleteJob.java
+++ b/src/com/android/documentsui/services/DeleteJob.java
@@ -16,7 +16,7 @@
package com.android.documentsui.services;
-import static com.android.documentsui.Shared.DEBUG;
+import static com.android.documentsui.base.Shared.DEBUG;
import static com.android.documentsui.services.FileOperationService.OPERATION_DELETE;
import android.app.Notification;
diff --git a/src/com/android/documentsui/services/FileOperationService.java b/src/com/android/documentsui/services/FileOperationService.java
index 419bf1395..3fa23c96e 100644
--- a/src/com/android/documentsui/services/FileOperationService.java
+++ b/src/com/android/documentsui/services/FileOperationService.java
@@ -16,7 +16,7 @@
package com.android.documentsui.services;
-import static com.android.documentsui.Shared.DEBUG;
+import static com.android.documentsui.base.Shared.DEBUG;
import android.annotation.IntDef;
import android.app.NotificationManager;
diff --git a/src/com/android/documentsui/services/FileOperations.java b/src/com/android/documentsui/services/FileOperations.java
index 01956a1b0..cea20265d 100644
--- a/src/com/android/documentsui/services/FileOperations.java
+++ b/src/com/android/documentsui/services/FileOperations.java
@@ -17,8 +17,7 @@
package com.android.documentsui.services;
import static android.os.SystemClock.elapsedRealtime;
-
-import static com.android.documentsui.Shared.DEBUG;
+import static com.android.documentsui.base.Shared.DEBUG;
import static com.android.documentsui.services.FileOperationService.EXTRA_CANCEL;
import static com.android.documentsui.services.FileOperationService.EXTRA_JOB_ID;
import static com.android.documentsui.services.FileOperationService.EXTRA_OPERATION;
diff --git a/src/com/android/documentsui/services/Job.java b/src/com/android/documentsui/services/Job.java
index 140afdc57..f298dbc5e 100644
--- a/src/com/android/documentsui/services/Job.java
+++ b/src/com/android/documentsui/services/Job.java
@@ -45,9 +45,9 @@ import com.android.documentsui.manager.ManageActivity;
import com.android.documentsui.Metrics;
import com.android.documentsui.OperationDialogFragment;
import com.android.documentsui.R;
-import com.android.documentsui.Shared;
import com.android.documentsui.base.DocumentInfo;
import com.android.documentsui.base.DocumentStack;
+import com.android.documentsui.base.Shared;
import com.android.documentsui.services.FileOperationService.OpType;
import java.lang.annotation.Retention;
diff --git a/src/com/android/documentsui/services/MoveJob.java b/src/com/android/documentsui/services/MoveJob.java
index a6c1d7736..b7924c8ac 100644
--- a/src/com/android/documentsui/services/MoveJob.java
+++ b/src/com/android/documentsui/services/MoveJob.java
@@ -16,7 +16,7 @@
package com.android.documentsui.services;
-import static com.android.documentsui.Shared.DEBUG;
+import static com.android.documentsui.base.Shared.DEBUG;
import static com.android.documentsui.services.FileOperationService.OPERATION_MOVE;
import android.app.Notification;
diff --git a/src/com/android/documentsui/sidebar/EjectRootTask.java b/src/com/android/documentsui/sidebar/EjectRootTask.java
index dabba4bf2..36459c042 100644
--- a/src/com/android/documentsui/sidebar/EjectRootTask.java
+++ b/src/com/android/documentsui/sidebar/EjectRootTask.java
@@ -24,8 +24,8 @@ import android.provider.DocumentsContract;
import android.util.Log;
import com.android.documentsui.DocumentsApplication;
-import com.android.documentsui.Shared;
import com.android.documentsui.base.CheckedTask;
+import com.android.documentsui.base.Shared;
import java.util.function.BooleanSupplier;
import java.util.function.Consumer;
diff --git a/src/com/android/documentsui/sidebar/RootsFragment.java b/src/com/android/documentsui/sidebar/RootsFragment.java
index 8c9df2a3a..c273f70a1 100644
--- a/src/com/android/documentsui/sidebar/RootsFragment.java
+++ b/src/com/android/documentsui/sidebar/RootsFragment.java
@@ -16,7 +16,7 @@
package com.android.documentsui.sidebar;
-import static com.android.documentsui.Shared.DEBUG;
+import static com.android.documentsui.base.Shared.DEBUG;
import android.annotation.LayoutRes;
import android.app.Activity;
@@ -61,15 +61,10 @@ import android.widget.TextView;
import com.android.documentsui.BaseActivity;
import com.android.documentsui.DocumentsApplication;
-import com.android.documentsui.Events;
import com.android.documentsui.ItemDragListener;
import com.android.documentsui.Metrics;
import com.android.documentsui.ProviderExecutor;
import com.android.documentsui.R;
-import com.android.documentsui.RootsCache;
-import com.android.documentsui.RootsLoader;
-import com.android.documentsui.Shared;
-import com.android.documentsui.State;
import com.android.documentsui.ItemDragListener.DragHost;
import com.android.documentsui.R.id;
import com.android.documentsui.R.layout;
@@ -77,10 +72,15 @@ import com.android.documentsui.R.menu;
import com.android.documentsui.R.string;
import com.android.documentsui.base.CheckedTask;
import com.android.documentsui.base.DocumentInfo;
+import com.android.documentsui.base.Events;
import com.android.documentsui.base.RootInfo;
+import com.android.documentsui.base.Shared;
+import com.android.documentsui.base.State;
import com.android.documentsui.base.CheckedTask.Check;
import com.android.documentsui.clipping.DocumentClipper;
import com.android.documentsui.picker.PickActivity;
+import com.android.documentsui.roots.RootsCache;
+import com.android.documentsui.roots.RootsLoader;
import com.android.documentsui.services.FileOperations;
import java.util.ArrayList;
diff --git a/src/com/android/documentsui/sorting/SortController.java b/src/com/android/documentsui/sorting/SortController.java
index 5afe4e7aa..927ff7e81 100644
--- a/src/com/android/documentsui/sorting/SortController.java
+++ b/src/com/android/documentsui/sorting/SortController.java
@@ -22,8 +22,8 @@ import android.view.View;
import com.android.documentsui.Metrics;
import com.android.documentsui.R;
-import com.android.documentsui.State;
-import com.android.documentsui.State.ViewMode;
+import com.android.documentsui.base.State;
+import com.android.documentsui.base.State.ViewMode;
/**
* A high level controller that manages sort widgets. This is useful when sort widgets can and will
diff --git a/src/com/android/documentsui/sorting/SortModel.java b/src/com/android/documentsui/sorting/SortModel.java
index 108be35e1..793dd608e 100644
--- a/src/com/android/documentsui/sorting/SortModel.java
+++ b/src/com/android/documentsui/sorting/SortModel.java
@@ -16,7 +16,7 @@
package com.android.documentsui.sorting;
-import static com.android.documentsui.Shared.DEBUG;
+import static com.android.documentsui.base.Shared.DEBUG;
import android.annotation.IntDef;
import android.annotation.Nullable;
diff --git a/tests/src/com/android/documentsui/DocumentsMenuManagerTest.java b/tests/src/com/android/documentsui/DocumentsMenuManagerTest.java
index f08e915bf..ad790625a 100644
--- a/tests/src/com/android/documentsui/DocumentsMenuManagerTest.java
+++ b/tests/src/com/android/documentsui/DocumentsMenuManagerTest.java
@@ -16,9 +16,8 @@
package com.android.documentsui;
-import static com.android.documentsui.State.ACTION_CREATE;
-import static com.android.documentsui.State.ACTION_OPEN;
-
+import static com.android.documentsui.base.State.ACTION_CREATE;
+import static com.android.documentsui.base.State.ACTION_OPEN;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
@@ -27,6 +26,7 @@ import android.support.test.filters.SmallTest;
import android.support.test.runner.AndroidJUnit4;
import com.android.documentsui.base.RootInfo;
+import com.android.documentsui.base.State;
import com.android.documentsui.testing.TestDirectoryDetails;
import com.android.documentsui.testing.TestMenu;
import com.android.documentsui.testing.TestMenuItem;
diff --git a/tests/src/com/android/documentsui/DocumentsProviderHelper.java b/tests/src/com/android/documentsui/DocumentsProviderHelper.java
index 41d6dd86b..beb7e5c84 100644
--- a/tests/src/com/android/documentsui/DocumentsProviderHelper.java
+++ b/tests/src/com/android/documentsui/DocumentsProviderHelper.java
@@ -42,6 +42,7 @@ import android.text.TextUtils;
import com.android.documentsui.base.DocumentInfo;
import com.android.documentsui.base.RootInfo;
+import com.android.documentsui.roots.RootCursorWrapper;
import com.google.android.collect.Lists;
diff --git a/tests/src/com/android/documentsui/FilesMenuManagerTest.java b/tests/src/com/android/documentsui/FilesMenuManagerTest.java
index cbec8198e..9dd5705fd 100644
--- a/tests/src/com/android/documentsui/FilesMenuManagerTest.java
+++ b/tests/src/com/android/documentsui/FilesMenuManagerTest.java
@@ -23,6 +23,7 @@ import android.support.test.filters.SmallTest;
import android.support.test.runner.AndroidJUnit4;
import com.android.documentsui.base.RootInfo;
+import com.android.documentsui.base.State;
import com.android.documentsui.testing.TestDirectoryDetails;
import com.android.documentsui.testing.TestMenu;
import com.android.documentsui.testing.TestMenuItem;
diff --git a/tests/src/com/android/documentsui/StateTest.java b/tests/src/com/android/documentsui/base/StateTest.java
index 3bd5d7dcc..1f01b6714 100644
--- a/tests/src/com/android/documentsui/StateTest.java
+++ b/tests/src/com/android/documentsui/base/StateTest.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.documentsui;
+package com.android.documentsui.base;
import android.test.AndroidTestCase;
import android.test.suitebuilder.annotation.SmallTest;
diff --git a/tests/src/com/android/documentsui/clipping/UrisSupplierTest.java b/tests/src/com/android/documentsui/clipping/UrisSupplierTest.java
index 9815d0e90..1cdb09979 100644
--- a/tests/src/com/android/documentsui/clipping/UrisSupplierTest.java
+++ b/tests/src/com/android/documentsui/clipping/UrisSupplierTest.java
@@ -27,7 +27,7 @@ import android.support.test.InstrumentationRegistry;
import android.support.test.filters.MediumTest;
import android.support.test.runner.AndroidJUnit4;
-import com.android.documentsui.Shared;
+import com.android.documentsui.base.Shared;
import com.android.documentsui.testing.TestScheduledExecutorService;
import org.junit.AfterClass;
diff --git a/tests/src/com/android/documentsui/dirlist/DocumentHolderTest.java b/tests/src/com/android/documentsui/dirlist/DocumentHolderTest.java
index 949f6b746..9f9663f42 100644
--- a/tests/src/com/android/documentsui/dirlist/DocumentHolderTest.java
+++ b/tests/src/com/android/documentsui/dirlist/DocumentHolderTest.java
@@ -30,7 +30,7 @@ import android.view.MotionEvent.PointerCoords;
import android.view.MotionEvent.PointerProperties;
import com.android.documentsui.R;
-import com.android.documentsui.State;
+import com.android.documentsui.base.State;
@SmallTest
public class DocumentHolderTest extends AndroidTestCase {
diff --git a/tests/src/com/android/documentsui/dirlist/DragStartListenerTest.java b/tests/src/com/android/documentsui/dirlist/DragStartListenerTest.java
index 81612a942..cec5ba8e9 100644
--- a/tests/src/com/android/documentsui/dirlist/DragStartListenerTest.java
+++ b/tests/src/com/android/documentsui/dirlist/DragStartListenerTest.java
@@ -22,8 +22,8 @@ import android.test.suitebuilder.annotation.SmallTest;
import android.view.MotionEvent;
import android.view.View;
-import com.android.documentsui.Events.InputEvent;
-import com.android.documentsui.State;
+import com.android.documentsui.base.State;
+import com.android.documentsui.base.Events.InputEvent;
import com.android.documentsui.dirlist.MultiSelectManager.Selection;
import com.android.documentsui.testing.TestEvent;
import com.android.documentsui.testing.MultiSelectManagers;
diff --git a/tests/src/com/android/documentsui/dirlist/ModelBackedDocumentsAdapterTest.java b/tests/src/com/android/documentsui/dirlist/ModelBackedDocumentsAdapterTest.java
index 236621fce..0680e332b 100644
--- a/tests/src/com/android/documentsui/dirlist/ModelBackedDocumentsAdapterTest.java
+++ b/tests/src/com/android/documentsui/dirlist/ModelBackedDocumentsAdapterTest.java
@@ -23,7 +23,7 @@ import android.test.AndroidTestCase;
import android.test.suitebuilder.annotation.SmallTest;
import android.view.ViewGroup;
-import com.android.documentsui.State;
+import com.android.documentsui.base.State;
@SmallTest
public class ModelBackedDocumentsAdapterTest extends AndroidTestCase {
diff --git a/tests/src/com/android/documentsui/dirlist/ModelTest.java b/tests/src/com/android/documentsui/dirlist/ModelTest.java
index 914e6c485..75273c9f8 100644
--- a/tests/src/com/android/documentsui/dirlist/ModelTest.java
+++ b/tests/src/com/android/documentsui/dirlist/ModelTest.java
@@ -27,9 +27,9 @@ import android.test.mock.MockContentResolver;
import android.test.suitebuilder.annotation.SmallTest;
import com.android.documentsui.DirectoryResult;
-import com.android.documentsui.RootCursorWrapper;
-import com.android.documentsui.Shared;
import com.android.documentsui.base.DocumentInfo;
+import com.android.documentsui.base.Shared;
+import com.android.documentsui.roots.RootCursorWrapper;
import com.android.documentsui.sorting.SortDimension;
import com.android.documentsui.sorting.SortModel;
import com.android.documentsui.testing.SortModels;
diff --git a/tests/src/com/android/documentsui/dirlist/SectionBreakDocumentsAdapterWrapperTest.java b/tests/src/com/android/documentsui/dirlist/SectionBreakDocumentsAdapterWrapperTest.java
index 51b157a1a..f19b912a2 100644
--- a/tests/src/com/android/documentsui/dirlist/SectionBreakDocumentsAdapterWrapperTest.java
+++ b/tests/src/com/android/documentsui/dirlist/SectionBreakDocumentsAdapterWrapperTest.java
@@ -26,8 +26,8 @@ import android.test.suitebuilder.annotation.SmallTest;
import android.view.ViewGroup;
import com.android.documentsui.DirectoryResult;
-import com.android.documentsui.RootCursorWrapper;
-import com.android.documentsui.State;
+import com.android.documentsui.base.State;
+import com.android.documentsui.roots.RootCursorWrapper;
import com.android.documentsui.testing.SortModels;
@SmallTest
diff --git a/tests/src/com/android/documentsui/dirlist/TestModel.java b/tests/src/com/android/documentsui/dirlist/TestModel.java
index 6615b9244..3e6682428 100644
--- a/tests/src/com/android/documentsui/dirlist/TestModel.java
+++ b/tests/src/com/android/documentsui/dirlist/TestModel.java
@@ -20,7 +20,7 @@ import android.database.MatrixCursor;
import android.provider.DocumentsContract.Document;
import com.android.documentsui.DirectoryResult;
-import com.android.documentsui.RootCursorWrapper;
+import com.android.documentsui.roots.RootCursorWrapper;
import com.android.documentsui.testing.SortModels;
import java.util.Random;
diff --git a/tests/src/com/android/documentsui/dirlist/UserInputHandler_MouseTest.java b/tests/src/com/android/documentsui/dirlist/UserInputHandler_MouseTest.java
index 0d99bab8b..8d2642441 100644
--- a/tests/src/com/android/documentsui/dirlist/UserInputHandler_MouseTest.java
+++ b/tests/src/com/android/documentsui/dirlist/UserInputHandler_MouseTest.java
@@ -23,7 +23,7 @@ import android.support.test.runner.AndroidJUnit4;
import android.support.v7.widget.RecyclerView;
import android.view.MotionEvent;
-import com.android.documentsui.Events.InputEvent;
+import com.android.documentsui.base.Events.InputEvent;
import com.android.documentsui.testing.MultiSelectManagers;
import com.android.documentsui.testing.TestEvent;
import com.android.documentsui.testing.TestEvent.Builder;
diff --git a/tests/src/com/android/documentsui/dirlist/UserInputHandler_RangeTest.java b/tests/src/com/android/documentsui/dirlist/UserInputHandler_RangeTest.java
index 6500a562d..be408ba62 100644
--- a/tests/src/com/android/documentsui/dirlist/UserInputHandler_RangeTest.java
+++ b/tests/src/com/android/documentsui/dirlist/UserInputHandler_RangeTest.java
@@ -20,7 +20,7 @@ import android.support.test.filters.SmallTest;
import android.support.test.runner.AndroidJUnit4;
import android.view.MotionEvent;
-import com.android.documentsui.Events.InputEvent;
+import com.android.documentsui.base.Events.InputEvent;
import com.android.documentsui.testing.MultiSelectManagers;
import com.android.documentsui.testing.TestEvent;
import com.android.documentsui.testing.TestEvent.Builder;
diff --git a/tests/src/com/android/documentsui/dirlist/UserInputHandler_TouchTest.java b/tests/src/com/android/documentsui/dirlist/UserInputHandler_TouchTest.java
index 3946fd665..051c1cf96 100644
--- a/tests/src/com/android/documentsui/dirlist/UserInputHandler_TouchTest.java
+++ b/tests/src/com/android/documentsui/dirlist/UserInputHandler_TouchTest.java
@@ -23,7 +23,7 @@ import android.support.test.runner.AndroidJUnit4;
import android.support.v7.widget.RecyclerView;
import android.view.MotionEvent;
-import com.android.documentsui.Events.InputEvent;
+import com.android.documentsui.base.Events.InputEvent;
import com.android.documentsui.testing.MultiSelectManagers;
import com.android.documentsui.testing.TestEvent;
import com.android.documentsui.testing.TestEvent.Builder;
diff --git a/tests/src/com/android/documentsui/functional/FilesActivityDefaultsUiTest.java b/tests/src/com/android/documentsui/functional/FilesActivityDefaultsUiTest.java
index d750b865d..47a4f9e2f 100644
--- a/tests/src/com/android/documentsui/functional/FilesActivityDefaultsUiTest.java
+++ b/tests/src/com/android/documentsui/functional/FilesActivityDefaultsUiTest.java
@@ -23,8 +23,8 @@ import android.content.Intent;
import android.provider.DocumentsContract;
import android.test.suitebuilder.annotation.LargeTest;
-import com.android.documentsui.Shared;
import com.android.documentsui.base.RootInfo;
+import com.android.documentsui.base.Shared;
import com.android.documentsui.manager.ManageActivity;
@LargeTest
diff --git a/tests/src/com/android/documentsui/RootsCacheTest.java b/tests/src/com/android/documentsui/roots/RootsCacheTest.java
index 5def34144..6adead8c0 100644
--- a/tests/src/com/android/documentsui/RootsCacheTest.java
+++ b/tests/src/com/android/documentsui/roots/RootsCacheTest.java
@@ -14,15 +14,16 @@
* limitations under the License.
*/
-package com.android.documentsui;
+package com.android.documentsui.roots;
-import static com.android.documentsui.RootsCache.getMatchingRoots;
+import static com.android.documentsui.roots.RootsCache.getMatchingRoots;
import static com.google.common.collect.Lists.newArrayList;
import android.test.AndroidTestCase;
import android.test.suitebuilder.annotation.SmallTest;
import com.android.documentsui.base.RootInfo;
+import com.android.documentsui.base.State;
import com.google.common.collect.Lists;
diff --git a/tests/src/com/android/documentsui/sorting/SortControllerTest.java b/tests/src/com/android/documentsui/sorting/SortControllerTest.java
index 270866f4d..32ac3dcdf 100644
--- a/tests/src/com/android/documentsui/sorting/SortControllerTest.java
+++ b/tests/src/com/android/documentsui/sorting/SortControllerTest.java
@@ -22,7 +22,7 @@ import android.support.test.filters.SmallTest;
import android.support.test.runner.AndroidJUnit4;
import android.view.View;
-import com.android.documentsui.State;
+import com.android.documentsui.base.State;
import org.junit.Before;
import org.junit.Test;
diff --git a/tests/src/com/android/documentsui/sorting/SortController_TabletLayoutTest.java b/tests/src/com/android/documentsui/sorting/SortController_TabletLayoutTest.java
index 653416b98..042335534 100644
--- a/tests/src/com/android/documentsui/sorting/SortController_TabletLayoutTest.java
+++ b/tests/src/com/android/documentsui/sorting/SortController_TabletLayoutTest.java
@@ -19,7 +19,7 @@ package com.android.documentsui.sorting;
import android.support.test.filters.SmallTest;
import android.support.test.runner.AndroidJUnit4;
-import com.android.documentsui.State;
+import com.android.documentsui.base.State;
import com.android.documentsui.sorting.SortControllerTest.TestWidget;
import org.junit.Before;
diff --git a/tests/src/com/android/documentsui/testing/TestEvent.java b/tests/src/com/android/documentsui/testing/TestEvent.java
index a36ae42d3..9fd6215ee 100644
--- a/tests/src/com/android/documentsui/testing/TestEvent.java
+++ b/tests/src/com/android/documentsui/testing/TestEvent.java
@@ -23,7 +23,7 @@ import android.text.TextUtils;
import android.view.KeyEvent;
import android.view.MotionEvent;
-import com.android.documentsui.Events.InputEvent;
+import com.android.documentsui.base.Events.InputEvent;
import com.android.documentsui.dirlist.DocumentDetails;
import java.lang.annotation.Retention;