diff options
author | dgn <dgn@chromium.org> | 2015-09-16 07:34:19 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-09-16 14:34:56 +0000 |
commit | e94f112042eba6eff2cf2fb10f853103a50f63b2 (patch) | |
tree | 73bc73f917d48a1e6283f117eb652f8ac08b25bd /printing/android | |
parent | 7a0c427f01662f369d15503dae3e5c921fd65ea2 (diff) | |
download | chromium_src-e94f112042eba6eff2cf2fb10f853103a50f63b2.zip chromium_src-e94f112042eba6eff2cf2fb10f853103a50f63b2.tar.gz chromium_src-e94f112042eba6eff2cf2fb10f853103a50f63b2.tar.bz2 |
Add checks for android printing
Adds a null check for the WebContent used to set up
renderer initiated print jobs and some warnings to be
able to follow failures in the process.
BUG=528909
Review URL: https://codereview.chromium.org/1338333002
Cr-Commit-Position: refs/heads/master@{#349121}
Diffstat (limited to 'printing/android')
3 files changed, 61 insertions, 6 deletions
diff --git a/printing/android/java/src/org/chromium/printing/PrintManagerDelegateImpl.java b/printing/android/java/src/org/chromium/printing/PrintManagerDelegateImpl.java index 0fd13ec..7cdaeae 100644 --- a/printing/android/java/src/org/chromium/printing/PrintManagerDelegateImpl.java +++ b/printing/android/java/src/org/chromium/printing/PrintManagerDelegateImpl.java @@ -9,13 +9,22 @@ import android.content.Context; import android.os.Build; import android.print.PrintAttributes; import android.print.PrintDocumentAdapter; +import android.print.PrintJob; +import android.print.PrintJobInfo; import android.print.PrintManager; +import android.text.TextUtils; + +import org.chromium.base.Log; +import org.chromium.base.annotations.RemovableInRelease; + +import java.util.List; /** * An implementation of {@link PrintManagerDelegate} using the Android framework print manager. */ @TargetApi(Build.VERSION_CODES.KITKAT) public class PrintManagerDelegateImpl implements PrintManagerDelegate { + private static final String TAG = "cr.printing"; private final PrintManager mPrintManager; public PrintManagerDelegateImpl(Context context) { @@ -25,7 +34,45 @@ public class PrintManagerDelegateImpl implements PrintManagerDelegate { @Override public void print(String printJobName, PrintDocumentAdapter documentAdapter, PrintAttributes attributes) { + dumpJobStatesForDebug(); mPrintManager.print(printJobName, documentAdapter, attributes); } + @RemovableInRelease + private void dumpJobStatesForDebug() { + List<PrintJob> printJobs = mPrintManager.getPrintJobs(); + String[] states = new String[printJobs.size()]; + + for (int i = 0; i < printJobs.size(); i++) { + String stateString; + switch (printJobs.get(i).getInfo().getState()) { + case PrintJobInfo.STATE_CREATED: + stateString = "STATE_CREATED"; + break; + case PrintJobInfo.STATE_QUEUED: + stateString = "STATE_QUEUED"; + break; + case PrintJobInfo.STATE_STARTED: + stateString = "STATE_STARTED"; + break; + case PrintJobInfo.STATE_BLOCKED: + stateString = "STATE_BLOCKED"; + break; + case PrintJobInfo.STATE_FAILED: + stateString = "STATE_FAILED"; + break; + case PrintJobInfo.STATE_COMPLETED: + stateString = "STATE_COMPLETED"; + break; + case PrintJobInfo.STATE_CANCELED: + stateString = "STATE_CANCELED"; + break; + default: + stateString = "STATE_UNKNOWN"; + break; + } + states[i] = stateString; + } + Log.v(TAG, "Initiating new print with states in queue: {%s}", TextUtils.join(", ", states)); + } } diff --git a/printing/android/java/src/org/chromium/printing/PrintingContext.java b/printing/android/java/src/org/chromium/printing/PrintingContext.java index b6c2c11..9520bc6 100644 --- a/printing/android/java/src/org/chromium/printing/PrintingContext.java +++ b/printing/android/java/src/org/chromium/printing/PrintingContext.java @@ -7,6 +7,7 @@ package org.chromium.printing; import android.print.PrintDocumentAdapter; import android.util.SparseArray; +import org.chromium.base.Log; import org.chromium.base.ThreadUtils; import org.chromium.base.annotations.CalledByNative; import org.chromium.base.annotations.JNINamespace; @@ -18,7 +19,7 @@ import org.chromium.base.annotations.JNINamespace; */ @JNINamespace("printing") public class PrintingContext implements PrintingContextInterface { - + private static final String TAG = "cr.printing"; /** * Mapping from a file descriptor (as originally provided from * {@link PrintDocumentAdapter#onWrite}) to a PrintingContext. @@ -102,6 +103,7 @@ public class PrintingContext implements PrintingContextInterface { if (mController != null) { // The native side doesn't check if printing is enabled mController.startPendingPrint(this); } else { + Log.d(TAG, "Unable to start printing, feature not available."); // Printing disabled. Notify the native side to stop waiting. showSystemDialogDone(); } @@ -116,6 +118,8 @@ public class PrintingContext implements PrintingContextInterface { PrintingContext printingContext = PRINTING_CONTEXT_MAP.get(fd); printingContext.mController.pdfWritingDone(success); PRINTING_CONTEXT_MAP.remove(fd); + } else { + Log.d(TAG, "No PrintingContext found for fd %d, can't notify print completion.", fd); } } diff --git a/printing/android/java/src/org/chromium/printing/PrintingControllerImpl.java b/printing/android/java/src/org/chromium/printing/PrintingControllerImpl.java index 3d8bbb0..3900f5e 100644 --- a/printing/android/java/src/org/chromium/printing/PrintingControllerImpl.java +++ b/printing/android/java/src/org/chromium/printing/PrintingControllerImpl.java @@ -12,8 +12,8 @@ import android.os.ParcelFileDescriptor; import android.print.PageRange; import android.print.PrintAttributes; import android.print.PrintDocumentInfo; -import android.util.Log; +import org.chromium.base.Log; import org.chromium.base.ThreadUtils; import org.chromium.printing.PrintDocumentAdapterWrapper.PdfGenerator; @@ -31,8 +31,7 @@ import java.util.Iterator; */ @TargetApi(Build.VERSION_CODES.KITKAT) public class PrintingControllerImpl implements PrintingController, PdfGenerator { - - private static final String LOG_TAG = "PrintingControllerImpl"; + private static final String TAG = "cr.printing"; /** * This is used for both initial state and a completed state (i.e. starting from either @@ -181,7 +180,10 @@ public class PrintingControllerImpl implements PrintingController, PdfGenerator @Override public void setPendingPrint(final Printable printable, PrintManagerDelegate printManager) { - if (mIsBusy) return; + if (mIsBusy) { + Log.d(TAG, "Pending print can't be set. PrintingController is busy."); + return; + } mPrintable = printable; mPrintManager = printManager; } @@ -189,7 +191,9 @@ public class PrintingControllerImpl implements PrintingController, PdfGenerator @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 (mIsBusy) Log.d(TAG, "Pending print can't be started. PrintingController is busy."); + else Log.d(TAG, "Pending print can't be started. No PrintManager provided."); + if (printingContext != null) printingContext.showSystemDialogDone(); return; } |