Loading packages/PrintSpooler/src/com/android/printspooler/model/PrintSpoolerProvider.java +2 −0 Original line number Diff line number Diff line Loading @@ -20,7 +20,9 @@ import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.ServiceConnection; import android.os.Debug; import android.os.IBinder; import android.util.Log; public class PrintSpoolerProvider implements ServiceConnection { private final Context mContext; Loading packages/PrintSpooler/src/com/android/printspooler/model/RemotePrintDocument.java +9 −10 Original line number Diff line number Diff line Loading @@ -74,7 +74,7 @@ public final class RemotePrintDocument { private final Looper mLooper; private final IPrintDocumentAdapter mPrintDocumentAdapter; private final DocumentObserver mDocumentObserver; private final RemoteAdapterDeathObserver mAdapterDeathObserver; private final UpdateResultCallbacks mUpdateCallbacks; Loading Loading @@ -135,7 +135,7 @@ public final class RemotePrintDocument { private final DeathRecipient mDeathRecipient = new DeathRecipient() { @Override public void binderDied() { finish(); mAdapterDeathObserver.onDied(); } }; Loading @@ -144,8 +144,8 @@ public final class RemotePrintDocument { private AsyncCommand mCurrentCommand; private AsyncCommand mNextCommand; public interface DocumentObserver { public void onDestroy(); public interface RemoteAdapterDeathObserver { public void onDied(); } public interface UpdateResultCallbacks { Loading @@ -155,12 +155,12 @@ public final class RemotePrintDocument { } public RemotePrintDocument(Context context, IPrintDocumentAdapter adapter, MutexFileProvider fileProvider, DocumentObserver destroyListener, MutexFileProvider fileProvider, RemoteAdapterDeathObserver deathObserver, UpdateResultCallbacks callbacks) { mPrintDocumentAdapter = adapter; mLooper = context.getMainLooper(); mContext = context; mDocumentObserver = destroyListener; mAdapterDeathObserver = deathObserver; mDocumentInfo = new RemotePrintDocumentInfo(); mDocumentInfo.fileProvider = fileProvider; mUpdateCallbacks = callbacks; Loading @@ -180,7 +180,7 @@ public final class RemotePrintDocument { } catch (RemoteException re) { Log.e(LOG_TAG, "Error calling start()", re); mState = STATE_FAILED; mDocumentObserver.onDestroy(); mAdapterDeathObserver.onDied(); } } Loading Loading @@ -269,7 +269,7 @@ public final class RemotePrintDocument { } catch (RemoteException re) { Log.e(LOG_TAG, "Error calling finish()", re); mState = STATE_FAILED; mDocumentObserver.onDestroy(); mAdapterDeathObserver.onDied(); } } Loading Loading @@ -302,7 +302,6 @@ public final class RemotePrintDocument { mState = STATE_DESTROYED; disconnectFromRemoteDocument(); mDocumentObserver.onDestroy(); } public boolean isUpdating() { Loading Loading @@ -1124,7 +1123,7 @@ public final class RemotePrintDocument { new Handler(document.mLooper).post(new Runnable() { @Override public void run() { document.mDocumentObserver.onDestroy(); document.mAdapterDeathObserver.onDied(); } }); } Loading packages/PrintSpooler/src/com/android/printspooler/ui/PrintActivity.java +29 −20 Original line number Diff line number Diff line Loading @@ -284,11 +284,14 @@ public class PrintActivity extends Activity implements RemotePrintDocument.Updat mFileProvider); mPrintedDocument = new RemotePrintDocument(PrintActivity.this, IPrintDocumentAdapter.Stub.asInterface(documentAdapter), mFileProvider, new RemotePrintDocument.DocumentObserver() { mFileProvider, new RemotePrintDocument.RemoteAdapterDeathObserver() { @Override public void onDestroy() { public void onDied() { if (isFinishing()) { return; } setState(STATE_PRINT_CANCELED); finish(); doFinish(); } }, PrintActivity.this); mProgressMessageController = new ProgressMessageController( Loading Loading @@ -342,17 +345,6 @@ public class PrintActivity extends Activity implements RemotePrintDocument.Updat spooler.setPrintJobState(mPrintJob.getId(), PrintJobInfo.STATE_CANCELED, null); } break; } mProgressMessageController.cancel(); mPrinterRegistry.setTrackedPrinter(null); mPrintPreviewController.destroy(); mSpoolerProvider.destroy(); if (mPrintedDocument.isUpdating()) { mPrintedDocument.cancel(); } mPrintedDocument.finish(); mPrintedDocument.destroy(); } mPrinterAvailabilityDetector.cancel(); Loading @@ -372,7 +364,12 @@ public class PrintActivity extends Activity implements RemotePrintDocument.Updat @Override public boolean onKeyUp(int keyCode, KeyEvent event) { if (mState == STATE_INITIALIZING) { finish(); doFinish(); return true; } if (mState == STATE_PRINT_CANCELED ||mState == STATE_PRINT_CONFIRMED || mState == STATE_PRINT_COMPLETED) { return true; } Loading Loading @@ -430,7 +427,7 @@ public class PrintActivity extends Activity implements RemotePrintDocument.Updat } break; case STATE_PRINT_CANCELED: { finish(); doFinish(); } break; } } Loading Loading @@ -467,7 +464,7 @@ public class PrintActivity extends Activity implements RemotePrintDocument.Updat } break; case STATE_PRINT_CANCELED: { finish(); doFinish(); } break; default: { Loading Loading @@ -600,7 +597,7 @@ public class PrintActivity extends Activity implements RemotePrintDocument.Updat mDestinationSpinner.post(new Runnable() { @Override public void run() { finish(); doFinish(); } }); } Loading Loading @@ -962,7 +959,7 @@ public class PrintActivity extends Activity implements RemotePrintDocument.Updat if (mPrintedDocument.isUpdating()) { mPrintedDocument.cancel(); } finish(); doFinish(); } private void confirmPrint() { Loading Loading @@ -1539,11 +1536,23 @@ public class PrintActivity extends Activity implements RemotePrintDocument.Updat if (writeToUri != null) { mPrintedDocument.writeContent(getContentResolver(), writeToUri); } finish(); doFinish(); } }).shred(); } private void doFinish() { if (mState != STATE_INITIALIZING) { mProgressMessageController.cancel(); mPrinterRegistry.setTrackedPrinter(null); mPrintPreviewController.destroy(); mSpoolerProvider.destroy(); mPrintedDocument.finish(); mPrintedDocument.destroy(); } finish(); } private final class SpinnerItem<T> { final T value; final CharSequence label; Loading packages/PrintSpooler/src/com/android/printspooler/ui/PrinterRegistry.java +23 −5 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import android.os.Message; import android.print.PrinterId; import android.print.PrinterInfo; import com.android.internal.os.SomeArgs; import com.android.printspooler.model.PrintSpoolerService; import java.util.ArrayList; import java.util.List; Loading Loading @@ -68,24 +69,41 @@ public class PrinterRegistry { } public void addHistoricalPrinter(PrinterInfo printer) { FusedPrintersProvider provider = getPrinterProvider(); if (provider != null) { getPrinterProvider().addHistoricalPrinter(printer); } } public void forgetFavoritePrinter(PrinterId printerId) { getPrinterProvider().forgetFavoritePrinter(printerId); FusedPrintersProvider provider = getPrinterProvider(); if (provider != null) { provider.forgetFavoritePrinter(printerId); } } public boolean isFavoritePrinter(PrinterId printerId) { return getPrinterProvider().isFavoritePrinter(printerId); FusedPrintersProvider provider = getPrinterProvider(); if (provider != null) { return provider.isFavoritePrinter(printerId); } return false; } public void setTrackedPrinter(PrinterId printerId) { getPrinterProvider().setTrackedPrinter(printerId); FusedPrintersProvider provider = getPrinterProvider(); if (provider != null) { provider.setTrackedPrinter(printerId); } } public boolean areHistoricalPrintersLoaded() { FusedPrintersProvider provider = getPrinterProvider(); if (provider != null) { return getPrinterProvider().areHistoricalPrintersLoaded(); } return false; } private FusedPrintersProvider getPrinterProvider() { Loader<?> loader = mActivity.getLoaderManager().getLoader(LOADER_ID_PRINTERS_LOADER); Loading Loading
packages/PrintSpooler/src/com/android/printspooler/model/PrintSpoolerProvider.java +2 −0 Original line number Diff line number Diff line Loading @@ -20,7 +20,9 @@ import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.ServiceConnection; import android.os.Debug; import android.os.IBinder; import android.util.Log; public class PrintSpoolerProvider implements ServiceConnection { private final Context mContext; Loading
packages/PrintSpooler/src/com/android/printspooler/model/RemotePrintDocument.java +9 −10 Original line number Diff line number Diff line Loading @@ -74,7 +74,7 @@ public final class RemotePrintDocument { private final Looper mLooper; private final IPrintDocumentAdapter mPrintDocumentAdapter; private final DocumentObserver mDocumentObserver; private final RemoteAdapterDeathObserver mAdapterDeathObserver; private final UpdateResultCallbacks mUpdateCallbacks; Loading Loading @@ -135,7 +135,7 @@ public final class RemotePrintDocument { private final DeathRecipient mDeathRecipient = new DeathRecipient() { @Override public void binderDied() { finish(); mAdapterDeathObserver.onDied(); } }; Loading @@ -144,8 +144,8 @@ public final class RemotePrintDocument { private AsyncCommand mCurrentCommand; private AsyncCommand mNextCommand; public interface DocumentObserver { public void onDestroy(); public interface RemoteAdapterDeathObserver { public void onDied(); } public interface UpdateResultCallbacks { Loading @@ -155,12 +155,12 @@ public final class RemotePrintDocument { } public RemotePrintDocument(Context context, IPrintDocumentAdapter adapter, MutexFileProvider fileProvider, DocumentObserver destroyListener, MutexFileProvider fileProvider, RemoteAdapterDeathObserver deathObserver, UpdateResultCallbacks callbacks) { mPrintDocumentAdapter = adapter; mLooper = context.getMainLooper(); mContext = context; mDocumentObserver = destroyListener; mAdapterDeathObserver = deathObserver; mDocumentInfo = new RemotePrintDocumentInfo(); mDocumentInfo.fileProvider = fileProvider; mUpdateCallbacks = callbacks; Loading @@ -180,7 +180,7 @@ public final class RemotePrintDocument { } catch (RemoteException re) { Log.e(LOG_TAG, "Error calling start()", re); mState = STATE_FAILED; mDocumentObserver.onDestroy(); mAdapterDeathObserver.onDied(); } } Loading Loading @@ -269,7 +269,7 @@ public final class RemotePrintDocument { } catch (RemoteException re) { Log.e(LOG_TAG, "Error calling finish()", re); mState = STATE_FAILED; mDocumentObserver.onDestroy(); mAdapterDeathObserver.onDied(); } } Loading Loading @@ -302,7 +302,6 @@ public final class RemotePrintDocument { mState = STATE_DESTROYED; disconnectFromRemoteDocument(); mDocumentObserver.onDestroy(); } public boolean isUpdating() { Loading Loading @@ -1124,7 +1123,7 @@ public final class RemotePrintDocument { new Handler(document.mLooper).post(new Runnable() { @Override public void run() { document.mDocumentObserver.onDestroy(); document.mAdapterDeathObserver.onDied(); } }); } Loading
packages/PrintSpooler/src/com/android/printspooler/ui/PrintActivity.java +29 −20 Original line number Diff line number Diff line Loading @@ -284,11 +284,14 @@ public class PrintActivity extends Activity implements RemotePrintDocument.Updat mFileProvider); mPrintedDocument = new RemotePrintDocument(PrintActivity.this, IPrintDocumentAdapter.Stub.asInterface(documentAdapter), mFileProvider, new RemotePrintDocument.DocumentObserver() { mFileProvider, new RemotePrintDocument.RemoteAdapterDeathObserver() { @Override public void onDestroy() { public void onDied() { if (isFinishing()) { return; } setState(STATE_PRINT_CANCELED); finish(); doFinish(); } }, PrintActivity.this); mProgressMessageController = new ProgressMessageController( Loading Loading @@ -342,17 +345,6 @@ public class PrintActivity extends Activity implements RemotePrintDocument.Updat spooler.setPrintJobState(mPrintJob.getId(), PrintJobInfo.STATE_CANCELED, null); } break; } mProgressMessageController.cancel(); mPrinterRegistry.setTrackedPrinter(null); mPrintPreviewController.destroy(); mSpoolerProvider.destroy(); if (mPrintedDocument.isUpdating()) { mPrintedDocument.cancel(); } mPrintedDocument.finish(); mPrintedDocument.destroy(); } mPrinterAvailabilityDetector.cancel(); Loading @@ -372,7 +364,12 @@ public class PrintActivity extends Activity implements RemotePrintDocument.Updat @Override public boolean onKeyUp(int keyCode, KeyEvent event) { if (mState == STATE_INITIALIZING) { finish(); doFinish(); return true; } if (mState == STATE_PRINT_CANCELED ||mState == STATE_PRINT_CONFIRMED || mState == STATE_PRINT_COMPLETED) { return true; } Loading Loading @@ -430,7 +427,7 @@ public class PrintActivity extends Activity implements RemotePrintDocument.Updat } break; case STATE_PRINT_CANCELED: { finish(); doFinish(); } break; } } Loading Loading @@ -467,7 +464,7 @@ public class PrintActivity extends Activity implements RemotePrintDocument.Updat } break; case STATE_PRINT_CANCELED: { finish(); doFinish(); } break; default: { Loading Loading @@ -600,7 +597,7 @@ public class PrintActivity extends Activity implements RemotePrintDocument.Updat mDestinationSpinner.post(new Runnable() { @Override public void run() { finish(); doFinish(); } }); } Loading Loading @@ -962,7 +959,7 @@ public class PrintActivity extends Activity implements RemotePrintDocument.Updat if (mPrintedDocument.isUpdating()) { mPrintedDocument.cancel(); } finish(); doFinish(); } private void confirmPrint() { Loading Loading @@ -1539,11 +1536,23 @@ public class PrintActivity extends Activity implements RemotePrintDocument.Updat if (writeToUri != null) { mPrintedDocument.writeContent(getContentResolver(), writeToUri); } finish(); doFinish(); } }).shred(); } private void doFinish() { if (mState != STATE_INITIALIZING) { mProgressMessageController.cancel(); mPrinterRegistry.setTrackedPrinter(null); mPrintPreviewController.destroy(); mSpoolerProvider.destroy(); mPrintedDocument.finish(); mPrintedDocument.destroy(); } finish(); } private final class SpinnerItem<T> { final T value; final CharSequence label; Loading
packages/PrintSpooler/src/com/android/printspooler/ui/PrinterRegistry.java +23 −5 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import android.os.Message; import android.print.PrinterId; import android.print.PrinterInfo; import com.android.internal.os.SomeArgs; import com.android.printspooler.model.PrintSpoolerService; import java.util.ArrayList; import java.util.List; Loading Loading @@ -68,24 +69,41 @@ public class PrinterRegistry { } public void addHistoricalPrinter(PrinterInfo printer) { FusedPrintersProvider provider = getPrinterProvider(); if (provider != null) { getPrinterProvider().addHistoricalPrinter(printer); } } public void forgetFavoritePrinter(PrinterId printerId) { getPrinterProvider().forgetFavoritePrinter(printerId); FusedPrintersProvider provider = getPrinterProvider(); if (provider != null) { provider.forgetFavoritePrinter(printerId); } } public boolean isFavoritePrinter(PrinterId printerId) { return getPrinterProvider().isFavoritePrinter(printerId); FusedPrintersProvider provider = getPrinterProvider(); if (provider != null) { return provider.isFavoritePrinter(printerId); } return false; } public void setTrackedPrinter(PrinterId printerId) { getPrinterProvider().setTrackedPrinter(printerId); FusedPrintersProvider provider = getPrinterProvider(); if (provider != null) { provider.setTrackedPrinter(printerId); } } public boolean areHistoricalPrintersLoaded() { FusedPrintersProvider provider = getPrinterProvider(); if (provider != null) { return getPrinterProvider().areHistoricalPrintersLoaded(); } return false; } private FusedPrintersProvider getPrinterProvider() { Loader<?> loader = mActivity.getLoaderManager().getLoader(LOADER_ID_PRINTERS_LOADER); Loading