summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--AndroidManifest.xml2
-rw-r--r--perf-tests/Android.mk4
-rw-r--r--perf-tests/src/com/android/documentsui/FilesActivityPerfTest.java3
-rw-r--r--perf-tests/src/com/android/documentsui/FilesJankPerfTest.java6
-rw-r--r--res/layout/fragment_roots.xml2
-rw-r--r--res/layout/item_root.xml4
-rw-r--r--src/com/android/documentsui/BaseActivity.java10
-rw-r--r--src/com/android/documentsui/CreateDirectoryFragment.java2
-rw-r--r--src/com/android/documentsui/DirectoryLoader.java4
-rw-r--r--src/com/android/documentsui/DirectoryResult.java2
-rw-r--r--src/com/android/documentsui/DropdownBreadcrumb.java4
-rw-r--r--src/com/android/documentsui/FilesMenuManager.java2
-rw-r--r--src/com/android/documentsui/FilteringCursorWrapper.java4
-rw-r--r--src/com/android/documentsui/HorizontalBreadcrumb.java4
-rw-r--r--src/com/android/documentsui/LoadRootTask.java3
-rw-r--r--src/com/android/documentsui/LocalPreferences.java2
-rw-r--r--src/com/android/documentsui/MenuManager.java2
-rw-r--r--src/com/android/documentsui/Metrics.java4
-rw-r--r--src/com/android/documentsui/MimePredicate.java2
-rw-r--r--src/com/android/documentsui/NavigationViewManager.java2
-rw-r--r--src/com/android/documentsui/OperationDialogFragment.java4
-rw-r--r--src/com/android/documentsui/PackageReceiver.java2
-rw-r--r--src/com/android/documentsui/RecentsLoader.java2
-rw-r--r--src/com/android/documentsui/RootsCache.java2
-rw-r--r--src/com/android/documentsui/RootsLoader.java2
-rw-r--r--src/com/android/documentsui/SearchViewManager.java2
-rw-r--r--src/com/android/documentsui/SectionedListAdapter.java164
-rw-r--r--src/com/android/documentsui/State.java8
-rw-r--r--src/com/android/documentsui/UriDerivativeLoader.java135
-rw-r--r--src/com/android/documentsui/base/CheckedTask.java (renamed from src/com/android/documentsui/CheckedTask.java)6
-rw-r--r--src/com/android/documentsui/base/DocumentInfo.java (renamed from src/com/android/documentsui/model/DocumentInfo.java)2
-rw-r--r--src/com/android/documentsui/base/DocumentStack.java (renamed from src/com/android/documentsui/model/DocumentStack.java)2
-rw-r--r--src/com/android/documentsui/base/Durable.java (renamed from src/com/android/documentsui/model/Durable.java)2
-rw-r--r--src/com/android/documentsui/base/DurableUtils.java (renamed from src/com/android/documentsui/model/DurableUtils.java)2
-rw-r--r--src/com/android/documentsui/base/PairedTask.java (renamed from src/com/android/documentsui/PairedTask.java)2
-rw-r--r--src/com/android/documentsui/base/RootInfo.java (renamed from src/com/android/documentsui/model/RootInfo.java)8
-rw-r--r--src/com/android/documentsui/clipping/DocumentClipper.java6
-rw-r--r--src/com/android/documentsui/dirlist/DirectoryFragment.java8
-rw-r--r--src/com/android/documentsui/dirlist/DocumentsAdapter.java2
-rw-r--r--src/com/android/documentsui/dirlist/DragShadowBuilder.java2
-rw-r--r--src/com/android/documentsui/dirlist/DragStartListener.java2
-rw-r--r--src/com/android/documentsui/dirlist/FocusManager.java2
-rw-r--r--src/com/android/documentsui/dirlist/GridDirectoryHolder.java2
-rw-r--r--src/com/android/documentsui/dirlist/GridDocumentHolder.java6
-rw-r--r--src/com/android/documentsui/dirlist/IconHelper.java2
-rw-r--r--src/com/android/documentsui/dirlist/ListDocumentHolder.java6
-rw-r--r--src/com/android/documentsui/dirlist/Model.java6
-rw-r--r--src/com/android/documentsui/dirlist/ModelBackedDocumentsAdapter.java4
-rw-r--r--src/com/android/documentsui/dirlist/RenameDocumentFragment.java2
-rw-r--r--src/com/android/documentsui/dirlist/SelectionMetadata.java4
-rw-r--r--src/com/android/documentsui/manager/ManageActivity.java10
-rw-r--r--src/com/android/documentsui/manager/QuickViewIntentBuilder.java4
-rw-r--r--src/com/android/documentsui/picker/LastAccessedProvider.java (renamed from src/com/android/documentsui/LastAccessedProvider.java)8
-rw-r--r--src/com/android/documentsui/picker/LoadLastAccessedStackTask.java9
-rw-r--r--src/com/android/documentsui/picker/PickActivity.java12
-rw-r--r--src/com/android/documentsui/picker/PickFragment.java (renamed from src/com/android/documentsui/PickFragment.java)11
-rw-r--r--src/com/android/documentsui/picker/SaveFragment.java2
-rw-r--r--src/com/android/documentsui/services/CopyJob.java10
-rw-r--r--src/com/android/documentsui/services/DeleteJob.java4
-rw-r--r--src/com/android/documentsui/services/FileOperation.java2
-rw-r--r--src/com/android/documentsui/services/Job.java4
-rw-r--r--src/com/android/documentsui/services/MoveJob.java4
-rw-r--r--src/com/android/documentsui/sidebar/EjectRootTask.java (renamed from src/com/android/documentsui/EjectRootTask.java)6
-rw-r--r--src/com/android/documentsui/sidebar/RootItemView.java (renamed from src/com/android/documentsui/RootItemView.java)4
-rw-r--r--src/com/android/documentsui/sidebar/RootsFragment.java (renamed from src/com/android/documentsui/RootsFragment.java)25
-rw-r--r--src/com/android/documentsui/sidebar/RootsList.java (renamed from src/com/android/documentsui/RootsList.java)2
-rw-r--r--tests/src/com/android/documentsui/DocumentsMenuManagerTest.java2
-rw-r--r--tests/src/com/android/documentsui/DocumentsProviderHelper.java6
-rw-r--r--tests/src/com/android/documentsui/FilesMenuManagerTest.java2
-rw-r--r--tests/src/com/android/documentsui/RootsCacheTest.java2
-rw-r--r--tests/src/com/android/documentsui/StateTest.java2
-rw-r--r--tests/src/com/android/documentsui/base/DocumentInfoTest.java (renamed from tests/src/com/android/documentsui/model/DocumentInfoTest.java)4
-rw-r--r--tests/src/com/android/documentsui/bots/Bots.java4
-rw-r--r--tests/src/com/android/documentsui/bots/BreadBot.java2
-rw-r--r--tests/src/com/android/documentsui/bots/SidebarBot.java (renamed from tests/src/com/android/documentsui/bots/RootsListBot.java)4
-rw-r--r--tests/src/com/android/documentsui/dirlist/ModelTest.java2
-rw-r--r--tests/src/com/android/documentsui/dirlist/TestContentProvider.java2
-rw-r--r--tests/src/com/android/documentsui/functional/ActivityTest.java (renamed from tests/src/com/android/documentsui/ActivityTest.java)17
-rw-r--r--tests/src/com/android/documentsui/functional/FileManagementUiTest.java (renamed from tests/src/com/android/documentsui/FileManagementUiTest.java)4
-rw-r--r--tests/src/com/android/documentsui/functional/FilesActivityDefaultsUiTest.java (renamed from tests/src/com/android/documentsui/FilesActivityDefaultsUiTest.java)5
-rw-r--r--tests/src/com/android/documentsui/functional/FilesActivityUiTest.java (renamed from tests/src/com/android/documentsui/FilesActivityUiTest.java)2
-rw-r--r--tests/src/com/android/documentsui/functional/IntegratedDownloadsUiTest.java (renamed from tests/src/com/android/documentsui/IntegratedDownloadsUiTest.java)2
-rw-r--r--tests/src/com/android/documentsui/functional/KeyboardNavigationUiTest.java (renamed from tests/src/com/android/documentsui/KeyboardNavigationUiTest.java)2
-rw-r--r--tests/src/com/android/documentsui/functional/RenameDocumentUiTest.java (renamed from tests/src/com/android/documentsui/RenameDocumentUiTest.java)4
-rw-r--r--tests/src/com/android/documentsui/functional/SearchViewUiTest.java (renamed from tests/src/com/android/documentsui/SearchViewUiTest.java)2
-rw-r--r--tests/src/com/android/documentsui/functional/SidebarUiTest.java (renamed from tests/src/com/android/documentsui/RootsUiTest.java)6
-rw-r--r--tests/src/com/android/documentsui/functional/SortDocumentUiTest.java (renamed from tests/src/com/android/documentsui/SortDocumentUiTest.java)2
-rw-r--r--tests/src/com/android/documentsui/services/AbstractCopyJobTest.java2
-rw-r--r--tests/src/com/android/documentsui/services/AbstractJobTest.java6
-rw-r--r--tests/src/com/android/documentsui/services/FileOperationServiceTest.java4
-rw-r--r--tests/src/com/android/documentsui/services/TestJob.java4
-rw-r--r--tests/src/com/android/documentsui/services/TestJobListener.java2
92 files changed, 210 insertions, 470 deletions
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index cdad8d4c8..98523c826 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -104,7 +104,7 @@
</activity>
<provider
- android:name=".LastAccessedProvider"
+ android:name=".picker.LastAccessedProvider"
android:authorities="com.android.documentsui.lastAccessed"
android:exported="false"/>
diff --git a/perf-tests/Android.mk b/perf-tests/Android.mk
index 39a08f741..7cbc5fe3d 100644
--- a/perf-tests/Android.mk
+++ b/perf-tests/Android.mk
@@ -6,9 +6,9 @@ LOCAL_MODULE_TAGS := tests
LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
LOCAL_SRC_FILES := $(call all-java-files-under, src) \
$(call all-java-files-under, ../tests/src/com/android/documentsui/bots) \
- ../tests/src/com/android/documentsui/ActivityTest.java \
../tests/src/com/android/documentsui/DocumentsProviderHelper.java \
- ../tests/src/com/android/documentsui/StubProvider.java
+ ../tests/src/com/android/documentsui/StubProvider.java \
+ ../tests/src/com/android/documentsui/functional/ActivityTest.java
LOCAL_JAVA_LIBRARIES := android-support-v4 android.test.runner
LOCAL_STATIC_JAVA_LIBRARIES := mockito-target ub-uiautomator ub-janktesthelper espresso-core
diff --git a/perf-tests/src/com/android/documentsui/FilesActivityPerfTest.java b/perf-tests/src/com/android/documentsui/FilesActivityPerfTest.java
index a4a4a8694..05c7c95be 100644
--- a/perf-tests/src/com/android/documentsui/FilesActivityPerfTest.java
+++ b/perf-tests/src/com/android/documentsui/FilesActivityPerfTest.java
@@ -28,8 +28,9 @@ import android.test.suitebuilder.annotation.LargeTest;
import android.util.Log;
import android.view.KeyEvent;
-import com.android.documentsui.model.RootInfo;
import com.android.documentsui.EventListener;
+import com.android.documentsui.base.RootInfo;
+import com.android.documentsui.functional.ActivityTest;
import com.android.documentsui.manager.ManageActivity;
import java.util.ArrayList;
diff --git a/perf-tests/src/com/android/documentsui/FilesJankPerfTest.java b/perf-tests/src/com/android/documentsui/FilesJankPerfTest.java
index 84d23f7d7..0d1d143d2 100644
--- a/perf-tests/src/com/android/documentsui/FilesJankPerfTest.java
+++ b/perf-tests/src/com/android/documentsui/FilesJankPerfTest.java
@@ -33,7 +33,7 @@ import android.support.test.jank.GfxMonitor;
import android.support.test.uiautomator.UiScrollable;
import android.util.Log;
-import com.android.documentsui.bots.RootsListBot;
+import com.android.documentsui.bots.SidebarBot;
import com.android.documentsui.manager.ManageActivity;
import com.android.documentsui.bots.DirectoryListBot;
@@ -43,14 +43,14 @@ public class FilesJankPerfTest extends JankTestBase {
private static final int MAX_FLINGS = 10;
private static final int BOT_TIMEOUT = 5000;
- private RootsListBot mRootsListBot;
+ private SidebarBot mRootsListBot;
private DirectoryListBot mDirListBot;
private Activity mActivity = null;
public void setUpInLoop() {
final UiDevice device = UiDevice.getInstance(getInstrumentation());
final Context context = getInstrumentation().getTargetContext();
- mRootsListBot = new RootsListBot(device, context, BOT_TIMEOUT);
+ mRootsListBot = new SidebarBot(device, context, BOT_TIMEOUT);
mDirListBot = new DirectoryListBot(device, context, BOT_TIMEOUT);
final Intent intent = new Intent(context, ManageActivity.class);
diff --git a/res/layout/fragment_roots.xml b/res/layout/fragment_roots.xml
index e10a28f5e..208b6b2bf 100644
--- a/res/layout/fragment_roots.xml
+++ b/res/layout/fragment_roots.xml
@@ -14,7 +14,7 @@
limitations under the License.
-->
-<com.android.documentsui.RootsList xmlns:android="http://schemas.android.com/apk/res/android"
+<com.android.documentsui.sidebar.RootsList xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/roots_list"
android:layout_width="match_parent"
android:layout_height="match_parent"
diff --git a/res/layout/item_root.xml b/res/layout/item_root.xml
index 114fd09a8..aff7bf3a1 100644
--- a/res/layout/item_root.xml
+++ b/res/layout/item_root.xml
@@ -14,7 +14,7 @@
limitations under the License.
-->
-<com.android.documentsui.RootItemView
+<com.android.documentsui.sidebar.RootItemView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
@@ -86,4 +86,4 @@
</FrameLayout>
-</com.android.documentsui.RootItemView>
+</com.android.documentsui.sidebar.RootItemView>
diff --git a/src/com/android/documentsui/BaseActivity.java b/src/com/android/documentsui/BaseActivity.java
index 2970eb183..b61252b8a 100644
--- a/src/com/android/documentsui/BaseActivity.java
+++ b/src/com/android/documentsui/BaseActivity.java
@@ -54,15 +54,17 @@ 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.PairedTask;
+import com.android.documentsui.base.RootInfo;
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.model.DocumentInfo;
-import com.android.documentsui.model.DocumentStack;
-import com.android.documentsui.model.RootInfo;
import com.android.documentsui.services.FileOperationService;
import com.android.documentsui.services.FileOperations;
+import com.android.documentsui.sidebar.RootsFragment;
import com.android.documentsui.sorting.SortController;
import com.android.documentsui.sorting.SortModel;
@@ -259,7 +261,7 @@ public abstract class BaseActivity extends Activity
mNavigator.revealRootsDrawer(open);
}
- void onRootPicked(RootInfo root) {
+ public void onRootPicked(RootInfo root) {
// Clicking on the current root removes search
mSearchManager.cancelSearch();
diff --git a/src/com/android/documentsui/CreateDirectoryFragment.java b/src/com/android/documentsui/CreateDirectoryFragment.java
index 5b5a96e5c..215f3bb24 100644
--- a/src/com/android/documentsui/CreateDirectoryFragment.java
+++ b/src/com/android/documentsui/CreateDirectoryFragment.java
@@ -43,7 +43,7 @@ import android.widget.EditText;
import android.widget.TextView;
import android.widget.TextView.OnEditorActionListener;
-import com.android.documentsui.model.DocumentInfo;
+import com.android.documentsui.base.DocumentInfo;
/**
* Dialog to create a new directory.
diff --git a/src/com/android/documentsui/DirectoryLoader.java b/src/com/android/documentsui/DirectoryLoader.java
index b5079fd50..8a14e3179 100644
--- a/src/com/android/documentsui/DirectoryLoader.java
+++ b/src/com/android/documentsui/DirectoryLoader.java
@@ -29,8 +29,8 @@ import android.provider.DocumentsContract;
import android.provider.DocumentsContract.Document;
import android.util.Log;
-import com.android.documentsui.model.DocumentInfo;
-import com.android.documentsui.model.RootInfo;
+import com.android.documentsui.base.DocumentInfo;
+import com.android.documentsui.base.RootInfo;
import com.android.documentsui.sorting.SortModel;
import java.io.FileNotFoundException;
diff --git a/src/com/android/documentsui/DirectoryResult.java b/src/com/android/documentsui/DirectoryResult.java
index f7ccc485b..32910ce67 100644
--- a/src/com/android/documentsui/DirectoryResult.java
+++ b/src/com/android/documentsui/DirectoryResult.java
@@ -19,7 +19,7 @@ package com.android.documentsui;
import android.content.ContentProviderClient;
import android.database.Cursor;
-import com.android.documentsui.model.DocumentInfo;
+import com.android.documentsui.base.DocumentInfo;
import com.android.documentsui.sorting.SortModel;
import libcore.io.IoUtils;
diff --git a/src/com/android/documentsui/DropdownBreadcrumb.java b/src/com/android/documentsui/DropdownBreadcrumb.java
index 71d733496..f34933072 100644
--- a/src/com/android/documentsui/DropdownBreadcrumb.java
+++ b/src/com/android/documentsui/DropdownBreadcrumb.java
@@ -28,8 +28,8 @@ import android.widget.TextView;
import com.android.documentsui.NavigationViewManager.Breadcrumb;
import com.android.documentsui.NavigationViewManager.Environment;
-import com.android.documentsui.model.DocumentInfo;
-import com.android.documentsui.model.RootInfo;
+import com.android.documentsui.base.DocumentInfo;
+import com.android.documentsui.base.RootInfo;
import java.util.function.Consumer;
diff --git a/src/com/android/documentsui/FilesMenuManager.java b/src/com/android/documentsui/FilesMenuManager.java
index 94ea4f989..cff1f0a1b 100644
--- a/src/com/android/documentsui/FilesMenuManager.java
+++ b/src/com/android/documentsui/FilesMenuManager.java
@@ -19,7 +19,7 @@ package com.android.documentsui;
import android.view.Menu;
import android.view.MenuItem;
-import com.android.documentsui.model.RootInfo;
+import com.android.documentsui.base.RootInfo;
public final class FilesMenuManager extends MenuManager {
diff --git a/src/com/android/documentsui/FilteringCursorWrapper.java b/src/com/android/documentsui/FilteringCursorWrapper.java
index 7426af56e..654719110 100644
--- a/src/com/android/documentsui/FilteringCursorWrapper.java
+++ b/src/com/android/documentsui/FilteringCursorWrapper.java
@@ -18,8 +18,8 @@ package com.android.documentsui;
import static com.android.documentsui.Shared.DEBUG;
import static com.android.documentsui.Shared.TAG;
-import static com.android.documentsui.model.DocumentInfo.getCursorLong;
-import static com.android.documentsui.model.DocumentInfo.getCursorString;
+import static com.android.documentsui.base.DocumentInfo.getCursorLong;
+import static com.android.documentsui.base.DocumentInfo.getCursorString;
import android.database.AbstractCursor;
import android.database.Cursor;
diff --git a/src/com/android/documentsui/HorizontalBreadcrumb.java b/src/com/android/documentsui/HorizontalBreadcrumb.java
index 7a08071fd..b631db5ae 100644
--- a/src/com/android/documentsui/HorizontalBreadcrumb.java
+++ b/src/com/android/documentsui/HorizontalBreadcrumb.java
@@ -29,8 +29,8 @@ import android.widget.ImageView;
import com.android.documentsui.NavigationViewManager.Breadcrumb;
import com.android.documentsui.NavigationViewManager.Environment;
-import com.android.documentsui.model.DocumentInfo;
-import com.android.documentsui.model.RootInfo;
+import com.android.documentsui.base.DocumentInfo;
+import com.android.documentsui.base.RootInfo;
import java.util.function.Consumer;
diff --git a/src/com/android/documentsui/LoadRootTask.java b/src/com/android/documentsui/LoadRootTask.java
index c5d359b12..1b98ce0bd 100644
--- a/src/com/android/documentsui/LoadRootTask.java
+++ b/src/com/android/documentsui/LoadRootTask.java
@@ -20,7 +20,8 @@ import android.net.Uri;
import android.provider.DocumentsContract;
import android.util.Log;
-import com.android.documentsui.model.RootInfo;
+import com.android.documentsui.base.PairedTask;
+import com.android.documentsui.base.RootInfo;
final class LoadRootTask extends PairedTask<BaseActivity, Void, RootInfo> {
private static final String TAG = "RestoreRootTask";
diff --git a/src/com/android/documentsui/LocalPreferences.java b/src/com/android/documentsui/LocalPreferences.java
index 4b1ac478e..c29e81982 100644
--- a/src/com/android/documentsui/LocalPreferences.java
+++ b/src/com/android/documentsui/LocalPreferences.java
@@ -28,7 +28,7 @@ import android.preference.PreferenceManager;
import com.android.documentsui.State.ActionType;
import com.android.documentsui.State.ViewMode;
-import com.android.documentsui.model.RootInfo;
+import com.android.documentsui.base.RootInfo;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
diff --git a/src/com/android/documentsui/MenuManager.java b/src/com/android/documentsui/MenuManager.java
index 19d4482f8..974a5bf24 100644
--- a/src/com/android/documentsui/MenuManager.java
+++ b/src/com/android/documentsui/MenuManager.java
@@ -19,7 +19,7 @@ package com.android.documentsui;
import android.view.Menu;
import android.view.MenuItem;
-import com.android.documentsui.model.RootInfo;
+import com.android.documentsui.base.RootInfo;
public abstract class MenuManager {
diff --git a/src/com/android/documentsui/Metrics.java b/src/com/android/documentsui/Metrics.java
index 22d7f3423..d3f4721b7 100644
--- a/src/com/android/documentsui/Metrics.java
+++ b/src/com/android/documentsui/Metrics.java
@@ -31,9 +31,9 @@ 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.manager.LauncherActivity;
-import com.android.documentsui.model.DocumentInfo;
-import com.android.documentsui.model.RootInfo;
import com.android.documentsui.services.FileOperationService;
import com.android.documentsui.services.FileOperationService.OpType;
import com.android.internal.logging.MetricsLogger;
diff --git a/src/com/android/documentsui/MimePredicate.java b/src/com/android/documentsui/MimePredicate.java
index 859763b83..567645e37 100644
--- a/src/com/android/documentsui/MimePredicate.java
+++ b/src/com/android/documentsui/MimePredicate.java
@@ -19,7 +19,7 @@ package com.android.documentsui;
import android.annotation.Nullable;
import android.provider.DocumentsContract.Document;
-import com.android.documentsui.model.DocumentInfo;
+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/NavigationViewManager.java b/src/com/android/documentsui/NavigationViewManager.java
index 1479ed463..43da9671c 100644
--- a/src/com/android/documentsui/NavigationViewManager.java
+++ b/src/com/android/documentsui/NavigationViewManager.java
@@ -23,8 +23,8 @@ import android.graphics.drawable.Drawable;
import android.util.Log;
import android.view.View;
+import com.android.documentsui.base.RootInfo;
import com.android.documentsui.dirlist.AnimationView;
-import com.android.documentsui.model.RootInfo;
import java.util.function.Consumer;
diff --git a/src/com/android/documentsui/OperationDialogFragment.java b/src/com/android/documentsui/OperationDialogFragment.java
index 140baad03..19730b348 100644
--- a/src/com/android/documentsui/OperationDialogFragment.java
+++ b/src/com/android/documentsui/OperationDialogFragment.java
@@ -26,8 +26,8 @@ import android.content.DialogInterface;
import android.os.Bundle;
import android.text.Html;
-import com.android.documentsui.model.DocumentInfo;
-import com.android.documentsui.model.DocumentStack;
+import com.android.documentsui.base.DocumentInfo;
+import com.android.documentsui.base.DocumentStack;
import com.android.documentsui.services.FileOperationService;
import com.android.documentsui.services.FileOperationService.OpType;
diff --git a/src/com/android/documentsui/PackageReceiver.java b/src/com/android/documentsui/PackageReceiver.java
index 878917146..ec6014af2 100644
--- a/src/com/android/documentsui/PackageReceiver.java
+++ b/src/com/android/documentsui/PackageReceiver.java
@@ -22,6 +22,8 @@ import android.content.Context;
import android.content.Intent;
import android.net.Uri;
+import com.android.documentsui.picker.LastAccessedProvider;
+
/**
* Clean up {@link LastAccessedProvider} and {@link LocalPreferences} when packages are removed.
*/
diff --git a/src/com/android/documentsui/RecentsLoader.java b/src/com/android/documentsui/RecentsLoader.java
index 0a559ca38..1b62e9f23 100644
--- a/src/com/android/documentsui/RecentsLoader.java
+++ b/src/com/android/documentsui/RecentsLoader.java
@@ -33,7 +33,7 @@ import android.provider.DocumentsContract.Document;
import android.text.format.DateUtils;
import android.util.Log;
-import com.android.documentsui.model.RootInfo;
+import com.android.documentsui.base.RootInfo;
import com.android.internal.annotations.GuardedBy;
import libcore.io.IoUtils;
diff --git a/src/com/android/documentsui/RootsCache.java b/src/com/android/documentsui/RootsCache.java
index 93ce389a4..1b54777c7 100644
--- a/src/com/android/documentsui/RootsCache.java
+++ b/src/com/android/documentsui/RootsCache.java
@@ -40,7 +40,7 @@ import android.provider.DocumentsProvider;
import android.support.annotation.VisibleForTesting;
import android.util.Log;
-import com.android.documentsui.model.RootInfo;
+import com.android.documentsui.base.RootInfo;
import com.android.internal.annotations.GuardedBy;
import libcore.io.IoUtils;
diff --git a/src/com/android/documentsui/RootsLoader.java b/src/com/android/documentsui/RootsLoader.java
index 5c4ccdddc..cddcb0de1 100644
--- a/src/com/android/documentsui/RootsLoader.java
+++ b/src/com/android/documentsui/RootsLoader.java
@@ -19,7 +19,7 @@ package com.android.documentsui;
import android.content.AsyncTaskLoader;
import android.content.Context;
-import com.android.documentsui.model.RootInfo;
+import com.android.documentsui.base.RootInfo;
import java.util.Collection;
diff --git a/src/com/android/documentsui/SearchViewManager.java b/src/com/android/documentsui/SearchViewManager.java
index 63c07dda6..1bbc439e9 100644
--- a/src/com/android/documentsui/SearchViewManager.java
+++ b/src/com/android/documentsui/SearchViewManager.java
@@ -32,7 +32,7 @@ import android.view.View.OnFocusChangeListener;
import android.widget.SearchView;
import android.widget.SearchView.OnQueryTextListener;
-import com.android.documentsui.model.RootInfo;
+import com.android.documentsui.base.RootInfo;
import com.android.documentsui.sorting.SortModel;
/**
diff --git a/src/com/android/documentsui/SectionedListAdapter.java b/src/com/android/documentsui/SectionedListAdapter.java
deleted file mode 100644
index ae959f91d..000000000
--- a/src/com/android/documentsui/SectionedListAdapter.java
+++ /dev/null
@@ -1,164 +0,0 @@
-/*
- * Copyright (C) 2013 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.view.View;
-import android.view.ViewGroup;
-import android.widget.AdapterView;
-import android.widget.BaseAdapter;
-import android.widget.ListAdapter;
-
-import java.util.ArrayList;
-
-/**
- * Adapter that combines multiple adapters as sections, asking each section to
- * provide a header, and correctly handling item types across child adapters.
- */
-public class SectionedListAdapter extends BaseAdapter {
- private ArrayList<SectionAdapter> mSections = new ArrayList<>();
-
- public interface SectionAdapter extends ListAdapter {
- public View getHeaderView(View convertView, ViewGroup parent);
- }
-
- public void clearSections() {
- mSections.clear();
- notifyDataSetChanged();
- }
-
- /**
- * After mutating sections, you <em>must</em>
- * {@link AdapterView#setAdapter(android.widget.Adapter)} to correctly
- * recount view types.
- */
- public void addSection(SectionAdapter adapter) {
- mSections.add(adapter);
- notifyDataSetChanged();
- }
-
- @Override
- public int getCount() {
- int count = 0;
- final int size = mSections.size();
- for (int i = 0; i < size; i++) {
- count += mSections.get(i).getCount() + 1;
- }
- return count;
- }
-
- @Override
- public Object getItem(int position) {
- final int size = mSections.size();
- for (int i = 0; i < size; i++) {
- final SectionAdapter section = mSections.get(i);
- final int sectionSize = section.getCount() + 1;
-
- // Check if position inside this section
- if (position == 0) {
- return section;
- } else if (position < sectionSize) {
- return section.getItem(position - 1);
- }
-
- // Otherwise jump into next section
- position -= sectionSize;
- }
- throw new IllegalStateException("Unknown position " + position);
- }
-
- @Override
- public long getItemId(int position) {
- return position;
- }
-
- @Override
- public View getView(int position, View convertView, ViewGroup parent) {
- final int size = mSections.size();
- for (int i = 0; i < size; i++) {
- final SectionAdapter section = mSections.get(i);
- final int sectionSize = section.getCount() + 1;
-
- // Check if position inside this section
- if (position == 0) {
- return section.getHeaderView(convertView, parent);
- } else if (position < sectionSize) {
- return section.getView(position - 1, convertView, parent);
- }
-
- // Otherwise jump into next section
- position -= sectionSize;
- }
- throw new IllegalStateException("Unknown position " + position);
- }
-
- @Override
- public boolean areAllItemsEnabled() {
- return false;
- }
-
- @Override
- public boolean isEnabled(int position) {
- final int size = mSections.size();
- for (int i = 0; i < size; i++) {
- final SectionAdapter section = mSections.get(i);
- final int sectionSize = section.getCount() + 1;
-
- // Check if position inside this section
- if (position == 0) {
- return false;
- } else if (position < sectionSize) {
- return section.isEnabled(position - 1);
- }
-
- // Otherwise jump into next section
- position -= sectionSize;
- }
- throw new IllegalStateException("Unknown position " + position);
- }
-
- @Override
- public int getItemViewType(int position) {
- int type = 1;
- final int size = mSections.size();
- for (int i = 0; i < size; i++) {
- final SectionAdapter section = mSections.get(i);
- final int sectionSize = section.getCount() + 1;
-
- // Check if position inside this section
- if (position == 0) {
- return 0;
- } else if (position < sectionSize) {
- return type + section.getItemViewType(position - 1);
- }
-
- // Otherwise jump into next section
- position -= sectionSize;
- type += section.getViewTypeCount();
- }
- throw new IllegalStateException("Unknown position " + position);
- }
-
- @Override
- public int getViewTypeCount() {
- int count = 1;
- final int size = mSections.size();
- for (int i = 0; i < size; i++) {
- count += mSections.get(i).getViewTypeCount();
- }
- return count;
- }
-}
diff --git a/src/com/android/documentsui/State.java b/src/com/android/documentsui/State.java
index bb92eeafa..f2d59247f 100644
--- a/src/com/android/documentsui/State.java
+++ b/src/com/android/documentsui/State.java
@@ -25,10 +25,10 @@ import android.os.Parcelable;
import android.util.Log;
import android.util.SparseArray;
-import com.android.documentsui.model.DocumentInfo;
-import com.android.documentsui.model.DocumentStack;
-import com.android.documentsui.model.DurableUtils;
-import com.android.documentsui.model.RootInfo;
+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/UriDerivativeLoader.java b/src/com/android/documentsui/UriDerivativeLoader.java
deleted file mode 100644
index 7bb662c72..000000000
--- a/src/com/android/documentsui/UriDerivativeLoader.java
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- * Copyright (C) 2013 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.content.AsyncTaskLoader;
-import android.content.Context;
-import android.database.ContentObserver;
-import android.os.CancellationSignal;
-import android.os.OperationCanceledException;
-
-/**
- * Loader that derives its data from a Uri. Watches for {@link ContentObserver}
- * changes while started, manages {@link CancellationSignal}, and caches
- * returned results.
- */
-public abstract class UriDerivativeLoader<Param, Res> extends AsyncTaskLoader<Res> {
- final ForceLoadContentObserver mObserver;
-
- private final Param mParam;
-
- private Res mResult;
- private CancellationSignal mCancellationSignal;
-
- @Override
- public final Res loadInBackground() {
- synchronized (this) {
- if (isLoadInBackgroundCanceled()) {
- throw new OperationCanceledException();
- }
- mCancellationSignal = new CancellationSignal();
- }
- try {
- return loadInBackground(mParam, mCancellationSignal);
- } finally {
- synchronized (this) {
- mCancellationSignal = null;
- }
- }
- }
-
- public abstract Res loadInBackground(Param param, CancellationSignal signal);
-
- @Override
- public void cancelLoadInBackground() {
- super.cancelLoadInBackground();
-
- synchronized (this) {
- if (mCancellationSignal != null) {
- mCancellationSignal.cancel();
- }
- }
- }
-
- @Override
- public void deliverResult(Res result) {
- if (isReset()) {
- closeQuietly(result);
- return;
- }
- Res oldResult = mResult;
- mResult = result;
-
- if (isStarted()) {
- super.deliverResult(result);
- }
-
- if (oldResult != null && oldResult != result) {
- closeQuietly(oldResult);
- }
- }
-
- public UriDerivativeLoader(Context context, Param param) {
- super(context);
- mObserver = new ForceLoadContentObserver();
- mParam = param;
- }
-
- @Override
- protected void onStartLoading() {
- if (mResult != null) {
- deliverResult(mResult);
- }
- if (takeContentChanged() || mResult == null) {
- forceLoad();
- }
- }
-
- @Override
- protected void onStopLoading() {
- cancelLoad();
- }
-
- @Override
- public void onCanceled(Res result) {
- closeQuietly(result);
- }
-
- @Override
- protected void onReset() {
- super.onReset();
-
- // Ensure the loader is stopped
- onStopLoading();
-
- closeQuietly(mResult);
- mResult = null;
-
- getContext().getContentResolver().unregisterContentObserver(mObserver);
- }
-
- private void closeQuietly(Res result) {
- if (result instanceof AutoCloseable) {
- try {
- ((AutoCloseable) result).close();
- } catch (RuntimeException rethrown) {
- throw rethrown;
- } catch (Exception ignored) {
- }
- }
- }
-}
diff --git a/src/com/android/documentsui/CheckedTask.java b/src/com/android/documentsui/base/CheckedTask.java
index 242a2799e..940763ce0 100644
--- a/src/com/android/documentsui/CheckedTask.java
+++ b/src/com/android/documentsui/base/CheckedTask.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.documentsui;
+package com.android.documentsui.base;
import android.os.AsyncTask;
@@ -31,7 +31,7 @@ import android.os.AsyncTask;
* @template Input input type
* @template Output output type
*/
-abstract class CheckedTask<Input, Output>
+public abstract class CheckedTask<Input, Output>
extends AsyncTask<Input, Void, Output> {
private Check mCheck;
@@ -74,7 +74,7 @@ abstract class CheckedTask<Input, Output>
}
@FunctionalInterface
- interface Check {
+ public interface Check {
boolean stop();
}
}
diff --git a/src/com/android/documentsui/model/DocumentInfo.java b/src/com/android/documentsui/base/DocumentInfo.java
index 6a0214768..b9432f062 100644
--- a/src/com/android/documentsui/model/DocumentInfo.java
+++ b/src/com/android/documentsui/base/DocumentInfo.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.documentsui.model;
+package com.android.documentsui.base;
import android.content.ContentProviderClient;
import android.content.ContentResolver;
diff --git a/src/com/android/documentsui/model/DocumentStack.java b/src/com/android/documentsui/base/DocumentStack.java
index ae7e8207b..e9784094f 100644
--- a/src/com/android/documentsui/model/DocumentStack.java
+++ b/src/com/android/documentsui/base/DocumentStack.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.documentsui.model;
+package com.android.documentsui.base;
import android.content.ContentResolver;
import android.os.Parcel;
diff --git a/src/com/android/documentsui/model/Durable.java b/src/com/android/documentsui/base/Durable.java
index 01633edca..812f21735 100644
--- a/src/com/android/documentsui/model/Durable.java
+++ b/src/com/android/documentsui/base/Durable.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.documentsui.model;
+package com.android.documentsui.base;
import java.io.DataInputStream;
import java.io.DataOutputStream;
diff --git a/src/com/android/documentsui/model/DurableUtils.java b/src/com/android/documentsui/base/DurableUtils.java
index e21dd4930..2b1d16ec0 100644
--- a/src/com/android/documentsui/model/DurableUtils.java
+++ b/src/com/android/documentsui/base/DurableUtils.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.documentsui.model;
+package com.android.documentsui.base;
import static com.android.documentsui.Shared.TAG;
diff --git a/src/com/android/documentsui/PairedTask.java b/src/com/android/documentsui/base/PairedTask.java
index fe0e0f803..5c6424684 100644
--- a/src/com/android/documentsui/PairedTask.java
+++ b/src/com/android/documentsui/base/PairedTask.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.documentsui;
+package com.android.documentsui.base;
import android.app.Activity;
diff --git a/src/com/android/documentsui/model/RootInfo.java b/src/com/android/documentsui/base/RootInfo.java
index ddfec9433..2413f4ee5 100644
--- a/src/com/android/documentsui/model/RootInfo.java
+++ b/src/com/android/documentsui/base/RootInfo.java
@@ -14,13 +14,13 @@
* limitations under the License.
*/
-package com.android.documentsui.model;
+package com.android.documentsui.base;
import static com.android.documentsui.Shared.DEBUG;
import static com.android.documentsui.Shared.compareToIgnoreCaseNullable;
-import static com.android.documentsui.model.DocumentInfo.getCursorInt;
-import static com.android.documentsui.model.DocumentInfo.getCursorLong;
-import static com.android.documentsui.model.DocumentInfo.getCursorString;
+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 android.annotation.IntDef;
import android.annotation.Nullable;
diff --git a/src/com/android/documentsui/clipping/DocumentClipper.java b/src/com/android/documentsui/clipping/DocumentClipper.java
index bdc1836f2..86ae2c6d6 100644
--- a/src/com/android/documentsui/clipping/DocumentClipper.java
+++ b/src/com/android/documentsui/clipping/DocumentClipper.java
@@ -28,10 +28,10 @@ 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.dirlist.MultiSelectManager.Selection;
-import com.android.documentsui.model.DocumentInfo;
-import com.android.documentsui.model.DocumentStack;
-import com.android.documentsui.model.RootInfo;
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/DirectoryFragment.java b/src/com/android/documentsui/dirlist/DirectoryFragment.java
index 29b605dea..b6a00095f 100644
--- a/src/com/android/documentsui/dirlist/DirectoryFragment.java
+++ b/src/com/android/documentsui/dirlist/DirectoryFragment.java
@@ -19,8 +19,8 @@ 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.model.DocumentInfo.getCursorInt;
-import static com.android.documentsui.model.DocumentInfo.getCursorString;
+import static com.android.documentsui.base.DocumentInfo.getCursorInt;
+import static com.android.documentsui.base.DocumentInfo.getCursorString;
import android.annotation.IntDef;
import android.annotation.StringRes;
@@ -82,12 +82,12 @@ 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.base.DocumentInfo;
+import com.android.documentsui.base.RootInfo;
import com.android.documentsui.ThumbnailCache;
import com.android.documentsui.clipping.DocumentClipper;
import com.android.documentsui.clipping.UrisSupplier;
import com.android.documentsui.dirlist.MultiSelectManager.Selection;
-import com.android.documentsui.model.DocumentInfo;
-import com.android.documentsui.model.RootInfo;
import com.android.documentsui.picker.PickActivity;
import com.android.documentsui.services.FileOperation;
import com.android.documentsui.services.FileOperationService;
diff --git a/src/com/android/documentsui/dirlist/DocumentsAdapter.java b/src/com/android/documentsui/dirlist/DocumentsAdapter.java
index cb5afd7d4..3066ca1fe 100644
--- a/src/com/android/documentsui/dirlist/DocumentsAdapter.java
+++ b/src/com/android/documentsui/dirlist/DocumentsAdapter.java
@@ -16,7 +16,7 @@
package com.android.documentsui.dirlist;
-import static com.android.documentsui.model.DocumentInfo.getCursorString;
+import static com.android.documentsui.base.DocumentInfo.getCursorString;
import android.content.Context;
import android.database.Cursor;
diff --git a/src/com/android/documentsui/dirlist/DragShadowBuilder.java b/src/com/android/documentsui/dirlist/DragShadowBuilder.java
index 03c3ad06b..5533d2034 100644
--- a/src/com/android/documentsui/dirlist/DragShadowBuilder.java
+++ b/src/com/android/documentsui/dirlist/DragShadowBuilder.java
@@ -28,8 +28,8 @@ import android.widget.TextView;
import com.android.documentsui.R;
import com.android.documentsui.Shared;
+import com.android.documentsui.base.DocumentInfo;
import com.android.documentsui.dirlist.MultiSelectManager.Selection;
-import com.android.documentsui.model.DocumentInfo;
import java.util.List;
import java.util.function.Function;
diff --git a/src/com/android/documentsui/dirlist/DragStartListener.java b/src/com/android/documentsui/dirlist/DragStartListener.java
index 86906007d..5d764df93 100644
--- a/src/com/android/documentsui/dirlist/DragStartListener.java
+++ b/src/com/android/documentsui/dirlist/DragStartListener.java
@@ -27,10 +27,10 @@ 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.clipping.DocumentClipper;
import com.android.documentsui.dirlist.MultiSelectManager.Selection;
-import com.android.documentsui.model.DocumentInfo;
import com.android.documentsui.services.FileOperationService;
import com.android.documentsui.services.FileOperationService.OpType;
diff --git a/src/com/android/documentsui/dirlist/FocusManager.java b/src/com/android/documentsui/dirlist/FocusManager.java
index e5b291de5..af4b5fd4c 100644
--- a/src/com/android/documentsui/dirlist/FocusManager.java
+++ b/src/com/android/documentsui/dirlist/FocusManager.java
@@ -16,7 +16,7 @@
package com.android.documentsui.dirlist;
-import static com.android.documentsui.model.DocumentInfo.getCursorString;
+import static com.android.documentsui.base.DocumentInfo.getCursorString;
import android.annotation.ColorRes;
import android.annotation.Nullable;
diff --git a/src/com/android/documentsui/dirlist/GridDirectoryHolder.java b/src/com/android/documentsui/dirlist/GridDirectoryHolder.java
index 01a8dcb97..d3026b33a 100644
--- a/src/com/android/documentsui/dirlist/GridDirectoryHolder.java
+++ b/src/com/android/documentsui/dirlist/GridDirectoryHolder.java
@@ -16,7 +16,7 @@
package com.android.documentsui.dirlist;
-import static com.android.documentsui.model.DocumentInfo.getCursorString;
+import static com.android.documentsui.base.DocumentInfo.getCursorString;
import android.content.Context;
import android.database.Cursor;
diff --git a/src/com/android/documentsui/dirlist/GridDocumentHolder.java b/src/com/android/documentsui/dirlist/GridDocumentHolder.java
index 74e7517dd..31ca90a56 100644
--- a/src/com/android/documentsui/dirlist/GridDocumentHolder.java
+++ b/src/com/android/documentsui/dirlist/GridDocumentHolder.java
@@ -16,9 +16,9 @@
package com.android.documentsui.dirlist;
-import static com.android.documentsui.model.DocumentInfo.getCursorInt;
-import static com.android.documentsui.model.DocumentInfo.getCursorLong;
-import static com.android.documentsui.model.DocumentInfo.getCursorString;
+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 android.annotation.ColorInt;
import android.content.Context;
diff --git a/src/com/android/documentsui/dirlist/IconHelper.java b/src/com/android/documentsui/dirlist/IconHelper.java
index 237b9907c..65b229d82 100644
--- a/src/com/android/documentsui/dirlist/IconHelper.java
+++ b/src/com/android/documentsui/dirlist/IconHelper.java
@@ -47,7 +47,7 @@ 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.model.DocumentInfo;
+import com.android.documentsui.base.DocumentInfo;
import java.util.function.BiConsumer;
diff --git a/src/com/android/documentsui/dirlist/ListDocumentHolder.java b/src/com/android/documentsui/dirlist/ListDocumentHolder.java
index 67d131e0c..30100f9ac 100644
--- a/src/com/android/documentsui/dirlist/ListDocumentHolder.java
+++ b/src/com/android/documentsui/dirlist/ListDocumentHolder.java
@@ -16,9 +16,9 @@
package com.android.documentsui.dirlist;
-import static com.android.documentsui.model.DocumentInfo.getCursorInt;
-import static com.android.documentsui.model.DocumentInfo.getCursorLong;
-import static com.android.documentsui.model.DocumentInfo.getCursorString;
+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 android.content.Context;
import android.database.Cursor;
diff --git a/src/com/android/documentsui/dirlist/Model.java b/src/com/android/documentsui/dirlist/Model.java
index ed1237ad0..580e6bcb9 100644
--- a/src/com/android/documentsui/dirlist/Model.java
+++ b/src/com/android/documentsui/dirlist/Model.java
@@ -17,8 +17,8 @@
package com.android.documentsui.dirlist;
import static com.android.documentsui.Shared.DEBUG;
-import static com.android.documentsui.model.DocumentInfo.getCursorLong;
-import static com.android.documentsui.model.DocumentInfo.getCursorString;
+import static com.android.documentsui.base.DocumentInfo.getCursorLong;
+import static com.android.documentsui.base.DocumentInfo.getCursorString;
import android.database.Cursor;
import android.database.MergeCursor;
@@ -33,8 +33,8 @@ 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.dirlist.MultiSelectManager.Selection;
-import com.android.documentsui.model.DocumentInfo;
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 2c1a221a4..05c55188f 100644
--- a/src/com/android/documentsui/dirlist/ModelBackedDocumentsAdapter.java
+++ b/src/com/android/documentsui/dirlist/ModelBackedDocumentsAdapter.java
@@ -19,8 +19,8 @@ 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.model.DocumentInfo.getCursorInt;
-import static com.android.documentsui.model.DocumentInfo.getCursorString;
+import static com.android.documentsui.base.DocumentInfo.getCursorInt;
+import static com.android.documentsui.base.DocumentInfo.getCursorString;
import android.database.Cursor;
import android.provider.DocumentsContract.Document;
diff --git a/src/com/android/documentsui/dirlist/RenameDocumentFragment.java b/src/com/android/documentsui/dirlist/RenameDocumentFragment.java
index 73aa366ed..f205b7eb6 100644
--- a/src/com/android/documentsui/dirlist/RenameDocumentFragment.java
+++ b/src/com/android/documentsui/dirlist/RenameDocumentFragment.java
@@ -48,7 +48,7 @@ import com.android.documentsui.Metrics;
import com.android.documentsui.R;
import com.android.documentsui.Shared;
import com.android.documentsui.Snackbars;
-import com.android.documentsui.model.DocumentInfo;
+import com.android.documentsui.base.DocumentInfo;
/**
* Dialog to rename file or directory.
diff --git a/src/com/android/documentsui/dirlist/SelectionMetadata.java b/src/com/android/documentsui/dirlist/SelectionMetadata.java
index 6f917495f..7dbcacbaf 100644
--- a/src/com/android/documentsui/dirlist/SelectionMetadata.java
+++ b/src/com/android/documentsui/dirlist/SelectionMetadata.java
@@ -16,8 +16,8 @@
package com.android.documentsui.dirlist;
-import static com.android.documentsui.model.DocumentInfo.getCursorInt;
-import static com.android.documentsui.model.DocumentInfo.getCursorString;
+import static com.android.documentsui.base.DocumentInfo.getCursorInt;
+import static com.android.documentsui.base.DocumentInfo.getCursorString;
import android.database.Cursor;
import android.provider.DocumentsContract.Document;
diff --git a/src/com/android/documentsui/manager/ManageActivity.java b/src/com/android/documentsui/manager/ManageActivity.java
index 2cde713e2..202e6195e 100644
--- a/src/com/android/documentsui/manager/ManageActivity.java
+++ b/src/com/android/documentsui/manager/ManageActivity.java
@@ -42,11 +42,13 @@ import com.android.documentsui.MenuManager.DirectoryDetails;
import com.android.documentsui.Metrics;
import com.android.documentsui.OperationDialogFragment;
import com.android.documentsui.OperationDialogFragment.DialogType;
-import com.android.documentsui.PairedTask;
+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.ProviderExecutor;
import com.android.documentsui.R;
import com.android.documentsui.RootsCache;
-import com.android.documentsui.RootsFragment;
import com.android.documentsui.Shared;
import com.android.documentsui.Snackbars;
import com.android.documentsui.State;
@@ -56,10 +58,8 @@ import com.android.documentsui.dirlist.DirectoryFragment;
import com.android.documentsui.dirlist.FragmentTuner;
import com.android.documentsui.dirlist.FragmentTuner.FilesTuner;
import com.android.documentsui.dirlist.Model;
-import com.android.documentsui.model.DocumentInfo;
-import com.android.documentsui.model.DocumentStack;
-import com.android.documentsui.model.RootInfo;
import com.android.documentsui.services.FileOperationService;
+import com.android.documentsui.sidebar.RootsFragment;
import java.io.FileNotFoundException;
import java.util.ArrayList;
diff --git a/src/com/android/documentsui/manager/QuickViewIntentBuilder.java b/src/com/android/documentsui/manager/QuickViewIntentBuilder.java
index a74e709db..e24ad9bd9 100644
--- a/src/com/android/documentsui/manager/QuickViewIntentBuilder.java
+++ b/src/com/android/documentsui/manager/QuickViewIntentBuilder.java
@@ -18,7 +18,7 @@ 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.model.DocumentInfo.getCursorString;
+import static com.android.documentsui.base.DocumentInfo.getCursorString;
import android.content.ClipData;
import android.content.ClipDescription;
@@ -37,8 +37,8 @@ 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.model.DocumentInfo;
import java.util.ArrayList;
import java.util.List;
diff --git a/src/com/android/documentsui/LastAccessedProvider.java b/src/com/android/documentsui/picker/LastAccessedProvider.java
index ba818cbab..bb1a1294f 100644
--- a/src/com/android/documentsui/LastAccessedProvider.java
+++ b/src/com/android/documentsui/picker/LastAccessedProvider.java
@@ -14,9 +14,9 @@
* limitations under the License.
*/
-package com.android.documentsui;
+package com.android.documentsui.picker;
-import static com.android.documentsui.model.DocumentInfo.getCursorString;
+import static com.android.documentsui.base.DocumentInfo.getCursorString;
import android.content.ContentProvider;
import android.content.ContentResolver;
@@ -33,8 +33,8 @@ import android.os.Bundle;
import android.provider.DocumentsContract;
import android.util.Log;
-import com.android.documentsui.model.DocumentStack;
-import com.android.documentsui.model.DurableUtils;
+import com.android.documentsui.base.DocumentStack;
+import com.android.documentsui.base.DurableUtils;
import com.android.internal.util.Predicate;
import com.google.android.collect.Sets;
diff --git a/src/com/android/documentsui/picker/LoadLastAccessedStackTask.java b/src/com/android/documentsui/picker/LoadLastAccessedStackTask.java
index 0d2ea31ce..6770895bc 100644
--- a/src/com/android/documentsui/picker/LoadLastAccessedStackTask.java
+++ b/src/com/android/documentsui/picker/LoadLastAccessedStackTask.java
@@ -23,14 +23,13 @@ import android.net.Uri;
import android.util.Log;
import com.android.documentsui.DocumentsApplication;
-import com.android.documentsui.LastAccessedProvider;
-import com.android.documentsui.LastAccessedProvider.Columns;
-import com.android.documentsui.PairedTask;
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.dirlist.AnimationView;
-import com.android.documentsui.model.DurableUtils;
-import com.android.documentsui.model.RootInfo;
+import com.android.documentsui.picker.LastAccessedProvider.Columns;
import libcore.io.IoUtils;
diff --git a/src/com/android/documentsui/picker/PickActivity.java b/src/com/android/documentsui/picker/PickActivity.java
index 810920d7e..64b627575 100644
--- a/src/com/android/documentsui/picker/PickActivity.java
+++ b/src/com/android/documentsui/picker/PickActivity.java
@@ -44,15 +44,13 @@ import android.view.Menu;
import com.android.documentsui.BaseActivity;
import com.android.documentsui.DocumentsApplication;
import com.android.documentsui.DocumentsMenuManager;
-import com.android.documentsui.LastAccessedProvider;
-import com.android.documentsui.LastAccessedProvider.Columns;
import com.android.documentsui.MenuManager;
import com.android.documentsui.MenuManager.DirectoryDetails;
+import com.android.documentsui.base.DocumentInfo;
+import com.android.documentsui.base.PairedTask;
+import com.android.documentsui.base.RootInfo;
import com.android.documentsui.MimePredicate;
-import com.android.documentsui.PairedTask;
-import com.android.documentsui.PickFragment;
import com.android.documentsui.R;
-import com.android.documentsui.RootsFragment;
import com.android.documentsui.Shared;
import com.android.documentsui.Snackbars;
import com.android.documentsui.State;
@@ -60,9 +58,9 @@ import com.android.documentsui.dirlist.DirectoryFragment;
import com.android.documentsui.dirlist.FragmentTuner;
import com.android.documentsui.dirlist.FragmentTuner.DocumentsTuner;
import com.android.documentsui.dirlist.Model;
-import com.android.documentsui.model.DocumentInfo;
-import com.android.documentsui.model.RootInfo;
+import com.android.documentsui.picker.LastAccessedProvider.Columns;
import com.android.documentsui.services.FileOperationService;
+import com.android.documentsui.sidebar.RootsFragment;
import java.util.Arrays;
import java.util.List;
diff --git a/src/com/android/documentsui/PickFragment.java b/src/com/android/documentsui/picker/PickFragment.java
index e7ce9449e..bd44f6ee8 100644
--- a/src/com/android/documentsui/PickFragment.java
+++ b/src/com/android/documentsui/picker/PickFragment.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.documentsui;
+package com.android.documentsui.picker;
import static com.android.documentsui.services.FileOperationService.OPERATION_DELETE;
import static com.android.documentsui.services.FileOperationService.OPERATION_MOVE;
@@ -30,8 +30,13 @@ import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
-import com.android.documentsui.model.DocumentInfo;
-import com.android.documentsui.picker.PickActivity;
+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.services.FileOperationService.OpType;
/**
diff --git a/src/com/android/documentsui/picker/SaveFragment.java b/src/com/android/documentsui/picker/SaveFragment.java
index a8f2f88ed..3ce88be0e 100644
--- a/src/com/android/documentsui/picker/SaveFragment.java
+++ b/src/com/android/documentsui/picker/SaveFragment.java
@@ -35,7 +35,7 @@ import android.widget.ProgressBar;
import com.android.documentsui.IconUtils;
import com.android.documentsui.R;
-import com.android.documentsui.model.DocumentInfo;
+import com.android.documentsui.base.DocumentInfo;
/**
* Display document title editor and save button.
diff --git a/src/com/android/documentsui/services/CopyJob.java b/src/com/android/documentsui/services/CopyJob.java
index 8eabbe41f..7253a71a0 100644
--- a/src/com/android/documentsui/services/CopyJob.java
+++ b/src/com/android/documentsui/services/CopyJob.java
@@ -24,8 +24,8 @@ 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.model.DocumentInfo.getCursorLong;
-import static com.android.documentsui.model.DocumentInfo.getCursorString;
+import static com.android.documentsui.base.DocumentInfo.getCursorLong;
+import static com.android.documentsui.base.DocumentInfo.getCursorString;
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;
@@ -55,10 +55,10 @@ 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.model.DocumentInfo;
-import com.android.documentsui.model.DocumentStack;
-import com.android.documentsui.model.RootInfo;
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 5a3681836..310955520 100644
--- a/src/com/android/documentsui/services/DeleteJob.java
+++ b/src/com/android/documentsui/services/DeleteJob.java
@@ -29,8 +29,8 @@ import android.util.Log;
import com.android.documentsui.clipping.UrisSupplier;
import com.android.documentsui.Metrics;
import com.android.documentsui.R;
-import com.android.documentsui.model.DocumentInfo;
-import com.android.documentsui.model.DocumentStack;
+import com.android.documentsui.base.DocumentInfo;
+import com.android.documentsui.base.DocumentStack;
import java.io.IOException;
import java.util.ArrayList;
diff --git a/src/com/android/documentsui/services/FileOperation.java b/src/com/android/documentsui/services/FileOperation.java
index 43c3bd7e6..5e4c21e20 100644
--- a/src/com/android/documentsui/services/FileOperation.java
+++ b/src/com/android/documentsui/services/FileOperation.java
@@ -27,8 +27,8 @@ import android.os.Parcel;
import android.os.Parcelable;
import android.support.annotation.VisibleForTesting;
+import com.android.documentsui.base.DocumentStack;
import com.android.documentsui.clipping.UrisSupplier;
-import com.android.documentsui.model.DocumentStack;
import com.android.documentsui.services.FileOperationService.OpType;
/**
diff --git a/src/com/android/documentsui/services/Job.java b/src/com/android/documentsui/services/Job.java
index 24a95c6cf..140afdc57 100644
--- a/src/com/android/documentsui/services/Job.java
+++ b/src/com/android/documentsui/services/Job.java
@@ -46,8 +46,8 @@ import com.android.documentsui.Metrics;
import com.android.documentsui.OperationDialogFragment;
import com.android.documentsui.R;
import com.android.documentsui.Shared;
-import com.android.documentsui.model.DocumentInfo;
-import com.android.documentsui.model.DocumentStack;
+import com.android.documentsui.base.DocumentInfo;
+import com.android.documentsui.base.DocumentStack;
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 dfd3e863b..a6c1d7736 100644
--- a/src/com/android/documentsui/services/MoveJob.java
+++ b/src/com/android/documentsui/services/MoveJob.java
@@ -30,9 +30,9 @@ import android.provider.DocumentsContract.Document;
import android.util.Log;
import com.android.documentsui.R;
+import com.android.documentsui.base.DocumentInfo;
+import com.android.documentsui.base.DocumentStack;
import com.android.documentsui.clipping.UrisSupplier;
-import com.android.documentsui.model.DocumentInfo;
-import com.android.documentsui.model.DocumentStack;
import java.io.FileNotFoundException;
diff --git a/src/com/android/documentsui/EjectRootTask.java b/src/com/android/documentsui/sidebar/EjectRootTask.java
index e47a26230..dabba4bf2 100644
--- a/src/com/android/documentsui/EjectRootTask.java
+++ b/src/com/android/documentsui/sidebar/EjectRootTask.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.documentsui;
+package com.android.documentsui.sidebar;
import android.content.ContentProviderClient;
import android.content.ContentResolver;
@@ -23,6 +23,10 @@ import android.net.Uri;
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 java.util.function.BooleanSupplier;
import java.util.function.Consumer;
diff --git a/src/com/android/documentsui/RootItemView.java b/src/com/android/documentsui/sidebar/RootItemView.java
index 93aa526aa..5700f9dd1 100644
--- a/src/com/android/documentsui/RootItemView.java
+++ b/src/com/android/documentsui/sidebar/RootItemView.java
@@ -14,12 +14,14 @@
* limitations under the License.
*/
-package com.android.documentsui;
+package com.android.documentsui.sidebar;
import android.content.Context;
import android.util.AttributeSet;
import android.widget.LinearLayout;
+import com.android.documentsui.R;
+
public final class RootItemView extends LinearLayout {
private static final int[] STATE_HIGHLIGHTED = {R.attr.state_highlighted};
diff --git a/src/com/android/documentsui/RootsFragment.java b/src/com/android/documentsui/sidebar/RootsFragment.java
index e4d44f27e..8c9df2a3a 100644
--- a/src/com/android/documentsui/RootsFragment.java
+++ b/src/com/android/documentsui/sidebar/RootsFragment.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.documentsui;
+package com.android.documentsui.sidebar;
import static com.android.documentsui.Shared.DEBUG;
@@ -59,10 +59,27 @@ import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
-import com.android.documentsui.CheckedTask.Check;
+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;
+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.RootInfo;
+import com.android.documentsui.base.CheckedTask.Check;
import com.android.documentsui.clipping.DocumentClipper;
-import com.android.documentsui.model.DocumentInfo;
-import com.android.documentsui.model.RootInfo;
import com.android.documentsui.picker.PickActivity;
import com.android.documentsui.services.FileOperations;
diff --git a/src/com/android/documentsui/RootsList.java b/src/com/android/documentsui/sidebar/RootsList.java
index bf03ffd1e..248384983 100644
--- a/src/com/android/documentsui/RootsList.java
+++ b/src/com/android/documentsui/sidebar/RootsList.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.android.documentsui;
+package com.android.documentsui.sidebar;
import android.content.Context;
import android.util.AttributeSet;
diff --git a/tests/src/com/android/documentsui/DocumentsMenuManagerTest.java b/tests/src/com/android/documentsui/DocumentsMenuManagerTest.java
index 4a4c7b9cf..5272e43bb 100644
--- a/tests/src/com/android/documentsui/DocumentsMenuManagerTest.java
+++ b/tests/src/com/android/documentsui/DocumentsMenuManagerTest.java
@@ -26,7 +26,7 @@ import android.provider.DocumentsContract.Root;
import android.support.test.filters.SmallTest;
import android.support.test.runner.AndroidJUnit4;
-import com.android.documentsui.model.RootInfo;
+import com.android.documentsui.base.RootInfo;
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 16ed2d9de..41d6dd86b 100644
--- a/tests/src/com/android/documentsui/DocumentsProviderHelper.java
+++ b/tests/src/com/android/documentsui/DocumentsProviderHelper.java
@@ -19,7 +19,7 @@ package com.android.documentsui;
import static android.provider.DocumentsContract.buildChildDocumentsUri;
import static android.provider.DocumentsContract.buildDocumentUri;
import static android.provider.DocumentsContract.buildRootsUri;
-import static com.android.documentsui.model.DocumentInfo.getCursorString;
+import static com.android.documentsui.base.DocumentInfo.getCursorString;
import static com.android.internal.util.Preconditions.checkArgument;
import static junit.framework.Assert.assertEquals;
import static junit.framework.Assert.assertNotNull;
@@ -40,8 +40,8 @@ import android.support.annotation.Nullable;
import android.test.MoreAsserts;
import android.text.TextUtils;
-import com.android.documentsui.model.DocumentInfo;
-import com.android.documentsui.model.RootInfo;
+import com.android.documentsui.base.DocumentInfo;
+import com.android.documentsui.base.RootInfo;
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 0330d6ac3..3924ecece 100644
--- a/tests/src/com/android/documentsui/FilesMenuManagerTest.java
+++ b/tests/src/com/android/documentsui/FilesMenuManagerTest.java
@@ -22,7 +22,7 @@ import android.provider.DocumentsContract.Root;
import android.support.test.filters.SmallTest;
import android.support.test.runner.AndroidJUnit4;
-import com.android.documentsui.model.RootInfo;
+import com.android.documentsui.base.RootInfo;
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/RootsCacheTest.java b/tests/src/com/android/documentsui/RootsCacheTest.java
index 2e81545e8..5def34144 100644
--- a/tests/src/com/android/documentsui/RootsCacheTest.java
+++ b/tests/src/com/android/documentsui/RootsCacheTest.java
@@ -22,7 +22,7 @@ import static com.google.common.collect.Lists.newArrayList;
import android.test.AndroidTestCase;
import android.test.suitebuilder.annotation.SmallTest;
-import com.android.documentsui.model.RootInfo;
+import com.android.documentsui.base.RootInfo;
import com.google.common.collect.Lists;
diff --git a/tests/src/com/android/documentsui/StateTest.java b/tests/src/com/android/documentsui/StateTest.java
index f057850ad..3bd5d7dcc 100644
--- a/tests/src/com/android/documentsui/StateTest.java
+++ b/tests/src/com/android/documentsui/StateTest.java
@@ -19,7 +19,7 @@ package com.android.documentsui;
import android.test.AndroidTestCase;
import android.test.suitebuilder.annotation.SmallTest;
-import com.android.documentsui.model.DocumentInfo;
+import com.android.documentsui.base.DocumentInfo;
@SmallTest
public class StateTest extends AndroidTestCase {
diff --git a/tests/src/com/android/documentsui/model/DocumentInfoTest.java b/tests/src/com/android/documentsui/base/DocumentInfoTest.java
index 2481dc39e..12b4165ca 100644
--- a/tests/src/com/android/documentsui/model/DocumentInfoTest.java
+++ b/tests/src/com/android/documentsui/base/DocumentInfoTest.java
@@ -14,11 +14,13 @@
* limitations under the License.
*/
-package com.android.documentsui.model;
+package com.android.documentsui.base;
import android.test.AndroidTestCase;
import android.test.suitebuilder.annotation.SmallTest;
+import com.android.documentsui.base.DocumentInfo;
+
@SmallTest
public class DocumentInfoTest extends AndroidTestCase {
diff --git a/tests/src/com/android/documentsui/bots/Bots.java b/tests/src/com/android/documentsui/bots/Bots.java
index d5aafa84b..5a5c1bac6 100644
--- a/tests/src/com/android/documentsui/bots/Bots.java
+++ b/tests/src/com/android/documentsui/bots/Bots.java
@@ -38,14 +38,14 @@ public final class Bots {
public final DirectoryListBot directory;
public final SortHeaderBot sortHeader;
public final KeyboardBot keyboard;
- public final RootsListBot roots;
+ public final SidebarBot roots;
public final SearchBot search;
public final UiBot main;
public Bots(UiDevice device, Context context, int timeout) {
main = new UiBot(device, context, TIMEOUT);
breadcrumb = new BreadBot(device, context, TIMEOUT, main);
- roots = new RootsListBot(device, context, TIMEOUT);
+ roots = new SidebarBot(device, context, TIMEOUT);
directory = new DirectoryListBot(device, context, TIMEOUT);
sortHeader = new SortHeaderBot(device, context, TIMEOUT);
keyboard = new KeyboardBot(device, context, TIMEOUT);
diff --git a/tests/src/com/android/documentsui/bots/BreadBot.java b/tests/src/com/android/documentsui/bots/BreadBot.java
index 2683e6c3f..92653d467 100644
--- a/tests/src/com/android/documentsui/bots/BreadBot.java
+++ b/tests/src/com/android/documentsui/bots/BreadBot.java
@@ -36,7 +36,7 @@ import android.view.View;
import com.android.documentsui.DragOverTextView;
import com.android.documentsui.DropdownBreadcrumb;
import com.android.documentsui.R;
-import com.android.documentsui.model.DocumentInfo;
+import com.android.documentsui.base.DocumentInfo;
import org.hamcrest.Description;
import org.hamcrest.Matcher;
diff --git a/tests/src/com/android/documentsui/bots/RootsListBot.java b/tests/src/com/android/documentsui/bots/SidebarBot.java
index 10a8c57d0..ae899d3c9 100644
--- a/tests/src/com/android/documentsui/bots/RootsListBot.java
+++ b/tests/src/com/android/documentsui/bots/SidebarBot.java
@@ -42,11 +42,11 @@ import junit.framework.Assert;
* A test helper class that provides support for controlling and asserting against
* the roots list drawer.
*/
-public class RootsListBot extends Bots.BaseBot {
+public class SidebarBot extends Bots.BaseBot {
private static final String ROOTS_LIST_ID = "com.android.documentsui:id/roots_list";
private static final String TAG = "RootsListBot";
- public RootsListBot(UiDevice device, Context context, int timeout) {
+ public SidebarBot(UiDevice device, Context context, int timeout) {
super(device, context, timeout);
}
diff --git a/tests/src/com/android/documentsui/dirlist/ModelTest.java b/tests/src/com/android/documentsui/dirlist/ModelTest.java
index f356aa941..914e6c485 100644
--- a/tests/src/com/android/documentsui/dirlist/ModelTest.java
+++ b/tests/src/com/android/documentsui/dirlist/ModelTest.java
@@ -29,7 +29,7 @@ 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.model.DocumentInfo;
+import com.android.documentsui.base.DocumentInfo;
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/TestContentProvider.java b/tests/src/com/android/documentsui/dirlist/TestContentProvider.java
index c8d424f10..6d58dcffd 100644
--- a/tests/src/com/android/documentsui/dirlist/TestContentProvider.java
+++ b/tests/src/com/android/documentsui/dirlist/TestContentProvider.java
@@ -21,7 +21,7 @@ import android.os.Bundle;
import android.provider.DocumentsContract;
import android.test.mock.MockContentProvider;
-import com.android.documentsui.model.DocumentInfo;
+import com.android.documentsui.base.DocumentInfo;
import java.util.ArrayList;
import java.util.List;
diff --git a/tests/src/com/android/documentsui/ActivityTest.java b/tests/src/com/android/documentsui/functional/ActivityTest.java
index 1400fe6ac..920b1465d 100644
--- a/tests/src/com/android/documentsui/ActivityTest.java
+++ b/tests/src/com/android/documentsui/functional/ActivityTest.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.documentsui;
+package com.android.documentsui.functional;
import static com.android.documentsui.StubProvider.DEFAULT_AUTHORITY;
import static com.android.documentsui.StubProvider.ROOT_0_ID;
@@ -33,9 +33,10 @@ import android.support.test.uiautomator.UiObjectNotFoundException;
import android.test.ActivityInstrumentationTestCase2;
import android.view.MotionEvent;
+import com.android.documentsui.DocumentsProviderHelper;
+import com.android.documentsui.base.RootInfo;
import com.android.documentsui.bots.Bots;
import com.android.documentsui.bots.UiBot;
-import com.android.documentsui.model.RootInfo;
import javax.annotation.Nullable;
@@ -64,9 +65,9 @@ public abstract class ActivityTest<T extends Activity> extends ActivityInstrumen
public RootInfo rootDir0;
public RootInfo rootDir1;
- ContentResolver mResolver;
- DocumentsProviderHelper mDocsHelper;
- ContentProviderClient mClient;
+ protected ContentResolver mResolver;
+ protected DocumentsProviderHelper mDocsHelper;
+ protected ContentProviderClient mClient;
public ActivityTest(Class<T> activityClass) {
super(activityClass);
@@ -133,7 +134,7 @@ public abstract class ActivityTest<T extends Activity> extends ActivityInstrumen
super.tearDown();
}
- void launchActivity() {
+ private void launchActivity() {
final Intent intent = context.getPackageManager().getLaunchIntentForPackage(
UiBot.TARGET_PKG);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
@@ -144,12 +145,12 @@ public abstract class ActivityTest<T extends Activity> extends ActivityInstrumen
getActivity(); // Launch the activity.
}
- void resetStorage() throws RemoteException {
+ protected void resetStorage() throws RemoteException {
mClient.call("clear", null, null);
device.waitForIdle();
}
- void initTestFiles() throws RemoteException {
+ protected void initTestFiles() throws RemoteException {
mDocsHelper.createFolder(rootDir0, dirName1);
mDocsHelper.createDocument(rootDir0, "text/plain", fileName1);
mDocsHelper.createDocument(rootDir0, "image/png", fileName2);
diff --git a/tests/src/com/android/documentsui/FileManagementUiTest.java b/tests/src/com/android/documentsui/functional/FileManagementUiTest.java
index 7beeea33e..9ad6d1060 100644
--- a/tests/src/com/android/documentsui/FileManagementUiTest.java
+++ b/tests/src/com/android/documentsui/functional/FileManagementUiTest.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.documentsui;
+package com.android.documentsui.functional;
import static com.android.documentsui.StubProvider.ROOT_0_ID;
import static com.android.documentsui.StubProvider.ROOT_1_ID;
@@ -25,6 +25,8 @@ import android.support.test.filters.Suppress;
import android.test.suitebuilder.annotation.LargeTest;
import android.view.KeyEvent;
+import com.android.documentsui.R;
+import com.android.documentsui.R.id;
import com.android.documentsui.manager.ManageActivity;
@LargeTest
diff --git a/tests/src/com/android/documentsui/FilesActivityDefaultsUiTest.java b/tests/src/com/android/documentsui/functional/FilesActivityDefaultsUiTest.java
index 6ad7e11d0..d750b865d 100644
--- a/tests/src/com/android/documentsui/FilesActivityDefaultsUiTest.java
+++ b/tests/src/com/android/documentsui/functional/FilesActivityDefaultsUiTest.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.documentsui;
+package com.android.documentsui.functional;
import static com.android.documentsui.StubProvider.ROOT_0_ID;
import static com.android.documentsui.StubProvider.ROOT_1_ID;
@@ -23,8 +23,9 @@ 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.manager.ManageActivity;
-import com.android.documentsui.model.RootInfo;
@LargeTest
public class FilesActivityDefaultsUiTest extends ActivityTest<ManageActivity> {
diff --git a/tests/src/com/android/documentsui/FilesActivityUiTest.java b/tests/src/com/android/documentsui/functional/FilesActivityUiTest.java
index 4454e208b..d2a670782 100644
--- a/tests/src/com/android/documentsui/FilesActivityUiTest.java
+++ b/tests/src/com/android/documentsui/functional/FilesActivityUiTest.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.documentsui;
+package com.android.documentsui.functional;
import android.net.Uri;
import android.os.RemoteException;
diff --git a/tests/src/com/android/documentsui/IntegratedDownloadsUiTest.java b/tests/src/com/android/documentsui/functional/IntegratedDownloadsUiTest.java
index 5462461b8..dd92c4163 100644
--- a/tests/src/com/android/documentsui/IntegratedDownloadsUiTest.java
+++ b/tests/src/com/android/documentsui/functional/IntegratedDownloadsUiTest.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.documentsui;
+package com.android.documentsui.functional;
import android.app.DownloadManager;
import android.app.DownloadManager.Request;
diff --git a/tests/src/com/android/documentsui/KeyboardNavigationUiTest.java b/tests/src/com/android/documentsui/functional/KeyboardNavigationUiTest.java
index c45eaed9a..1dbf60223 100644
--- a/tests/src/com/android/documentsui/KeyboardNavigationUiTest.java
+++ b/tests/src/com/android/documentsui/functional/KeyboardNavigationUiTest.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.documentsui;
+package com.android.documentsui.functional;
import android.net.Uri;
import android.os.RemoteException;
diff --git a/tests/src/com/android/documentsui/RenameDocumentUiTest.java b/tests/src/com/android/documentsui/functional/RenameDocumentUiTest.java
index 3251965d5..f1ba6916f 100644
--- a/tests/src/com/android/documentsui/RenameDocumentUiTest.java
+++ b/tests/src/com/android/documentsui/functional/RenameDocumentUiTest.java
@@ -14,11 +14,13 @@
* limitations under the License.
*/
-package com.android.documentsui;
+package com.android.documentsui.functional;
import android.support.test.uiautomator.UiObjectNotFoundException;
import android.test.suitebuilder.annotation.LargeTest;
+import com.android.documentsui.R;
+import com.android.documentsui.R.string;
import com.android.documentsui.manager.ManageActivity;
@LargeTest
diff --git a/tests/src/com/android/documentsui/SearchViewUiTest.java b/tests/src/com/android/documentsui/functional/SearchViewUiTest.java
index 39c438397..8f79cdbbd 100644
--- a/tests/src/com/android/documentsui/SearchViewUiTest.java
+++ b/tests/src/com/android/documentsui/functional/SearchViewUiTest.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.documentsui;
+package com.android.documentsui.functional;
import static com.android.documentsui.StubProvider.ROOT_0_ID;
import static com.android.documentsui.StubProvider.ROOT_1_ID;
diff --git a/tests/src/com/android/documentsui/RootsUiTest.java b/tests/src/com/android/documentsui/functional/SidebarUiTest.java
index 98691dbd0..28cac95e4 100644
--- a/tests/src/com/android/documentsui/RootsUiTest.java
+++ b/tests/src/com/android/documentsui/functional/SidebarUiTest.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.documentsui;
+package com.android.documentsui.functional;
import static com.android.documentsui.StubProvider.ROOT_0_ID;
import static com.android.documentsui.StubProvider.ROOT_1_ID;
@@ -25,11 +25,11 @@ import android.test.suitebuilder.annotation.Suppress;
import com.android.documentsui.manager.ManageActivity;
@LargeTest
-public class RootsUiTest extends ActivityTest<ManageActivity> {
+public class SidebarUiTest extends ActivityTest<ManageActivity> {
private static final String TAG = "RootUiTest";
- public RootsUiTest() {
+ public SidebarUiTest() {
super(ManageActivity.class);
}
diff --git a/tests/src/com/android/documentsui/SortDocumentUiTest.java b/tests/src/com/android/documentsui/functional/SortDocumentUiTest.java
index a20292597..0a1be5863 100644
--- a/tests/src/com/android/documentsui/SortDocumentUiTest.java
+++ b/tests/src/com/android/documentsui/functional/SortDocumentUiTest.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.documentsui;
+package com.android.documentsui.functional;
import android.net.Uri;
import android.support.test.filters.LargeTest;
diff --git a/tests/src/com/android/documentsui/services/AbstractCopyJobTest.java b/tests/src/com/android/documentsui/services/AbstractCopyJobTest.java
index 2560f2c94..6b52fdd16 100644
--- a/tests/src/com/android/documentsui/services/AbstractCopyJobTest.java
+++ b/tests/src/com/android/documentsui/services/AbstractCopyJobTest.java
@@ -22,7 +22,7 @@ import android.net.Uri;
import android.provider.DocumentsContract;
import android.test.suitebuilder.annotation.MediumTest;
-import com.android.documentsui.model.DocumentInfo;
+import com.android.documentsui.base.DocumentInfo;
import com.android.documentsui.services.FileOperationService.OpType;
import java.util.List;
diff --git a/tests/src/com/android/documentsui/services/AbstractJobTest.java b/tests/src/com/android/documentsui/services/AbstractJobTest.java
index 6e4e534e0..c2034d24f 100644
--- a/tests/src/com/android/documentsui/services/AbstractJobTest.java
+++ b/tests/src/com/android/documentsui/services/AbstractJobTest.java
@@ -30,9 +30,9 @@ import android.test.suitebuilder.annotation.MediumTest;
import com.android.documentsui.clipping.UrisSupplier;
import com.android.documentsui.DocumentsProviderHelper;
import com.android.documentsui.StubProvider;
-import com.android.documentsui.model.DocumentInfo;
-import com.android.documentsui.model.DocumentStack;
-import com.android.documentsui.model.RootInfo;
+import com.android.documentsui.base.DocumentInfo;
+import com.android.documentsui.base.DocumentStack;
+import com.android.documentsui.base.RootInfo;
import com.android.documentsui.services.FileOperationService.OpType;
import com.android.documentsui.testing.DocsProviders;
diff --git a/tests/src/com/android/documentsui/services/FileOperationServiceTest.java b/tests/src/com/android/documentsui/services/FileOperationServiceTest.java
index d6bbe5abf..306be3ca1 100644
--- a/tests/src/com/android/documentsui/services/FileOperationServiceTest.java
+++ b/tests/src/com/android/documentsui/services/FileOperationServiceTest.java
@@ -32,9 +32,9 @@ import android.os.Parcelable;
import android.test.ServiceTestCase;
import android.test.suitebuilder.annotation.MediumTest;
+import com.android.documentsui.base.DocumentInfo;
+import com.android.documentsui.base.DocumentStack;
import com.android.documentsui.clipping.UrisSupplier;
-import com.android.documentsui.model.DocumentInfo;
-import com.android.documentsui.model.DocumentStack;
import com.android.documentsui.testing.DocsProviders;
import com.android.documentsui.testing.TestHandler;
import com.android.documentsui.testing.TestScheduledExecutorService;
diff --git a/tests/src/com/android/documentsui/services/TestJob.java b/tests/src/com/android/documentsui/services/TestJob.java
index 1fbcf377f..8198a685c 100644
--- a/tests/src/com/android/documentsui/services/TestJob.java
+++ b/tests/src/com/android/documentsui/services/TestJob.java
@@ -25,8 +25,8 @@ import android.content.Context;
import com.android.documentsui.clipping.UrisSupplier;
import com.android.documentsui.R;
-import com.android.documentsui.model.DocumentInfo;
-import com.android.documentsui.model.DocumentStack;
+import com.android.documentsui.base.DocumentInfo;
+import com.android.documentsui.base.DocumentStack;
import com.android.documentsui.services.FileOperationService.OpType;
import java.text.NumberFormat;
diff --git a/tests/src/com/android/documentsui/services/TestJobListener.java b/tests/src/com/android/documentsui/services/TestJobListener.java
index e9c68c6ab..3488650f4 100644
--- a/tests/src/com/android/documentsui/services/TestJobListener.java
+++ b/tests/src/com/android/documentsui/services/TestJobListener.java
@@ -21,7 +21,7 @@ import static org.junit.Assert.fail;
import android.support.annotation.Nullable;
-import com.android.documentsui.model.DocumentInfo;
+import com.android.documentsui.base.DocumentInfo;
import java.util.ArrayList;
import java.util.List;