From 9a40a32ae96b791712d997d1a6147e3565ea5eef Mon Sep 17 00:00:00 2001 From: "Philip P. Moltmann" Date: Thu, 12 May 2016 10:29:15 -0700 Subject: Clear state when ProgressMessageCtrl. is canceled Otherwise the following can happen: - The progressController is _not_ running and we are running through an update. - Then onUpdateCompleted is called which cancels the not running progressController. This then reset whatever state was previously stored as mPreviousState leaving the PrintActivity in a weird state. Fixes: 27945565 Change-Id: Id46b8853ba634634198a74921c8a1790c435678c --- .../com/android/printspooler/ui/PrintActivity.java | 25 ++++++++++++++++++---- 1 file changed, 21 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 8b1fd08d40fd..241581d91d4f 100644 --- a/packages/PrintSpooler/src/com/android/printspooler/ui/PrintActivity.java +++ b/packages/PrintSpooler/src/com/android/printspooler/ui/PrintActivity.java @@ -683,6 +683,10 @@ public class PrintActivity extends Activity implements RemotePrintDocument.Updat } }); } else if (resultCode == RESULT_CANCELED) { + if (DEBUG) { + Log.i(LOG_TAG, "[state]" + STATE_CONFIGURING); + } + mState = STATE_CONFIGURING; // The previous update might have been canceled @@ -898,9 +902,15 @@ public class PrintActivity extends Activity implements RemotePrintDocument.Updat private void setState(int state) { if (isFinalState(mState)) { if (isFinalState(state)) { + if (DEBUG) { + Log.i(LOG_TAG, "[state]" + state); + } mState = state; } } else { + if (DEBUG) { + Log.i(LOG_TAG, "[state]" + state); + } mState = state; } } @@ -2896,13 +2906,20 @@ public class PrintActivity extends Activity implements RemotePrintDocument.Updat } public int cancel() { + int state; + if (!mPosted) { - return getStateAfterCancel(); + state = getStateAfterCancel(); + } else { + mPosted = false; + mHandler.removeCallbacks(this); + + state = getStateAfterCancel(); } - mPosted = false; - mHandler.removeCallbacks(this); - return getStateAfterCancel(); + mPreviousState = -1; + + return state; } @Override -- cgit v1.2.3-59-g8ed1b