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 3 // found in the LICENSE file. 4 5 #ifndef ANDROID_WEBVIEW_NATIVE_AW_PDF_EXPORTER_H_ 6 #define ANDROID_WEBVIEW_NATIVE_AW_PDF_EXPORTER_H_ 7 8 #include <jni.h> 9 10 #include "android_webview/browser/renderer_host/print_manager.h" 11 #include "base/android/jni_weak_ref.h" 12 #include "base/android/scoped_java_ref.h" 13 #include "base/basictypes.h" 14 #include "base/memory/scoped_ptr.h" 15 #include "skia/ext/refptr.h" 16 17 namespace content { 18 class WebContents; 19 }; 20 21 namespace printing { 22 class PrintSettings; 23 }; 24 25 namespace android_webview { 26 27 class AwPdfExporter : public PrintManagerDelegate { 28 public: 29 AwPdfExporter(JNIEnv* env, 30 jobject obj, 31 content::WebContents* web_contents); 32 33 virtual ~AwPdfExporter(); 34 35 void ExportToPdf(JNIEnv* env, 36 jobject obj, 37 int fd, 38 jobject cancel_signal); 39 40 // Implement PrintManagerDelegate methods 41 virtual void DidExportPdf(bool success) OVERRIDE; 42 virtual bool IsCancelled() OVERRIDE; 43 44 private: 45 void CreatePdfSettings(JNIEnv* env, jobject obj); 46 47 JavaObjectWeakGlobalRef java_ref_; 48 content::WebContents* web_contents_; 49 50 scoped_ptr<PrintManager> print_manager_; 51 scoped_ptr<printing::PrintSettings> print_settings_; 52 53 DISALLOW_COPY_AND_ASSIGN(AwPdfExporter); 54 }; 55 56 bool RegisterAwPdfExporter(JNIEnv* env); 57 58 } // namespace android_webview 59 60 #endif // ANDROID_WEBVIEW_NATIVE_AW_PDF_EXPORTER_H_ 61