176d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann/* 276d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann * Copyright (C) 2016 The Android Open Source Project 376d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann * 476d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann * Licensed under the Apache License, Version 2.0 (the "License"); 576d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann * you may not use this file except in compliance with the License. 676d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann * You may obtain a copy of the License at 776d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann * 876d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann * http://www.apache.org/licenses/LICENSE-2.0 976d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann * 1076d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann * Unless required by applicable law or agreed to in writing, software 1176d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann * distributed under the License is distributed on an "AS IS" BASIS, 1276d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1376d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann * See the License for the specific language governing permissions and 1476d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann * limitations under the License. 1576d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann */ 1676d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 1776d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmannpackage android.print; 1876d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 1913fba9dbe74de3c207eb55ecf3a28c35736bdc4cPhilip P. Moltmannimport static android.print.test.Utils.assertException; 2013fba9dbe74de3c207eb55ecf3a28c35736bdc4cPhilip P. Moltmann 211eab696fae85bf2fa298f1eb63165b0501dee3d2Philip P. Moltmannimport static org.junit.Assert.assertEquals; 221eab696fae85bf2fa298f1eb63165b0501dee3d2Philip P. Moltmannimport static org.junit.Assert.assertTrue; 231eab696fae85bf2fa298f1eb63165b0501dee3d2Philip P. Moltmann 2476d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmannimport android.annotation.NonNull; 2576d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmannimport android.content.ComponentName; 2676d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmannimport android.content.Context; 2776d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmannimport android.os.Bundle; 2876d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmannimport android.os.CancellationSignal; 2976d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmannimport android.os.Handler; 3076d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmannimport android.os.Looper; 3176d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmannimport android.os.ParcelFileDescriptor; 3276d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmannimport android.os.Process; 3376d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmannimport android.os.ServiceManager; 3476d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmannimport android.os.UserHandle; 3576d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmannimport android.print.PrintAttributes.Margins; 3676d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmannimport android.print.PrintAttributes.MediaSize; 3776d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmannimport android.print.PrintAttributes.Resolution; 3813fba9dbe74de3c207eb55ecf3a28c35736bdc4cPhilip P. Moltmannimport android.print.test.BasePrintTest; 3913fba9dbe74de3c207eb55ecf3a28c35736bdc4cPhilip P. Moltmannimport android.print.test.services.FirstPrintService; 4013fba9dbe74de3c207eb55ecf3a28c35736bdc4cPhilip P. Moltmannimport android.print.test.services.PrintServiceCallbacks; 4113fba9dbe74de3c207eb55ecf3a28c35736bdc4cPhilip P. Moltmannimport android.print.test.services.PrinterDiscoverySessionCallbacks; 4213fba9dbe74de3c207eb55ecf3a28c35736bdc4cPhilip P. Moltmannimport android.print.test.services.StubbablePrinterDiscoverySession; 431eab696fae85bf2fa298f1eb63165b0501dee3d2Philip P. Moltmannimport android.printservice.recommendation.IRecommendationsChangeListener; 443ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmannimport android.support.test.filters.LargeTest; 453ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmannimport android.support.test.filters.MediumTest; 463ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmannimport android.support.test.runner.AndroidJUnit4; 471eab696fae85bf2fa298f1eb63165b0501dee3d2Philip P. Moltmann 4859b0fbd1048521fed9180d592b689c4aa3d81a97Philip P. Moltmannimport org.junit.Before; 493ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmannimport org.junit.Test; 503ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmannimport org.junit.runner.RunWith; 5176d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 5276d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmannimport java.util.ArrayList; 5376d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmannimport java.util.List; 5476d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 5576d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann/** 5676d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann * tests feeding all possible parameters to the IPrintManager Binder. 5776d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann */ 583ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann@RunWith(AndroidJUnit4.class) 5976d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmannpublic class IPrintManagerParametersTest extends BasePrintTest { 6076d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 6176d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann private final int BAD_APP_ID = 0xffffffff; 6276d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 6376d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann private final int mAppId; 6476d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann private final int mUserId; 6576d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann private final PrintJobId mBadPrintJobId; 6676d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 6776d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann private PrintJob mGoodPrintJob; 6876d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann private PrinterId mGoodPrinterId; 6976d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann private ComponentName mBadComponentName; 7076d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 7176d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann private IPrintManager mIPrintManager; 7276d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 7376d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann /** 7476d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann * Create a new IPrintManagerParametersTest and setup basic fields. 7576d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann */ 7676d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann public IPrintManagerParametersTest() { 7776d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann super(); 7876d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 7976d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann mAppId = UserHandle.getAppId(Process.myUid()); 8076d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann mUserId = UserHandle.myUserId(); 8176d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann mBadPrintJobId = new PrintJobId(); 8276d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann mBadComponentName = new ComponentName("bad", "bad"); 8376d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann } 8476d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 8576d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann /** 8676d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann * Create a mock PrintDocumentAdapter. 8776d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann * 8876d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann * @return The adapter 8976d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann */ 9076d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann private @NonNull PrintDocumentAdapter createMockAdapter() { 9176d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann return new PrintDocumentAdapter() { 9276d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann @Override 9376d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann public void onStart() { 9476d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann onStartCalled(); 9576d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann } 9676d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 9776d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann @Override 9876d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann public void onLayout(PrintAttributes oldAttributes, PrintAttributes newAttributes, 9976d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann CancellationSignal cancellationSignal, LayoutResultCallback callback, 10076d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann Bundle extras) { 1013ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann callback.onLayoutFailed("not implemented"); 10276d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann } 10376d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 10476d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann @Override 10576d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann public void onWrite(PageRange[] pages, ParcelFileDescriptor destination, 10676d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann CancellationSignal cancellationSignal, WriteResultCallback callback) { 10776d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann } 10876d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann }; 10976d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann } 11076d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 11176d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann /** 11276d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann * Create mock print service callbacks. 11376d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann * 11476d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann * @return the callbacks 11576d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann */ 11676d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann private PrintServiceCallbacks createMockCallbacks() { 11776d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann return createMockPrintServiceCallbacks( 1183ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann invocation -> createMockPrinterDiscoverySessionCallbacks(invocation1 -> { 1193ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann // Get the session. 1203ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann StubbablePrinterDiscoverySession session = 1213ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann ((PrinterDiscoverySessionCallbacks) invocation1 1223ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann .getMock()).getSession(); 1233ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann 1243ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann if (session.getPrinters().isEmpty()) { 1253ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann final String PRINTER_NAME = "good printer"; 1263ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann List<PrinterInfo> printers = new ArrayList<>(); 1273ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann 1283ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann // Add the printer. 1293ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann mGoodPrinterId = session.getService() 1303ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann .generatePrinterId(PRINTER_NAME); 1313ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann 1323ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann PrinterCapabilitiesInfo capabilities = 1333ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann new PrinterCapabilitiesInfo.Builder(mGoodPrinterId) 1343ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann .setMinMargins( 1353ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann new Margins(200, 200, 200, 200)) 1363ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann .addMediaSize(MediaSize.ISO_A4, true) 1373ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann .addResolution(new Resolution("300x300", 1383ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann "300x300", 300, 300), 1393ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann true) 1403ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann .setColorModes( 1413ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann PrintAttributes.COLOR_MODE_COLOR, 1423ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann PrintAttributes.COLOR_MODE_COLOR) 1433ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann .build(); 1443ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann 1453ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann PrinterInfo printer = new PrinterInfo.Builder( 1463ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann mGoodPrinterId, 1473ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann PRINTER_NAME, 1483ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann PrinterInfo.STATUS_IDLE) 1493ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann .setCapabilities(capabilities) 1503ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann .build(); 1513ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann printers.add(printer); 1523ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann 1533ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann session.addPrinters(printers); 15476d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann } 15513fba9dbe74de3c207eb55ecf3a28c35736bdc4cPhilip P. Moltmann onPrinterDiscoverySessionCreateCalled(); 1563ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann return null; 1573ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann }, null, null, null, null, null, null), 15876d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann null, null); 15976d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann } 16076d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 16176d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann /** 16276d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann * Create a IPrintJobStateChangeListener object. 16376d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann * 16476d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann * @return the object 16576d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann * @throws Exception if the object could not be created. 16676d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann */ 16776d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann private IPrintJobStateChangeListener createMockIPrintJobStateChangeListener() throws Exception { 16876d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann return new PrintManager.PrintJobStateChangeListenerWrapper(null, 16976d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann new Handler(Looper.getMainLooper())); 17076d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann } 17176d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 17276d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann /** 17366c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann * Create a IPrintServicesChangeListener object. 17466c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann * 17566c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann * @return the object 17666c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann * @throws Exception if the object could not be created. 17766c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann */ 17866c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann private IPrintServicesChangeListener createMockIPrintServicesChangeListener() throws Exception { 17966c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann return new PrintManager.PrintServicesChangeListenerWrapper(null, 18066c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann new Handler(Looper.getMainLooper())); 18166c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann } 18266c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann 1839dcb86a48d73f399fb1b5c020005d76d350eeac2Philip P. Moltmann /** 1849dcb86a48d73f399fb1b5c020005d76d350eeac2Philip P. Moltmann * Create a IPrintServiceRecommendationsChangeListener object. 1859dcb86a48d73f399fb1b5c020005d76d350eeac2Philip P. Moltmann * 1869dcb86a48d73f399fb1b5c020005d76d350eeac2Philip P. Moltmann * @return the object 1879dcb86a48d73f399fb1b5c020005d76d350eeac2Philip P. Moltmann * @throws Exception if the object could not be created. 1889dcb86a48d73f399fb1b5c020005d76d350eeac2Philip P. Moltmann */ 1899dcb86a48d73f399fb1b5c020005d76d350eeac2Philip P. Moltmann private IRecommendationsChangeListener 1909dcb86a48d73f399fb1b5c020005d76d350eeac2Philip P. Moltmann createMockIPrintServiceRecommendationsChangeListener() throws Exception { 1919dcb86a48d73f399fb1b5c020005d76d350eeac2Philip P. Moltmann return new PrintManager.PrintServiceRecommendationsChangeListenerWrapper(null, 1929dcb86a48d73f399fb1b5c020005d76d350eeac2Philip P. Moltmann new Handler(Looper.getMainLooper())); 1939dcb86a48d73f399fb1b5c020005d76d350eeac2Philip P. Moltmann } 19466c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann 19566c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann /** 19676d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann * Create a IPrinterDiscoveryObserver object. 19776d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann * 19876d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann * @return the object 19976d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann * @throws Exception if the object could not be created. 20076d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann */ 20176d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann private IPrinterDiscoveryObserver createMockIPrinterDiscoveryObserver() throws Exception { 20276d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann return new PrinterDiscoverySession.PrinterDiscoveryObserver(null); 20376d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann } 20476d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 20566c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann private void startPrinting() { 20613fba9dbe74de3c207eb55ecf3a28c35736bdc4cPhilip P. Moltmann mGoodPrintJob = print(createMockAdapter(), (PrintAttributes) null); 20766c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann 20866c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann // Wait for PrintActivity to be ready 20913fba9dbe74de3c207eb55ecf3a28c35736bdc4cPhilip P. Moltmann waitForAdapterStartCallbackCalled(); 21066c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann 21166c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann // Wait for printer discovery session to be ready 21213fba9dbe74de3c207eb55ecf3a28c35736bdc4cPhilip P. Moltmann waitForPrinterDiscoverySessionCreateCallbackCalled(); 21313fba9dbe74de3c207eb55ecf3a28c35736bdc4cPhilip P. Moltmann } 21413fba9dbe74de3c207eb55ecf3a28c35736bdc4cPhilip P. Moltmann 21513fba9dbe74de3c207eb55ecf3a28c35736bdc4cPhilip P. Moltmann private void endPrinting() { 21613fba9dbe74de3c207eb55ecf3a28c35736bdc4cPhilip P. Moltmann getUiDevice().pressBack(); 21713fba9dbe74de3c207eb55ecf3a28c35736bdc4cPhilip P. Moltmann getUiDevice().pressBack(); 21866c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann } 21966c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann 2203ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann /** 2213ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann * Return a printer Id that is not from any print service 2223ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann * 2233ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann * @return The bad printer id. 2243ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann */ 2253ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann private PrinterId getBadPrinterId() { 2263ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann return new PrinterId(getActivity().getComponentName(), "dummy printer"); 2273ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann } 2283ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann 22959b0fbd1048521fed9180d592b689c4aa3d81a97Philip P. Moltmann @Before 23059b0fbd1048521fed9180d592b689c4aa3d81a97Philip P. Moltmann public void setUpMockService() throws Exception { 23113fba9dbe74de3c207eb55ecf3a28c35736bdc4cPhilip P. Moltmann FirstPrintService.setCallbacks(createMockCallbacks()); 23276d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 23376d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann mIPrintManager = IPrintManager.Stub 23476d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann .asInterface(ServiceManager.getService(Context.PRINT_SERVICE)); 23576d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann } 23676d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 23776d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann /** 23876d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann * test IPrintManager.getPrintJobInfo 23976d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann */ 24001527ee6d029d2722ab7fb3b52ebd886e86580d9Philip P. Moltmann @LargeTest 2413ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann @Test 24213fba9dbe74de3c207eb55ecf3a28c35736bdc4cPhilip P. Moltmann public void testGetPrintJobInfo() throws Throwable { 24366c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann startPrinting(); 24466c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann 24576d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann assertEquals(mGoodPrintJob.getId(), mIPrintManager.getPrintJobInfo(mGoodPrintJob.getId(), 24676d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann mAppId, mUserId).getId()); 24776d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann assertEquals(null, mIPrintManager.getPrintJobInfo(mBadPrintJobId, mAppId, mUserId)); 24876d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann assertEquals(null, mIPrintManager.getPrintJobInfo(null, mAppId, mUserId)); 24976d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 2503ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann assertException( 2513ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann () -> mIPrintManager.getPrintJobInfo(mGoodPrintJob.getId(), BAD_APP_ID, mUserId), 2523ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann SecurityException.class); 25376d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 25476d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann // Cannot test bad user Id as these tests are allowed to call across users 25513fba9dbe74de3c207eb55ecf3a28c35736bdc4cPhilip P. Moltmann 25613fba9dbe74de3c207eb55ecf3a28c35736bdc4cPhilip P. Moltmann endPrinting(); 25776d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann } 25876d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 25976d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann /** 26076d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann * test IPrintManager.getPrintJobInfos 26176d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann */ 26201527ee6d029d2722ab7fb3b52ebd886e86580d9Philip P. Moltmann @LargeTest 2633ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann @Test 26413fba9dbe74de3c207eb55ecf3a28c35736bdc4cPhilip P. Moltmann public void testGetPrintJobInfos() throws Throwable { 26566c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann startPrinting(); 26666c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann 26776d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann List<PrintJobInfo> infos = mIPrintManager.getPrintJobInfos(mAppId, mUserId); 26876d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 26976d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann boolean foundPrintJob = false; 27076d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann for (PrintJobInfo info : infos) { 27176d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann if (info.getId().equals(mGoodPrintJob.getId())) { 27276d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann assertEquals(PrintJobInfo.STATE_CREATED, info.getState()); 27376d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann foundPrintJob = true; 27476d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann } 27576d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann } 27676d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann assertTrue(foundPrintJob); 27776d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 2783ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann assertException(() -> mIPrintManager.getPrintJobInfos(BAD_APP_ID, mUserId), 2793ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann SecurityException.class); 28076d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 28176d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann // Cannot test bad user Id as these tests are allowed to call across users 28213fba9dbe74de3c207eb55ecf3a28c35736bdc4cPhilip P. Moltmann 28313fba9dbe74de3c207eb55ecf3a28c35736bdc4cPhilip P. Moltmann endPrinting(); 28476d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann } 28576d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 28676d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann /** 28776d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann * test IPrintManager.print 28876d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann */ 28901527ee6d029d2722ab7fb3b52ebd886e86580d9Philip P. Moltmann @LargeTest 2903ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann @Test 29113fba9dbe74de3c207eb55ecf3a28c35736bdc4cPhilip P. Moltmann public void testPrint() throws Throwable { 29276d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann final String name = "dummy print job"; 29376d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 29476d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann final IPrintDocumentAdapter adapter = new PrintManager 29576d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann .PrintDocumentAdapterDelegate(getActivity(), createMockAdapter()); 29676d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 29766c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann startPrinting(); 29876d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 2993ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann assertException(() -> mIPrintManager.print(null, adapter, null, 3003ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann getActivity().getPackageName(), mAppId, mUserId), 3013ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann IllegalArgumentException.class); 30276d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 3033ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann assertException(() -> mIPrintManager.print(name, null, null, 3043ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann getActivity().getPackageName(), mAppId, mUserId), 3053ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann NullPointerException.class); 30676d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 3073ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann assertException(() -> mIPrintManager.print(name, adapter, null, null, mAppId, mUserId), 3083ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann IllegalArgumentException.class); 30976d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 3103ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann assertException(() -> mIPrintManager.print(name, adapter, null, 3113ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann mBadComponentName.getPackageName(), mAppId, mUserId), 3123ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann IllegalArgumentException.class); 31376d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 3143ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann assertException(() -> mIPrintManager.print(name, adapter, null, 3153ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann getActivity().getPackageName(), BAD_APP_ID, mUserId), SecurityException.class); 31676d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 31776d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann // Cannot test bad user Id as these tests are allowed to call across users 31813fba9dbe74de3c207eb55ecf3a28c35736bdc4cPhilip P. Moltmann 31913fba9dbe74de3c207eb55ecf3a28c35736bdc4cPhilip P. Moltmann endPrinting(); 32076d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann } 32176d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 32276d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann /** 32376d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann * test IPrintManager.cancelPrintJob 32476d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann */ 32501527ee6d029d2722ab7fb3b52ebd886e86580d9Philip P. Moltmann @LargeTest 3263ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann @Test 32713fba9dbe74de3c207eb55ecf3a28c35736bdc4cPhilip P. Moltmann public void testCancelPrintJob() throws Throwable { 32866c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann startPrinting(); 32966c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann 33076d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann // Invalid print jobs IDs do not produce an exception 33176d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann mIPrintManager.cancelPrintJob(mBadPrintJobId, mAppId, mUserId); 33276d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann mIPrintManager.cancelPrintJob(null, mAppId, mUserId); 33376d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 3343ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann assertException( 3353ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann () -> mIPrintManager.cancelPrintJob(mGoodPrintJob.getId(), BAD_APP_ID, mUserId), 3363ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann SecurityException.class); 33776d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 33876d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann // Cannot test bad user Id as these tests are allowed to call across users 33976d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 34076d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann // Must be last as otherwise mGoodPrintJob will not be good anymore 34176d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann mIPrintManager.cancelPrintJob(mGoodPrintJob.getId(), mAppId, mUserId); 34213fba9dbe74de3c207eb55ecf3a28c35736bdc4cPhilip P. Moltmann 34313fba9dbe74de3c207eb55ecf3a28c35736bdc4cPhilip P. Moltmann endPrinting(); 34476d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann } 34576d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 34676d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann /** 34776d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann * test IPrintManager.restartPrintJob 34876d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann */ 34901527ee6d029d2722ab7fb3b52ebd886e86580d9Philip P. Moltmann @LargeTest 3503ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann @Test 35113fba9dbe74de3c207eb55ecf3a28c35736bdc4cPhilip P. Moltmann public void testRestartPrintJob() throws Throwable { 35266c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann startPrinting(); 35366c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann 35476d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann mIPrintManager.restartPrintJob(mGoodPrintJob.getId(), mAppId, mUserId); 35576d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 35676d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann // Invalid print jobs IDs do not produce an exception 35776d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann mIPrintManager.restartPrintJob(mBadPrintJobId, mAppId, mUserId); 35876d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann mIPrintManager.restartPrintJob(null, mAppId, mUserId); 35976d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 3603ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann assertException( 3613ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann () -> mIPrintManager.restartPrintJob(mGoodPrintJob.getId(), BAD_APP_ID, mUserId), 3623ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann SecurityException.class); 36376d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 36476d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann // Cannot test bad user Id as these tests are allowed to call across users 36513fba9dbe74de3c207eb55ecf3a28c35736bdc4cPhilip P. Moltmann 36613fba9dbe74de3c207eb55ecf3a28c35736bdc4cPhilip P. Moltmann endPrinting(); 36776d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann } 36876d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 36976d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann /** 37076d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann * test IPrintManager.addPrintJobStateChangeListener 37176d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann */ 37201527ee6d029d2722ab7fb3b52ebd886e86580d9Philip P. Moltmann @MediumTest 3733ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann @Test 37413fba9dbe74de3c207eb55ecf3a28c35736bdc4cPhilip P. Moltmann @NoActivity 37513fba9dbe74de3c207eb55ecf3a28c35736bdc4cPhilip P. Moltmann public void testAddPrintJobStateChangeListener() throws Throwable { 37676d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann final IPrintJobStateChangeListener listener = createMockIPrintJobStateChangeListener(); 37776d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 37876d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann mIPrintManager.addPrintJobStateChangeListener(listener, mAppId, mUserId); 37976d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 3803ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann assertException(() -> mIPrintManager.addPrintJobStateChangeListener(null, mAppId, mUserId), 3813ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann NullPointerException.class); 38276d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 3833ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann assertException( 3843ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann () -> mIPrintManager.addPrintJobStateChangeListener(listener, BAD_APP_ID, mUserId), 3853ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann SecurityException.class); 38676d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 38776d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann // Cannot test bad user Id as these tests are allowed to call across users 38876d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann } 38976d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 39076d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann /** 39176d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann * test IPrintManager.removePrintJobStateChangeListener 39276d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann */ 39301527ee6d029d2722ab7fb3b52ebd886e86580d9Philip P. Moltmann @MediumTest 3943ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann @Test 39513fba9dbe74de3c207eb55ecf3a28c35736bdc4cPhilip P. Moltmann @NoActivity 39613fba9dbe74de3c207eb55ecf3a28c35736bdc4cPhilip P. Moltmann public void testRemovePrintJobStateChangeListener() throws Throwable { 39776d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann final IPrintJobStateChangeListener listener = createMockIPrintJobStateChangeListener(); 39876d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 39976d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann mIPrintManager.addPrintJobStateChangeListener(listener, mAppId, mUserId); 40076d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann mIPrintManager.removePrintJobStateChangeListener(listener, mUserId); 40176d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 40276d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann // Removing unknown listeners is a no-op 40376d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann mIPrintManager.removePrintJobStateChangeListener(listener, mUserId); 40476d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 40576d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann mIPrintManager.addPrintJobStateChangeListener(listener, mAppId, mUserId); 4063ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann assertException(() -> mIPrintManager.removePrintJobStateChangeListener(null, mUserId), 4073ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann NullPointerException.class); 40876d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 40976d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann // Cannot test bad user Id as these tests are allowed to call across users 41076d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann } 41176d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 41276d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann /** 41366c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann * test IPrintManager.addPrintServicesChangeListener 41476d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann */ 41501527ee6d029d2722ab7fb3b52ebd886e86580d9Philip P. Moltmann @MediumTest 4163ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann @Test 41713fba9dbe74de3c207eb55ecf3a28c35736bdc4cPhilip P. Moltmann @NoActivity 41813fba9dbe74de3c207eb55ecf3a28c35736bdc4cPhilip P. Moltmann public void testAddPrintServicesChangeListener() throws Throwable { 41966c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann final IPrintServicesChangeListener listener = createMockIPrintServicesChangeListener(); 42066c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann 4211eab696fae85bf2fa298f1eb63165b0501dee3d2Philip P. Moltmann assertException(() -> mIPrintManager.addPrintServicesChangeListener(listener, mUserId), 4221eab696fae85bf2fa298f1eb63165b0501dee3d2Philip P. Moltmann SecurityException.class); 42366c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann 4243ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann assertException(() -> mIPrintManager.addPrintServicesChangeListener(null, mUserId), 4253ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann NullPointerException.class); 42676d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 42776d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann // Cannot test bad user Id as these tests are allowed to call across users 42876d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann } 42976d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 43076d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann /** 43166c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann * test IPrintManager.removePrintServicesChangeListener 43276d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann */ 43301527ee6d029d2722ab7fb3b52ebd886e86580d9Philip P. Moltmann @MediumTest 4343ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann @Test 43513fba9dbe74de3c207eb55ecf3a28c35736bdc4cPhilip P. Moltmann @NoActivity 43613fba9dbe74de3c207eb55ecf3a28c35736bdc4cPhilip P. Moltmann public void testRemovePrintServicesChangeListener() throws Throwable { 43766c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann final IPrintServicesChangeListener listener = createMockIPrintServicesChangeListener(); 43866c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann 4391eab696fae85bf2fa298f1eb63165b0501dee3d2Philip P. Moltmann assertException(() -> mIPrintManager.removePrintServicesChangeListener(listener, mUserId), 4401eab696fae85bf2fa298f1eb63165b0501dee3d2Philip P. Moltmann SecurityException.class); 44166c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann 4421eab696fae85bf2fa298f1eb63165b0501dee3d2Philip P. Moltmann assertException(() -> mIPrintManager.removePrintServicesChangeListener(null, mUserId), 4433ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann NullPointerException.class); 44466c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann } 44566c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann 44666c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann /** 44766c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann * test IPrintManager.getPrintServices 44866c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann */ 44901527ee6d029d2722ab7fb3b52ebd886e86580d9Philip P. Moltmann @MediumTest 4503ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann @Test 45113fba9dbe74de3c207eb55ecf3a28c35736bdc4cPhilip P. Moltmann @NoActivity 45213fba9dbe74de3c207eb55ecf3a28c35736bdc4cPhilip P. Moltmann public void testGetPrintServices() throws Throwable { 4531eab696fae85bf2fa298f1eb63165b0501dee3d2Philip P. Moltmann assertException(() -> mIPrintManager.getPrintServices(PrintManager.ALL_SERVICES, mUserId), 4541eab696fae85bf2fa298f1eb63165b0501dee3d2Philip P. Moltmann SecurityException.class); 45576d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 4561eab696fae85bf2fa298f1eb63165b0501dee3d2Philip P. Moltmann assertException(() -> mIPrintManager.getPrintServices(0, mUserId), 4571eab696fae85bf2fa298f1eb63165b0501dee3d2Philip P. Moltmann SecurityException.class); 45866c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann 4593ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann assertException(() -> mIPrintManager.getPrintServices(~PrintManager.ALL_SERVICES, mUserId), 4603ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann IllegalArgumentException.class); 46166c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann 46266c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann // Cannot test bad user Id as these tests are allowed to call across users 46366c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann } 46466c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann 46566c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann /** 46666c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann * test IPrintManager.setPrintServiceEnabled 46766c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann */ 46801527ee6d029d2722ab7fb3b52ebd886e86580d9Philip P. Moltmann @MediumTest 4693ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann @Test 47013fba9dbe74de3c207eb55ecf3a28c35736bdc4cPhilip P. Moltmann @NoActivity 47113fba9dbe74de3c207eb55ecf3a28c35736bdc4cPhilip P. Moltmann public void testSetPrintServiceEnabled() throws Throwable { 4723ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann assertException( 4733ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann () -> mIPrintManager.setPrintServiceEnabled(new ComponentName("bad", "name"), true, 4743ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann mUserId), SecurityException.class); 47566c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann 4763ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann assertException(() -> mIPrintManager.setPrintServiceEnabled(null, true, mUserId), 4773ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann SecurityException.class); 47866c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann 47976d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann // Cannot test bad user Id as these tests are allowed to call across users 4809dcb86a48d73f399fb1b5c020005d76d350eeac2Philip P. Moltmann } 4819dcb86a48d73f399fb1b5c020005d76d350eeac2Philip P. Moltmann 4829dcb86a48d73f399fb1b5c020005d76d350eeac2Philip P. Moltmann /** 4839dcb86a48d73f399fb1b5c020005d76d350eeac2Philip P. Moltmann * test IPrintManager.addPrintServiceRecommendationsChangeListener 4849dcb86a48d73f399fb1b5c020005d76d350eeac2Philip P. Moltmann */ 4859dcb86a48d73f399fb1b5c020005d76d350eeac2Philip P. Moltmann @MediumTest 4863ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann @Test 48713fba9dbe74de3c207eb55ecf3a28c35736bdc4cPhilip P. Moltmann @NoActivity 48813fba9dbe74de3c207eb55ecf3a28c35736bdc4cPhilip P. Moltmann public void testAddPrintServiceRecommendationsChangeListener() throws Throwable { 4899dcb86a48d73f399fb1b5c020005d76d350eeac2Philip P. Moltmann final IRecommendationsChangeListener listener = 4909dcb86a48d73f399fb1b5c020005d76d350eeac2Philip P. Moltmann createMockIPrintServiceRecommendationsChangeListener(); 4919dcb86a48d73f399fb1b5c020005d76d350eeac2Philip P. Moltmann 4921eab696fae85bf2fa298f1eb63165b0501dee3d2Philip P. Moltmann assertException(() -> mIPrintManager.addPrintServiceRecommendationsChangeListener(listener, 4931eab696fae85bf2fa298f1eb63165b0501dee3d2Philip P. Moltmann mUserId), SecurityException.class); 4949dcb86a48d73f399fb1b5c020005d76d350eeac2Philip P. Moltmann 4953ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann assertException( 4963ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann () -> mIPrintManager.addPrintServiceRecommendationsChangeListener(null, mUserId), 4973ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann NullPointerException.class); 4989dcb86a48d73f399fb1b5c020005d76d350eeac2Philip P. Moltmann 4999dcb86a48d73f399fb1b5c020005d76d350eeac2Philip P. Moltmann // Cannot test bad user Id as these tests are allowed to call across users 5009dcb86a48d73f399fb1b5c020005d76d350eeac2Philip P. Moltmann } 5019dcb86a48d73f399fb1b5c020005d76d350eeac2Philip P. Moltmann 5029dcb86a48d73f399fb1b5c020005d76d350eeac2Philip P. Moltmann /** 5039dcb86a48d73f399fb1b5c020005d76d350eeac2Philip P. Moltmann * test IPrintManager.removePrintServicesChangeListener 5049dcb86a48d73f399fb1b5c020005d76d350eeac2Philip P. Moltmann */ 5059dcb86a48d73f399fb1b5c020005d76d350eeac2Philip P. Moltmann @MediumTest 5063ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann @Test 50713fba9dbe74de3c207eb55ecf3a28c35736bdc4cPhilip P. Moltmann @NoActivity 50813fba9dbe74de3c207eb55ecf3a28c35736bdc4cPhilip P. Moltmann public void testRemovePrintServiceRecommendationsChangeListener() throws Throwable { 5099dcb86a48d73f399fb1b5c020005d76d350eeac2Philip P. Moltmann final IRecommendationsChangeListener listener = 5109dcb86a48d73f399fb1b5c020005d76d350eeac2Philip P. Moltmann createMockIPrintServiceRecommendationsChangeListener(); 5119dcb86a48d73f399fb1b5c020005d76d350eeac2Philip P. Moltmann 5121eab696fae85bf2fa298f1eb63165b0501dee3d2Philip P. Moltmann assertException(() -> mIPrintManager.removePrintServiceRecommendationsChangeListener( 5131eab696fae85bf2fa298f1eb63165b0501dee3d2Philip P. Moltmann listener, mUserId), SecurityException.class); 5149dcb86a48d73f399fb1b5c020005d76d350eeac2Philip P. Moltmann 5153ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann assertException( 5163ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann () -> mIPrintManager.removePrintServiceRecommendationsChangeListener(null, mUserId), 5173ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann NullPointerException.class); 5189dcb86a48d73f399fb1b5c020005d76d350eeac2Philip P. Moltmann 5199dcb86a48d73f399fb1b5c020005d76d350eeac2Philip P. Moltmann // Cannot test bad user Id as these tests are allowed to call across users 5209dcb86a48d73f399fb1b5c020005d76d350eeac2Philip P. Moltmann } 5219dcb86a48d73f399fb1b5c020005d76d350eeac2Philip P. Moltmann 5229dcb86a48d73f399fb1b5c020005d76d350eeac2Philip P. Moltmann /** 5239dcb86a48d73f399fb1b5c020005d76d350eeac2Philip P. Moltmann * test IPrintManager.getPrintServiceRecommendations 5249dcb86a48d73f399fb1b5c020005d76d350eeac2Philip P. Moltmann */ 5259dcb86a48d73f399fb1b5c020005d76d350eeac2Philip P. Moltmann @MediumTest 5263ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann @Test 52713fba9dbe74de3c207eb55ecf3a28c35736bdc4cPhilip P. Moltmann @NoActivity 52813fba9dbe74de3c207eb55ecf3a28c35736bdc4cPhilip P. Moltmann public void testGetPrintServiceRecommendations() throws Throwable { 5291eab696fae85bf2fa298f1eb63165b0501dee3d2Philip P. Moltmann assertException(() -> mIPrintManager.getPrintServiceRecommendations(mUserId), 5301eab696fae85bf2fa298f1eb63165b0501dee3d2Philip P. Moltmann SecurityException.class); 5319dcb86a48d73f399fb1b5c020005d76d350eeac2Philip P. Moltmann 5329dcb86a48d73f399fb1b5c020005d76d350eeac2Philip P. Moltmann // Cannot test bad user Id as these tests are allowed to call across users 53376d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann } 53476d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 53576d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann /** 53676d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann * test IPrintManager.createPrinterDiscoverySession 53776d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann */ 53801527ee6d029d2722ab7fb3b52ebd886e86580d9Philip P. Moltmann @MediumTest 5393ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann @Test 54013fba9dbe74de3c207eb55ecf3a28c35736bdc4cPhilip P. Moltmann @NoActivity 54113fba9dbe74de3c207eb55ecf3a28c35736bdc4cPhilip P. Moltmann public void testCreatePrinterDiscoverySession() throws Throwable { 54276d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann final IPrinterDiscoveryObserver listener = createMockIPrinterDiscoveryObserver(); 54376d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 54476d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann mIPrintManager.createPrinterDiscoverySession(listener, mUserId); 54576d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 54676d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann try { 5473ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann assertException(() -> mIPrintManager.createPrinterDiscoverySession(null, mUserId), 5483ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann NullPointerException.class); 54976d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 55076d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann // Cannot test bad user Id as these tests are allowed to call across users 55176d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann } finally { 55276d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann // Remove discovery session so that the next test create a new one. Usually a leaked 55376d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann // session is removed on the next call from the print service. But in this case we want 55476d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann // to force a new call to onPrinterDiscoverySessionStart in the next test. 55576d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann mIPrintManager.destroyPrinterDiscoverySession(listener, mUserId); 55676d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann } 55776d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann } 55876d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 55976d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann /** 56076d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann * test IPrintManager.startPrinterDiscovery 56176d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann */ 56201527ee6d029d2722ab7fb3b52ebd886e86580d9Philip P. Moltmann @LargeTest 5633ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann @Test 56413fba9dbe74de3c207eb55ecf3a28c35736bdc4cPhilip P. Moltmann public void testStartPrinterDiscovery() throws Throwable { 56566c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann startPrinting(); 56666c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann 56776d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann final IPrinterDiscoveryObserver listener = createMockIPrinterDiscoveryObserver(); 56876d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann final List<PrinterId> goodPrinters = new ArrayList<>(); 56976d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann goodPrinters.add(mGoodPrinterId); 57076d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 57176d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann final List<PrinterId> badPrinters = new ArrayList<>(); 5723ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann badPrinters.add(getBadPrinterId()); 57376d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 57476d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann final List<PrinterId> emptyPrinters = new ArrayList<>(); 57576d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 57676d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann final List<PrinterId> nullPrinters = new ArrayList<>(); 57776d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann nullPrinters.add(null); 57876d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 57976d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann mIPrintManager.startPrinterDiscovery(listener, goodPrinters, mUserId); 58076d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 58176d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann // Bad or no printers do no cause exceptions 58276d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann mIPrintManager.startPrinterDiscovery(listener, badPrinters, mUserId); 58376d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann mIPrintManager.startPrinterDiscovery(listener, emptyPrinters, mUserId); 58476d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann mIPrintManager.startPrinterDiscovery(listener, null, mUserId); 58576d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 5863ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann assertException(() -> mIPrintManager.startPrinterDiscovery(listener, nullPrinters, mUserId), 5873ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann NullPointerException.class); 58876d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 5893ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann assertException(() -> mIPrintManager.startPrinterDiscovery(null, goodPrinters, mUserId), 5903ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann NullPointerException.class); 59176d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 59276d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann // Cannot test bad user Id as these tests are allowed to call across users 59313fba9dbe74de3c207eb55ecf3a28c35736bdc4cPhilip P. Moltmann 59413fba9dbe74de3c207eb55ecf3a28c35736bdc4cPhilip P. Moltmann endPrinting(); 59576d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann } 59676d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 59776d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann /** 59876d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann * test IPrintManager.stopPrinterDiscovery 59976d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann */ 60001527ee6d029d2722ab7fb3b52ebd886e86580d9Philip P. Moltmann @MediumTest 6013ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann @Test 60213fba9dbe74de3c207eb55ecf3a28c35736bdc4cPhilip P. Moltmann @NoActivity 60313fba9dbe74de3c207eb55ecf3a28c35736bdc4cPhilip P. Moltmann public void testStopPrinterDiscovery() throws Throwable { 60476d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann final IPrinterDiscoveryObserver listener = createMockIPrinterDiscoveryObserver(); 60576d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 60676d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann mIPrintManager.startPrinterDiscovery(listener, null, mUserId); 60776d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann mIPrintManager.stopPrinterDiscovery(listener, mUserId); 60876d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 60976d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann // Stopping an already stopped session is a no-op 61076d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann mIPrintManager.stopPrinterDiscovery(listener, mUserId); 61176d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 61276d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann mIPrintManager.startPrinterDiscovery(listener, null, mUserId); 6133ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann assertException(() -> mIPrintManager.stopPrinterDiscovery(null, mUserId), 6143ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann NullPointerException.class); 61576d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 61676d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann // Cannot test bad user Id as these tests are allowed to call across users 61776d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann } 61876d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 61976d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann /** 62076d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann * test IPrintManager.validatePrinters 62176d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann */ 62201527ee6d029d2722ab7fb3b52ebd886e86580d9Philip P. Moltmann @LargeTest 6233ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann @Test 62413fba9dbe74de3c207eb55ecf3a28c35736bdc4cPhilip P. Moltmann public void testValidatePrinters() throws Throwable { 62566c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann startPrinting(); 62666c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann 62776d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann final List<PrinterId> goodPrinters = new ArrayList<>(); 62876d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann goodPrinters.add(mGoodPrinterId); 62976d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 63076d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann final List<PrinterId> badPrinters = new ArrayList<>(); 6313ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann badPrinters.add(getBadPrinterId()); 63276d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 63376d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann final List<PrinterId> emptyPrinters = new ArrayList<>(); 63476d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 63576d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann final List<PrinterId> nullPrinters = new ArrayList<>(); 63676d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann nullPrinters.add(null); 63776d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 63876d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann mIPrintManager.validatePrinters(goodPrinters, mUserId); 63976d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 64076d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann // Bad or empty list of printers do no cause exceptions 64176d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann mIPrintManager.validatePrinters(badPrinters, mUserId); 64276d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann mIPrintManager.validatePrinters(emptyPrinters, mUserId); 64376d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 6443ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann assertException(() -> mIPrintManager.validatePrinters(null, mUserId), 6453ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann NullPointerException.class); 64676d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 6473ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann assertException(() -> mIPrintManager.validatePrinters(nullPrinters, mUserId), 6483ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann NullPointerException.class); 64976d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 65076d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann // Cannot test bad user Id as these tests are allowed to call across users 65113fba9dbe74de3c207eb55ecf3a28c35736bdc4cPhilip P. Moltmann 65213fba9dbe74de3c207eb55ecf3a28c35736bdc4cPhilip P. Moltmann endPrinting(); 65376d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann } 65476d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 65576d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann /** 65676d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann * test IPrintManager.startPrinterStateTracking 65776d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann */ 65801527ee6d029d2722ab7fb3b52ebd886e86580d9Philip P. Moltmann @LargeTest 6593ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann @Test 66013fba9dbe74de3c207eb55ecf3a28c35736bdc4cPhilip P. Moltmann public void testStartPrinterStateTracking() throws Throwable { 66166c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann startPrinting(); 66266c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann 66376d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann mIPrintManager.startPrinterStateTracking(mGoodPrinterId, mUserId); 66476d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 66576d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann // Bad printers do no cause exceptions 6663ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann mIPrintManager.startPrinterStateTracking(getBadPrinterId(), mUserId); 66776d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 6683ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann assertException(() -> mIPrintManager.startPrinterStateTracking(null, mUserId), 6693ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann NullPointerException.class); 67076d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 67176d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann // Cannot test bad user Id as these tests are allowed to call across users 67213fba9dbe74de3c207eb55ecf3a28c35736bdc4cPhilip P. Moltmann 67313fba9dbe74de3c207eb55ecf3a28c35736bdc4cPhilip P. Moltmann endPrinting(); 67476d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann } 67576d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 67676d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann /** 67776d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann * test IPrintManager.getCustomPrinterIcon 67876d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann */ 67901527ee6d029d2722ab7fb3b52ebd886e86580d9Philip P. Moltmann @LargeTest 6803ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann @Test 68113fba9dbe74de3c207eb55ecf3a28c35736bdc4cPhilip P. Moltmann public void testGetCustomPrinterIcon() throws Throwable { 68266c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann startPrinting(); 68366c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann 68476d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann mIPrintManager.getCustomPrinterIcon(mGoodPrinterId, mUserId); 68576d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 68676d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann // Bad printers do no cause exceptions 6873ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann mIPrintManager.getCustomPrinterIcon(getBadPrinterId(), mUserId); 68876d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 6893ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann assertException(() -> mIPrintManager.getCustomPrinterIcon(null, mUserId), 6903ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann NullPointerException.class); 69176d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 69276d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann // Cannot test bad user Id as these tests are allowed to call across users 69313fba9dbe74de3c207eb55ecf3a28c35736bdc4cPhilip P. Moltmann 69413fba9dbe74de3c207eb55ecf3a28c35736bdc4cPhilip P. Moltmann endPrinting(); 69576d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann } 69676d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 69776d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann /** 69876d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann * test IPrintManager.stopPrinterStateTracking 69976d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann */ 70001527ee6d029d2722ab7fb3b52ebd886e86580d9Philip P. Moltmann @LargeTest 7013ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann @Test 70213fba9dbe74de3c207eb55ecf3a28c35736bdc4cPhilip P. Moltmann public void testStopPrinterStateTracking() throws Throwable { 70366c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann startPrinting(); 70466c96591e2ddb464c67e60dbf4193ef4ec8a620bPhilip P. Moltmann 70576d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann mIPrintManager.startPrinterStateTracking(mGoodPrinterId, mUserId); 70676d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann mIPrintManager.stopPrinterStateTracking(mGoodPrinterId, mUserId); 70776d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 70876d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann // Stop to track a non-tracked printer is a no-op 70976d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann mIPrintManager.stopPrinterStateTracking(mGoodPrinterId, mUserId); 71076d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 71176d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann // Bad printers do no cause exceptions 7123ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann mIPrintManager.startPrinterStateTracking(getBadPrinterId(), mUserId); 7133ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann mIPrintManager.stopPrinterStateTracking(getBadPrinterId(), mUserId); 71476d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 7153ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann assertException(() -> mIPrintManager.stopPrinterStateTracking(null, mUserId), 7163ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann NullPointerException.class); 71776d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 71876d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann // Cannot test bad user Id as these tests are allowed to call across users 71913fba9dbe74de3c207eb55ecf3a28c35736bdc4cPhilip P. Moltmann 72013fba9dbe74de3c207eb55ecf3a28c35736bdc4cPhilip P. Moltmann endPrinting(); 72176d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann } 72276d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 72376d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann /** 72476d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann * test IPrintManager.destroyPrinterDiscoverySession 72576d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann */ 72601527ee6d029d2722ab7fb3b52ebd886e86580d9Philip P. Moltmann @MediumTest 7273ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann @Test 72813fba9dbe74de3c207eb55ecf3a28c35736bdc4cPhilip P. Moltmann @NoActivity 72913fba9dbe74de3c207eb55ecf3a28c35736bdc4cPhilip P. Moltmann public void testDestroyPrinterDiscoverySession() throws Throwable { 73076d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann final IPrinterDiscoveryObserver listener = createMockIPrinterDiscoveryObserver(); 73176d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 73276d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann mIPrintManager.createPrinterDiscoverySession(listener, mUserId); 73376d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann mIPrintManager.destroyPrinterDiscoverySession(listener, mUserId); 73476d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 73576d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann // Destroying already destroyed session is a no-op 73676d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann mIPrintManager.destroyPrinterDiscoverySession(listener, mUserId); 73776d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 7383ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann assertException(() -> mIPrintManager.destroyPrinterDiscoverySession(null, mUserId), 7393ae33bd02802878f6d208c351c4721d832a920aePhilip P. Moltmann NullPointerException.class); 74076d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann 74176d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann // Cannot test bad user Id as these tests are allowed to call across users 74276d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann } 74376d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann} 744