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

Commit e81dded9 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Unify print test tools into a library."

parents 250907d6 13fba9db
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -36,7 +36,8 @@ LOCAL_STATIC_JAVA_LIBRARIES := \
    ub-uiautomator \
    platform-test-annotations \
    compatibility-device-util \
    truth-prebuilt
    truth-prebuilt \
    print-test-util-lib

LOCAL_JAVA_LIBRARIES := android.test.runner conscrypt telephony-common org.apache.http.legacy
LOCAL_PACKAGE_NAME := FrameworksCoreTests
+8 −4
Original line number Diff line number Diff line
@@ -102,6 +102,7 @@
    <!-- os storage test permissions -->
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
    <uses-permission android:name="android.permission.ASEC_ACCESS" />
    <uses-permission android:name="android.permission.ASEC_ACCESS" />
    <uses-permission android:name="android.permission.ASEC_CREATE" />
    <uses-permission android:name="android.permission.ASEC_DESTROY" />
    <uses-permission android:name="android.permission.ASEC_MOUNT_UNMOUNT" />
@@ -1345,10 +1346,12 @@
            </intent-filter>
        </activity>

        <activity android:name="android.print.PrintTestActivity"/>
        <activity
            android:name="android.print.test.PrintDocumentActivity"
            android:theme="@style/Theme" />

        <service
            android:name="android.print.mockservice.MockPrintService"
            android:name="android.print.test.services.FirstPrintService"
            android:permission="android.permission.BIND_PRINT_SERVICE">
            <intent-filter>
                <action android:name="android.printservice.PrintService" />
@@ -1360,9 +1363,10 @@
        </service>

        <activity
            android:name="android.print.mockservice.SettingsActivity"
            android:name="android.print.test.services.SettingsActivity"
            android:permission="android.permission.START_PRINT_SERVICE_CONFIG_ACTIVITY"
            android:exported="true">
            android:exported="true"
            android:theme="@style/Theme">
        </activity>

        <activity
+0 −324
Original line number Diff line number Diff line
/*
 * Copyright (C) 2016 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package android.print;

import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import static org.junit.Assume.assumeTrue;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.doCallRealMethod;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;

import android.annotation.NonNull;
import android.app.Instrumentation;
import android.content.Context;
import android.content.pm.PackageManager;
import android.os.CancellationSignal;
import android.os.ParcelFileDescriptor;
import android.os.SystemClock;
import android.print.mockservice.PrintServiceCallbacks;
import android.print.mockservice.PrinterDiscoverySessionCallbacks;
import android.print.mockservice.StubbablePrinterDiscoverySession;
import android.printservice.CustomPrinterIconCallback;
import android.printservice.PrintJob;
import android.printservice.PrintService;
import android.support.test.InstrumentationRegistry;
import android.support.test.rule.ActivityTestRule;
import android.support.test.uiautomator.UiDevice;

import org.junit.After;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Rule;
import org.mockito.stubbing.Answer;

import java.io.FileInputStream;
import java.io.IOException;
import java.util.List;
import java.util.concurrent.TimeoutException;

/**
 * This is the base class for print tests.
 */
abstract class BasePrintTest {
    protected static final long OPERATION_TIMEOUT = 30000;
    private static final String PM_CLEAR_SUCCESS_OUTPUT = "Success";
    private static final int CURRENT_USER_ID = -2; // Mirrors UserHandle.USER_CURRENT

    private android.print.PrintJob mPrintJob;

    private CallCounter mStartCallCounter;
    private CallCounter mStartSessionCallCounter;

    private static Instrumentation sInstrumentation;
    private static UiDevice sUiDevice;

    @Rule
    public ActivityTestRule<PrintTestActivity> mActivityRule =
            new ActivityTestRule<>(PrintTestActivity.class, false, true);

    /**
     * {@link Runnable} that can throw and {@link Exception}
     */
    interface Invokable {
        /**
         * Execute the invokable
         *
         * @throws Exception
         */
        void run() throws Exception;
    }

    /**
     * Assert that the invokable throws an expectedException
     *
     * @param invokable The {@link Invokable} to run
     * @param expectedClass The {@link Exception} that is supposed to be thrown
     */
    void assertException(Invokable invokable, Class<? extends Exception> expectedClass)
            throws Exception {
        try {
            invokable.run();
        } catch (Exception e) {
            if (e.getClass().isAssignableFrom(expectedClass)) {
                return;
            } else {
                throw e;
            }
        }

        throw new AssertionError("No exception thrown");
    }

