fix: fetching PDF element from WebLocalFrame
(#34176)
fix: fetching PDF element from WebLocalFrame
This commit is contained in:
parent
a8103691ac
commit
8b5613efcb
1 changed files with 6 additions and 16 deletions
|
@ -10,6 +10,7 @@
|
||||||
#include "third_party/blink/public/web/web_local_frame.h"
|
#include "third_party/blink/public/web/web_local_frame.h"
|
||||||
|
|
||||||
#if BUILDFLAG(ENABLE_EXTENSIONS)
|
#if BUILDFLAG(ENABLE_EXTENSIONS)
|
||||||
|
#include "chrome/common/pdf_util.h"
|
||||||
#include "extensions/common/constants.h"
|
#include "extensions/common/constants.h"
|
||||||
#include "extensions/renderer/guest_view/mime_handler_view/post_message_support.h"
|
#include "extensions/renderer/guest_view/mime_handler_view/post_message_support.h"
|
||||||
#endif // BUILDFLAG(ENABLE_EXTENSIONS)
|
#endif // BUILDFLAG(ENABLE_EXTENSIONS)
|
||||||
|
@ -24,22 +25,11 @@ PrintRenderFrameHelperDelegate::~PrintRenderFrameHelperDelegate() = default;
|
||||||
blink::WebElement PrintRenderFrameHelperDelegate::GetPdfElement(
|
blink::WebElement PrintRenderFrameHelperDelegate::GetPdfElement(
|
||||||
blink::WebLocalFrame* frame) {
|
blink::WebLocalFrame* frame) {
|
||||||
#if BUILDFLAG(ENABLE_EXTENSIONS)
|
#if BUILDFLAG(ENABLE_EXTENSIONS)
|
||||||
GURL url = frame->GetDocument().Url();
|
if (frame->Parent() &&
|
||||||
bool inside_pdf_extension =
|
IsPdfInternalPluginAllowedOrigin(frame->Parent()->GetSecurityOrigin())) {
|
||||||
url.SchemeIs(extensions::kExtensionScheme) &&
|
auto plugin_element = frame->GetDocument().QuerySelector("embed");
|
||||||
url.host_piece() == extension_misc::kPdfExtensionId;
|
DCHECK(!plugin_element.IsNull());
|
||||||
if (inside_pdf_extension) {
|
return plugin_element;
|
||||||
// <object> with id="plugin" is created in
|
|
||||||
// chrome/browser/resources/pdf/pdf_viewer_base.js.
|
|
||||||
auto viewer_element = frame->GetDocument().GetElementById("viewer");
|
|
||||||
if (!viewer_element.IsNull() && !viewer_element.ShadowRoot().IsNull()) {
|
|
||||||
auto plugin_element =
|
|
||||||
viewer_element.ShadowRoot().QuerySelector("#plugin");
|
|
||||||
if (!plugin_element.IsNull()) {
|
|
||||||
return plugin_element;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
NOTREACHED();
|
|
||||||
}
|
}
|
||||||
#endif // BUILDFLAG(ENABLE_EXTENSIONS)
|
#endif // BUILDFLAG(ENABLE_EXTENSIONS)
|
||||||
return blink::WebElement();
|
return blink::WebElement();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue