11320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Copyright 2014 The Chromium Authors. All rights reserved. 21320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Use of this source code is governed by a BSD-style license that can be 31320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// found in the LICENSE file. 41320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 51320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/renderer/pepper/chrome_pdf_print_client.h" 61320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 71320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/renderer/printing/print_web_view_helper.h" 81320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "content/public/renderer/pepper_plugin_instance.h" 91320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "content/public/renderer/render_view.h" 101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "third_party/WebKit/public/web/WebDocument.h" 111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "third_party/WebKit/public/web/WebElement.h" 121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "third_party/WebKit/public/web/WebLocalFrame.h" 131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "third_party/WebKit/public/web/WebPluginContainer.h" 141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccinamespace { 161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciblink::WebElement GetWebElement(PP_Instance instance_id) { 181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci content::PepperPluginInstance* instance = 191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci content::PepperPluginInstance::Get(instance_id); 201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (!instance) 211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return blink::WebElement(); 221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return instance->GetContainer()->element(); 231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciprinting::PrintWebViewHelper* GetPrintWebViewHelper( 261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const blink::WebElement& element) { 271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (element.isNull()) 281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return NULL; 291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci blink::WebView* view = element.document().frame()->view(); 301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci content::RenderView* render_view = content::RenderView::FromWebView(view); 311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return printing::PrintWebViewHelper::Get(render_view); 321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} // namespace 351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciChromePDFPrintClient::ChromePDFPrintClient() { 371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciChromePDFPrintClient::~ChromePDFPrintClient() { 391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccibool ChromePDFPrintClient::IsPrintingEnabled(PP_Instance instance_id) { 421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci blink::WebElement element = GetWebElement(instance_id); 431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci printing::PrintWebViewHelper* helper = GetPrintWebViewHelper(element); 441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return helper && helper->IsPrintingEnabled(); 451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccibool ChromePDFPrintClient::Print(PP_Instance instance_id) { 481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci blink::WebElement element = GetWebElement(instance_id); 491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci printing::PrintWebViewHelper* helper = GetPrintWebViewHelper(element); 501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (helper) { 511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci helper->PrintNode(element); 521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return true; 531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return false; 551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 56