Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7b92d3c0 authored by Philip P. Moltmann's avatar Philip P. Moltmann
Browse files

When we update slow we override the current state. Make sure to reset the...

When we update slow we override the current state. Make sure to reset the state the operation finishes.

Bug: 27945565
Change-Id: If3dc3ad54bbf9bedae0e82aeef7b295ae16e1bf0
parent 3dafea31
Loading
Loading
Loading
Loading
+30 −8
Original line number Diff line number Diff line
@@ -476,7 +476,7 @@ public class PrintActivity extends Activity implements RemotePrintDocument.Updat
    }

    private void onPrintDocumentError(String message) {
        mProgressMessageController.cancel();
        setState(mProgressMessageController.cancel());
        ensureErrorUiShown(null, PrintErrorFragment.ACTION_RETRY);

        setState(STATE_UPDATE_FAILED);
@@ -502,7 +502,7 @@ public class PrintActivity extends Activity implements RemotePrintDocument.Updat
            Log.i(LOG_TAG, "onUpdateCanceled()");
        }

        mProgressMessageController.cancel();
        setState(mProgressMessageController.cancel());
        ensurePreviewUiShown();

        switch (mState) {
@@ -524,7 +524,7 @@ public class PrintActivity extends Activity implements RemotePrintDocument.Updat
            Log.i(LOG_TAG, "onUpdateCompleted()");
        }

        mProgressMessageController.cancel();
        setState(mProgressMessageController.cancel());
        ensurePreviewUiShown();

        // Update the print job with the info for the written document. The page
@@ -572,7 +572,7 @@ public class PrintActivity extends Activity implements RemotePrintDocument.Updat
            Log.i(LOG_TAG, "onUpdateFailed()");
        }

        mProgressMessageController.cancel();
        setState(mProgressMessageController.cancel());
        ensureErrorUiShown(error, PrintErrorFragment.ACTION_RETRY);

        if (mState == STATE_CREATE_FILE_FAILED
@@ -2066,8 +2066,9 @@ public class PrintActivity extends Activity implements RemotePrintDocument.Updat
            mSpoolerProvider.destroy();
        }

        setState(mProgressMessageController.cancel());

        if (mState != STATE_INITIALIZING) {
            mProgressMessageController.cancel();
            mPrintedDocument.finish();
            mPrintedDocument.destroy();
            mPrintPreviewController.destroy(new Runnable() {
@@ -2910,29 +2911,50 @@ public class PrintActivity extends Activity implements RemotePrintDocument.Updat

        private boolean mPosted;

        /** State before run was executed */
        private int mPreviousState = -1;

        public ProgressMessageController(Context context) {
            mHandler = new Handler(context.getMainLooper(), null, false);
        }

        public void post() {
            if (mPosted) {
            if (mState == STATE_UPDATE_SLOW) {
                setState(STATE_UPDATE_SLOW);
                ensureProgressUiShown();
                updateOptionsUi();

                return;
            } else if (mPosted) {
                return;
            }
            mPreviousState = -1;
            mPosted = true;
            mHandler.postDelayed(this, PROGRESS_TIMEOUT_MILLIS);
        }

        public void cancel() {
        private int getStateAfterCancel() {
            if (mPreviousState == -1) {
                return mState;
            } else {
                return mPreviousState;
            }
        }

        public int cancel() {
            if (!mPosted) {
                return;
                return getStateAfterCancel();
            }
            mPosted = false;
            mHandler.removeCallbacks(this);

            return getStateAfterCancel();
        }

        @Override
        public void run() {
            mPosted = false;
            mPreviousState = mState;
            setState(STATE_UPDATE_SLOW);
            ensureProgressUiShown();
            updateOptionsUi();