Loading core/java/android/printservice/PrintService.java +40 −0 Original line number Diff line number Diff line Loading @@ -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"); Loading @@ -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; Loading @@ -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); Loading @@ -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); Loading @@ -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); Loading @@ -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); Loading @@ -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); Loading @@ -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(); Loading packages/PrintSpooler/src/com/android/printspooler/FusedPrintersProvider.java +4 −6 Original line number Diff line number Diff line Loading @@ -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. Loading Loading @@ -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() { Loading packages/PrintSpooler/src/com/android/printspooler/PrintSpoolerService.java +1 −1 Original line number Diff line number Diff line Loading @@ -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; Loading services/java/com/android/server/print/RemotePrintService.java +8 −9 Original line number Diff line number Diff line Loading @@ -85,7 +85,7 @@ final class RemotePrintService implements DeathRecipient { private boolean mHasPrinterDiscoverySession; private boolean mServiceDead; private boolean mServiceDied; private List<PrinterId> mDiscoveryPriorityList; Loading @@ -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() { Loading Loading @@ -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); } Loading @@ -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; } Loading Loading @@ -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; } Loading Loading @@ -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)); Loading @@ -581,7 +580,7 @@ final class RemotePrintService implements DeathRecipient { if (!mHasPrinterDiscoverySession && !mHasActivePrintJobs) { ensureUnbound(); } mServiceDead = false; mServiceDied = false; } @Override Loading services/java/com/android/server/print/UserState.java +15 −2 Original line number Diff line number Diff line Loading @@ -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) { Loading Loading
core/java/android/printservice/PrintService.java +40 −0 Original line number Diff line number Diff line Loading @@ -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"); Loading @@ -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; Loading @@ -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); Loading @@ -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); Loading @@ -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); Loading @@ -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); Loading @@ -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); Loading @@ -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(); Loading
packages/PrintSpooler/src/com/android/printspooler/FusedPrintersProvider.java +4 −6 Original line number Diff line number Diff line Loading @@ -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. Loading Loading @@ -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() { Loading
packages/PrintSpooler/src/com/android/printspooler/PrintSpoolerService.java +1 −1 Original line number Diff line number Diff line Loading @@ -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; Loading
services/java/com/android/server/print/RemotePrintService.java +8 −9 Original line number Diff line number Diff line Loading @@ -85,7 +85,7 @@ final class RemotePrintService implements DeathRecipient { private boolean mHasPrinterDiscoverySession; private boolean mServiceDead; private boolean mServiceDied; private List<PrinterId> mDiscoveryPriorityList; Loading @@ -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() { Loading Loading @@ -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); } Loading @@ -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; } Loading Loading @@ -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; } Loading Loading @@ -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)); Loading @@ -581,7 +580,7 @@ final class RemotePrintService implements DeathRecipient { if (!mHasPrinterDiscoverySession && !mHasActivePrintJobs) { ensureUnbound(); } mServiceDead = false; mServiceDied = false; } @Override Loading
services/java/com/android/server/print/UserState.java +15 −2 Original line number Diff line number Diff line Loading @@ -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) { Loading