diff options
author | Svetoslav <svetoslavganov@google.com> | 2014-09-11 23:24:19 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2014-09-11 23:24:20 +0000 |
commit | 36f6951e325feb32f9fe61a80e120dacfd41d473 (patch) | |
tree | f68ab1046822060bc279f64bf0ddf96339f8dbb2 /packages/PrintSpooler | |
parent | d27a3870f6a29efdd455b16261f8984ea42499e5 (diff) | |
parent | e17123dd6d3666c88b47172b8efc995523b47346 (diff) | |
download | frameworks_base-36f6951e325feb32f9fe61a80e120dacfd41d473.zip frameworks_base-36f6951e325feb32f9fe61a80e120dacfd41d473.tar.gz frameworks_base-36f6951e325feb32f9fe61a80e120dacfd41d473.tar.bz2 |
Merge "Fix back button behavior and clean up in print preview activity." into lmp-dev
Diffstat (limited to 'packages/PrintSpooler')
4 files changed, 63 insertions, 35 deletions
diff --git a/packages/PrintSpooler/src/com/android/printspooler/model/PrintSpoolerProvider.java b/packages/PrintSpooler/src/com/android/printspooler/model/PrintSpoolerProvider.java index 06723c3..8537d6c 100644 --- a/packages/PrintSpooler/src/com/android/printspooler/model/PrintSpoolerProvider.java +++ b/packages/PrintSpooler/src/com/android/printspooler/model/PrintSpoolerProvider.java @@ -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; diff --git a/packages/PrintSpooler/src/com/android/printspooler/model/RemotePrintDocument.java b/packages/PrintSpooler/src/com/android/printspooler/model/RemotePrintDocument.java index 1e7a011..239f006 100644 --- a/packages/PrintSpooler/src/com/android/printspooler/model/RemotePrintDocument.java +++ b/packages/PrintSpooler/src/com/android/printspooler/model/RemotePrintDocument.java @@ -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; @@ -135,7 +135,7 @@ public final class RemotePrintDocument { private final DeathRecipient mDeathRecipient = new DeathRecipient() { @Override public void binderDied() { - finish(); + mAdapterDeathObserver.onDied(); } }; @@ -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 { @@ -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; @@ -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(); } } @@ -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(); } } @@ -302,7 +302,6 @@ public final class RemotePrintDocument { mState = STATE_DESTROYED; disconnectFromRemoteDocument(); - mDocumentObserver.onDestroy(); } public boolean isUpdating() { @@ -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(); } }); } diff --git a/packages/PrintSpooler/src/com/android/printspooler/ui/PrintActivity.java b/packages/PrintSpooler/src/com/android/printspooler/ui/PrintActivity.java index 967efd4..dc2d5b1 100644 --- a/packages/PrintSpooler/src/com/android/printspooler/ui/PrintActivity.java +++ b/packages/PrintSpooler/src/com/android/printspooler/ui/PrintActivity.java @@ -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( @@ -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(); @@ -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; } @@ -430,7 +427,7 @@ public class PrintActivity extends Activity implements RemotePrintDocument.Updat } break; case STATE_PRINT_CANCELED: { - finish(); + doFinish(); } break; } } @@ -467,7 +464,7 @@ public class PrintActivity extends Activity implements RemotePrintDocument.Updat } break; case STATE_PRINT_CANCELED: { - finish(); + doFinish(); } break; default: { @@ -600,7 +597,7 @@ public class PrintActivity extends Activity implements RemotePrintDocument.Updat mDestinationSpinner.post(new Runnable() { @Override public void run() { - finish(); + doFinish(); } }); } @@ -962,7 +959,7 @@ public class PrintActivity extends Activity implements RemotePrintDocument.Updat if (mPrintedDocument.isUpdating()) { mPrintedDocument.cancel(); } - finish(); + doFinish(); } private void confirmPrint() { @@ -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; diff --git a/packages/PrintSpooler/src/com/android/printspooler/ui/PrinterRegistry.java b/packages/PrintSpooler/src/com/android/printspooler/ui/PrinterRegistry.java index a3d7f01..7f48217 100644 --- a/packages/PrintSpooler/src/com/android/printspooler/ui/PrinterRegistry.java +++ b/packages/PrintSpooler/src/com/android/printspooler/ui/PrinterRegistry.java @@ -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; @@ -68,23 +69,40 @@ public class PrinterRegistry { } public void addHistoricalPrinter(PrinterInfo printer) { - getPrinterProvider().addHistoricalPrinter(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() { - return getPrinterProvider().areHistoricalPrintersLoaded(); + FusedPrintersProvider provider = getPrinterProvider(); + if (provider != null) { + return getPrinterProvider().areHistoricalPrintersLoaded(); + } + return false; } private FusedPrintersProvider getPrinterProvider() { |