From b25f003bab44abc4931bd1a68c30f964ba9ac2fa Mon Sep 17 00:00:00 2001 From: "avayvod@chromium.org" Date: Mon, 19 Aug 2013 22:26:25 +0000 Subject: Submitting https://codereview.chromium.org/23116003/ for Cihat Imamoglu. Adds PrintingContext implementation stub for Android. BUG=147070 TBR=thestig@chromium.org Review URL: https://codereview.chromium.org/22999026 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@218339 0039d316-1c4b-4281-b951-d872f2087c98 --- printing/image_android.cc | 13 +++++++ printing/image_linux.cc | 2 -- printing/metafile.h | 6 ++-- printing/pdf_metafile_skia.cc | 2 +- printing/pdf_metafile_skia.h | 4 +-- printing/printed_document.cc | 4 +-- printing/printing.gyp | 6 ++++ printing/printing_context_android.h | 68 +++++++++++++++++++++++++++++++++++++ 8 files changed, 95 insertions(+), 10 deletions(-) create mode 100644 printing/image_android.cc create mode 100644 printing/printing_context_android.h (limited to 'printing') diff --git a/printing/image_android.cc b/printing/image_android.cc new file mode 100644 index 0000000..544cf07 --- /dev/null +++ b/printing/image_android.cc @@ -0,0 +1,13 @@ +// 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. + +#include "printing/image.h" + +namespace printing { + +bool Image::LoadMetafile(const Metafile& metafile) { + return false; +} + +} // namespace printing diff --git a/printing/image_linux.cc b/printing/image_linux.cc index 3968cfd..d89c4e9 100644 --- a/printing/image_linux.cc +++ b/printing/image_linux.cc @@ -4,8 +4,6 @@ #include "printing/image.h" -#include "base/logging.h" - namespace printing { bool Image::LoadMetafile(const Metafile& metafile) { diff --git a/printing/metafile.h b/printing/metafile.h index ca0901b..e331069 100644 --- a/printing/metafile.h +++ b/printing/metafile.h @@ -29,7 +29,7 @@ class Size; class SkDevice; -#if defined(OS_CHROMEOS) +#if defined(OS_CHROMEOS) || defined(OS_ANDROID) namespace base { struct FileDescriptor; } @@ -155,12 +155,12 @@ class PRINTING_EXPORT Metafile { gfx::NativeDrawingContext context, const CGRect rect, const MacRenderPageParams& params) const = 0; -#elif defined(OS_CHROMEOS) +#elif defined(OS_CHROMEOS) || defined(OS_ANDROID) // Saves the underlying data to the file associated with fd. This function // should ONLY be called after the metafile is closed. // Returns true if writing succeeded. virtual bool SaveToFD(const base::FileDescriptor& fd) const = 0; -#endif // if defined(OS_CHROMEOS) +#endif // if defined(OS_CHROMEOS) || defined(OS_ANDROID) }; } // namespace printing diff --git a/printing/pdf_metafile_skia.cc b/printing/pdf_metafile_skia.cc index 3326a1d..31c8c74 100644 --- a/printing/pdf_metafile_skia.cc +++ b/printing/pdf_metafile_skia.cc @@ -192,7 +192,7 @@ bool PdfMetafileSkia::RenderPage(unsigned int page_number, } #endif -#if defined(OS_CHROMEOS) +#if defined(OS_CHROMEOS) || defined(OS_ANDROID) bool PdfMetafileSkia::SaveToFD(const base::FileDescriptor& fd) const { DCHECK_GT(data_->pdf_stream_.getOffset(), 0U); diff --git a/printing/pdf_metafile_skia.h b/printing/pdf_metafile_skia.h index 33be6d2..c6f1971 100644 --- a/printing/pdf_metafile_skia.h +++ b/printing/pdf_metafile_skia.h @@ -63,9 +63,9 @@ class PRINTING_EXPORT PdfMetafileSkia : public Metafile { const MacRenderPageParams& params) const OVERRIDE; #endif -#if defined(OS_CHROMEOS) +#if defined(OS_CHROMEOS) || defined(OS_ANDROID) virtual bool SaveToFD(const base::FileDescriptor& fd) const OVERRIDE; -#endif // if defined(OS_CHROMEOS) +#endif // if defined(OS_CHROMEOS) || defined(OS_ANDROID) // Return a new metafile containing just the current page in draft mode. PdfMetafileSkia* GetMetafileForCurrentPage(); diff --git a/printing/printed_document.cc b/printing/printed_document.cc index 6e912a1..59cc385 100644 --- a/printing/printed_document.cc +++ b/printing/printed_document.cc @@ -225,8 +225,8 @@ PrintedDocument::Immutable::Immutable(const PrintSettings& settings, PrintedDocument::Immutable::~Immutable() { } -#if defined(OS_POSIX) && defined(USE_AURA) -// This function is not used on aura linux/chromeos. +#if (defined(OS_POSIX) && defined(USE_AURA)) || defined(OS_ANDROID) +// This function is not used on aura linux/chromeos or android. void PrintedDocument::RenderPrintedPage(const PrintedPage& page, PrintingContext* context) const { } diff --git a/printing/printing.gyp b/printing/printing.gyp index b3bbf2b..890e5bf 100644 --- a/printing/printing.gyp +++ b/printing/printing.gyp @@ -37,6 +37,7 @@ 'emf_win.cc', 'emf_win.h', 'image.cc', + 'image_android.cc', 'image_linux.cc', 'image_mac.cc', 'image_win.cc', @@ -228,6 +229,11 @@ 'printing_context_gtk.h', ], }], + ['OS=="android"', { + 'sources': [ + 'printing_context_android.h', + ], + }], ], }, { diff --git a/printing/printing_context_android.h b/printing/printing_context_android.h new file mode 100644 index 0000000..e38fff9 --- /dev/null +++ b/printing/printing_context_android.h @@ -0,0 +1,68 @@ +// 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. + +#ifndef PRINTING_PRINTING_CONTEXT_ANDROID_H_ +#define PRINTING_PRINTING_CONTEXT_ANDROID_H_ + +#include + +#include + +#include "base/android/scoped_java_ref.h" +#include "printing/printing_context.h" + +namespace printing { + +// Android subclass of PrintingContext. The implementation for this header file +// resides in Chrome for Android repository. This class communicates with the +// Java side through JNI. +class PRINTING_EXPORT PrintingContextAndroid : public PrintingContext { + public: + explicit PrintingContextAndroid(const std::string& app_locale); + virtual ~PrintingContextAndroid(); + + // Called when the page is successfully written to a PDF using the file + // descriptor specified, or when the printing operation failed. + static void PdfWritingDone(int fd, bool success); + + // Called from Java, when printing settings from the user are ready or the + // printing operation is canceled. + void AskUserForSettingsReply(bool success); + + // PrintingContext implementation. + virtual void AskUserForSettings( + gfx::NativeView parent_view, + int max_pages, + bool has_selection, + const PrintSettingsCallback& callback) OVERRIDE; + virtual Result UseDefaultSettings() OVERRIDE; + virtual Result UpdatePrinterSettings( + const base::DictionaryValue& job_settings, + const PageRanges& ranges) OVERRIDE; + virtual Result InitWithSettings(const PrintSettings& settings) OVERRIDE; + virtual Result NewDocument(const string16& document_name) OVERRIDE; + virtual Result NewPage() OVERRIDE; + virtual Result PageDone() OVERRIDE; + virtual Result DocumentDone() OVERRIDE; + virtual void Cancel() OVERRIDE; + virtual void ReleaseContext() OVERRIDE; + virtual gfx::NativeDrawingContext context() const OVERRIDE; + + // Registers JNI bindings for RegisterContext. + static bool RegisterPrintingContext(JNIEnv* env); + + private: + base::android::ScopedJavaGlobalRef j_printing_context_; + + // The callback from AskUserForSettings to be called when the settings are + // ready on the Java side + PrintSettingsCallback callback_; + + DISALLOW_COPY_AND_ASSIGN(PrintingContextAndroid); +}; + +} // namespace printing + +#endif // PRINTING_PRINTING_CONTEXT_ANDROID_H_ + -- cgit v1.1