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.mockservice;
1876d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann
1976d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmannimport android.printservice.PrintJob;
2076d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmannimport android.printservice.PrintService;
2176d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmannimport android.printservice.PrinterDiscoverySession;
2276d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann
2376d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmannpublic abstract class StubbablePrintService extends PrintService {
2476d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann
2576d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann    @Override
2676d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann    public PrinterDiscoverySession onCreatePrinterDiscoverySession() {
2776d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann        PrintServiceCallbacks callbacks = getCallbacks();
2876d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann        if (callbacks != null) {
2976d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann            return new StubbablePrinterDiscoverySession(this,
3076d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann                    getCallbacks().onCreatePrinterDiscoverySessionCallbacks());
3176d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann        }
3276d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann        return null;
3376d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann    }
3476d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann
3576d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann    @Override
3676d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann    public void onRequestCancelPrintJob(PrintJob printJob) {
3776d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann        PrintServiceCallbacks callbacks = getCallbacks();
3876d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann        if (callbacks != null) {
3976d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann            callbacks.onRequestCancelPrintJob(printJob);
4076d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann        }
4176d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann    }
4276d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann
4376d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann    @Override
4476d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann    public void onPrintJobQueued(PrintJob printJob) {
4576d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann        PrintServiceCallbacks callbacks = getCallbacks();
4676d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann        if (callbacks != null) {
4776d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann            callbacks.onPrintJobQueued(printJob);
4876d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann        }
4976d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann    }
5076d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann
5176d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann    protected abstract PrintServiceCallbacks getCallbacks();
5276d7e3ee70c4299b22b1a03505d2b4f108716c75Philip P. Moltmann}
53