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

Unified Diff: components/pdf/renderer/pepper_pdf_host.cc

Issue 2174963002: Fix a crash in pdf::PepperPDFHost::OnHostMsgHasUnsupportedFeature(). (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: niiiiiiiits! Created 4 years, 5 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
« no previous file with comments | « components/pdf/renderer/pepper_pdf_host.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/pdf/renderer/pepper_pdf_host.cc
diff --git a/components/pdf/renderer/pepper_pdf_host.cc b/components/pdf/renderer/pepper_pdf_host.cc
index 1355141c2d4d5d9ddd74f6b9b75537f809b2c1cb..4c02e704cd52ec87e986523f3c52b44076fa8baf 100644
--- a/components/pdf/renderer/pepper_pdf_host.cc
+++ b/components/pdf/renderer/pepper_pdf_host.cc
@@ -4,6 +4,7 @@
#include "components/pdf/renderer/pepper_pdf_host.h"
+#include "base/memory/ptr_util.h"
#include "components/pdf/common/pdf_messages.h"
#include "components/pdf/renderer/pdf_accessibility_tree.h"
#include "content/public/common/referrer.h"
@@ -30,6 +31,7 @@
namespace pdf {
namespace {
+
// --single-process model may fail in CHECK(!g_print_client) if there exist
// more than two RenderThreads, so here we use TLS for g_print_client.
// See http://crbug.com/457580.
@@ -96,33 +98,33 @@ int32_t PepperPDFHost::OnResourceMessageReceived(
int32_t PepperPDFHost::OnHostMsgDidStartLoading(
ppapi::host::HostMessageContext* context) {
- content::PepperPluginInstance* instance =
- host_->GetPluginInstance(pp_instance());
- if (!instance)
+ content::RenderView* render_view = GetRenderView();
+ if (!render_view)
return PP_ERROR_FAILED;
- instance->GetRenderView()->DidStartLoading();
+
+ render_view->DidStartLoading();
return PP_OK;
}
int32_t PepperPDFHost::OnHostMsgDidStopLoading(
ppapi::host::HostMessageContext* context) {
- content::PepperPluginInstance* instance =
- host_->GetPluginInstance(pp_instance());
- if (!instance)
+ content::RenderView* render_view = GetRenderView();
+ if (!render_view)
return PP_ERROR_FAILED;
- instance->GetRenderView()->DidStopLoading();
+
+ render_view->DidStopLoading();
return PP_OK;
}
int32_t PepperPDFHost::OnHostMsgSetContentRestriction(
ppapi::host::HostMessageContext* context,
int restrictions) {
- content::PepperPluginInstance* instance =
- host_->GetPluginInstance(pp_instance());
- if (!instance)
+ content::RenderView* render_view = GetRenderView();
+ if (!render_view)
return PP_ERROR_FAILED;
- instance->GetRenderView()->Send(new PDFHostMsg_PDFUpdateContentRestrictions(
- instance->GetRenderView()->GetRoutingID(), restrictions));
+
+ render_view->Send(new PDFHostMsg_PDFUpdateContentRestrictions(
+ render_view->GetRoutingID(), restrictions));
return PP_OK;
}
@@ -137,19 +139,10 @@ int32_t PepperPDFHost::OnHostMsgUserMetricsRecordAction(
int32_t PepperPDFHost::OnHostMsgHasUnsupportedFeature(
ppapi::host::HostMessageContext* context) {
- content::PepperPluginInstance* instance =
- host_->GetPluginInstance(pp_instance());
- if (!instance)
+ content::RenderView* render_view = GetRenderView();
+ if (!render_view)
return PP_ERROR_FAILED;
- // TODO(thestig): Turn CHECKs into the proper if statement after figuring out
- // what's wrong for https://crbug.com/627814
- CHECK(instance->GetContainer());
- CHECK(instance->GetContainer()->document().frame());
- CHECK(instance->GetContainer()->document().frame()->view());
- blink::WebView* view =
- instance->GetContainer()->document().frame()->view();
- content::RenderView* render_view = content::RenderView::FromWebView(view);
render_view->Send(
new PDFHostMsg_PDFHasUnsupportedFeature(render_view->GetRoutingID()));
return PP_OK;
@@ -166,8 +159,12 @@ int32_t PepperPDFHost::OnHostMsgSaveAs(
host_->GetPluginInstance(pp_instance());
if (!instance)
return PP_ERROR_FAILED;
- GURL url = instance->GetPluginURL();
+
content::RenderView* render_view = instance->GetRenderView();
+ if (!render_view)
+ return PP_ERROR_FAILED;
+
+ GURL url = instance->GetPluginURL();
content::Referrer referrer;
referrer.url = url;
referrer.policy = blink::WebReferrerPolicyDefault;
@@ -234,9 +231,15 @@ int32_t PepperPDFHost::OnHostMsgSetAccessibilityPageInfo(
void PepperPDFHost::CreatePdfAccessibilityTreeIfNeeded() {
if (!pdf_accessibility_tree_) {
- pdf_accessibility_tree_.reset(new PdfAccessibilityTree(
- host_, pp_instance()));
+ pdf_accessibility_tree_ =
+ base::MakeUnique<PdfAccessibilityTree>(host_, pp_instance());
}
}
+content::RenderView* PepperPDFHost::GetRenderView() {
+ content::PepperPluginInstance* instance =
+ host_->GetPluginInstance(pp_instance());
+ return instance ? instance->GetRenderView() : nullptr;
+}
+
} // namespace pdf
« no previous file with comments | « components/pdf/renderer/pepper_pdf_host.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698