Loading packages/DocumentsUI/src/com/android/documentsui/BaseActivity.java +6 −5 Original line number Diff line number Diff line Loading @@ -317,6 +317,12 @@ public abstract class BaseActivity extends Activity CreateDirectoryFragment.show(getFragmentManager()); } void onDirectoryCreated(DocumentInfo doc) { // By default we do nothing, just let the new directory appear. // DocumentsActivity auto-opens directories after creating them // As that is more attuned to the "picker" use cases it supports. } /** * Returns true if a directory can be created in the current location. * @return Loading @@ -331,11 +337,6 @@ public abstract class BaseActivity extends Activity && !root.isDownloads(); } void onDirectoryCreated(DocumentInfo doc) { checkArgument(doc.isDirectory()); openContainerDocument(doc); } void openContainerDocument(DocumentInfo doc) { checkArgument(doc.isContainer()); mState.pushDocument(doc); Loading packages/DocumentsUI/src/com/android/documentsui/DocumentsActivity.java +7 −0 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ import static com.android.documentsui.State.ACTION_OPEN; import static com.android.documentsui.State.ACTION_OPEN_TREE; import static com.android.documentsui.State.ACTION_PICK_COPY_DESTINATION; import static com.android.documentsui.dirlist.DirectoryFragment.ANIM_NONE; import static com.android.internal.util.Preconditions.checkArgument; import android.app.Activity; import android.app.Fragment; Loading Loading @@ -316,6 +317,12 @@ public class DocumentsActivity extends BaseActivity { .executeOnExecutor(getExecutorForCurrentDirectory()); } @Override void onDirectoryCreated(DocumentInfo doc) { checkArgument(doc.isDirectory()); openContainerDocument(doc); } void onSaveRequested(String mimeType, String displayName) { new CreateFinishTask(this, mimeType, displayName) .executeOnExecutor(getExecutorForCurrentDirectory()); Loading packages/DocumentsUI/src/com/android/documentsui/FilesActivity.java +0 −1 Original line number Diff line number Diff line Loading @@ -33,7 +33,6 @@ import android.net.Uri; import android.os.Bundle; import android.os.Parcelable; import android.provider.DocumentsContract; import android.support.annotation.Nullable; import android.support.design.widget.Snackbar; import android.util.Log; import android.view.KeyEvent; Loading packages/DocumentsUI/tests/src/com/android/documentsui/ActivityTest.java +32 −11 Original line number Diff line number Diff line Loading @@ -21,21 +21,22 @@ import static com.android.documentsui.StubProvider.ROOT_0_ID; import static com.android.documentsui.StubProvider.ROOT_1_ID; import android.app.Activity; import android.app.Instrumentation; import android.content.ContentProviderClient; import android.content.ContentResolver; import android.content.Context; import android.content.Intent; import android.os.RemoteException; import android.provider.DocumentsContract.Document; import android.support.test.uiautomator.By; import android.support.test.uiautomator.Configurator; import android.support.test.uiautomator.UiDevice; import android.support.test.uiautomator.UiObjectNotFoundException; import android.support.test.uiautomator.Until; import android.test.ActivityInstrumentationTestCase2; import android.view.MotionEvent; import com.android.documentsui.bots.DirectoryListBot; import com.android.documentsui.bots.KeyboardBot; import com.android.documentsui.bots.RootsListBot; import com.android.documentsui.bots.UiBot; import com.android.documentsui.model.RootInfo; /** Loading @@ -56,7 +57,7 @@ public abstract class ActivityTest<T extends Activity> extends ActivityInstrumen public static final String fileName4 = "poodles.text"; public static final String fileNameNoRename = "NO_RENAMEfile.txt"; public UiBot bot; public Bots bots; public UiDevice device; public Context context; Loading @@ -76,10 +77,11 @@ public abstract class ActivityTest<T extends Activity> extends ActivityInstrumen device = UiDevice.getInstance(getInstrumentation()); // NOTE: Must be the "target" context, else security checks in content provider will fail. context = getInstrumentation().getTargetContext(); bot = new UiBot(device, context, TIMEOUT); bots = new Bots(device, context, TIMEOUT); Configurator.getInstance().setToolType(MotionEvent.TOOL_TYPE_MOUSE); bot.revealLauncher(); bots.main.revealLauncher(); mResolver = context.getContentResolver(); mClient = mResolver.acquireUnstableContentProviderClient(DEFAULT_AUTHORITY); Loading @@ -90,7 +92,7 @@ public abstract class ActivityTest<T extends Activity> extends ActivityInstrumen launchActivity(); bot.revealApp(); bots.main.revealApp(); resetStorage(); } Loading Loading @@ -125,12 +127,31 @@ public abstract class ActivityTest<T extends Activity> extends ActivityInstrumen } void assertDefaultContentOfTestDir0() throws UiObjectNotFoundException { bot.assertDocumentsCount(ROOT_0_ID, 4); bot.assertHasDocuments(fileName1, fileName2, dirName1, fileNameNoRename); bots.roots.openRoot(ROOT_0_ID); bots.directory.assertDocumentsCount(4); bots.directory.assertDocumentsPresent(fileName1, fileName2, dirName1, fileNameNoRename); } void assertDefaultContentOfTestDir1() throws UiObjectNotFoundException { bot.assertDocumentsCount(ROOT_1_ID, 2); bot.assertHasDocuments(fileName3, fileName4); bots.roots.openRoot(ROOT_1_ID); bots.directory.assertDocumentsCount(2); bots.directory.assertDocumentsPresent(fileName3, fileName4); } /** * Handy collection of bots for working with Files app. */ public static final class Bots { public final UiBot main; public final RootsListBot roots; public final DirectoryListBot directory; public final KeyboardBot keyboard; private Bots(UiDevice device, Context context, int timeout) { this.main = new UiBot(device, context, TIMEOUT); this.roots = new RootsListBot(device, context, TIMEOUT); this.directory = new DirectoryListBot(device, context, TIMEOUT); this.keyboard = new KeyboardBot(device, context, TIMEOUT); } } } packages/DocumentsUI/tests/src/com/android/documentsui/DownloadsActivityUiTest.java +13 −12 Original line number Diff line number Diff line Loading @@ -52,13 +52,13 @@ public class DownloadsActivityUiTest extends ActivityTest<DownloadsActivity> { public void testWindowTitle() throws Exception { initTestFiles(); bot.assertWindowTitle(ROOT_0_ID); bots.main.assertWindowTitle(ROOT_0_ID); } public void testFilesListed() throws Exception { initTestFiles(); bot.assertHasDocuments("file0.log", "file1.png", "file2.csv"); bots.directory.assertDocumentsPresent("file0.log", "file1.png", "file2.csv"); } public void testFilesList_LiveUpdate() throws Exception { Loading @@ -66,30 +66,31 @@ public class DownloadsActivityUiTest extends ActivityTest<DownloadsActivity> { mDocsHelper.createDocument(rootDir0, "yummers/sandwich", "Ham & Cheese.sandwich"); bot.waitForDocument("Ham & Cheese.sandwich"); bot.assertHasDocuments("file0.log", "file1.png", "file2.csv", "Ham & Cheese.sandwich"); bots.directory.waitForDocument("Ham & Cheese.sandwich"); bots.directory.assertDocumentsPresent( "file0.log", "file1.png", "file2.csv", "Ham & Cheese.sandwich"); } public void testDeleteDocument() throws Exception { initTestFiles(); bot.clickDocument("file1.png"); bots.directory.clickDocument("file1.png"); device.waitForIdle(); bot.menuDelete().click(); bots.main.menuDelete().click(); bot.waitForDeleteSnackbar(); assertFalse(bot.hasDocuments("file1.png")); bots.directory.waitForDeleteSnackbar(); bots.directory.assertDocumentsAbsent("file1.png"); bot.waitForDeleteSnackbarGone(); assertFalse(bot.hasDocuments("file1.png")); bots.directory.waitForDeleteSnackbarGone(); bots.directory.assertDocumentsAbsent("file1.png"); } public void testSupportsShare() throws Exception { initTestFiles(); bot.clickDocument("file1.png"); bots.directory.clickDocument("file1.png"); device.waitForIdle(); assertNotNull(bot.menuShare()); assertNotNull(bots.main.menuShare()); } public void testClosesOnBack() throws Exception { Loading Loading
packages/DocumentsUI/src/com/android/documentsui/BaseActivity.java +6 −5 Original line number Diff line number Diff line Loading @@ -317,6 +317,12 @@ public abstract class BaseActivity extends Activity CreateDirectoryFragment.show(getFragmentManager()); } void onDirectoryCreated(DocumentInfo doc) { // By default we do nothing, just let the new directory appear. // DocumentsActivity auto-opens directories after creating them // As that is more attuned to the "picker" use cases it supports. } /** * Returns true if a directory can be created in the current location. * @return Loading @@ -331,11 +337,6 @@ public abstract class BaseActivity extends Activity && !root.isDownloads(); } void onDirectoryCreated(DocumentInfo doc) { checkArgument(doc.isDirectory()); openContainerDocument(doc); } void openContainerDocument(DocumentInfo doc) { checkArgument(doc.isContainer()); mState.pushDocument(doc); Loading
packages/DocumentsUI/src/com/android/documentsui/DocumentsActivity.java +7 −0 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ import static com.android.documentsui.State.ACTION_OPEN; import static com.android.documentsui.State.ACTION_OPEN_TREE; import static com.android.documentsui.State.ACTION_PICK_COPY_DESTINATION; import static com.android.documentsui.dirlist.DirectoryFragment.ANIM_NONE; import static com.android.internal.util.Preconditions.checkArgument; import android.app.Activity; import android.app.Fragment; Loading Loading @@ -316,6 +317,12 @@ public class DocumentsActivity extends BaseActivity { .executeOnExecutor(getExecutorForCurrentDirectory()); } @Override void onDirectoryCreated(DocumentInfo doc) { checkArgument(doc.isDirectory()); openContainerDocument(doc); } void onSaveRequested(String mimeType, String displayName) { new CreateFinishTask(this, mimeType, displayName) .executeOnExecutor(getExecutorForCurrentDirectory()); Loading
packages/DocumentsUI/src/com/android/documentsui/FilesActivity.java +0 −1 Original line number Diff line number Diff line Loading @@ -33,7 +33,6 @@ import android.net.Uri; import android.os.Bundle; import android.os.Parcelable; import android.provider.DocumentsContract; import android.support.annotation.Nullable; import android.support.design.widget.Snackbar; import android.util.Log; import android.view.KeyEvent; Loading
packages/DocumentsUI/tests/src/com/android/documentsui/ActivityTest.java +32 −11 Original line number Diff line number Diff line Loading @@ -21,21 +21,22 @@ import static com.android.documentsui.StubProvider.ROOT_0_ID; import static com.android.documentsui.StubProvider.ROOT_1_ID; import android.app.Activity; import android.app.Instrumentation; import android.content.ContentProviderClient; import android.content.ContentResolver; import android.content.Context; import android.content.Intent; import android.os.RemoteException; import android.provider.DocumentsContract.Document; import android.support.test.uiautomator.By; import android.support.test.uiautomator.Configurator; import android.support.test.uiautomator.UiDevice; import android.support.test.uiautomator.UiObjectNotFoundException; import android.support.test.uiautomator.Until; import android.test.ActivityInstrumentationTestCase2; import android.view.MotionEvent; import com.android.documentsui.bots.DirectoryListBot; import com.android.documentsui.bots.KeyboardBot; import com.android.documentsui.bots.RootsListBot; import com.android.documentsui.bots.UiBot; import com.android.documentsui.model.RootInfo; /** Loading @@ -56,7 +57,7 @@ public abstract class ActivityTest<T extends Activity> extends ActivityInstrumen public static final String fileName4 = "poodles.text"; public static final String fileNameNoRename = "NO_RENAMEfile.txt"; public UiBot bot; public Bots bots; public UiDevice device; public Context context; Loading @@ -76,10 +77,11 @@ public abstract class ActivityTest<T extends Activity> extends ActivityInstrumen device = UiDevice.getInstance(getInstrumentation()); // NOTE: Must be the "target" context, else security checks in content provider will fail. context = getInstrumentation().getTargetContext(); bot = new UiBot(device, context, TIMEOUT); bots = new Bots(device, context, TIMEOUT); Configurator.getInstance().setToolType(MotionEvent.TOOL_TYPE_MOUSE); bot.revealLauncher(); bots.main.revealLauncher(); mResolver = context.getContentResolver(); mClient = mResolver.acquireUnstableContentProviderClient(DEFAULT_AUTHORITY); Loading @@ -90,7 +92,7 @@ public abstract class ActivityTest<T extends Activity> extends ActivityInstrumen launchActivity(); bot.revealApp(); bots.main.revealApp(); resetStorage(); } Loading Loading @@ -125,12 +127,31 @@ public abstract class ActivityTest<T extends Activity> extends ActivityInstrumen } void assertDefaultContentOfTestDir0() throws UiObjectNotFoundException { bot.assertDocumentsCount(ROOT_0_ID, 4); bot.assertHasDocuments(fileName1, fileName2, dirName1, fileNameNoRename); bots.roots.openRoot(ROOT_0_ID); bots.directory.assertDocumentsCount(4); bots.directory.assertDocumentsPresent(fileName1, fileName2, dirName1, fileNameNoRename); } void assertDefaultContentOfTestDir1() throws UiObjectNotFoundException { bot.assertDocumentsCount(ROOT_1_ID, 2); bot.assertHasDocuments(fileName3, fileName4); bots.roots.openRoot(ROOT_1_ID); bots.directory.assertDocumentsCount(2); bots.directory.assertDocumentsPresent(fileName3, fileName4); } /** * Handy collection of bots for working with Files app. */ public static final class Bots { public final UiBot main; public final RootsListBot roots; public final DirectoryListBot directory; public final KeyboardBot keyboard; private Bots(UiDevice device, Context context, int timeout) { this.main = new UiBot(device, context, TIMEOUT); this.roots = new RootsListBot(device, context, TIMEOUT); this.directory = new DirectoryListBot(device, context, TIMEOUT); this.keyboard = new KeyboardBot(device, context, TIMEOUT); } } }
packages/DocumentsUI/tests/src/com/android/documentsui/DownloadsActivityUiTest.java +13 −12 Original line number Diff line number Diff line Loading @@ -52,13 +52,13 @@ public class DownloadsActivityUiTest extends ActivityTest<DownloadsActivity> { public void testWindowTitle() throws Exception { initTestFiles(); bot.assertWindowTitle(ROOT_0_ID); bots.main.assertWindowTitle(ROOT_0_ID); } public void testFilesListed() throws Exception { initTestFiles(); bot.assertHasDocuments("file0.log", "file1.png", "file2.csv"); bots.directory.assertDocumentsPresent("file0.log", "file1.png", "file2.csv"); } public void testFilesList_LiveUpdate() throws Exception { Loading @@ -66,30 +66,31 @@ public class DownloadsActivityUiTest extends ActivityTest<DownloadsActivity> { mDocsHelper.createDocument(rootDir0, "yummers/sandwich", "Ham & Cheese.sandwich"); bot.waitForDocument("Ham & Cheese.sandwich"); bot.assertHasDocuments("file0.log", "file1.png", "file2.csv", "Ham & Cheese.sandwich"); bots.directory.waitForDocument("Ham & Cheese.sandwich"); bots.directory.assertDocumentsPresent( "file0.log", "file1.png", "file2.csv", "Ham & Cheese.sandwich"); } public void testDeleteDocument() throws Exception { initTestFiles(); bot.clickDocument("file1.png"); bots.directory.clickDocument("file1.png"); device.waitForIdle(); bot.menuDelete().click(); bots.main.menuDelete().click(); bot.waitForDeleteSnackbar(); assertFalse(bot.hasDocuments("file1.png")); bots.directory.waitForDeleteSnackbar(); bots.directory.assertDocumentsAbsent("file1.png"); bot.waitForDeleteSnackbarGone(); assertFalse(bot.hasDocuments("file1.png")); bots.directory.waitForDeleteSnackbarGone(); bots.directory.assertDocumentsAbsent("file1.png"); } public void testSupportsShare() throws Exception { initTestFiles(); bot.clickDocument("file1.png"); bots.directory.clickDocument("file1.png"); device.waitForIdle(); assertNotNull(bot.menuShare()); assertNotNull(bots.main.menuShare()); } public void testClosesOnBack() throws Exception { Loading