summaryrefslogtreecommitdiffstats
path: root/printing/android
diff options
context:
space:
mode:
authordgn <dgn@chromium.org>2015-09-16 07:34:19 -0700
committerCommit bot <commit-bot@chromium.org>2015-09-16 14:34:56 +0000
commite94f112042eba6eff2cf2fb10f853103a50f63b2 (patch)
tree73bc73f917d48a1e6283f117eb652f8ac08b25bd /printing/android
parent7a0c427f01662f369d15503dae3e5c921fd65ea2 (diff)
downloadchromium_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')
-rw-r--r--printing/android/java/src/org/chromium/printing/PrintManagerDelegateImpl.java47
-rw-r--r--printing/android/java/src/org/chromium/printing/PrintingContext.java6
-rw-r--r--printing/android/java/src/org/chromium/printing/PrintingControllerImpl.java14
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;
}