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

Commit 80897d8a authored by Takamasa Kuramitsu's avatar Takamasa Kuramitsu Committed by android-build-merger
Browse files

Make CancelFromNotificationUiTest more stable am: ff23d0bc am: c05acec4

am: f9342993

Change-Id: I8442460e71b5721a2112e437f3680a9676d67762
parents 122b82bd f9342993
Loading
Loading
Loading
Loading
+25 −69
Original line number Diff line number Diff line
@@ -20,29 +20,19 @@ import static com.android.documentsui.StubProvider.EXTRA_SIZE;
import static com.android.documentsui.StubProvider.ROOT_0_ID;
import static com.android.documentsui.StubProvider.ROOT_1_ID;

import static android.provider.DocumentsContract.buildDocumentUri;
import android.provider.DocumentsContract;
import com.android.documentsui.archives.ResourcesProvider;

import android.content.ComponentName;
import android.content.Context;
import android.content.BroadcastReceiver;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.BroadcastReceiver;
import android.net.Uri;
import android.os.Bundle;
import android.os.RemoteException;
import android.provider.Settings;
import android.support.test.filters.LargeTest;
import android.support.test.filters.Suppress;
import android.text.TextUtils;
import android.view.KeyEvent;
import android.util.Log;

import com.android.documentsui.files.FilesActivity;
import com.android.documentsui.services.TestNotificationService;
import com.android.documentsui.R;

import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
@@ -54,6 +44,8 @@ import java.util.concurrent.TimeUnit;
*/
@LargeTest
public class CancelFromNotificationUiTest extends ActivityTest<FilesActivity> {
    private static final String TAG = "CancelFromNotificationUiTest";

    private static final String PACKAGE_NAME = "com.android.documentsui.tests";

