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 239cff00b9cc0201fe741b9dd9a8868becdb3ca2..3ef2e7be0335de246d7eba23dff1c65b3fc89412 100644 |
--- a/printing/android/java/src/org/chromium/printing/PrintingControllerImpl.java |
+++ b/printing/android/java/src/org/chromium/printing/PrintingControllerImpl.java |
@@ -5,6 +5,7 @@ |
package org.chromium.printing; |
import org.chromium.base.ThreadUtils; |
+import org.chromium.printing.PrintDocumentAdapterWrapper.PdfGenerator;; |
import android.os.Bundle; |
import android.os.CancellationSignal; |
@@ -14,8 +15,6 @@ import android.print.PrintAttributes; |
import android.print.PrintAttributes.MediaSize; |
import android.print.PrintAttributes.Resolution; |
import android.print.PrintDocumentAdapter; |
-import android.print.PrintDocumentAdapter.LayoutResultCallback; |
-import android.print.PrintDocumentAdapter.WriteResultCallback; |
import android.print.PrintDocumentInfo; |
import java.io.IOException; |
@@ -30,7 +29,7 @@ import java.util.Iterator; |
* print button. The singleton object lives in UI thread. Interaction with the native side is |
* carried through PrintingContext class. |
*/ |
-public class PrintingControllerImpl extends PrintDocumentAdapter implements PrintingController { |
+public class PrintingControllerImpl implements PrintingController, PdfGenerator { |
private static final String LOG_TAG = "PrintingControllerImpl"; |
@@ -66,7 +65,7 @@ public class PrintingControllerImpl extends PrintDocumentAdapter implements Prin |
private int[] mPages; |
/** The callback function to inform the result of PDF generation to the framework. */ |
- private PrintDocumentAdapter.WriteResultCallback mOnWriteCallback; |
+ private PrintDocumentAdapterWrapper.WriteResultCallbackWrapper mOnWriteCallback; |
/** |
* The callback function to inform the result of layout to the framework. We save the callback |
@@ -74,11 +73,14 @@ public class PrintingControllerImpl extends PrintDocumentAdapter implements Prin |
* number of expected pages back to the framework through this callback once the native side |
* has that information. |
*/ |
- private PrintDocumentAdapter.LayoutResultCallback mOnLayoutCallback; |
+ private PrintDocumentAdapterWrapper.LayoutResultCallbackWrapper mOnLayoutCallback; |
/** The object through which native PDF generation process is initiated. */ |
private Printable mPrintable; |
+ /** The object through which the framework will make calls for generating PDF. */ |
+ private PrintDocumentAdapterWrapper mPrintDocumentAdapterWrapper; |
+ |
private int mPrintingState = PRINTING_STATE_READY; |
/** Whether layouting parameters have been changed to require a new PDF generation. */ |
@@ -87,9 +89,13 @@ public class PrintingControllerImpl extends PrintDocumentAdapter implements Prin |
/** Total number of pages to print with initial print dialog settings. */ |
private int mLastKnownMaxPages = PrintDocumentInfo.PAGE_COUNT_UNKNOWN; |
- private PrintingControllerImpl(PrintManagerDelegate printManager, String errorText) { |
+ private PrintingControllerImpl(PrintManagerDelegate printManager, |
+ PrintDocumentAdapterWrapper printDocumentAdapterWrapper, |
+ String errorText) { |
mPrintManager = printManager; |
mErrorMessage = errorText; |
+ mPrintDocumentAdapterWrapper = printDocumentAdapterWrapper; |
+ mPrintDocumentAdapterWrapper.setPdfGenerator(this); |
} |
/** |
@@ -97,17 +103,20 @@ public class PrintingControllerImpl extends PrintDocumentAdapter implements Prin |
* |
* The controller is a singleton, since there can be only one printing action at any time. |
* |
+ * @param printDocumentAdapterWrapper The object through which the framework will make calls |
+ * for generating PDF. |
* @param errorText The error message to be shown to user in case something goes wrong in PDF |
* generation in Chromium. We pass it here as a string so src/printing/android |
* doesn't need any string dependency. |
* @return The resulting PrintingController. |
*/ |
public static PrintingController create(PrintManagerDelegate printManager, |
- String errorText) { |
+ PrintDocumentAdapterWrapper printDocumentAdapterWrapper, String errorText) { |
ThreadUtils.assertOnUiThread(); |
if (sInstance == null) { |
- sInstance = new PrintingControllerImpl(printManager, errorText); |
+ sInstance = new PrintingControllerImpl(printManager, |
+ printDocumentAdapterWrapper, errorText); |
} |
return sInstance; |
} |
@@ -162,7 +171,7 @@ public class PrintingControllerImpl extends PrintDocumentAdapter implements Prin |
@Override |
public void startPrint(final Printable printable) { |
mPrintable = printable; |
- mPrintManager.print(printable.getTitle(), this, null); |
+ mPrintDocumentAdapterWrapper.print(mPrintManager, printable.getTitle()); |
} |
@Override |
@@ -186,9 +195,12 @@ public class PrintingControllerImpl extends PrintDocumentAdapter implements Prin |
} |
@Override |
- public void onLayout(PrintAttributes oldAttributes, |
- PrintAttributes newAttributes, CancellationSignal cancellationSignal, |
- LayoutResultCallback callback, Bundle metadata) { |
+ public void onLayout( |
+ PrintAttributes oldAttributes, |
+ PrintAttributes newAttributes, |
+ CancellationSignal cancellationSignal, |
+ PrintDocumentAdapterWrapper.LayoutResultCallbackWrapper callback, |
+ Bundle metadata) { |
// NOTE: Chrome printing just supports one DPI, whereas Android has both vertical and |
// horizontal. These two values are most of the time same, so we just pass one of them. |
mDpi = newAttributes.getResolution().getHorizontalDpi(); |
@@ -248,7 +260,7 @@ public class PrintingControllerImpl extends PrintDocumentAdapter implements Prin |
final PageRange[] ranges, |
final ParcelFileDescriptor destination, |
final CancellationSignal cancellationSignal, |
- final WriteResultCallback callback) { |
+ final PrintDocumentAdapterWrapper.WriteResultCallbackWrapper callback) { |
if (mPrintingContext == null) { |
callback.onWriteFailed(mErrorMessage); |
resetCallbacks(); |
@@ -290,7 +302,6 @@ public class PrintingControllerImpl extends PrintDocumentAdapter implements Prin |
@Override |
public void onFinish() { |
- super.onFinish(); |
mLastKnownMaxPages = PrintDocumentInfo.PAGE_COUNT_UNKNOWN; |
mPages = null; |