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_helper.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 BrowserViewRenderer; 28 29 class AwPdfExporter : public PrintManagerDelegate { 30 public: 31 AwPdfExporter(JNIEnv* env, 32 jobject obj, 33 BrowserViewRenderer* view_renderer, 34 content::WebContents* web_contents); 35 36 virtual ~AwPdfExporter(); 37 38 void ExportToPdf(JNIEnv* env, 39 jobject obj, 40 int fd, 41 jobject cancel_signal); 42 43 // Implement PrintManagerDelegate methods 44 virtual void DidExportPdf(bool success) OVERRIDE; 45 virtual bool IsCancelled() OVERRIDE; 46 47 private: 48 void CreatePdfSettings(JNIEnv* env, jobject obj); 49 50 JavaObjectWeakGlobalRef java_ref_; 51 BrowserViewRenderer* view_renderer_; 52 content::WebContents* web_contents_; 53 54 scoped_ptr<PrintManager> print_manager_; 55 scoped_ptr<printing::PrintSettings> print_settings_; 56 57 DISALLOW_COPY_AND_ASSIGN(AwPdfExporter); 58 }; 59 60 bool RegisterAwPdfExporter(JNIEnv* env); 61 62 } // namespace android_webview 63 64 #endif // ANDROID_WEBVIEW_NATIVE_AW_PDF_EXPORTER_H_ 65