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

Side by Side Diff: components/pdf/renderer/pepper_pdf_host.cc

Issue 2455543002: Convert PDF component IPC to mojo. (Closed)
Patch Set: Feedback Created 3 years, 8 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "components/pdf/renderer/pepper_pdf_host.h" 5 #include "components/pdf/renderer/pepper_pdf_host.h"
6 6
7 #include "base/memory/ptr_util.h" 7 #include "base/memory/ptr_util.h"
8 #include "components/pdf/common/pdf_messages.h"
9 #include "components/pdf/renderer/pdf_accessibility_tree.h" 8 #include "components/pdf/renderer/pdf_accessibility_tree.h"
9 #include "content/public/common/associated_interface_provider.h"
10 #include "content/public/common/referrer.h" 10 #include "content/public/common/referrer.h"
11 #include "content/public/renderer/pepper_plugin_instance.h" 11 #include "content/public/renderer/pepper_plugin_instance.h"
12 #include "content/public/renderer/render_frame.h" 12 #include "content/public/renderer/render_frame.h"
13 #include "content/public/renderer/render_thread.h" 13 #include "content/public/renderer/render_thread.h"
14 #include "content/public/renderer/renderer_ppapi_host.h" 14 #include "content/public/renderer/renderer_ppapi_host.h"
15 #include "ppapi/host/dispatch_host_message.h" 15 #include "ppapi/host/dispatch_host_message.h"
16 #include "ppapi/host/host_message_context.h" 16 #include "ppapi/host/host_message_context.h"
17 #include "ppapi/host/ppapi_host.h" 17 #include "ppapi/host/ppapi_host.h"
18 #include "ppapi/proxy/host_dispatcher.h" 18 #include "ppapi/proxy/host_dispatcher.h"
19 #include "ppapi/proxy/ppapi_messages.h" 19 #include "ppapi/proxy/ppapi_messages.h"
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
111 if (!render_frame) 111 if (!render_frame)
112 return PP_ERROR_FAILED; 112 return PP_ERROR_FAILED;
113 113
114 render_frame->PluginDidStopLoading(); 114 render_frame->PluginDidStopLoading();
115 return PP_OK; 115 return PP_OK;
116 } 116 }
117 117
118 int32_t PepperPDFHost::OnHostMsgSetContentRestriction( 118 int32_t PepperPDFHost::OnHostMsgSetContentRestriction(
119 ppapi::host::HostMessageContext* context, 119 ppapi::host::HostMessageContext* context,
120 int restrictions) { 120 int restrictions) {
121 content::RenderFrame* render_frame = GetRenderFrame(); 121 mojom::PdfService* service = GetRemotePdfService();
122 if (!render_frame) 122 if (!service)
123 return PP_ERROR_FAILED; 123 return PP_ERROR_FAILED;
124 124
125 render_frame->Send(new PDFHostMsg_PDFUpdateContentRestrictions( 125 service->UpdateContentRestrictions(restrictions);
126 render_frame->GetRoutingID(), restrictions));
127 return PP_OK; 126 return PP_OK;
128 } 127 }
129 128
130 int32_t PepperPDFHost::OnHostMsgUserMetricsRecordAction( 129 int32_t PepperPDFHost::OnHostMsgUserMetricsRecordAction(
131 ppapi::host::HostMessageContext* context, 130 ppapi::host::HostMessageContext* context,
132 const std::string& action) { 131 const std::string& action) {
133 if (action.empty()) 132 if (action.empty())
134 return PP_ERROR_FAILED; 133 return PP_ERROR_FAILED;
135 content::RenderThread::Get()->RecordComputedAction(action); 134 content::RenderThread::Get()->RecordComputedAction(action);
136 return PP_OK; 135 return PP_OK;
137 } 136 }
138 137
139 int32_t PepperPDFHost::OnHostMsgHasUnsupportedFeature( 138 int32_t PepperPDFHost::OnHostMsgHasUnsupportedFeature(
140 ppapi::host::HostMessageContext* context) { 139 ppapi::host::HostMessageContext* context) {
141 content::RenderFrame* render_frame = GetRenderFrame(); 140 mojom::PdfService* service = GetRemotePdfService();
142 if (!render_frame) 141 if (!service)
143 return PP_ERROR_FAILED; 142 return PP_ERROR_FAILED;
144 143
145 render_frame->Send( 144 service->HasUnsupportedFeature();
146 new PDFHostMsg_PDFHasUnsupportedFeature(render_frame->GetRoutingID()));
147 return PP_OK; 145 return PP_OK;
148 } 146 }
149 147
150 int32_t PepperPDFHost::OnHostMsgPrint( 148 int32_t PepperPDFHost::OnHostMsgPrint(
151 ppapi::host::HostMessageContext* context) { 149 ppapi::host::HostMessageContext* context) {
152 return InvokePrintingForInstance(pp_instance()) ? PP_OK : PP_ERROR_FAILED; 150 return InvokePrintingForInstance(pp_instance()) ? PP_OK : PP_ERROR_FAILED;
153 } 151 }
154 152
155 int32_t PepperPDFHost::OnHostMsgSaveAs( 153 int32_t PepperPDFHost::OnHostMsgSaveAs(
156 ppapi::host::HostMessageContext* context) { 154 ppapi::host::HostMessageContext* context) {
157 content::PepperPluginInstance* instance = 155 content::PepperPluginInstance* instance =
158 host_->GetPluginInstance(pp_instance()); 156 host_->GetPluginInstance(pp_instance());
159 if (!instance) 157 if (!instance)
160 return PP_ERROR_FAILED; 158 return PP_ERROR_FAILED;
161 159
162 content::RenderFrame* render_frame = instance->GetRenderFrame();
163 if (!render_frame)
164 return PP_ERROR_FAILED;
165
166 GURL url = instance->GetPluginURL(); 160 GURL url = instance->GetPluginURL();
167 content::Referrer referrer; 161 content::Referrer referrer;
168 referrer.url = url; 162 referrer.url = url;
169 referrer.policy = blink::WebReferrerPolicyDefault; 163 referrer.policy = blink::WebReferrerPolicyDefault;
170 referrer = content::Referrer::SanitizeForRequest(url, referrer); 164 referrer = content::Referrer::SanitizeForRequest(url, referrer);
171 render_frame->Send( 165
172 new PDFHostMsg_PDFSaveURLAs(render_frame->GetRoutingID(), url, referrer)); 166 mojom::PdfService* service = GetRemotePdfService();
167 if (!service)
168 return PP_ERROR_FAILED;
169
170 service->SaveUrlAs(url, referrer);
173 return PP_OK; 171 return PP_OK;
174 } 172 }
175 173
176 int32_t PepperPDFHost::OnHostMsgSetSelectedText( 174 int32_t PepperPDFHost::OnHostMsgSetSelectedText(
177 ppapi::host::HostMessageContext* context, 175 ppapi::host::HostMessageContext* context,
178 const base::string16& selected_text) { 176 const base::string16& selected_text) {
179 content::PepperPluginInstance* instance = 177 content::PepperPluginInstance* instance =
180 host_->GetPluginInstance(pp_instance()); 178 host_->GetPluginInstance(pp_instance());
181 if (!instance) 179 if (!instance)
182 return PP_ERROR_FAILED; 180 return PP_ERROR_FAILED;
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
234 base::MakeUnique<PdfAccessibilityTree>(host_, pp_instance()); 232 base::MakeUnique<PdfAccessibilityTree>(host_, pp_instance());
235 } 233 }
236 } 234 }
237 235
238 content::RenderFrame* PepperPDFHost::GetRenderFrame() { 236 content::RenderFrame* PepperPDFHost::GetRenderFrame() {
239 content::PepperPluginInstance* instance = 237 content::PepperPluginInstance* instance =
240 host_->GetPluginInstance(pp_instance()); 238 host_->GetPluginInstance(pp_instance());
241 return instance ? instance->GetRenderFrame() : nullptr; 239 return instance ? instance->GetRenderFrame() : nullptr;
242 } 240 }
243 241
242 mojom::PdfService* PepperPDFHost::GetRemotePdfService() {
243 content::RenderFrame* render_frame = GetRenderFrame();
244 if (!render_frame)
245 return nullptr;
246
247 if (!remote_pdf_service_) {
248 render_frame->GetRemoteAssociatedInterfaces()->GetInterface(
249 &remote_pdf_service_);
250 }
251 return remote_pdf_service_.get();
252 }
253
244 } // namespace pdf 254 } // namespace pdf
OLDNEW
« no previous file with comments | « components/pdf/renderer/pepper_pdf_host.h ('k') | content/public/common/referrer_struct_traits.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698