From eaaf0512fcbf03b926cdbbbb7f54df474ecf861a Mon Sep 17 00:00:00 2001 From: Svet Ganov Date: Wed, 26 Nov 2014 04:09:27 -0800 Subject: [PATCH] Crash in print spooler when back pressed before content update complted. We are updating the printed content asynchronously. If the user cancels printing before the first update is complete the spooler components are in a destroyed state but we attempt to handle the completed update resulting in a crash. Now if printing is cancelled we ignore the update result. bug:18525491 Change-Id: I1ef47a17de19896cba2c7a1dd2bfc205065e0a5a --- .../com/android/printspooler/model/PageContentRepository.java | 4 +++- .../src/com/android/printspooler/ui/PrintActivity.java | 4 ++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/PrintSpooler/src/com/android/printspooler/model/PageContentRepository.java b/packages/PrintSpooler/src/com/android/printspooler/model/PageContentRepository.java index 90875c0b31ffe..ea6281df21adb 100644 --- a/packages/PrintSpooler/src/com/android/printspooler/model/PageContentRepository.java +++ b/packages/PrintSpooler/src/com/android/printspooler/model/PageContentRepository.java @@ -486,7 +486,9 @@ public final class PageContentRepository { protected Void doInBackground(Void... params) { synchronized (mLock) { try { - mRenderer.closeDocument(); + if (mRenderer != null) { + mRenderer.closeDocument(); + } } catch (RemoteException re) { /* ignore */ } diff --git a/packages/PrintSpooler/src/com/android/printspooler/ui/PrintActivity.java b/packages/PrintSpooler/src/com/android/printspooler/ui/PrintActivity.java index 352b545af8d60..f3a5c95a43d0b 100644 --- a/packages/PrintSpooler/src/com/android/printspooler/ui/PrintActivity.java +++ b/packages/PrintSpooler/src/com/android/printspooler/ui/PrintActivity.java @@ -487,6 +487,10 @@ public class PrintActivity extends Activity implements RemotePrintDocument.Updat requestCreatePdfFileOrFinish(); } break; + case STATE_PRINT_CANCELED: { + updateOptionsUi(); + } break; + default: { updatePrintPreviewController(document.changed);