From 3ef8e203c887a0cf6c121fdbb428e2fcef21758a Mon Sep 17 00:00:00 2001 From: Svetoslav Date: Wed, 10 Sep 2014 14:35:58 -0700 Subject: [PATCH] Fix a crash in print spooler. 1. Leftover code was setting the state to configuring before initialization is complete. 2. We were not cancelling the print job if cancelled when initializing. 3. The remote print document was cancelled even if doing nothing. bug:17451600 Change-Id: I79a80b723af8537da260012470748b4e8831fd9e --- .../android/printspooler/ui/PrintActivity.java | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/packages/PrintSpooler/src/com/android/printspooler/ui/PrintActivity.java b/packages/PrintSpooler/src/com/android/printspooler/ui/PrintActivity.java index c517f2d9b2257..8924c79f11658 100644 --- a/packages/PrintSpooler/src/com/android/printspooler/ui/PrintActivity.java +++ b/packages/PrintSpooler/src/com/android/printspooler/ui/PrintActivity.java @@ -219,8 +219,6 @@ public class PrintActivity extends Activity implements RemotePrintDocument.Updat public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setState(STATE_CONFIGURING); - Bundle extras = getIntent().getExtras(); mPrintJob = extras.getParcelable(PrintManager.EXTRA_PRINT_JOB); @@ -311,13 +309,17 @@ public class PrintActivity extends Activity implements RemotePrintDocument.Updat @Override public void onPause() { + PrintSpoolerService spooler = mSpoolerProvider.getSpooler(); + if (mState == STATE_INITIALIZING) { + if (isFinishing()) { + spooler.setPrintJobState(mPrintJob.getId(), PrintJobInfo.STATE_CANCELED, null); + } super.onPause(); return; } if (isFinishing()) { - PrintSpoolerService spooler = mSpoolerProvider.getSpooler(); spooler.updatePrintJobUserConfigurableOptionsNoPersistence(mPrintJob); switch (mState) { @@ -343,6 +345,10 @@ public class PrintActivity extends Activity implements RemotePrintDocument.Updat mPrinterRegistry.setTrackedPrinter(null); mPrintPreviewController.destroy(); mSpoolerProvider.destroy(); + + if (mPrintedDocument.isUpdating()) { + mPrintedDocument.cancel(); + } mPrintedDocument.finish(); mPrintedDocument.destroy(); } @@ -364,7 +370,8 @@ public class PrintActivity extends Activity implements RemotePrintDocument.Updat @Override public boolean onKeyUp(int keyCode, KeyEvent event) { if (mState == STATE_INITIALIZING) { - return super.onKeyUp(keyCode, event); + finish(); + return true; } if (keyCode == KeyEvent.KEYCODE_BACK