diff options
32 files changed, 187 insertions, 118 deletions
diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 206f9fc62..cdad8d4c8 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -15,7 +15,7 @@ android:supportsRtl="true"> <activity - android:name=".DocumentsActivity" + android:name=".picker.PickActivity" android:theme="@style/DocumentsTheme" android:icon="@drawable/picker_icon"> <intent-filter> @@ -43,18 +43,26 @@ </activity> <activity - android:name=".LauncherActivity" + android:name=".manager.LauncherActivity" android:label="@string/downloads_label" android:icon="@drawable/files_icon" android:theme="@android:style/Theme.NoDisplay"> + </activity> + + <!-- Preserve original launcher activity from Nougat. --> + <activity-alias + android:name=".Launcher" + android:targetActivity=".manager.LauncherActivity" + android:label="@string/downloads_label" + android:icon="@drawable/files_icon" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> - </activity> + </activity-alias> <activity - android:name=".FilesActivity" + android:name=".manager.ManageActivity" android:label="@string/downloads_label" android:icon="@drawable/files_icon" android:documentLaunchMode="intoExisting" diff --git a/app-perf-tests/src/com/android/documentsui/FilesAppPerfTest.java b/app-perf-tests/src/com/android/documentsui/FilesAppPerfTest.java index ce2fc13bc..d39b49cb9 100644 --- a/app-perf-tests/src/com/android/documentsui/FilesAppPerfTest.java +++ b/app-perf-tests/src/com/android/documentsui/FilesAppPerfTest.java @@ -27,7 +27,6 @@ import android.provider.DocumentsContract; import android.support.test.uiautomator.UiDevice; import android.test.InstrumentationTestCase; import android.test.suitebuilder.annotation.LargeTest; -import android.util.Log; import java.util.Arrays; import java.util.List; diff --git a/perf-tests/src/com/android/documentsui/FilesActivityPerfTest.java b/perf-tests/src/com/android/documentsui/FilesActivityPerfTest.java index bf056f12f..a4a4a8694 100644 --- a/perf-tests/src/com/android/documentsui/FilesActivityPerfTest.java +++ b/perf-tests/src/com/android/documentsui/FilesActivityPerfTest.java @@ -30,6 +30,7 @@ import android.view.KeyEvent; import com.android.documentsui.model.RootInfo; import com.android.documentsui.EventListener; +import com.android.documentsui.manager.ManageActivity; import java.util.ArrayList; import java.util.Arrays; @@ -38,7 +39,7 @@ import java.util.Random; import java.util.concurrent.CountDownLatch; @LargeTest -public class FilesActivityPerfTest extends ActivityTest<FilesActivity> { +public class FilesActivityPerfTest extends ActivityTest<ManageActivity> { // Constants starting with KEY_ are used to report metrics to APCT. private static final String KEY_FILES_LISTED_PERFORMANCE_FIRST = @@ -53,7 +54,7 @@ public class FilesActivityPerfTest extends ActivityTest<FilesActivity> { private static final int NUM_MEASUREMENTS = 10; public FilesActivityPerfTest() { - super(FilesActivity.class); + super(ManageActivity.class); } @Override diff --git a/perf-tests/src/com/android/documentsui/FilesJankPerfTest.java b/perf-tests/src/com/android/documentsui/FilesJankPerfTest.java index 9925d5b0c..84d23f7d7 100644 --- a/perf-tests/src/com/android/documentsui/FilesJankPerfTest.java +++ b/perf-tests/src/com/android/documentsui/FilesJankPerfTest.java @@ -33,8 +33,8 @@ import android.support.test.jank.GfxMonitor; import android.support.test.uiautomator.UiScrollable; import android.util.Log; -import com.android.documentsui.FilesActivity; import com.android.documentsui.bots.RootsListBot; +import com.android.documentsui.manager.ManageActivity; import com.android.documentsui.bots.DirectoryListBot; @LargeTest @@ -53,7 +53,7 @@ public class FilesJankPerfTest extends JankTestBase { mRootsListBot = new RootsListBot(device, context, BOT_TIMEOUT); mDirListBot = new DirectoryListBot(device, context, BOT_TIMEOUT); - final Intent intent = new Intent(context, FilesActivity.class); + final Intent intent = new Intent(context, ManageActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); mActivity = getInstrumentation().startActivitySync(intent); try { diff --git a/src/com/android/documentsui/BaseActivity.java b/src/com/android/documentsui/BaseActivity.java index 7ae2e515a..2970eb183 100644 --- a/src/com/android/documentsui/BaseActivity.java +++ b/src/com/android/documentsui/BaseActivity.java @@ -104,14 +104,16 @@ public abstract class BaseActivity extends Activity private static final String BENCHMARK_TESTING_PACKAGE = "com.android.documentsui.appperftests"; - State mState; - @Nullable RetainedState mRetainedState; - RootsCache mRoots; - SearchViewManager mSearchManager; - DrawerController mDrawer; - NavigationViewManager mNavigator; + protected SearchViewManager mSearchManager; + // TODO: Unpublic this by injecting it into LoadLastAccessedStackTask + public State mState; + + protected @Nullable RetainedState mRetainedState; + protected RootsCache mRoots; + protected DrawerController mDrawer; + protected NavigationViewManager mNavigator; List<EventListener> mEventListeners = new ArrayList<>(); - SortController mSortController; + protected SortController mSortController; private final String mTag; private final ContentObserver mRootsCacheObserver = new ContentObserver(new Handler()) { @@ -134,11 +136,11 @@ public abstract class BaseActivity extends Activity public abstract MenuManager getMenuManager(); public abstract DirectoryDetails getDirectoryDetails(); - abstract void onTaskFinished(Uri... uris); - abstract void refreshDirectory(int anim); + protected abstract void onTaskFinished(Uri... uris); + protected abstract void refreshDirectory(int anim); /** Allows sub-classes to include information in a newly created State instance. */ - abstract void includeState(State initialState); - abstract void onDirectoryCreated(DocumentInfo doc); + protected abstract void includeState(State initialState); + protected abstract void onDirectoryCreated(DocumentInfo doc); public BaseActivity(@LayoutRes int layoutId, String tag) { mLayoutId = layoutId; @@ -321,11 +323,11 @@ public abstract class BaseActivity extends Activity } } - final @Nullable DirectoryFragment getDirectoryFragment() { + protected final @Nullable DirectoryFragment getDirectoryFragment() { return DirectoryFragment.get(getFragmentManager()); } - void showCreateDirectoryDialog() { + protected void showCreateDirectoryDialog() { Metrics.logUserAction(this, Metrics.USER_ACTION_CREATE_DIR); CreateDirectoryFragment.show(getFragmentManager()); @@ -335,7 +337,7 @@ public abstract class BaseActivity extends Activity * Returns true if a directory can be created in the current location. * @return */ - boolean canCreateDirectory() { + protected boolean canCreateDirectory() { final RootInfo root = getCurrentRoot(); final DocumentInfo cwd = getCurrentDirectory(); return cwd != null @@ -345,7 +347,7 @@ public abstract class BaseActivity extends Activity && !root.isDownloads(); } - void openContainerDocument(DocumentInfo doc) { + protected void openContainerDocument(DocumentInfo doc) { assert(doc.isContainer()); notifyDirectoryNavigated(doc.derivedUri); @@ -379,7 +381,7 @@ public abstract class BaseActivity extends Activity invalidateOptionsMenu(); } - final void loadRoot(final Uri uri) { + protected final void loadRoot(final Uri uri) { new LoadRootTask(this, uri).executeOnExecutor( ProviderExecutor.forAuthority(uri.getAuthority())); } @@ -417,7 +419,7 @@ public abstract class BaseActivity extends Activity DirectoryFragment.reloadSearch(fm, root, cwd, query); } - final List<String> getExcludedAuthorities() { + private final List<String> getExcludedAuthorities() { List<String> authorities = new ArrayList<>(); if (getIntent().getBooleanExtra(DocumentsContract.EXTRA_EXCLUDE_SELF, false)) { // Exclude roots provided by the calling package. @@ -440,7 +442,7 @@ public abstract class BaseActivity extends Activity return (root.flags & Root.FLAG_SUPPORTS_SEARCH) != 0; } - final String getCallingPackageMaybeExtra() { + public final String getCallingPackageMaybeExtra() { String callingPackage = getCallingPackage(); // System apps can set the calling package name using an extra. try { @@ -514,10 +516,7 @@ public abstract class BaseActivity extends Activity } public void setPending(boolean pending) { - final SaveFragment save = SaveFragment.get(getFragmentManager()); - if (save != null) { - save.setPending(pending); - } + // TODO: Isolate this behavior to PickActivity. } @Override @@ -601,7 +600,7 @@ public abstract class BaseActivity extends Activity super.onBackPressed(); } - boolean onBeforePopDir() { + protected boolean onBeforePopDir() { // Files app overrides this with some fancy logic. return false; } diff --git a/src/com/android/documentsui/CheckedTask.java b/src/com/android/documentsui/CheckedTask.java index 747eb9c51..242a2799e 100644 --- a/src/com/android/documentsui/CheckedTask.java +++ b/src/com/android/documentsui/CheckedTask.java @@ -41,13 +41,13 @@ abstract class CheckedTask<Input, Output> } /** Called prior to run being executed. Analogous to {@link AsyncTask#onPreExecute} */ - void prepare() {} + protected void prepare() {} /** Analogous to {@link AsyncTask#doInBackground} */ - abstract Output run(Input... input); + protected abstract Output run(Input... input); /** Analogous to {@link AsyncTask#onPostExecute} */ - abstract void finish(Output output); + protected abstract void finish(Output output); @Override final protected void onPreExecute() { diff --git a/src/com/android/documentsui/DocumentsMenuManager.java b/src/com/android/documentsui/DocumentsMenuManager.java index e9d502e65..035268e4e 100644 --- a/src/com/android/documentsui/DocumentsMenuManager.java +++ b/src/com/android/documentsui/DocumentsMenuManager.java @@ -25,7 +25,7 @@ import static com.android.documentsui.State.ACTION_PICK_COPY_DESTINATION; import android.view.Menu; import android.view.MenuItem; -final class DocumentsMenuManager extends MenuManager { +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 97d459bf1..eca3f0a9b 100644 --- a/src/com/android/documentsui/DrawerController.java +++ b/src/com/android/documentsui/DrawerController.java @@ -36,7 +36,7 @@ import java.lang.annotation.RetentionPolicy; * * @see DrawerController#create(DrawerLayout) */ -abstract class DrawerController implements DrawerListener { +public abstract class DrawerController implements DrawerListener { public static final String TAG = "DrawerController"; // Drawer opening triggered by tapping the navigation icon @@ -54,11 +54,12 @@ abstract class DrawerController implements DrawerListener { @Retention(RetentionPolicy.SOURCE) public @interface Trigger {} + public abstract void update(); /** * Toggles the drawer and sets the OPENED_OTHER as the action that causes opening the drawer. * @param open */ - abstract void setOpen(boolean open); + public abstract void setOpen(boolean open); /** * Toggles the drawer. @@ -66,10 +67,9 @@ abstract class DrawerController implements DrawerListener { * @param trigger Indicates what action caused opening the drawer. It is ignored for closing. */ abstract void setOpen(boolean open, @Trigger int trigger); - abstract boolean isPresent(); - abstract boolean isOpen(); + public abstract boolean isPresent(); + public abstract boolean isOpen(); abstract void setTitle(String title); - abstract void update(); /** * Returns a controller suitable for {@code Layout}. @@ -166,7 +166,7 @@ abstract class DrawerController implements DrawerListener { } @Override - void setOpen(boolean open) { + public void setOpen(boolean open) { setOpen(open, OPENED_OTHER); } @@ -181,12 +181,12 @@ abstract class DrawerController implements DrawerListener { } @Override - boolean isOpen() { + public boolean isOpen() { return mLayout.isDrawerOpen(mDrawer); } @Override - boolean isPresent() { + public boolean isPresent() { return true; } @@ -196,7 +196,7 @@ abstract class DrawerController implements DrawerListener { } @Override - void update() { + public void update() { mToggle.syncState(); } @@ -232,18 +232,18 @@ abstract class DrawerController implements DrawerListener { private static final class DummyDrawerController extends DrawerController { @Override - void setOpen(boolean open) {} + public void setOpen(boolean open) {} @Override - void setOpen(boolean open, @Trigger int trigger) {} + public void setOpen(boolean open, @Trigger int trigger) {} @Override - boolean isOpen() { + public boolean isOpen() { return false; } @Override - boolean isPresent() { + public boolean isPresent() { return false; } @@ -251,7 +251,7 @@ abstract class DrawerController implements DrawerListener { void setTitle(String title) {} @Override - void update() {} + public void update() {} @Override public void onDrawerSlide(View drawerView, float slideOffset) {} diff --git a/src/com/android/documentsui/FilesMenuManager.java b/src/com/android/documentsui/FilesMenuManager.java index f5ccbd554..94ea4f989 100644 --- a/src/com/android/documentsui/FilesMenuManager.java +++ b/src/com/android/documentsui/FilesMenuManager.java @@ -21,7 +21,7 @@ import android.view.MenuItem; import com.android.documentsui.model.RootInfo; -final class FilesMenuManager extends MenuManager { +public final class FilesMenuManager extends MenuManager { public FilesMenuManager(SearchViewManager searchManager, State displayState) { super(searchManager, displayState); diff --git a/src/com/android/documentsui/Metrics.java b/src/com/android/documentsui/Metrics.java index 3c45a934e..22d7f3423 100644 --- a/src/com/android/documentsui/Metrics.java +++ b/src/com/android/documentsui/Metrics.java @@ -31,6 +31,7 @@ import android.provider.DocumentsContract; import android.util.Log; import com.android.documentsui.State.ActionType; +import com.android.documentsui.manager.LauncherActivity; import com.android.documentsui.model.DocumentInfo; import com.android.documentsui.model.RootInfo; import com.android.documentsui.services.FileOperationService; diff --git a/src/com/android/documentsui/NavigationViewManager.java b/src/com/android/documentsui/NavigationViewManager.java index 8c0972b72..1479ed463 100644 --- a/src/com/android/documentsui/NavigationViewManager.java +++ b/src/com/android/documentsui/NavigationViewManager.java @@ -81,7 +81,7 @@ public class NavigationViewManager { } } - void update() { + public void update() { // TODO: Looks to me like this block is never getting hit. if (mEnv.isSearchExpanded()) { diff --git a/src/com/android/documentsui/PairedTask.java b/src/com/android/documentsui/PairedTask.java index 7d2da0b53..fe0e0f803 100644 --- a/src/com/android/documentsui/PairedTask.java +++ b/src/com/android/documentsui/PairedTask.java @@ -17,7 +17,6 @@ package com.android.documentsui; import android.app.Activity; -import android.os.AsyncTask; /** * An {@link CheckedTask} that guards work with checks that a paired {@link Activity} @@ -27,7 +26,7 @@ import android.os.AsyncTask; * @template Input input type * @template Output output type */ -abstract class PairedTask<Owner extends Activity, Input, Output> +public abstract class PairedTask<Owner extends Activity, Input, Output> extends CheckedTask<Input, Output> { protected final Owner mOwner; diff --git a/src/com/android/documentsui/PickFragment.java b/src/com/android/documentsui/PickFragment.java index 933506c25..e7ce9449e 100644 --- a/src/com/android/documentsui/PickFragment.java +++ b/src/com/android/documentsui/PickFragment.java @@ -31,6 +31,7 @@ import android.view.ViewGroup; import android.widget.Button; import com.android.documentsui.model.DocumentInfo; +import com.android.documentsui.picker.PickActivity; import com.android.documentsui.services.FileOperationService.OpType; /** @@ -81,7 +82,7 @@ public class PickFragment extends Fragment { private View.OnClickListener mPickListener = new View.OnClickListener() { @Override public void onClick(View v) { - final DocumentsActivity activity = DocumentsActivity.get(PickFragment.this); + final PickActivity activity = PickActivity.get(PickFragment.this); activity.onPickRequested(mPickTarget); } }; diff --git a/src/com/android/documentsui/RootsFragment.java b/src/com/android/documentsui/RootsFragment.java index 335ae4c3b..e4d44f27e 100644 --- a/src/com/android/documentsui/RootsFragment.java +++ b/src/com/android/documentsui/RootsFragment.java @@ -63,6 +63,7 @@ import com.android.documentsui.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; import java.util.ArrayList; @@ -549,7 +550,7 @@ public class RootsFragment extends Fragment implements ItemDragListener.DragHost @Override void open(RootsFragment fragment) { - DocumentsActivity activity = DocumentsActivity.get(fragment); + PickActivity activity = PickActivity.get(fragment); Metrics.logAppVisited(fragment.getActivity(), info); activity.onAppPicked(info); } diff --git a/src/com/android/documentsui/SearchViewManager.java b/src/com/android/documentsui/SearchViewManager.java index de2d15526..63c07dda6 100644 --- a/src/com/android/documentsui/SearchViewManager.java +++ b/src/com/android/documentsui/SearchViewManager.java @@ -295,12 +295,11 @@ public class SearchViewManager implements return mCurrentSearch; } - boolean isSearching() { + public boolean isSearching() { return mCurrentSearch != null; } boolean isExpanded() { return mSearchExpanded; } - } diff --git a/src/com/android/documentsui/dirlist/DirectoryFragment.java b/src/com/android/documentsui/dirlist/DirectoryFragment.java index fe0795869..29b605dea 100644 --- a/src/com/android/documentsui/dirlist/DirectoryFragment.java +++ b/src/com/android/documentsui/dirlist/DirectoryFragment.java @@ -67,7 +67,6 @@ import android.widget.TextView; import com.android.documentsui.BaseActivity; import com.android.documentsui.DirectoryLoader; import com.android.documentsui.DirectoryResult; -import com.android.documentsui.DocumentsActivity; import com.android.documentsui.DocumentsApplication; import com.android.documentsui.Events.InputEvent; import com.android.documentsui.Events.MotionInputEvent; @@ -89,6 +88,7 @@ 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; import com.android.documentsui.services.FileOperationService.OpType; @@ -862,7 +862,7 @@ public class DirectoryFragment extends Fragment Shared.ACTION_PICK_COPY_DESTINATION, Uri.EMPTY, getActivity(), - DocumentsActivity.class); + PickActivity.class); UrisSupplier srcs; try { diff --git a/src/com/android/documentsui/LauncherActivity.java b/src/com/android/documentsui/manager/LauncherActivity.java index 5d7e8cd2e..165bb142f 100644 --- a/src/com/android/documentsui/LauncherActivity.java +++ b/src/com/android/documentsui/manager/LauncherActivity.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.documentsui; +package com.android.documentsui.manager; import static com.android.documentsui.Shared.DEBUG; @@ -29,6 +29,8 @@ import android.provider.DocumentsContract; import android.support.annotation.Nullable; import android.util.Log; +import com.android.documentsui.Shared; + import java.util.List; /** @@ -97,7 +99,7 @@ public class LauncherActivity extends Activity { } static final Intent createLaunchIntent(Activity activity) { - Intent intent = new Intent(activity, FilesActivity.class); + Intent intent = new Intent(activity, ManageActivity.class); intent.setData(buildLaunchUri()); // Relay any config overrides bits present in the original intent. @@ -128,7 +130,7 @@ public class LauncherActivity extends Activity { .build(); } - static boolean isLaunchUri(@Nullable Uri uri) { + public static boolean isLaunchUri(@Nullable Uri uri) { boolean result = uri != null && LAUNCH_CONTROL_AUTHORITY.equals(uri.getAuthority()); return result; } diff --git a/src/com/android/documentsui/FilesActivity.java b/src/com/android/documentsui/manager/ManageActivity.java index 1d6038739..2cde713e2 100644 --- a/src/com/android/documentsui/FilesActivity.java +++ b/src/com/android/documentsui/manager/ManageActivity.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.documentsui; +package com.android.documentsui.manager; import static com.android.documentsui.OperationDialogFragment.DIALOG_TYPE_UNKNOWN; import static com.android.documentsui.Shared.DEBUG; @@ -34,8 +34,22 @@ import android.view.KeyEvent; import android.view.Menu; import android.view.MenuItem; +import com.android.documentsui.BaseActivity; +import com.android.documentsui.DocumentsApplication; +import com.android.documentsui.FilesMenuManager; +import com.android.documentsui.MenuManager; 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.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; import com.android.documentsui.clipping.DocumentClipper; import com.android.documentsui.dirlist.AnimationView; import com.android.documentsui.dirlist.DirectoryFragment; @@ -56,7 +70,7 @@ import java.util.List; /** * Standalone file management activity. */ -public class FilesActivity extends BaseActivity { +public class ManageActivity extends BaseActivity { public static final String TAG = "FilesActivity"; @@ -70,7 +84,7 @@ public class FilesActivity extends BaseActivity { private FilesMenuManager mMenuManager; private DirectoryDetails mDetails; - public FilesActivity() { + public ManageActivity() { super(R.layout.files_activity, TAG); } @@ -150,7 +164,7 @@ public class FilesActivity extends BaseActivity { } @Override - void includeState(State state) { + public void includeState(State state) { final Intent intent = getIntent(); state.action = State.ACTION_BROWSE; @@ -261,7 +275,7 @@ public class FilesActivity extends BaseActivity { } @Override - void refreshDirectory(int anim) { + public void refreshDirectory(int anim) { final FragmentManager fm = getFragmentManager(); final RootInfo root = getCurrentRoot(); final DocumentInfo cwd = getCurrentDirectory(); @@ -320,7 +334,7 @@ public class FilesActivity extends BaseActivity { } @Override - void onDirectoryCreated(DocumentInfo doc) { + public void onDirectoryCreated(DocumentInfo doc) { assert(doc.isDirectory()); getDirectoryFragment().getFocusManager().onDirectoryCreated(doc.documentId); } @@ -416,7 +430,7 @@ public class FilesActivity extends BaseActivity { // do it if user already hit back recently and we recently // did some fiddling. @Override - boolean onBeforePopDir() { + protected boolean onBeforePopDir() { int size = mState.stack.size(); if (mDrawer.isPresent() @@ -446,7 +460,7 @@ public class FilesActivity extends BaseActivity { } @Override - void onTaskFinished(Uri... uris) { + public void onTaskFinished(Uri... uris) { if (DEBUG) Log.d(TAG, "onFinished() " + Arrays.toString(uris)); final Intent intent = new Intent(); @@ -489,10 +503,10 @@ public class FilesActivity extends BaseActivity { * to know which root to select. Also, the stack doesn't contain intermediate directories. * It's primarly used for opening ZIP archives from Downloads app. */ - private static final class OpenUriForViewTask extends PairedTask<FilesActivity, Uri, Void> { + private static final class OpenUriForViewTask extends PairedTask<ManageActivity, Uri, Void> { private final State mState; - public OpenUriForViewTask(FilesActivity activity) { + public OpenUriForViewTask(ManageActivity activity) { super(activity); mState = activity.mState; } diff --git a/src/com/android/documentsui/QuickViewIntentBuilder.java b/src/com/android/documentsui/manager/QuickViewIntentBuilder.java index b8d224713..a74e709db 100644 --- a/src/com/android/documentsui/QuickViewIntentBuilder.java +++ b/src/com/android/documentsui/manager/QuickViewIntentBuilder.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.documentsui; +package com.android.documentsui.manager; import static com.android.documentsui.Shared.DEBUG; import static com.android.documentsui.Shared.MAX_DOCS_IN_INTENT; @@ -35,6 +35,8 @@ import android.text.TextUtils; import android.util.Log; import android.util.Range; +import com.android.documentsui.R; +import com.android.documentsui.RootCursorWrapper; import com.android.documentsui.dirlist.Model; import com.android.documentsui.model.DocumentInfo; diff --git a/src/com/android/documentsui/LoadLastAccessedStackTask.java b/src/com/android/documentsui/picker/LoadLastAccessedStackTask.java index 78e79c73f..0d2ea31ce 100644 --- a/src/com/android/documentsui/LoadLastAccessedStackTask.java +++ b/src/com/android/documentsui/picker/LoadLastAccessedStackTask.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.documentsui; +package com.android.documentsui.picker; import static com.android.documentsui.Shared.DEBUG; @@ -22,7 +22,12 @@ import android.database.Cursor; 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.dirlist.AnimationView; import com.android.documentsui.model.DurableUtils; import com.android.documentsui.model.RootInfo; @@ -40,14 +45,14 @@ import java.util.Collection; * for an app like DropBox. */ final class LoadLastAccessedStackTask - extends PairedTask<DocumentsActivity, Void, Void> { + extends PairedTask<PickActivity, Void, Void> { private static final String TAG = "LoadLastAccessedStackTask"; private volatile boolean mRestoredStack; private volatile boolean mExternal; private State mState; - public LoadLastAccessedStackTask(DocumentsActivity activity) { + public LoadLastAccessedStackTask(PickActivity activity) { super(activity); mState = activity.mState; } diff --git a/src/com/android/documentsui/DocumentsActivity.java b/src/com/android/documentsui/picker/PickActivity.java index 555fbde52..810920d7e 100644 --- a/src/com/android/documentsui/DocumentsActivity.java +++ b/src/com/android/documentsui/picker/PickActivity.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.documentsui; +package com.android.documentsui.picker; import static com.android.documentsui.Shared.DEBUG; import static com.android.documentsui.State.ACTION_CREATE; @@ -41,8 +41,21 @@ import android.support.design.widget.Snackbar; import android.util.Log; import android.view.Menu; -import com.android.documentsui.MenuManager.DirectoryDetails; +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.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; import com.android.documentsui.dirlist.DirectoryFragment; import com.android.documentsui.dirlist.FragmentTuner; import com.android.documentsui.dirlist.FragmentTuner.DocumentsTuner; @@ -54,13 +67,13 @@ import com.android.documentsui.services.FileOperationService; import java.util.Arrays; import java.util.List; -public class DocumentsActivity extends BaseActivity { +public class PickActivity extends BaseActivity { private static final int CODE_FORWARD = 42; private static final String TAG = "DocumentsActivity"; private DocumentsMenuManager mMenuManager; private DirectoryDetails mDetails; - public DocumentsActivity() { + public PickActivity() { super(R.layout.documents_activity, TAG); } @@ -114,7 +127,7 @@ public class DocumentsActivity extends BaseActivity { } @Override - void includeState(State state) { + protected void includeState(State state) { final Intent intent = getIntent(); final String action = intent.getAction(); if (Intent.ACTION_OPEN_DOCUMENT.equals(action)) { @@ -224,7 +237,7 @@ public class DocumentsActivity extends BaseActivity { } @Override - void refreshDirectory(int anim) { + protected void refreshDirectory(int anim) { final FragmentManager fm = getFragmentManager(); final RootInfo root = getCurrentRoot(); final DocumentInfo cwd = getCurrentDirectory(); @@ -273,7 +286,15 @@ public class DocumentsActivity extends BaseActivity { } @Override - void onDirectoryCreated(DocumentInfo doc) { + public void setPending(boolean pending) { + final SaveFragment save = SaveFragment.get(getFragmentManager()); + if (save != null) { + save.setPending(pending); + } + } + + @Override + protected void onDirectoryCreated(DocumentInfo doc) { assert(doc.isDirectory()); openContainerDocument(doc); } @@ -331,7 +352,7 @@ public class DocumentsActivity extends BaseActivity { } @Override - void onTaskFinished(Uri... uris) { + protected void onTaskFinished(Uri... uris) { if (DEBUG) Log.d(TAG, "onFinished() " + Arrays.toString(uris)); final Intent intent = new Intent(); @@ -369,8 +390,8 @@ public class DocumentsActivity extends BaseActivity { } - public static DocumentsActivity get(Fragment fragment) { - return (DocumentsActivity) fragment.getActivity(); + public static PickActivity get(Fragment fragment) { + return (PickActivity) fragment.getActivity(); } @Override @@ -390,10 +411,10 @@ public class DocumentsActivity extends BaseActivity { return mDetails; } - private static final class PickFinishTask extends PairedTask<DocumentsActivity, Void, Void> { + private static final class PickFinishTask extends PairedTask<PickActivity, Void, Void> { private final Uri mUri; - public PickFinishTask(DocumentsActivity activity, Uri uri) { + public PickFinishTask(PickActivity activity, Uri uri) { super(activity); mUri = uri; } @@ -410,10 +431,10 @@ public class DocumentsActivity extends BaseActivity { } } - private static final class ExistingFinishTask extends PairedTask<DocumentsActivity, Void, Void> { + private static final class ExistingFinishTask extends PairedTask<PickActivity, Void, Void> { private final Uri[] mUris; - public ExistingFinishTask(DocumentsActivity activity, Uri... uris) { + public ExistingFinishTask(PickActivity activity, Uri... uris) { super(activity); mUris = uris; } @@ -433,11 +454,11 @@ public class DocumentsActivity extends BaseActivity { /** * Task that creates a new document in the background. */ - private static final class CreateFinishTask extends PairedTask<DocumentsActivity, Void, Uri> { + private static final class CreateFinishTask extends PairedTask<PickActivity, Void, Uri> { private final String mMimeType; private final String mDisplayName; - public CreateFinishTask(DocumentsActivity activity, String mimeType, String displayName) { + public CreateFinishTask(PickActivity activity, String mimeType, String displayName) { super(activity); mMimeType = mimeType; mDisplayName = displayName; diff --git a/src/com/android/documentsui/SaveFragment.java b/src/com/android/documentsui/picker/SaveFragment.java index a37590d2e..a8f2f88ed 100644 --- a/src/com/android/documentsui/SaveFragment.java +++ b/src/com/android/documentsui/picker/SaveFragment.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.documentsui; +package com.android.documentsui.picker; import android.app.Fragment; import android.app.FragmentManager; @@ -33,12 +33,14 @@ import android.widget.EditText; import android.widget.ImageView; import android.widget.ProgressBar; +import com.android.documentsui.IconUtils; +import com.android.documentsui.R; import com.android.documentsui.model.DocumentInfo; /** * Display document title editor and save button. */ -public class SaveFragment extends Fragment { +class SaveFragment extends Fragment { public static final String TAG = "SaveFragment"; private DocumentInfo mReplaceTarget; @@ -50,7 +52,7 @@ public class SaveFragment extends Fragment { private static final String EXTRA_MIME_TYPE = "mime_type"; private static final String EXTRA_DISPLAY_NAME = "display_name"; - public static void show(FragmentManager fm, String mimeType, String displayName) { + static void show(FragmentManager fm, String mimeType, String displayName) { final Bundle args = new Bundle(); args.putString(EXTRA_MIME_TYPE, mimeType); args.putString(EXTRA_DISPLAY_NAME, displayName); @@ -147,7 +149,7 @@ public class SaveFragment extends Fragment { }; private void performSave() { - final DocumentsActivity activity = DocumentsActivity.get(SaveFragment.this); + final PickActivity activity = PickActivity.get(SaveFragment.this); if (mReplaceTarget != null) { activity.onSaveRequested(mReplaceTarget); } else { diff --git a/src/com/android/documentsui/services/Job.java b/src/com/android/documentsui/services/Job.java index 14ae66e6f..24a95c6cf 100644 --- a/src/com/android/documentsui/services/Job.java +++ b/src/com/android/documentsui/services/Job.java @@ -41,7 +41,7 @@ import android.provider.DocumentsContract; import android.util.Log; import com.android.documentsui.clipping.UrisSupplier; -import com.android.documentsui.FilesActivity; +import com.android.documentsui.manager.ManageActivity; import com.android.documentsui.Metrics; import com.android.documentsui.OperationDialogFragment; import com.android.documentsui.R; @@ -298,7 +298,7 @@ abstract public class Job implements Runnable { * Creates an intent for navigating back to the destination directory. */ Intent buildNavigateIntent(String tag) { - Intent intent = new Intent(service, FilesActivity.class); + Intent intent = new Intent(service, ManageActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setAction(DocumentsContract.ACTION_BROWSE); intent.setData(getDataUriForIntent(tag)); diff --git a/tests/src/com/android/documentsui/FileManagementUiTest.java b/tests/src/com/android/documentsui/FileManagementUiTest.java index 623f68ae7..7beeea33e 100644 --- a/tests/src/com/android/documentsui/FileManagementUiTest.java +++ b/tests/src/com/android/documentsui/FileManagementUiTest.java @@ -25,11 +25,13 @@ import android.support.test.filters.Suppress; import android.test.suitebuilder.annotation.LargeTest; import android.view.KeyEvent; +import com.android.documentsui.manager.ManageActivity; + @LargeTest -public class FileManagementUiTest extends ActivityTest<FilesActivity> { +public class FileManagementUiTest extends ActivityTest<ManageActivity> { public FileManagementUiTest() { - super(FilesActivity.class); + super(ManageActivity.class); } @Override diff --git a/tests/src/com/android/documentsui/FilesActivityDefaultsUiTest.java b/tests/src/com/android/documentsui/FilesActivityDefaultsUiTest.java index d0ec9d716..6ad7e11d0 100644 --- a/tests/src/com/android/documentsui/FilesActivityDefaultsUiTest.java +++ b/tests/src/com/android/documentsui/FilesActivityDefaultsUiTest.java @@ -23,13 +23,14 @@ import android.content.Intent; import android.provider.DocumentsContract; import android.test.suitebuilder.annotation.LargeTest; +import com.android.documentsui.manager.ManageActivity; import com.android.documentsui.model.RootInfo; @LargeTest -public class FilesActivityDefaultsUiTest extends ActivityTest<FilesActivity> { +public class FilesActivityDefaultsUiTest extends ActivityTest<ManageActivity> { public FilesActivityDefaultsUiTest() { - super(FilesActivity.class); + super(ManageActivity.class); } @Override diff --git a/tests/src/com/android/documentsui/FilesActivityUiTest.java b/tests/src/com/android/documentsui/FilesActivityUiTest.java index cdee5fcd1..4454e208b 100644 --- a/tests/src/com/android/documentsui/FilesActivityUiTest.java +++ b/tests/src/com/android/documentsui/FilesActivityUiTest.java @@ -20,11 +20,13 @@ import android.net.Uri; import android.os.RemoteException; import android.test.suitebuilder.annotation.LargeTest; +import com.android.documentsui.manager.ManageActivity; + @LargeTest -public class FilesActivityUiTest extends ActivityTest<FilesActivity> { +public class FilesActivityUiTest extends ActivityTest<ManageActivity> { public FilesActivityUiTest() { - super(FilesActivity.class); + super(ManageActivity.class); } @Override diff --git a/tests/src/com/android/documentsui/IntegratedDownloadsUiTest.java b/tests/src/com/android/documentsui/IntegratedDownloadsUiTest.java index ef4a68ddb..5462461b8 100644 --- a/tests/src/com/android/documentsui/IntegratedDownloadsUiTest.java +++ b/tests/src/com/android/documentsui/IntegratedDownloadsUiTest.java @@ -26,12 +26,14 @@ import android.test.suitebuilder.annotation.LargeTest; import android.test.suitebuilder.annotation.Suppress; import android.view.MotionEvent; +import com.android.documentsui.manager.ManageActivity; + // TODO: As of this writing all tests in this class are disabled. Please fix. @LargeTest -public class IntegratedDownloadsUiTest extends ActivityTest<FilesActivity> { +public class IntegratedDownloadsUiTest extends ActivityTest<ManageActivity> { public IntegratedDownloadsUiTest() { - super(FilesActivity.class); + super(ManageActivity.class); } // We don't really need to test the entirety of download support diff --git a/tests/src/com/android/documentsui/KeyboardNavigationUiTest.java b/tests/src/com/android/documentsui/KeyboardNavigationUiTest.java index 76e8c96bb..c45eaed9a 100644 --- a/tests/src/com/android/documentsui/KeyboardNavigationUiTest.java +++ b/tests/src/com/android/documentsui/KeyboardNavigationUiTest.java @@ -22,11 +22,13 @@ import android.test.suitebuilder.annotation.LargeTest; import android.test.suitebuilder.annotation.Suppress; import android.view.KeyEvent; +import com.android.documentsui.manager.ManageActivity; + @LargeTest -public class KeyboardNavigationUiTest extends ActivityTest<FilesActivity> { +public class KeyboardNavigationUiTest extends ActivityTest<ManageActivity> { public KeyboardNavigationUiTest() { - super(FilesActivity.class); + super(ManageActivity.class); } @Override diff --git a/tests/src/com/android/documentsui/RenameDocumentUiTest.java b/tests/src/com/android/documentsui/RenameDocumentUiTest.java index e7ac2934c..c4517b2b1 100644 --- a/tests/src/com/android/documentsui/RenameDocumentUiTest.java +++ b/tests/src/com/android/documentsui/RenameDocumentUiTest.java @@ -19,13 +19,15 @@ package com.android.documentsui; import android.support.test.uiautomator.UiObjectNotFoundException; import android.test.suitebuilder.annotation.LargeTest; +import com.android.documentsui.manager.ManageActivity; + @LargeTest -public class RenameDocumentUiTest extends ActivityTest<FilesActivity> { +public class RenameDocumentUiTest extends ActivityTest<ManageActivity> { private final String newName = "kitties.log"; public RenameDocumentUiTest() { - super(FilesActivity.class); + super(ManageActivity.class); } @Override diff --git a/tests/src/com/android/documentsui/RootsUiTest.java b/tests/src/com/android/documentsui/RootsUiTest.java index 4edfd8a5f..98691dbd0 100644 --- a/tests/src/com/android/documentsui/RootsUiTest.java +++ b/tests/src/com/android/documentsui/RootsUiTest.java @@ -22,13 +22,15 @@ import static com.android.documentsui.StubProvider.ROOT_1_ID; import android.test.suitebuilder.annotation.LargeTest; import android.test.suitebuilder.annotation.Suppress; +import com.android.documentsui.manager.ManageActivity; + @LargeTest -public class RootsUiTest extends ActivityTest<FilesActivity> { +public class RootsUiTest extends ActivityTest<ManageActivity> { private static final String TAG = "RootUiTest"; public RootsUiTest() { - super(FilesActivity.class); + super(ManageActivity.class); } @Override @@ -53,5 +55,4 @@ public class RootsUiTest extends ActivityTest<FilesActivity> { bots.roots.openRoot(ROOT_1_ID); bots.main.assertInActionMode(false); } - } diff --git a/tests/src/com/android/documentsui/SearchViewUiTest.java b/tests/src/com/android/documentsui/SearchViewUiTest.java index 01c6e1e53..39c438397 100644 --- a/tests/src/com/android/documentsui/SearchViewUiTest.java +++ b/tests/src/com/android/documentsui/SearchViewUiTest.java @@ -23,11 +23,13 @@ import android.support.test.filters.Suppress; import android.support.v7.recyclerview.R; import android.test.suitebuilder.annotation.LargeTest; +import com.android.documentsui.manager.ManageActivity; + @LargeTest -public class SearchViewUiTest extends ActivityTest<FilesActivity> { +public class SearchViewUiTest extends ActivityTest<ManageActivity> { public SearchViewUiTest() { - super(FilesActivity.class); + super(ManageActivity.class); } @Override diff --git a/tests/src/com/android/documentsui/SortDocumentUiTest.java b/tests/src/com/android/documentsui/SortDocumentUiTest.java index ac4fa4c12..a20292597 100644 --- a/tests/src/com/android/documentsui/SortDocumentUiTest.java +++ b/tests/src/com/android/documentsui/SortDocumentUiTest.java @@ -19,11 +19,12 @@ package com.android.documentsui; import android.net.Uri; import android.support.test.filters.LargeTest; +import com.android.documentsui.manager.ManageActivity; import com.android.documentsui.sorting.SortDimension; import com.android.documentsui.sorting.SortModel; @LargeTest -public class SortDocumentUiTest extends ActivityTest<FilesActivity> { +public class SortDocumentUiTest extends ActivityTest<ManageActivity> { private static final String DIR_1 = "folder_1"; private static final String DIR_2 = "dir_2"; @@ -47,7 +48,7 @@ public class SortDocumentUiTest extends ActivityTest<FilesActivity> { private static final String[] FILES_IN_MODIFIED_DESC = reverse(FILES); public SortDocumentUiTest() { - super(FilesActivity.class); + super(ManageActivity.class); } @Override |