Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cddd034c authored by Steve McKay's avatar Steve McKay Committed by Android (Google) Code Review
Browse files

Merge "Move directory and roots support to own ui bots." into nyc-dev

parents 43c452ee b9a20d10
Loading
Loading
Loading
Loading
+6 −5
Original line number Diff line number Diff line
@@ -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
@@ -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);
+7 −0
Original line number Diff line number Diff line
@@ -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;
@@ -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());
+0 −1
Original line number Diff line number Diff line
@@ -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;
+32 −11
Original line number Diff line number Diff line
@@ -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;

/**
@@ -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;

@@ -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);
@@ -90,7 +92,7 @@ public abstract class ActivityTest<T extends Activity> extends ActivityInstrumen

        launchActivity();

        bot.revealApp();
        bots.main.revealApp();
        resetStorage();
    }

@@ -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);
        }
    }
}
+13 −12
Original line number Diff line number Diff line
@@ -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 {
@@ -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