// Copyright 2015 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 "android_webview/browser/aw_print_manager.h" #include "components/printing/browser/print_manager_utils.h" #include "components/printing/common/print_messages.h" #include "content/public/browser/browser_thread.h" DEFINE_WEB_CONTENTS_USER_DATA_KEY(android_webview::AwPrintManager); namespace android_webview { // static AwPrintManager* AwPrintManager::CreateForWebContents( content::WebContents* contents, const printing::PrintSettings& settings, const base::FileDescriptor& file_descriptor, const PrintManager::PdfWritingDoneCallback& callback) { AwPrintManager* print_manager = new AwPrintManager(contents, settings, file_descriptor, callback); contents->SetUserData(UserDataKey(), print_manager); return print_manager; } AwPrintManager::AwPrintManager( content::WebContents* contents, const printing::PrintSettings& settings, const base::FileDescriptor& file_descriptor, const PdfWritingDoneCallback& callback) : PrintManager(contents), settings_(settings) { set_file_descriptor(file_descriptor); pdf_writing_done_callback_ = callback; cookie_ = 1; } AwPrintManager::~AwPrintManager() { } bool AwPrintManager::PrintNow() { DCHECK_CURRENTLY_ON(content::BrowserThread::UI); return Send(new PrintMsg_PrintPages(routing_id())); } bool AwPrintManager::OnMessageReceived(const IPC::Message& message) { bool handled = true; IPC_BEGIN_MESSAGE_MAP(AwPrintManager, message) IPC_MESSAGE_HANDLER_DELAY_REPLY(PrintHostMsg_GetDefaultPrintSettings, OnGetDefaultPrintSettings) IPC_MESSAGE_UNHANDLED(handled = false) IPC_END_MESSAGE_MAP() return handled ? true : PrintManager::OnMessageReceived(message); } void AwPrintManager::OnGetDefaultPrintSettings(IPC::Message* reply_msg) { // Unlike the printing_message_filter, we do process this in UI thread. DCHECK_CURRENTLY_ON(content::BrowserThread::UI); PrintMsg_Print_Params params; printing::RenderParamsFromPrintSettings(settings_, ¶ms); params.document_cookie = cookie_; PrintHostMsg_GetDefaultPrintSettings::WriteReplyParams(reply_msg, params); Send(reply_msg); } } // namespace android_webview