Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1596)

Unified Diff: android_webview/java/src/org/chromium/android_webview/AwPrintDocumentAdapter.java

Issue 2770713003: Enable page selection for WebView printing (Closed)
Patch Set: enable IsAskPrintSettingsEnabled Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: android_webview/java/src/org/chromium/android_webview/AwPrintDocumentAdapter.java
diff --git a/android_webview/java/src/org/chromium/android_webview/AwPrintDocumentAdapter.java b/android_webview/java/src/org/chromium/android_webview/AwPrintDocumentAdapter.java
index bfbf727fa3b5f6c0707602032217300729c64b74..dea043393f1ab9de6b77c67d96ad921735338d25 100644
--- a/android_webview/java/src/org/chromium/android_webview/AwPrintDocumentAdapter.java
+++ b/android_webview/java/src/org/chromium/android_webview/AwPrintDocumentAdapter.java
@@ -14,6 +14,7 @@ import android.print.PrintDocumentAdapter;
import android.print.PrintDocumentInfo;
import android.webkit.ValueCallback;
+import java.util.ArrayList;
/**
* Adapter for printing Webview. This class implements the abstract
@@ -65,19 +66,38 @@ public class AwPrintDocumentAdapter extends PrintDocumentAdapter {
}
@Override
- public void onWrite(PageRange[] pages, ParcelFileDescriptor destination,
+ public void onWrite(final PageRange[] pages, ParcelFileDescriptor destination,
CancellationSignal cancellationSignal, final WriteResultCallback callback) {
- mPdfExporter.exportToPdf(destination, mAttributes, new ValueCallback<Boolean>() {
- @Override
- public void onReceiveValue(Boolean value) {
- if (value) {
- callback.onWriteFinished(new PageRange[] { PageRange.ALL_PAGES });
- } else {
- // TODO(sgurun) provide a localized error message
- callback.onWriteFailed(null);
- }
+ mPdfExporter.exportToPdf(
+ destination, mAttributes, normalizeRanges(pages), new ValueCallback<Boolean>() {
+ @Override
+ public void onReceiveValue(Boolean value) {
+ if (value) {
+ callback.onWriteFinished(pages);
+ } else {
+ // TODO(sgurun) provide a localized error message
+ callback.onWriteFailed(null);
+ }
+ }
+ }, cancellationSignal);
+ }
+
+ private int[] normalizeRanges(final PageRange[] ranges) {
+ if (ranges.length == 1 && PageRange.ALL_PAGES.equals(ranges[0])) {
+ return new int[0];
+ }
+ ArrayList<Integer> pages = new ArrayList<Integer>();
+ for (PageRange range : ranges) {
+ for (int i = range.getStart(); i <= range.getEnd(); ++i) {
+ pages.add(i);
}
- }, cancellationSignal);
+ }
+
+ int[] ret = new int[pages.size()];
+ for (int i = 0; i < pages.size(); ++i) {
+ ret[i] = pages.get(i).intValue();
+ }
+ return ret;
}
}

Powered by Google App Engine
This is Rietveld 408576698