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

Commit 45602c02 authored by Steve McKay's avatar Steve McKay Committed by android-build-merger
Browse files

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

am: cddd034c

* commit 'cddd034c':
  Move directory and roots support to own ui bots.
parents 45104c92 cddd034c
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