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 76bab4b4124f0d5306bff5a660ef0d44efb776e3..b0daaeffb1266a8ace245f819b85933ce61da40c 100644 |
--- a/printing/android/java/src/org/chromium/printing/PrintingControllerImpl.java |
+++ b/printing/android/java/src/org/chromium/printing/PrintingControllerImpl.java |
@@ -45,8 +45,6 @@ public class PrintingControllerImpl implements PrintingController, PdfGenerator |
private final String mErrorMessage; |
- private final PrintManagerDelegate mPrintManager; |
- |
private PrintingContextInterface mPrintingContext; |
/** The file descriptor into which the PDF will be written. Provided by the framework. */ |
@@ -86,10 +84,10 @@ public class PrintingControllerImpl implements PrintingController, PdfGenerator |
/** Total number of pages to print with initial print dialog settings. */ |
private int mLastKnownMaxPages = PrintDocumentInfo.PAGE_COUNT_UNKNOWN; |
- private PrintingControllerImpl(PrintManagerDelegate printManager, |
- PrintDocumentAdapterWrapper printDocumentAdapterWrapper, |
+ private boolean mIsBusy = false; |
+ |
+ private PrintingControllerImpl(PrintDocumentAdapterWrapper printDocumentAdapterWrapper, |
String errorText) { |
- mPrintManager = printManager; |
mErrorMessage = errorText; |
mPrintDocumentAdapterWrapper = printDocumentAdapterWrapper; |
mPrintDocumentAdapterWrapper.setPdfGenerator(this); |
@@ -107,13 +105,12 @@ public class PrintingControllerImpl implements PrintingController, PdfGenerator |
* doesn't need any string dependency. |
* @return The resulting PrintingController. |
*/ |
- public static PrintingController create(PrintManagerDelegate printManager, |
+ public static PrintingController create( |
PrintDocumentAdapterWrapper printDocumentAdapterWrapper, String errorText) { |
ThreadUtils.assertOnUiThread(); |
if (sInstance == null) { |
- sInstance = new PrintingControllerImpl(printManager, |
- printDocumentAdapterWrapper, errorText); |
+ sInstance = new PrintingControllerImpl(printDocumentAdapterWrapper, errorText); |
} |
return sInstance; |
} |
@@ -161,14 +158,21 @@ public class PrintingControllerImpl implements PrintingController, PdfGenerator |
} |
@Override |
+ public boolean isBusy() { |
+ return mIsBusy; |
+ } |
+ |
+ @Override |
public void setPrintingContext(final PrintingContextInterface printingContext) { |
mPrintingContext = printingContext; |
} |
@Override |
- public void startPrint(final Printable printable) { |
+ public void startPrint(final Printable printable, PrintManagerDelegate printManager) { |
+ if (mIsBusy) return; |
+ mIsBusy = true; |
mPrintable = printable; |
- mPrintDocumentAdapterWrapper.print(mPrintManager, printable.getTitle()); |
+ mPrintDocumentAdapterWrapper.print(printManager, printable.getTitle()); |
} |
@Override |
@@ -323,6 +327,9 @@ public class PrintingControllerImpl implements PrintingController, PdfGenerator |
mFileDescriptor = -1; |
resetCallbacks(); |
+ // The printmanager contract is that onFinish() is always called as the last |
+ // callback. We set busy to false here. |
+ mIsBusy = false; |
} |
private void resetCallbacks() { |