| Index: android_webview/renderer/print_web_view_helper.cc
|
| diff --git a/chrome/renderer/printing/print_web_view_helper.cc b/android_webview/renderer/print_web_view_helper.cc
|
| similarity index 98%
|
| copy from chrome/renderer/printing/print_web_view_helper.cc
|
| copy to android_webview/renderer/print_web_view_helper.cc
|
| index c891b250fe4f7cf38a8663fabc339c1706bddefd..7ea4b71b124b6bad7afbbfdde87f25e50ae93928 100644
|
| --- a/chrome/renderer/printing/print_web_view_helper.cc
|
| +++ b/android_webview/renderer/print_web_view_helper.cc
|
| @@ -1,11 +1,14 @@
|
| -// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
| +// Copyright (c) 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 "chrome/renderer/printing/print_web_view_helper.h"
|
| +// TODO(sgurun) copied from chrome/renderer. Remove after crbug.com/322276
|
| +
|
| +#include "android_webview/renderer/print_web_view_helper.h"
|
|
|
| #include <string>
|
|
|
| +#include "android_webview/common/print_messages.h"
|
| #include "base/auto_reset.h"
|
| #include "base/command_line.h"
|
| #include "base/json/json_writer.h"
|
| @@ -16,15 +19,9 @@
|
| #include "base/strings/string_number_conversions.h"
|
| #include "base/strings/stringprintf.h"
|
| #include "base/strings/utf_string_conversions.h"
|
| -#include "chrome/common/chrome_switches.h"
|
| -#include "chrome/common/print_messages.h"
|
| -#include "chrome/common/render_messages.h"
|
| -#include "chrome/renderer/prerender/prerender_helper.h"
|
| #include "content/public/renderer/render_thread.h"
|
| #include "content/public/renderer/render_view.h"
|
| #include "content/public/renderer/web_preferences.h"
|
| -#include "grit/browser_resources.h"
|
| -#include "grit/generated_resources.h"
|
| #include "net/base/escape.h"
|
| #include "printing/metafile.h"
|
| #include "printing/metafile_impl.h"
|
| @@ -49,6 +46,11 @@
|
| #include "ui/base/resource/resource_bundle.h"
|
| #include "webkit/common/webpreferences.h"
|
|
|
| +// This code is copied from chrome/renderer/printing. Code is slightly
|
| +// modified to run it with webview, and the modifications are marked
|
| +// using OS_ANDROID.
|
| +// TODO(sgurun): remove the code as part of componentization of printing.
|
| +
|
| namespace printing {
|
|
|
| namespace {
|
| @@ -63,6 +65,8 @@ enum PrintPreviewHelperEvents {
|
|
|
| const double kMinDpi = 1.0;
|
|
|
| +#if 0
|
| +// TODO(sgurun) android_webview hack
|
| const char kPageLoadScriptFormat[] =
|
| "document.open(); document.write(%s); document.close();";
|
|
|
| @@ -76,6 +80,7 @@ void ExecuteScript(blink::WebFrame* frame,
|
| std::string script = base::StringPrintf(script_format, json.c_str());
|
| frame->executeScript(blink::WebString(UTF8ToUTF16(script)));
|
| }
|
| +#endif
|
|
|
| int GetDPI(const PrintMsg_Print_Params* print_params) {
|
| #if defined(OS_MACOSX)
|
| @@ -365,13 +370,11 @@ PrintMsg_Print_Params CalculatePrintParamsForCss(
|
| }
|
|
|
| bool IsPrintPreviewEnabled() {
|
| - return CommandLine::ForCurrentProcess()->HasSwitch(
|
| - switches::kRendererPrintPreview);
|
| + return false;
|
| }
|
|
|
| bool IsPrintThrottlingDisabled() {
|
| - return CommandLine::ForCurrentProcess()->HasSwitch(
|
| - switches::kDisableScriptedPrintThrottling);
|
| + return true;
|
| }
|
|
|
| } // namespace
|
| @@ -414,6 +417,8 @@ void PrintWebViewHelper::PrintHeaderAndFooter(
|
| const PageSizeMargins& page_layout,
|
| const base::DictionaryValue& header_footer_info,
|
| const PrintMsg_Print_Params& params) {
|
| +#if 0
|
| + // TODO(sgurun) android_webview hack
|
| skia::VectorPlatformDeviceSkia* device =
|
| static_cast<skia::VectorPlatformDeviceSkia*>(canvas->getTopDevice());
|
| device->setDrawingArea(SkPDFDevice::kMargin_DrawingArea);
|
| @@ -451,13 +456,14 @@ void PrintWebViewHelper::PrintHeaderAndFooter(
|
| blink::WebPrintParams webkit_params(page_size);
|
| webkit_params.printerDPI = GetDPI(¶ms);
|
|
|
| - frame->printBegin(webkit_params);
|
| + frame->printBegin(webkit_params, WebKit::WebNode(), NULL);
|
| frame->printPage(0, canvas);
|
| frame->printEnd();
|
|
|
| web_view->close();
|
|
|
| device->setDrawingArea(SkPDFDevice::kContent_DrawingArea);
|
| +#endif
|
| }
|
|
|
| // static - Not anonymous so that platform implementations can use it.
|
| @@ -720,6 +726,8 @@ PrintWebViewHelper::PrintWebViewHelper(content::RenderView* render_view)
|
| is_loading_(false),
|
| is_scripted_preview_delayed_(false),
|
| weak_ptr_factory_(this) {
|
| + // TODO(sgurun) enable window.print() for webview crbug.com/322303
|
| + SetScriptedPrintBlocked(true);
|
| }
|
|
|
| PrintWebViewHelper::~PrintWebViewHelper() {}
|
| @@ -756,11 +764,14 @@ void PrintWebViewHelper::PrintPage(blink::WebFrame* frame,
|
| bool user_initiated) {
|
| DCHECK(frame);
|
|
|
| +#if !defined(OS_ANDROID)
|
| + // TODO(sgurun) android_webview hack
|
| // Allow Prerendering to cancel this print request if necessary.
|
| if (prerender::PrerenderHelper::IsPrerendering(render_view())) {
|
| Send(new ChromeViewHostMsg_CancelPrerenderForPrinting(routing_id()));
|
| return;
|
| }
|
| +#endif // !defined(OS_ANDROID)
|
|
|
| if (!IsScriptInitiatedPrintAllowed(frame, user_initiated))
|
| return;
|
| @@ -1095,6 +1106,7 @@ bool PrintWebViewHelper::FinalizePrintReadyDocument() {
|
| DCHECK_GT(buf_size, 0u);
|
|
|
| PrintHostMsg_DidPreviewDocument_Params preview_params;
|
| + preview_params.reuse_existing_data = false;
|
| preview_params.data_size = buf_size;
|
| preview_params.document_cookie = print_pages_params_->params.document_cookie;
|
| preview_params.expected_pages_count =
|
| @@ -1197,12 +1209,15 @@ void PrintWebViewHelper::Print(blink::WebFrame* frame,
|
| return;
|
| }
|
|
|
| +#if !defined(OS_ANDROID)
|
| + // TODO(sgurun) android_webview hack
|
| // Ask the browser to show UI to retrieve the final print settings.
|
| if (!GetPrintSettingsFromUser(frame_ref.GetFrame(), node,
|
| expected_page_count)) {
|
| DidFinishPrinting(OK); // Release resources and fail silently.
|
| return;
|
| }
|
| +#endif // !defined(OS_ANDROID)
|
|
|
| // Render Pages for printing.
|
| if (!RenderPagesForPrint(frame_ref.GetFrame(), node)) {
|
| @@ -1241,6 +1256,7 @@ void PrintWebViewHelper::DidFinishPrinting(PrintingResult result) {
|
| print_preview_context_.Failed(notify_browser_of_print_failure_);
|
| break;
|
| }
|
| +
|
| prep_frame_view_.reset();
|
| print_pages_params_.reset();
|
| notify_browser_of_print_failure_ = true;
|
| @@ -1379,9 +1395,12 @@ bool PrintWebViewHelper::CalculateNumberOfPages(blink::WebFrame* frame,
|
| bool fit_to_paper_size = !(PrintingNodeOrPdfFrame(frame, node));
|
| if (!InitPrintSettings(fit_to_paper_size)) {
|
| notify_browser_of_print_failure_ = false;
|
| +#if !defined(OS_ANDROID)
|
| + // TODO(sgurun) android_webview hack
|
| render_view()->RunModalAlertDialog(
|
| frame,
|
| l10n_util::GetStringUTF16(IDS_PRINT_PREVIEW_INVALID_PRINTER_SETTINGS));
|
| +#endif // !defined(OS_ANDROID)
|
| return false;
|
| }
|
|
|
| @@ -1437,6 +1456,8 @@ bool PrintWebViewHelper::UpdatePrintSettings(
|
| if (!print_for_preview_) {
|
| print_preview_context_.set_error(PREVIEW_ERROR_INVALID_PRINTER_SETTINGS);
|
| } else {
|
| +#if !defined(OS_ANDROID)
|
| + // TODO(sgurun) android_webview hack
|
| // PrintForPrintPreview
|
| blink::WebFrame* print_frame = NULL;
|
| // This may not be the right frame, but the alert will be modal,
|
| @@ -1448,6 +1469,7 @@ bool PrintWebViewHelper::UpdatePrintSettings(
|
| l10n_util::GetStringUTF16(
|
| IDS_PRINT_PREVIEW_INVALID_PRINTER_SETTINGS));
|
| }
|
| +#endif // !defined(OS_ANDROID)
|
| }
|
| return false;
|
| }
|
| @@ -1617,7 +1639,6 @@ void PrintWebViewHelper::IncrementScriptedPrintCount() {
|
| last_cancelled_script_print_ = base::Time::Now();
|
| }
|
|
|
| -
|
| void PrintWebViewHelper::ShowScriptedPrintPreview() {
|
| if (is_scripted_preview_delayed_) {
|
| is_scripted_preview_delayed_ = false;
|
|
|