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

Commit 8e137b53 authored by Svetoslav's avatar Svetoslav Committed by Android Git Automerger
Browse files

am d454beb8: am 0d38d0b4: Merge "Multiple printer discovery session instances...

am d454beb8: am 0d38d0b4: Merge "Multiple printer discovery session instances and other bugs." into klp-dev

* commit 'd454beb8':
  Multiple printer discovery session instances and other bugs.
parents 80e9c3e5 d454beb8
Loading
Loading
Loading
Loading
+40 −0
Original line number Diff line number Diff line
@@ -383,6 +383,10 @@ public abstract class PrintService extends Service {
            final int action = message.what;
            switch (action) {
                case MSG_CREATE_PRINTER_DISCOVERY_SESSION: {
                    if (DEBUG) {
                        Log.i(LOG_TAG, "MSG_CREATE_PRINTER_DISCOVERY_SESSION "
                                + getPackageName());
                    }
                    PrinterDiscoverySession session = onCreatePrinterDiscoverySession();
                    if (session == null) {
                        throw new NullPointerException("session cannot be null");
@@ -396,6 +400,10 @@ public abstract class PrintService extends Service {
                } break;

                case MSG_DESTROY_PRINTER_DISCOVERY_SESSION: {
                    if (DEBUG) {
                        Log.i(LOG_TAG, "MSG_DESTROY_PRINTER_DISCOVERY_SESSION "
                                + getPackageName());
                    }
                    if (mDiscoverySession != null) {
                        mDiscoverySession.destroy();
                        mDiscoverySession = null;
@@ -403,6 +411,10 @@ public abstract class PrintService extends Service {
                } break;

                case MSG_START_PRINTER_DISCOVERY: {
                    if (DEBUG) {
                        Log.i(LOG_TAG, "MSG_START_PRINTER_DISCOVERY "
                                + getPackageName());
                    }
                    if (mDiscoverySession != null) {
                        List<PrinterId> priorityList = (ArrayList<PrinterId>) message.obj;
                        mDiscoverySession.startPrinterDiscovery(priorityList);
@@ -410,12 +422,20 @@ public abstract class PrintService extends Service {
                } break;

                case MSG_STOP_PRINTER_DISCOVERY: {
                    if (DEBUG) {
                        Log.i(LOG_TAG, "MSG_STOP_PRINTER_DISCOVERY "
                                + getPackageName());
                    }
                    if (mDiscoverySession != null) {
                        mDiscoverySession.stopPrinterDiscovery();
                    }
                } break;

                case MSG_VALIDATE_PRINTERS: {
                    if (DEBUG) {
                        Log.i(LOG_TAG, "MSG_VALIDATE_PRINTERS "
                                + getPackageName());
                    }
                    if (mDiscoverySession != null) {
                        List<PrinterId> printerIds = (List<PrinterId>) message.obj;
                        mDiscoverySession.validatePrinters(printerIds);
@@ -423,6 +443,10 @@ public abstract class PrintService extends Service {
                } break;

                case MSG_START_PRINTER_STATE_TRACKING: {
                    if (DEBUG) {
                        Log.i(LOG_TAG, "MSG_START_PRINTER_STATE_TRACKING "
                                + getPackageName());
                    }
                    if (mDiscoverySession != null) {
                        PrinterId printerId = (PrinterId) message.obj;
                        mDiscoverySession.startPrinterStateTracking(printerId);
@@ -430,6 +454,10 @@ public abstract class PrintService extends Service {
                } break;

                case MSG_STOP_PRINTER_STATE_TRACKING: {
                    if (DEBUG) {
                        Log.i(LOG_TAG, "MSG_STOP_PRINTER_STATE_TRACKING "
                                + getPackageName());
                    }
                    if (mDiscoverySession != null) {
                        PrinterId printerId = (PrinterId) message.obj;
                        mDiscoverySession.stopPrinterStateTracking(printerId);
@@ -437,11 +465,19 @@ public abstract class PrintService extends Service {
                } break;

                case MSG_ON_REQUEST_CANCEL_PRINTJOB: {
                    if (DEBUG) {
                        Log.i(LOG_TAG, "MSG_ON_REQUEST_CANCEL_PRINTJOB "
                                + getPackageName());
                    }
                    PrintJobInfo printJobInfo = (PrintJobInfo) message.obj;
                    onRequestCancelPrintJob(new PrintJob(printJobInfo, mClient));
                } break;

                case MSG_ON_PRINTJOB_QUEUED: {
                    if (DEBUG) {
                        Log.i(LOG_TAG, "MSG_ON_PRINTJOB_QUEUED "
                                + getPackageName());
                    }
                    PrintJobInfo printJobInfo = (PrintJobInfo) message.obj;
                    if (DEBUG) {
                        Log.i(LOG_TAG, "Queued: " + printJobInfo);
@@ -450,6 +486,10 @@ public abstract class PrintService extends Service {
                } break;

                case MSG_SET_CLEINT: {
                    if (DEBUG) {
                        Log.i(LOG_TAG, "MSG_SET_CLEINT "
                                + getPackageName());
                    }
                    mClient = (IPrintServiceClient) message.obj;
                    if (mClient != null) {
                        onConnected();
+4 −6
Original line number Diff line number Diff line
@@ -86,10 +86,6 @@ public class FusedPrintersProvider extends Loader<List<PrinterInfo>> {
    }

    private void computeAndDeliverResult(Map<PrinterId, PrinterInfo> discoveredPrinters) {
        if (!isStarted()) {
            return;
        }

        List<PrinterInfo> printers = new ArrayList<PrinterInfo>();

        // Add the updated favorite printers.
@@ -123,9 +119,11 @@ public class FusedPrintersProvider extends Loader<List<PrinterInfo>> {
        mPrinters.clear();
        mPrinters.addAll(printers);

        if (isStarted()) {
            // Deliver the printers.
            deliverResult(printers);
        }
    }

    @Override
    protected void onStartLoading() {
+1 −1
Original line number Diff line number Diff line
@@ -74,7 +74,7 @@ public final class PrintSpoolerService extends Service {

    private static final String LOG_TAG = "PrintSpoolerService";

    private static final boolean DEBUG_PRINT_JOB_LIFECYCLE = true;
    private static final boolean DEBUG_PRINT_JOB_LIFECYCLE = false;

    private static final boolean DEBUG_PERSISTENCE = false;

+8 −9
Original line number Diff line number Diff line
@@ -85,7 +85,7 @@ final class RemotePrintService implements DeathRecipient {

    private boolean mHasPrinterDiscoverySession;

    private boolean mServiceDead;
    private boolean mServiceDied;

    private List<PrinterId> mDiscoveryPriorityList;

@@ -107,7 +107,6 @@ final class RemotePrintService implements DeathRecipient {
        mSpooler = spooler;
        mHandler = new MyHandler(context.getMainLooper());
        mPrintServiceClient = new RemotePrintServiceClient(this);
        mServiceDead = true;
    }

    public ComponentName getComponentName() {
@@ -157,7 +156,7 @@ final class RemotePrintService implements DeathRecipient {
    private void handleBinderDied() {
        mPrintService.asBinder().unlinkToDeath(this, 0);
        mPrintService = null;
        mServiceDead = true;
        mServiceDied = true;
        mCallbacks.onServiceDied(this);
    }

@@ -171,7 +170,7 @@ final class RemotePrintService implements DeathRecipient {
        if (!isBound()) {
            // The service is dead and neither has active jobs nor discovery
            // session, so ensure we are unbound since the service has no work.
            if (mServiceDead && !mHasPrinterDiscoverySession) {
            if (mServiceDied && !mHasPrinterDiscoverySession) {
                ensureUnbound();
                return;
            }
@@ -286,7 +285,7 @@ final class RemotePrintService implements DeathRecipient {
        if (!isBound()) {
            // The service is dead and neither has active jobs nor discovery
            // session, so ensure we are unbound since the service has no work.
            if (mServiceDead && !mHasActivePrintJobs) {
            if (mServiceDied && !mHasActivePrintJobs) {
                ensureUnbound();
                return;
            }
@@ -556,15 +555,15 @@ final class RemotePrintService implements DeathRecipient {
                return;
            }
            // If the service died and there is a discovery session, recreate it.
            if (mServiceDead && mHasPrinterDiscoverySession) {
            if (mServiceDied && mHasPrinterDiscoverySession) {
                handleCreatePrinterDiscoverySession();
            }
            // If the service died and there is discovery started, restart it.
            if (mServiceDead && mDiscoveryPriorityList != null) {
            if (mServiceDied && mDiscoveryPriorityList != null) {
                handleStartPrinterDiscovery(mDiscoveryPriorityList);
            }
            // If the service died and printers were tracked, start tracking.
            if (mServiceDead && mTrackedPrinterList != null) {
            if (mServiceDied && mTrackedPrinterList != null) {
                final int trackedPrinterCount = mTrackedPrinterList.size();
                for (int i = 0; i < trackedPrinterCount; i++) {
                    handleStartPrinterStateTracking(mTrackedPrinterList.get(i));
@@ -581,7 +580,7 @@ final class RemotePrintService implements DeathRecipient {
            if (!mHasPrinterDiscoverySession && !mHasActivePrintJobs) {
                ensureUnbound();
            }
            mServiceDead = false;
            mServiceDied = false;
        }

        @Override
+15 −2
Original line number Diff line number Diff line
@@ -1007,12 +1007,25 @@ final class UserState implements PrintSpoolerCallbacks, PrintServiceCallbacks {
            mHandler.obtainMessage(
                    SessionHandler.MSG_CREATE_PRINTER_DISCOVERY_SESSION,
                    service).sendToTarget();
            // If there are some observers that started discovery - tell the service.
            if (mDiscoveryObservers.getRegisteredCallbackCount() > 0) {
            // Start printer discovery if necessary.
            if (!mStartedPrinterDiscoveryTokens.isEmpty()) {
                mHandler.obtainMessage(
                        SessionHandler.MSG_START_PRINTER_DISCOVERY,
                        service).sendToTarget();
            }
            // Start tracking printers if necessary
            final int trackedPrinterCount = mStateTrackedPrinters.size();
            for (int i = 0; i < trackedPrinterCount; i++) {
                PrinterId printerId = mStateTrackedPrinters.get(i);
                if (printerId.getServiceName().equals(service.getComponentName())) {
                    SomeArgs args = SomeArgs.obtain();
                    args.arg1 = service;
                    args.arg2 = printerId;
                    mHandler.obtainMessage(SessionHandler
                            .MSG_START_PRINTER_STATE_TRACKING, args)
                            .sendToTarget();
                }
            }
        }

        public void dump(PrintWriter pw, String prefix) {