| 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
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..00f82b1d370c7e9f01eb023b9d80b040dd53b8af
|
| --- /dev/null
|
| +++ b/android_webview/java/src/org/chromium/android_webview/AwPrintDocumentAdapter.java
|
| @@ -0,0 +1,74 @@
|
| +// Copyright 2013 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +package org.chromium.android_webview;
|
| +
|
| +import android.content.Context;
|
| +import android.os.Bundle;
|
| +import android.os.CancellationSignal;
|
| +import android.os.ParcelFileDescriptor;
|
| +import android.print.PageRange;
|
| +import android.print.PrintAttributes;
|
| +import android.print.PrintDocumentAdapter;
|
| +import android.print.PrintDocumentInfo;
|
| +
|
| +import android.util.Log;
|
| +
|
| +import android.webkit.ValueCallback;
|
| +
|
| +
|
| +/**
|
| + * Adapter for printing Webview. This class implements the abstract
|
| + * system class PrintDocumentAdapter and hides all printing details from
|
| + * the developer.
|
| + */
|
| +public class AwPrintDocumentAdapter extends PrintDocumentAdapter {
|
| +
|
| + private static final String TAG = "AwPrintDocumentAdapter";
|
| +
|
| + private AwPdfExporter mPdfExporter;
|
| + private PrintAttributes mAttributes;
|
| +
|
| + /**
|
| + * Constructor.
|
| + *
|
| + * @param pdfExporter The PDF exporter to export the webview contents to a PDF file.
|
| + */
|
| + public AwPrintDocumentAdapter(AwPdfExporter pdfExporter) {
|
| + mPdfExporter = pdfExporter;
|
| + }
|
| +
|
| + @Override
|
| + public void onLayout(PrintAttributes oldAttributes, PrintAttributes newAttributes,
|
| + CancellationSignal cancellationSignal, LayoutResultCallback callback,
|
| + Bundle metadata) {
|
| + mAttributes = newAttributes;
|
| + // TODO(sgurun) pass a meaningful string once b/10705082 is resolved
|
| + PrintDocumentInfo documentInfo = new PrintDocumentInfo
|
| + .Builder("webview")
|
| + .build();
|
| + // TODO(sgurun) once componentization is done, do layout changes and
|
| + // generate PDF here, set the page range information to documentinfo
|
| + // and call onLayoutFinished with true/false depending on whether
|
| + // layout actually changed.
|
| + callback.onLayoutFinished(documentInfo, true);
|
| + }
|
| +
|
| + @Override
|
| + public void onWrite(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);
|
| + }
|
| + }
|
| + }, cancellationSignal);
|
| + }
|
| +}
|
| +
|
|
|