Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2858)

Unified Diff: chrome/renderer/chrome_content_renderer_client.cc

Issue 477263003: pdf: Create a separate component for using the pdf pepper plugin. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/renderer/chrome_content_renderer_client.cc
diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer/chrome_content_renderer_client.cc
index b122262248ba5aedc70ad68f28dec4eee65a0b39..87f63e6e482f698eb77da2cc2625ad144e284022 100644
--- a/chrome/renderer/chrome_content_renderer_client.cc
+++ b/chrome/renderer/chrome_content_renderer_client.cc
@@ -51,7 +51,6 @@
#include "chrome/renderer/net_benchmarking_extension.h"
#include "chrome/renderer/page_load_histograms.h"
#include "chrome/renderer/pepper/pepper_helper.h"
-#include "chrome/renderer/pepper/ppb_pdf_impl.h"
#include "chrome/renderer/playback_extension.h"
#include "chrome/renderer/plugins/chrome_plugin_placeholder.h"
#include "chrome/renderer/plugins/plugin_uma.h"
@@ -75,10 +74,12 @@
#include "components/dom_distiller/core/url_constants.h"
#include "components/nacl/renderer/ppb_nacl_private_impl.h"
#include "components/password_manager/content/renderer/credential_manager_client.h"
+#include "components/pdf/renderer/ppb_pdf_impl.h"
#include "components/plugins/renderer/mobile_youtube_plugin.h"
#include "components/signin/core/common/profile_management_switches.h"
#include "components/visitedlink/renderer/visitedlink_slave.h"
#include "content/public/common/content_constants.h"
+#include "content/public/renderer/pepper_plugin_instance.h"
#include "content/public/renderer/render_frame.h"
#include "content/public/renderer/render_thread.h"
#include "content/public/renderer/render_view.h"
@@ -258,6 +259,48 @@ void IsGuestViewApiAvailableToScriptContext(
} // namespace
+#if defined(ENABLE_FULL_PRINTING)
+// XXX: Move into its own file.
raymes 2014/08/25 03:11:49 I guess you might as well move this into its own f
sadrul 2014/08/26 17:09:54 Done.
+class PDFPluginPrintDelegate : public pdf::PPB_PDF_Impl::PrintDelegate {
+ public:
+ PDFPluginPrintDelegate() {}
+ virtual ~PDFPluginPrintDelegate() {}
+
+ virtual bool IsPrintingEnabled(PP_Instance instance_id) OVERRIDE {
+ blink::WebElement element = GetWebElement(instance_id);
+ printing::PrintWebViewHelper* helper = GetPrintWebViewHelper(element);
+ return helper && helper->IsPrintingEnabled();
+ }
+
+ virtual void Print(PP_Instance instance_id) OVERRIDE {
+ blink::WebElement element = GetWebElement(instance_id);
+ printing::PrintWebViewHelper* helper = GetPrintWebViewHelper(element);
+ if (helper)
+ helper->PrintNode(element);
+ }
+
+ private:
+ blink::WebElement GetWebElement(PP_Instance instance_id) {
+ content::PepperPluginInstance* instance =
+ content::PepperPluginInstance::Get(instance_id);
+ if (!instance)
+ return blink::WebElement();
+ return instance->GetContainer()->element();
+ }
+
+ printing::PrintWebViewHelper* GetPrintWebViewHelper(
+ const blink::WebElement& element) {
+ if (element.isNull())
+ return NULL;
+ blink::WebView* view = element.document().frame()->view();
+ content::RenderView* render_view = content::RenderView::FromWebView(view);
+ return printing::PrintWebViewHelper::Get(render_view);
+ }
+
+ DISALLOW_COPY_AND_ASSIGN(PDFPluginPrintDelegate);
+};
+#endif // defined(ENABLE_FULL_PRINTING)
+
ChromeContentRendererClient::ChromeContentRendererClient() {
g_current_client = this;
@@ -421,6 +464,10 @@ void ChromeContentRendererClient::RenderThreadStarted() {
if (blacklist::IsBlacklistInitialized())
UMA_HISTOGRAM_BOOLEAN("Blacklist.PatchedInRenderer", true);
#endif
+#if defined(ENABLE_FULL_PRINTING)
+ pdf_print_delegate_.reset(new PDFPluginPrintDelegate());
+ pdf::PPB_PDF_Impl::SetPrintDelegate(pdf_print_delegate_.get());
+#endif
}
void ChromeContentRendererClient::RenderFrameCreated(
@@ -1394,7 +1441,7 @@ const void* ChromeContentRendererClient::CreatePPAPIInterface(
return nacl::GetNaClPrivateInterface();
#endif // DISABLE_NACL
if (interface_name == PPB_PDF_INTERFACE)
- return PPB_PDF_Impl::GetInterface();
+ return pdf::PPB_PDF_Impl::GetInterface();
#endif
return NULL;
}
« no previous file with comments | « chrome/renderer/chrome_content_renderer_client.h ('k') | chrome/renderer/pepper/pepper_flash_renderer_host.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698