    /**
     * Return the UI device
     *
     * @return the UI device
     */
    public UiDevice getUiDevice() {
        return sUiDevice;
    }

    protected static Instrumentation getInstrumentation() {
        return sInstrumentation;
    }

    @BeforeClass
    public static void setUpClass() throws Exception {
        sInstrumentation = InstrumentationRegistry.getInstrumentation();
        assumeTrue(sInstrumentation.getContext().getPackageManager().hasSystemFeature(
                PackageManager.FEATURE_PRINTING));

        sUiDevice = UiDevice.getInstance(sInstrumentation);

        // Make sure we start with a clean slate.
        clearPrintSpoolerData();

        // Workaround for dexmaker bug: https://code.google.com/p/dexmaker/issues/detail?id=2
        // Dexmaker is used by mockito.
        System.setProperty("dexmaker.dexcache", getInstrumentation()
                .getTargetContext().getCacheDir().getPath());
    }

    @Before
    public void initCounters() throws Exception {
        // Initialize the latches.
        mStartCallCounter = new CallCounter();
        mStartSessionCallCounter = new CallCounter();
    }

    @Before
    public void unlockScreen() throws Exception {
        // Unlock screen.
        runShellCommand(getInstrumentation(), "input keyevent KEYCODE_WAKEUP");
        runShellCommand(getInstrumentation(), "wm dismiss-keyguard");
    }

    @After
    public void exitActivities() throws Exception {
        // Exit print spooler
        getUiDevice().pressBack();
        getUiDevice().pressBack();
    }

    protected android.print.PrintJob print(@NonNull final PrintDocumentAdapter adapter,
            final PrintAttributes attributes) {
        // Initiate printing as if coming from the app.
        getInstrumentation().runOnMainSync(() -> {
            PrintManager printManager = (PrintManager) getActivity()
                    .getSystemService(Context.PRINT_SERVICE);
            mPrintJob = printManager.print("Print job", adapter, attributes);
        });

        return mPrintJob;
    }

    protected void onStartCalled() {
        mStartCallCounter.call();
    }

    protected void onPrinterDiscoverySessionStartCalled() {
        mStartSessionCallCounter.call();
    }

    protected void waitForPrinterDiscoverySessionStartCallbackCalled() {
        waitForCallbackCallCount(mStartSessionCallCounter, 1,
                "Did not get expected call to onStartPrinterDiscoverySession.");
    }

    protected void waitForStartAdapterCallbackCalled() {
        waitForCallbackCallCount(mStartCallCounter, 1, "Did not get expected call to start.");
    }

    private static void waitForCallbackCallCount(CallCounter counter, int count, String message) {
        try {
            counter.waitForCount(count, OPERATION_TIMEOUT);
        } catch (TimeoutException te) {
            fail(message);
        }
    }

    protected PrintTestActivity getActivity() {
        return mActivityRule.getActivity();
    }

    public static String runShellCommand(Instrumentation instrumentation, String cmd)
            throws IOException {
        ParcelFileDescriptor pfd = instrumentation.getUiAutomation().executeShellCommand(cmd);
        byte[] buf = new byte[512];
        int bytesRead;
        FileInputStream fis = new ParcelFileDescriptor.AutoCloseInputStream(pfd);
        StringBuilder stdout = new StringBuilder();
        while ((bytesRead = fis.read(buf)) != -1) {
            stdout.append(new String(buf, 0, bytesRead));
        }
        fis.close();
        return stdout.toString();
    }

    protected static void clearPrintSpoolerData() throws Exception {
        assertTrue("failed to clear print spooler data",
                runShellCommand(getInstrumentation(), String.format(
                        "pm clear --user %d %s", CURRENT_USER_ID,
                        PrintManager.PRINT_SPOOLER_PACKAGE_NAME))
                        .contains(PM_CLEAR_SUCCESS_OUTPUT));
    }