    private static final String TARGET_FILE = "dummy.data";
@@ -62,14 +54,12 @@ public class CancelFromNotificationUiTest extends ActivityTest<FilesActivity> {

    private static final String ACCESS_APP_NAME = "DocumentsUI Tests";

    private static final String ALLOW = "ALLOW";

    private static final String TURN_OFF = "TURN OFF";

    private static final String COPY = "Copy to…";

    private static final String MOVE = "Move to…";

    private static final int WAIT_TIME_SECONDS = 60;

    private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
@@ -106,6 +96,15 @@ public class CancelFromNotificationUiTest extends ActivityTest<FilesActivity> {
        bundle.putLong(EXTRA_SIZE, 500L);
        mDocsHelper.configure(null, bundle);

        try {
            if (!bots.notifications.isNotificationAccessEnabled(
                    context.getContentResolver(), PACKAGE_NAME)) {
                bots.notifications.setNotificationAccess(getActivity(), ACCESS_APP_NAME, true);
            }
        } catch (Exception e) {
            Log.d(TAG, "Cannot set notification access. ", e);
        }

        initTestFiles();

        IntentFilter filter = new IntentFilter();
@@ -126,11 +125,12 @@ public class CancelFromNotificationUiTest extends ActivityTest<FilesActivity> {

        context.unregisterReceiver(mReceiver);
        try {
            if (isEnableAccessNotification()) {
                disallowNotificationAccess();
            if (bots.notifications.isNotificationAccessEnabled(
                    context.getContentResolver(), PACKAGE_NAME)) {
                bots.notifications.setNotificationAccess(getActivity(), ACCESS_APP_NAME, false);
            }
        } catch (Exception e) {
            // ignore
            Log.d(TAG, "Cannot set notification access. ", e);
        }
        super.tearDown();
    }
@@ -138,9 +138,6 @@ public class CancelFromNotificationUiTest extends ActivityTest<FilesActivity> {
    @Override
    public void initTestFiles() throws RemoteException {
        try {
            if (!isEnableAccessNotification()) {
               allowNotificationAccess();
            }
            createDummyFile();
        } catch (Exception e) {
            fail("Initialization failed. " + e.toString());
@@ -158,54 +155,13 @@ public class CancelFromNotificationUiTest extends ActivityTest<FilesActivity> {
        }
    }

    private void allowNotificationAccess() throws Exception {
        Intent intent = new Intent();
        intent.setAction(Settings.ACTION_NOTIFICATION_LISTENER_SETTINGS);
        getActivity().startActivity(intent);
        device.waitForIdle();

        bots.main.findMenuLabelWithName(ACCESS_APP_NAME).click();
        device.waitForIdle();

        bots.main.findMenuLabelWithName(ALLOW).click();
        bots.keyboard.pressKey(KeyEvent.KEYCODE_BACK);
    }

    private void disallowNotificationAccess() throws Exception {
        Intent intent = new Intent();
        intent.setAction(Settings.ACTION_NOTIFICATION_LISTENER_SETTINGS);
        getActivity().startActivity(intent);
        device.waitForIdle();

        bots.main.findMenuLabelWithName(ACCESS_APP_NAME).click();
        device.waitForIdle();

        bots.main.findMenuLabelWithName(TURN_OFF).click();
        bots.keyboard.pressKey(KeyEvent.KEYCODE_BACK);
    }

    private boolean isEnableAccessNotification() {
        ContentResolver resolver = getActivity().getContentResolver();
        String listeners = Settings.Secure.getString(resolver,"enabled_notification_listeners");

        if (!TextUtils.isEmpty(listeners)) {
            String[] list = listeners.split(":");
            for(String item : list) {
                if(item.startsWith(PACKAGE_NAME)) {
                    return true;
                }
            }
        }
        return false;
    }

    public void testCopyDocument_Cancel() throws Exception {
        bots.roots.openRoot(ROOT_0_ID);

        bots.directory.findDocument(TARGET_FILE);
        device.waitForIdle();

        bots.directory.selectDocument(TARGET_FILE);
        bots.directory.selectDocument(TARGET_FILE, 1);
        device.waitForIdle();

        bots.main.clickToolbarOverflowItem(COPY);
@@ -222,7 +178,7 @@ public class CancelFromNotificationUiTest extends ActivityTest<FilesActivity> {
        bots.directory.findDocument(TARGET_FILE);
        device.waitForIdle();

        bots.directory.selectDocument(TARGET_FILE);
        bots.directory.selectDocument(TARGET_FILE, 1);
        device.waitForIdle();

        bots.main.clickToolbarOverflowItem(COPY);
@@ -233,7 +189,7 @@ public class CancelFromNotificationUiTest extends ActivityTest<FilesActivity> {
        device.waitForIdle();

        try {
            mCountDownLatch.await(60, TimeUnit.SECONDS);
            mCountDownLatch.await(WAIT_TIME_SECONDS, TimeUnit.SECONDS);
        } catch (Exception e) {
            fail("Cannot wait because of error." + e.toString());
        }
@@ -255,7 +211,7 @@ public class CancelFromNotificationUiTest extends ActivityTest<FilesActivity> {
        bots.directory.findDocument(TARGET_FILE);
        device.waitForIdle();

        bots.directory.selectDocument(TARGET_FILE);
        bots.directory.selectDocument(TARGET_FILE, 1);
        device.waitForIdle();

        bots.main.clickToolbarOverflowItem(MOVE);
@@ -272,7 +228,7 @@ public class CancelFromNotificationUiTest extends ActivityTest<FilesActivity> {
        bots.directory.findDocument(TARGET_FILE);
        device.waitForIdle();

        bots.directory.selectDocument(TARGET_FILE);
        bots.directory.selectDocument(TARGET_FILE, 1);
        device.waitForIdle();

        bots.main.clickToolbarOverflowItem(MOVE);
@@ -283,7 +239,7 @@ public class CancelFromNotificationUiTest extends ActivityTest<FilesActivity> {
        device.waitForIdle();

        try {
            mCountDownLatch.await(60, TimeUnit.SECONDS);
            mCountDownLatch.await(WAIT_TIME_SECONDS, TimeUnit.SECONDS);
        } catch (Exception e) {
            fail("Cannot wait because of error." + e.toString());
        }
+20 −65
Original line number Diff line number Diff line
@@ -17,23 +17,17 @@
package com.android.documentsui;

import static com.android.documentsui.StubProvider.ROOT_0_ID;
import static com.android.documentsui.StubProvider.ROOT_1_ID;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.ContentResolver;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.BroadcastReceiver;
import android.net.Uri;
import android.os.Bundle;
import android.os.RemoteException;
import android.provider.Settings;
import android.support.test.filters.LargeTest;
import android.support.test.filters.Suppress;
import android.support.test.uiautomator.Configurator;
import android.text.TextUtils;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.util.Log;

import com.android.documentsui.base.DocumentInfo;
import com.android.documentsui.files.FilesActivity;
@@ -41,7 +35,6 @@ import com.android.documentsui.services.TestNotificationService;

import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.RejectedExecutionException;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import java.util.List;
@@ -53,22 +46,18 @@ import java.util.ArrayList;
*/
@LargeTest
public class FileDeleteUiTest extends ActivityTest<FilesActivity> {
    private static final String TAG = "FileDeleteUiTest";

    private static final String PACKAGE_NAME = "com.android.documentsui.tests";

    private static final String ACCESS_APP_NAME = "DocumentsUI Tests";

    private static final String ALLOW = "ALLOW";

    private static final String TURN_OFF = "TURN OFF";

    private static final String COPY = "Copy to…";

    private static final String MOVE = "Move to…";

    private static final String SELECT_ALL = "Select all";

    private static final int DUMMY_FILE_COUNT = 1000;

    private static final int WAIT_TIME_SECONDS = 60;

    private final List<String> mCopyFileList = new ArrayList<String>();

    private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
@@ -106,6 +95,15 @@ public class FileDeleteUiTest extends ActivityTest<FilesActivity> {
        bundle.putBoolean(StubProvider.EXTRA_ENABLE_ROOT_NOTIFICATION, false);
        mDocsHelper.configure(null, bundle);

        try {
            if (!bots.notifications.isNotificationAccessEnabled(
                    context.getContentResolver(), PACKAGE_NAME)) {
                bots.notifications.setNotificationAccess(getActivity(), ACCESS_APP_NAME, true);
            }
        } catch (Exception e) {
            Log.d(TAG, "Cannot set notification access. ", e);
        }

        initTestFiles();

        IntentFilter filter = new IntentFilter();
@@ -126,11 +124,12 @@ public class FileDeleteUiTest extends ActivityTest<FilesActivity> {

        context.unregisterReceiver(mReceiver);
        try {
            if (isEnableAccessNotification()) {
                disallowNotificationAccess();
            if (bots.notifications.isNotificationAccessEnabled(
                    context.getContentResolver(), PACKAGE_NAME)) {
                bots.notifications.setNotificationAccess(getActivity(), ACCESS_APP_NAME, false);
            }
        } catch (Exception e) {
            // ignore
            Log.d(TAG, "Cannot set notification access. ", e);
        }
        super.tearDown();
    }
@@ -138,9 +137,6 @@ public class FileDeleteUiTest extends ActivityTest<FilesActivity> {
    @Override
    public void initTestFiles() throws RemoteException {
        try {
            if (!isEnableAccessNotification()) {
                allowNotificationAccess();
            }
            createDummyFiles();
        } catch (Exception e) {
            fail("Initialization failed");
@@ -172,47 +168,6 @@ public class FileDeleteUiTest extends ActivityTest<FilesActivity> {
        exec.shutdown();
    }

    private void allowNotificationAccess() throws Exception {
        Intent intent = new Intent();
        intent.setAction(Settings.ACTION_NOTIFICATION_LISTENER_SETTINGS);
        getActivity().startActivity(intent);
        device.waitForIdle();

        bots.main.findMenuLabelWithName(ACCESS_APP_NAME).click();
        device.waitForIdle();

        bots.main.findMenuLabelWithName(ALLOW).click();
        bots.keyboard.pressKey(KeyEvent.KEYCODE_BACK);
    }

    private void disallowNotificationAccess() throws Exception {
        Intent intent = new Intent();
        intent.setAction(Settings.ACTION_NOTIFICATION_LISTENER_SETTINGS);
        getActivity().startActivity(intent);
        device.waitForIdle();

        bots.main.findMenuLabelWithName(ACCESS_APP_NAME).click();
        device.waitForIdle();

        bots.main.findMenuLabelWithName(TURN_OFF).click();
        bots.keyboard.pressKey(KeyEvent.KEYCODE_BACK);
    }

    private boolean isEnableAccessNotification() {
        ContentResolver resolver = getActivity().getContentResolver();
        String listeners = Settings.Secure.getString(
                resolver,"enabled_notification_listeners");
        if (!TextUtils.isEmpty(listeners)) {
            String[] list = listeners.split(":");
            for(String item : list) {
                if(item.startsWith(PACKAGE_NAME)) {
                    return true;
                }
            }
        }
        return false;
    }

    public void testDeleteAllDocument() throws Exception {
        bots.roots.openRoot(ROOT_0_ID);
        bots.main.clickToolbarOverflowItem(SELECT_ALL);
@@ -223,7 +178,7 @@ public class FileDeleteUiTest extends ActivityTest<FilesActivity> {
        device.waitForIdle();

        try {
            mCountDownLatch.await(60, TimeUnit.SECONDS);
            mCountDownLatch.await(WAIT_TIME_SECONDS, TimeUnit.SECONDS);
        } catch (Exception e) {
            fail("Cannot wait because of error." + e.toString());
        }