| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 package org.chromium.android_webview; | 5 package org.chromium.android_webview; |
| 6 | 6 |
| 7 import android.annotation.SuppressLint; | 7 import android.annotation.SuppressLint; |
| 8 import android.os.CancellationSignal; | 8 import android.os.CancellationSignal; |
| 9 import android.os.ParcelFileDescriptor; | 9 import android.os.ParcelFileDescriptor; |
| 10 import android.print.PrintAttributes; | 10 import android.print.PrintAttributes; |
| (...skipping 28 matching lines...) Expand all Loading... |
| 39 private ViewGroup mContainerView; | 39 private ViewGroup mContainerView; |
| 40 | 40 |
| 41 AwPdfExporter(ViewGroup containerView) { | 41 AwPdfExporter(ViewGroup containerView) { |
| 42 setContainerView(containerView); | 42 setContainerView(containerView); |
| 43 } | 43 } |
| 44 | 44 |
| 45 public void setContainerView(ViewGroup containerView) { | 45 public void setContainerView(ViewGroup containerView) { |
| 46 mContainerView = containerView; | 46 mContainerView = containerView; |
| 47 } | 47 } |
| 48 | 48 |
| 49 public void exportToPdf(final ParcelFileDescriptor fd, PrintAttributes attri
butes, | 49 public void exportToPdf(final ParcelFileDescriptor fd, PrintAttributes attri
butes, int[] pages, |
| 50 ValueCallback<Boolean> resultCallback, CancellationSignal cancellati
onSignal) { | 50 ValueCallback<Boolean> resultCallback, CancellationSignal cancellati
onSignal) { |
| 51 | |
| 52 if (fd == null) { | 51 if (fd == null) { |
| 53 throw new IllegalArgumentException("fd cannot be null"); | 52 throw new IllegalArgumentException("fd cannot be null"); |
| 54 } | 53 } |
| 55 if (resultCallback == null) { | 54 if (resultCallback == null) { |
| 56 throw new IllegalArgumentException("resultCallback cannot be null"); | 55 throw new IllegalArgumentException("resultCallback cannot be null"); |
| 57 } | 56 } |
| 58 if (mResultCallback != null) { | 57 if (mResultCallback != null) { |
| 59 throw new IllegalStateException("printing is already pending"); | 58 throw new IllegalStateException("printing is already pending"); |
| 60 } | 59 } |
| 61 if (attributes.getMediaSize() == null) { | 60 if (attributes.getMediaSize() == null) { |
| 62 throw new IllegalArgumentException("attributes must specify a media
size"); | 61 throw new IllegalArgumentException("attributes must specify a media
size"); |
| 63 } | 62 } |
| 64 if (attributes.getResolution() == null) { | 63 if (attributes.getResolution() == null) { |
| 65 throw new IllegalArgumentException("attributes must specify print re
solution"); | 64 throw new IllegalArgumentException("attributes must specify print re
solution"); |
| 66 } | 65 } |
| 67 if (attributes.getMinMargins() == null) { | 66 if (attributes.getMinMargins() == null) { |
| 68 throw new IllegalArgumentException("attributes must specify margins"
); | 67 throw new IllegalArgumentException("attributes must specify margins"
); |
| 69 } | 68 } |
| 70 if (mNativeAwPdfExporter == 0) { | 69 if (mNativeAwPdfExporter == 0) { |
| 71 resultCallback.onReceiveValue(false); | 70 resultCallback.onReceiveValue(false); |
| 72 return; | 71 return; |
| 73 } | 72 } |
| 74 mResultCallback = resultCallback; | 73 mResultCallback = resultCallback; |
| 75 mAttributes = attributes; | 74 mAttributes = attributes; |
| 76 mFd = fd; | 75 mFd = fd; |
| 77 nativeExportToPdf(mNativeAwPdfExporter, mFd.getFd(), cancellationSignal)
; | 76 nativeExportToPdf(mNativeAwPdfExporter, mFd.getFd(), pages, cancellation
Signal); |
| 78 } | 77 } |
| 79 | 78 |
| 80 @CalledByNative | 79 @CalledByNative |
| 81 private void setNativeAwPdfExporter(long nativePdfExporter) { | 80 private void setNativeAwPdfExporter(long nativePdfExporter) { |
| 82 mNativeAwPdfExporter = nativePdfExporter; | 81 mNativeAwPdfExporter = nativePdfExporter; |
| 83 // Handle the cornercase that the native side is destroyed (for example | 82 // Handle the cornercase that the native side is destroyed (for example |
| 84 // via Webview.Destroy) before it has a chance to complete the pdf expor
ting. | 83 // via Webview.Destroy) before it has a chance to complete the pdf expor
ting. |
| 85 if (nativePdfExporter == 0 && mResultCallback != null) { | 84 if (nativePdfExporter == 0 && mResultCallback != null) { |
| 86 try { | 85 try { |
| 87 mResultCallback.onReceiveValue(false); | 86 mResultCallback.onReceiveValue(false); |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 142 @CalledByNative | 141 @CalledByNative |
| 143 private int getTopMargin() { | 142 private int getTopMargin() { |
| 144 return mAttributes.getMinMargins().getTopMils(); | 143 return mAttributes.getMinMargins().getTopMils(); |
| 145 } | 144 } |
| 146 | 145 |
| 147 @CalledByNative | 146 @CalledByNative |
| 148 private int getBottomMargin() { | 147 private int getBottomMargin() { |
| 149 return mAttributes.getMinMargins().getBottomMils(); | 148 return mAttributes.getMinMargins().getBottomMils(); |
| 150 } | 149 } |
| 151 | 150 |
| 152 private native void nativeExportToPdf(long nativeAwPdfExporter, int fd, | 151 private native void nativeExportToPdf( |
| 153 CancellationSignal cancellationSignal); | 152 long nativeAwPdfExporter, int fd, int[] pages, CancellationSignal ca
ncellationSignal); |
| 154 } | 153 } |
| OLD | NEW |