    @SuppressWarnings("unchecked")
    protected PrinterDiscoverySessionCallbacks createMockPrinterDiscoverySessionCallbacks(
            Answer<Void> onStartPrinterDiscovery, Answer<Void> onStopPrinterDiscovery,
            Answer<Void> onValidatePrinters, Answer<Void> onStartPrinterStateTracking,
            Answer<Void> onRequestCustomPrinterIcon, Answer<Void> onStopPrinterStateTracking,
            Answer<Void> onDestroy) {
        PrinterDiscoverySessionCallbacks callbacks = mock(PrinterDiscoverySessionCallbacks.class);

        doCallRealMethod().when(callbacks).setSession(any(StubbablePrinterDiscoverySession.class));
        when(callbacks.getSession()).thenCallRealMethod();

        if (onStartPrinterDiscovery != null) {
            doAnswer(onStartPrinterDiscovery).when(callbacks).onStartPrinterDiscovery(
                    any(List.class));
        }
        if (onStopPrinterDiscovery != null) {
            doAnswer(onStopPrinterDiscovery).when(callbacks).onStopPrinterDiscovery();
        }
        if (onValidatePrinters != null) {
            doAnswer(onValidatePrinters).when(callbacks).onValidatePrinters(
                    any(List.class));
        }
        if (onStartPrinterStateTracking != null) {
            doAnswer(onStartPrinterStateTracking).when(callbacks).onStartPrinterStateTracking(
                    any(PrinterId.class));
        }
        if (onRequestCustomPrinterIcon != null) {
            doAnswer(onRequestCustomPrinterIcon).when(callbacks).onRequestCustomPrinterIcon(
                    any(PrinterId.class), any(CancellationSignal.class),
                    any(CustomPrinterIconCallback.class));
        }
        if (onStopPrinterStateTracking != null) {
            doAnswer(onStopPrinterStateTracking).when(callbacks).onStopPrinterStateTracking(
                    any(PrinterId.class));
        }
        if (onDestroy != null) {
            doAnswer(onDestroy).when(callbacks).onDestroy();
        }

        return callbacks;
    }

    protected PrintServiceCallbacks createMockPrintServiceCallbacks(
            Answer<PrinterDiscoverySessionCallbacks> onCreatePrinterDiscoverySessionCallbacks,
            Answer<Void> onPrintJobQueued, Answer<Void> onRequestCancelPrintJob) {
        final PrintServiceCallbacks service = mock(PrintServiceCallbacks.class);

        doCallRealMethod().when(service).setService(any(PrintService.class));
        when(service.getService()).thenCallRealMethod();

        if (onCreatePrinterDiscoverySessionCallbacks != null) {
            doAnswer(onCreatePrinterDiscoverySessionCallbacks).when(service)
                    .onCreatePrinterDiscoverySessionCallbacks();
        }
        if (onPrintJobQueued != null) {
            doAnswer(onPrintJobQueued).when(service).onPrintJobQueued(any(PrintJob.class));
        }
        if (onRequestCancelPrintJob != null) {
            doAnswer(onRequestCancelPrintJob).when(service).onRequestCancelPrintJob(
                    any(PrintJob.class));
        }

        return service;
    }

    private static final class CallCounter {
        private final Object mLock = new Object();

        private int mCallCount;

        public void call() {
            synchronized (mLock) {
                mCallCount++;
                mLock.notifyAll();
            }
        }

        int getCallCount() {
            synchronized (mLock) {
                return mCallCount;
            }
        }

        public void waitForCount(int count, long timeoutMillis) throws TimeoutException {
            synchronized (mLock) {
                final long startTimeMillis = SystemClock.uptimeMillis();
                while (mCallCount < count) {
                    try {
                        final long elapsedTimeMillis = SystemClock.uptimeMillis() - startTimeMillis;
                        final long remainingTimeMillis = timeoutMillis - elapsedTimeMillis;
                        if (remainingTimeMillis <= 0) {
                            throw new TimeoutException();
                        }
                        mLock.wait(timeoutMillis);
                    } catch (InterruptedException ie) {
                        /* ignore */
                    }
                }
            }
        }
    }
}
+71 −31
Original line number Diff line number Diff line
@@ -16,6 +16,8 @@

package android.print;

import static android.print.test.Utils.assertException;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;

@@ -33,10 +35,11 @@ import android.os.UserHandle;
import android.print.PrintAttributes.Margins;
import android.print.PrintAttributes.MediaSize;
import android.print.PrintAttributes.Resolution;
import android.print.mockservice.MockPrintService;
import android.print.mockservice.PrintServiceCallbacks;
import android.print.mockservice.PrinterDiscoverySessionCallbacks;
import android.print.mockservice.StubbablePrinterDiscoverySession;
import android.print.test.BasePrintTest;
import android.print.test.services.FirstPrintService;
import android.print.test.services.PrintServiceCallbacks;
import android.print.test.services.PrinterDiscoverySessionCallbacks;
import android.print.test.services.StubbablePrinterDiscoverySession;
import android.printservice.recommendation.IRecommendationsChangeListener;
import android.support.test.filters.LargeTest;
import android.support.test.filters.MediumTest;
@@ -149,7 +152,7 @@ public class IPrintManagerParametersTest extends BasePrintTest {

                        session.addPrinters(printers);
                    }
                    onPrinterDiscoverySessionStartCalled();
                    onPrinterDiscoverySessionCreateCalled();
                    return null;
                }, null, null, null, null, null, null),
                null, null);
