1// Copyright 2014 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#include "chrome/renderer/pepper/chrome_pdf_print_client.h" 6 7#include "chrome/renderer/printing/print_web_view_helper.h" 8#include "content/public/renderer/pepper_plugin_instance.h" 9#include "content/public/renderer/render_view.h" 10#include "third_party/WebKit/public/web/WebDocument.h" 11#include "third_party/WebKit/public/web/WebElement.h" 12#include "third_party/WebKit/public/web/WebLocalFrame.h" 13#include "third_party/WebKit/public/web/WebPluginContainer.h" 14 15namespace { 16 17blink::WebElement GetWebElement(PP_Instance instance_id) { 18 content::PepperPluginInstance* instance = 19 content::PepperPluginInstance::Get(instance_id); 20 if (!instance) 21 return blink::WebElement(); 22 return instance->GetContainer()->element(); 23} 24 25printing::PrintWebViewHelper* GetPrintWebViewHelper( 26 const blink::WebElement& element) { 27 if (element.isNull()) 28 return NULL; 29 blink::WebView* view = element.document().frame()->view(); 30 content::RenderView* render_view = content::RenderView::FromWebView(view); 31 return printing::PrintWebViewHelper::Get(render_view); 32} 33 34} // namespace 35 36ChromePDFPrintClient::ChromePDFPrintClient() { 37} 38ChromePDFPrintClient::~ChromePDFPrintClient() { 39} 40 41bool ChromePDFPrintClient::IsPrintingEnabled(PP_Instance instance_id) { 42 blink::WebElement element = GetWebElement(instance_id); 43 printing::PrintWebViewHelper* helper = GetPrintWebViewHelper(element); 44 return helper && helper->IsPrintingEnabled(); 45} 46 47bool ChromePDFPrintClient::Print(PP_Instance instance_id) { 48 blink::WebElement element = GetWebElement(instance_id); 49 printing::PrintWebViewHelper* helper = GetPrintWebViewHelper(element); 50 if (helper) { 51 helper->PrintNode(element); 52 return true; 53 } 54 return false; 55} 56