| Index: printing/android/java/src/org/chromium/printing/PrintingControllerImpl.java
|
| diff --git a/printing/android/java/src/org/chromium/printing/PrintingControllerImpl.java b/printing/android/java/src/org/chromium/printing/PrintingControllerImpl.java
|
| index 16e045616abde9cf6d3c758e141c17de4e057b9a..55915e3a2b59646506d759821a3119c0ab7d4ee7 100644
|
| --- a/printing/android/java/src/org/chromium/printing/PrintingControllerImpl.java
|
| +++ b/printing/android/java/src/org/chromium/printing/PrintingControllerImpl.java
|
| @@ -10,6 +10,7 @@ import android.os.ParcelFileDescriptor;
|
| import android.print.PageRange;
|
| import android.print.PrintAttributes;
|
| import android.print.PrintDocumentInfo;
|
| +import android.util.Log;
|
|
|
| import org.chromium.base.ThreadUtils;
|
| import org.chromium.printing.PrintDocumentAdapterWrapper.PdfGenerator;
|
| @@ -47,6 +48,12 @@ public class PrintingControllerImpl implements PrintingController, PdfGenerator
|
|
|
| private PrintingContextInterface mPrintingContext;
|
|
|
| + /**
|
| + * The context of a query initiated by window.print(), stored here to allow syncrhonization
|
| + * with javascript.
|
| + */
|
| + private PrintingContextInterface mContextFromScriptInitiation;
|
| +
|
| /** The file descriptor into which the PDF will be written. Provided by the framework. */
|
| private int mFileDescriptor;
|
|
|
| @@ -86,6 +93,8 @@ public class PrintingControllerImpl implements PrintingController, PdfGenerator
|
|
|
| private boolean mIsBusy = false;
|
|
|
| + private PrintManagerDelegate mPrintManager;
|
| +
|
| private PrintingControllerImpl(PrintDocumentAdapterWrapper printDocumentAdapterWrapper,
|
| String errorText) {
|
| mErrorMessage = errorText;
|
| @@ -168,11 +177,30 @@ public class PrintingControllerImpl implements PrintingController, PdfGenerator
|
| }
|
|
|
| @Override
|
| - public void startPrint(final Printable printable, PrintManagerDelegate printManager) {
|
| + public void setPendingPrint(final Printable printable, PrintManagerDelegate printManager) {
|
| if (mIsBusy) return;
|
| - mIsBusy = true;
|
| mPrintable = printable;
|
| - mPrintDocumentAdapterWrapper.print(printManager, printable.getTitle());
|
| + mPrintManager = printManager;
|
| + }
|
| +
|
| + @Override
|
| + public void startPendingPrint(PrintingContextInterface printingContext) {
|
| + if (mIsBusy || mPrintManager == null) {
|
| + Log.w(LOG_TAG, "Pending print can't be started. Is might be busy or not initialized.");
|
| + if (printingContext != null) printingContext.showSystemDialogDone();
|
| + return;
|
| + }
|
| + mContextFromScriptInitiation = printingContext;
|
| + mIsBusy = true;
|
| + mPrintDocumentAdapterWrapper.print(mPrintManager, mPrintable.getTitle());
|
| + mPrintManager = null;
|
| + }
|
| +
|
| + @Override
|
| + public void startPrint(final Printable printable, PrintManagerDelegate printManager) {
|
| + if (mIsBusy) return;
|
| + setPendingPrint(printable, printManager);
|
| + startPendingPrint(null);
|
| }
|
|
|
| @Override
|
| @@ -321,6 +349,12 @@ public class PrintingControllerImpl implements PrintingController, PdfGenerator
|
| mPrintingContext.updatePrintingContextMap(mFileDescriptor, true);
|
| mPrintingContext = null;
|
| }
|
| +
|
| + if (mContextFromScriptInitiation != null) {
|
| + mContextFromScriptInitiation.showSystemDialogDone();
|
| + mContextFromScriptInitiation = null;
|
| + }
|
| +
|
| mPrintingState = PRINTING_STATE_FINISHED;
|
|
|
| closeFileDescriptor(mFileDescriptor);
|
|
|