@@ -200,13 +203,18 @@ public class IPrintManagerParametersTest extends BasePrintTest {
    }

    private void startPrinting() {
        mGoodPrintJob = print(createMockAdapter(), null);
        mGoodPrintJob = print(createMockAdapter(), (PrintAttributes) null);

        // Wait for PrintActivity to be ready
        waitForStartAdapterCallbackCalled();
        waitForAdapterStartCallbackCalled();

        // Wait for printer discovery session to be ready
        waitForPrinterDiscoverySessionStartCallbackCalled();
        waitForPrinterDiscoverySessionCreateCallbackCalled();
    }

    private void endPrinting() {
        getUiDevice().pressBack();
        getUiDevice().pressBack();
    }

    /**
@@ -220,7 +228,7 @@ public class IPrintManagerParametersTest extends BasePrintTest {

    @Before
    public void setUpMockService() throws Exception {
        MockPrintService.setCallbacks(createMockCallbacks());
        FirstPrintService.setCallbacks(createMockCallbacks());

        mIPrintManager = IPrintManager.Stub
                .asInterface(ServiceManager.getService(Context.PRINT_SERVICE));
@@ -231,7 +239,7 @@ public class IPrintManagerParametersTest extends BasePrintTest {
     */
    @LargeTest
    @Test
    public void testGetPrintJobInfo() throws Exception {
    public void testGetPrintJobInfo() throws Throwable {
        startPrinting();

        assertEquals(mGoodPrintJob.getId(), mIPrintManager.getPrintJobInfo(mGoodPrintJob.getId(),
@@ -244,6 +252,8 @@ public class IPrintManagerParametersTest extends BasePrintTest {
                SecurityException.class);

        // Cannot test bad user Id as these tests are allowed to call across users

        endPrinting();
    }

    /**
@@ -251,7 +261,7 @@ public class IPrintManagerParametersTest extends BasePrintTest {
     */
    @LargeTest
    @Test
    public void testGetPrintJobInfos() throws Exception {
    public void testGetPrintJobInfos() throws Throwable {
        startPrinting();

        List<PrintJobInfo> infos = mIPrintManager.getPrintJobInfos(mAppId, mUserId);
@@ -269,6 +279,8 @@ public class IPrintManagerParametersTest extends BasePrintTest {
                SecurityException.class);

        // Cannot test bad user Id as these tests are allowed to call across users

        endPrinting();
    }

    /**
@@ -276,7 +288,7 @@ public class IPrintManagerParametersTest extends BasePrintTest {
     */
    @LargeTest
    @Test
    public void testPrint() throws Exception {
    public void testPrint() throws Throwable {
        final String name = "dummy print job";

        final IPrintDocumentAdapter adapter = new PrintManager
@@ -303,6 +315,8 @@ public class IPrintManagerParametersTest extends BasePrintTest {
                getActivity().getPackageName(), BAD_APP_ID, mUserId), SecurityException.class);

        // Cannot test bad user Id as these tests are allowed to call across users

        endPrinting();
    }

    /**
@@ -310,7 +324,7 @@ public class IPrintManagerParametersTest extends BasePrintTest {
     */
    @LargeTest
    @Test
    public void testCancelPrintJob() throws Exception {
    public void testCancelPrintJob() throws Throwable {
        startPrinting();

        // Invalid print jobs IDs do not produce an exception
@@ -325,6 +339,8 @@ public class IPrintManagerParametersTest extends BasePrintTest {

        // Must be last as otherwise mGoodPrintJob will not be good anymore
        mIPrintManager.cancelPrintJob(mGoodPrintJob.getId(), mAppId, mUserId);

        endPrinting();
    }

    /**
@@ -332,7 +348,7 @@ public class IPrintManagerParametersTest extends BasePrintTest {
     */
    @LargeTest
    @Test
    public void testRestartPrintJob() throws Exception {
    public void testRestartPrintJob() throws Throwable {
        startPrinting();

        mIPrintManager.restartPrintJob(mGoodPrintJob.getId(), mAppId, mUserId);
@@ -346,6 +362,8 @@ public class IPrintManagerParametersTest extends BasePrintTest {
                SecurityException.class);

        // Cannot test bad user Id as these tests are allowed to call across users

        endPrinting();
    }

    /**
@@ -353,7 +371,8 @@ public class IPrintManagerParametersTest extends BasePrintTest {
     */
    @MediumTest
    @Test
    public void testAddPrintJobStateChangeListener() throws Exception {
    @NoActivity
    public void testAddPrintJobStateChangeListener() throws Throwable {
        final IPrintJobStateChangeListener listener = createMockIPrintJobStateChangeListener();

        mIPrintManager.addPrintJobStateChangeListener(listener, mAppId, mUserId);
@@ -373,7 +392,8 @@ public class IPrintManagerParametersTest extends BasePrintTest {
     */
    @MediumTest
    @Test
    public void testRemovePrintJobStateChangeListener() throws Exception {
    @NoActivity
    public void testRemovePrintJobStateChangeListener() throws Throwable {
        final IPrintJobStateChangeListener listener = createMockIPrintJobStateChangeListener();

        mIPrintManager.addPrintJobStateChangeListener(listener, mAppId, mUserId);
@@ -394,7 +414,8 @@ public class IPrintManagerParametersTest extends BasePrintTest {
     */
    @MediumTest
    @Test
    public void testAddPrintServicesChangeListener() throws Exception {
    @NoActivity
    public void testAddPrintServicesChangeListener() throws Throwable {
        final IPrintServicesChangeListener listener = createMockIPrintServicesChangeListener();

        assertException(() ->  mIPrintManager.addPrintServicesChangeListener(listener, mUserId),
@@ -411,7 +432,8 @@ public class IPrintManagerParametersTest extends BasePrintTest {
     */
    @MediumTest
    @Test
    public void testRemovePrintServicesChangeListener() throws Exception {
    @NoActivity
    public void testRemovePrintServicesChangeListener() throws Throwable {
        final IPrintServicesChangeListener listener = createMockIPrintServicesChangeListener();

        assertException(() ->  mIPrintManager.removePrintServicesChangeListener(listener, mUserId),
@@ -426,7 +448,8 @@ public class IPrintManagerParametersTest extends BasePrintTest {
     */
    @MediumTest
    @Test
    public void testGetPrintServices() throws Exception {
    @NoActivity
    public void testGetPrintServices() throws Throwable {
        assertException(() -> mIPrintManager.getPrintServices(PrintManager.ALL_SERVICES, mUserId),
                SecurityException.class);

@@ -444,7 +467,8 @@ public class IPrintManagerParametersTest extends BasePrintTest {
     */
    @MediumTest
    @Test
    public void testSetPrintServiceEnabled() throws Exception {
    @NoActivity
    public void testSetPrintServiceEnabled() throws Throwable {
        assertException(
                () -> mIPrintManager.setPrintServiceEnabled(new ComponentName("bad", "name"), true,
                                mUserId), SecurityException.class);
@@ -460,7 +484,8 @@ public class IPrintManagerParametersTest extends BasePrintTest {
     */
    @MediumTest
    @Test
    public void testAddPrintServiceRecommendationsChangeListener() throws Exception {
    @NoActivity
    public void testAddPrintServiceRecommendationsChangeListener() throws Throwable {
        final IRecommendationsChangeListener listener =
                createMockIPrintServiceRecommendationsChangeListener();

@@ -479,7 +504,8 @@ public class IPrintManagerParametersTest extends BasePrintTest {
     */
    @MediumTest
    @Test
    public void testRemovePrintServiceRecommendationsChangeListener() throws Exception {
    @NoActivity
    public void testRemovePrintServiceRecommendationsChangeListener() throws Throwable {
        final IRecommendationsChangeListener listener =
                createMockIPrintServiceRecommendationsChangeListener();

@@ -498,7 +524,8 @@ public class IPrintManagerParametersTest extends BasePrintTest {
     */
    @MediumTest
    @Test
    public void testGetPrintServiceRecommendations() throws Exception {
    @NoActivity
    public void testGetPrintServiceRecommendations() throws Throwable {
        assertException(() -> mIPrintManager.getPrintServiceRecommendations(mUserId),
                SecurityException.class);

@@ -510,7 +537,8 @@ public class IPrintManagerParametersTest extends BasePrintTest {
     */
    @MediumTest
    @Test
    public void testCreatePrinterDiscoverySession() throws Exception {
    @NoActivity
    public void testCreatePrinterDiscoverySession() throws Throwable {
        final IPrinterDiscoveryObserver listener = createMockIPrinterDiscoveryObserver();

        mIPrintManager.createPrinterDiscoverySession(listener, mUserId);
@@ -533,7 +561,7 @@ public class IPrintManagerParametersTest extends BasePrintTest {
     */
    @LargeTest
    @Test
    public void testStartPrinterDiscovery() throws Exception {
    public void testStartPrinterDiscovery() throws Throwable {
        startPrinting();

        final IPrinterDiscoveryObserver listener = createMockIPrinterDiscoveryObserver();
@@ -562,6 +590,8 @@ public class IPrintManagerParametersTest extends BasePrintTest {
                NullPointerException.class);

        // Cannot test bad user Id as these tests are allowed to call across users

        endPrinting();
    }

    /**
@@ -569,7 +599,8 @@ public class IPrintManagerParametersTest extends BasePrintTest {
     */
    @MediumTest
    @Test
    public void testStopPrinterDiscovery() throws Exception {
    @NoActivity
    public void testStopPrinterDiscovery() throws Throwable {
        final IPrinterDiscoveryObserver listener = createMockIPrinterDiscoveryObserver();

        mIPrintManager.startPrinterDiscovery(listener, null, mUserId);
@@ -590,7 +621,7 @@ public class IPrintManagerParametersTest extends BasePrintTest {
     */
    @LargeTest
    @Test
    public void testValidatePrinters() throws Exception {
    public void testValidatePrinters() throws Throwable {
        startPrinting();

        final List<PrinterId> goodPrinters = new ArrayList<>();
@@ -617,6 +648,8 @@ public class IPrintManagerParametersTest extends BasePrintTest {
                NullPointerException.class);

        // Cannot test bad user Id as these tests are allowed to call across users

        endPrinting();
    }

    /**
@@ -624,7 +657,7 @@ public class IPrintManagerParametersTest extends BasePrintTest {
     */
    @LargeTest
    @Test
    public void testStartPrinterStateTracking() throws Exception {
    public void testStartPrinterStateTracking() throws Throwable {
        startPrinting();

        mIPrintManager.startPrinterStateTracking(mGoodPrinterId, mUserId);
@@ -636,6 +669,8 @@ public class IPrintManagerParametersTest extends BasePrintTest {
                NullPointerException.class);

        // Cannot test bad user Id as these tests are allowed to call across users

        endPrinting();
    }

    /**
@@ -643,7 +678,7 @@ public class IPrintManagerParametersTest extends BasePrintTest {
     */
    @LargeTest
    @Test
    public void testGetCustomPrinterIcon() throws Exception {
    public void testGetCustomPrinterIcon() throws Throwable {
        startPrinting();

        mIPrintManager.getCustomPrinterIcon(mGoodPrinterId, mUserId);
@@ -655,6 +690,8 @@ public class IPrintManagerParametersTest extends BasePrintTest {
                NullPointerException.class);

        // Cannot test bad user Id as these tests are allowed to call across users

        endPrinting();
    }

    /**
@@ -662,7 +699,7 @@ public class IPrintManagerParametersTest extends BasePrintTest {
     */
    @LargeTest
    @Test
    public void testStopPrinterStateTracking() throws Exception {
    public void testStopPrinterStateTracking() throws Throwable {
        startPrinting();

        mIPrintManager.startPrinterStateTracking(mGoodPrinterId, mUserId);
@@ -679,6 +716,8 @@ public class IPrintManagerParametersTest extends BasePrintTest {
                NullPointerException.class);

        // Cannot test bad user Id as these tests are allowed to call across users

        endPrinting();
    }

    /**
@@ -686,7 +725,8 @@ public class IPrintManagerParametersTest extends BasePrintTest {
     */
    @MediumTest
    @Test
    public void testDestroyPrinterDiscoverySession() throws Exception {
    @NoActivity
    public void testDestroyPrinterDiscoverySession() throws Throwable {
        final IPrinterDiscoveryObserver listener = createMockIPrinterDiscoveryObserver();

        mIPrintManager.createPrinterDiscoverySession(listener, mUserId);
+0 −32

File deleted.

Preview size limit exceeded, changes collapsed.

Loading