Handle account removal correctly on all platforms.
[chromium-blink-merge.git] / athena / main / athena_renderer_pdf_helper.cc
blob85bc003e8258937826b244962b3db4c0b250184f
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.
5 #include "athena/main/athena_renderer_pdf_helper.h"
7 #include "components/pdf/renderer/pepper_pdf_host.h"
8 #include "content/public/renderer/renderer_ppapi_host.h"
9 #include "ppapi/host/host_factory.h"
10 #include "ppapi/host/ppapi_host.h"
11 #include "ppapi/host/resource_host.h"
12 #include "ppapi/proxy/ppapi_messages.h"
14 namespace athena {
16 namespace {
18 class PDFRendererHostFactory : public ppapi::host::HostFactory {
19 public:
20 explicit PDFRendererHostFactory(content::RendererPpapiHost* host)
21 : host_(host) {}
22 virtual ~PDFRendererHostFactory() {}
24 private:
25 // ppapi::host::HostFactory:
26 virtual scoped_ptr<ppapi::host::ResourceHost> CreateResourceHost(
27 ppapi::host::PpapiHost* host,
28 const ppapi::proxy::ResourceMessageCallParams& params,
29 PP_Instance instance,
30 const IPC::Message& message) OVERRIDE {
31 DCHECK_EQ(host_->GetPpapiHost(), host);
32 // Make sure the plugin is giving us a valid instance for this resource.
33 if (!host_->IsValidInstance(instance))
34 return scoped_ptr<ppapi::host::ResourceHost>();
36 if (host_->GetPpapiHost()->permissions().HasPermission(
37 ppapi::PERMISSION_PRIVATE)) {
38 switch (message.type()) {
39 case PpapiHostMsg_PDF_Create::ID:
40 return scoped_ptr<ppapi::host::ResourceHost>(
41 new pdf::PepperPDFHost(host_, instance, params.pp_resource()));
43 case PpapiHostMsg_FlashFontFile_Create::ID:
44 return scoped_ptr<ppapi::host::ResourceHost>(
45 new ppapi::host::ResourceHost(host_->GetPpapiHost(),
46 instance,
47 params.pp_resource()));
51 return scoped_ptr<ppapi::host::ResourceHost>();
54 // Not owned by this object.
55 content::RendererPpapiHost* host_;
57 DISALLOW_COPY_AND_ASSIGN(PDFRendererHostFactory);
60 } // namespace
62 AthenaRendererPDFHelper::AthenaRendererPDFHelper(content::RenderFrame* frame)
63 : content::RenderFrameObserver(frame) {}
65 AthenaRendererPDFHelper::~AthenaRendererPDFHelper() {}
67 void AthenaRendererPDFHelper::DidCreatePepperPlugin(
68 content::RendererPpapiHost* host) {
69 host->GetPpapiHost()->AddHostFactoryFilter(
70 scoped_ptr<ppapi::host::HostFactory>(new PDFRendererHostFactory(host)));
73 } // namespace athena