diff options
author | Szabolcs David <davidsz@inf.u-szeged.hu> | 2021-02-19 13:57:34 +0100 |
---|---|---|
committer | Szabolcs David <davidsz@inf.u-szeged.hu> | 2021-04-08 12:45:23 +0200 |
commit | d1398e734c927435f236c2eed36613bedf71acf6 (patch) | |
tree | a13da06003b6b142bd5f09e2be110f93f7cb1f3e /src/core/renderer | |
parent | fb60a0638a47564c1a1e7c2933b699d0205c810e (diff) |
Fix embedded PDFs when plugins are disabled
Cover all cases from https://pdfobject.com/static
- Plugin placeholder is generally broken: displays garbage and crashes
on interaction. Fix it and show when PDFs are included by <embed>
or <object> tags.
- Do not start an automatical download when the disabled PDF plugin
was requested by an iframe. Show a clickable placeholder and let the
end-users start it manually.
- Remove unused class PluginPlaceholderQt
Task-number: QTBUG-76314
Change-Id: I01a0c93ab23f54e4272f5aeb30578de0dcf18932
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'src/core/renderer')
4 files changed, 1 insertions, 155 deletions
diff --git a/src/core/renderer/content_renderer_client_qt.cpp b/src/core/renderer/content_renderer_client_qt.cpp index 317fde8f7..28815b5c1 100644 --- a/src/core/renderer/content_renderer_client_qt.cpp +++ b/src/core/renderer/content_renderer_client_qt.cpp @@ -97,7 +97,6 @@ #if BUILDFLAG(ENABLE_PLUGINS) #include "plugins/loadable_plugin_placeholder_qt.h" -#include "plugins/plugin_placeholder_qt.h" #include "content/common/frame_messages.h" #endif // ENABLE_PLUGINS diff --git a/src/core/renderer/plugins/loadable_plugin_placeholder_qt.cpp b/src/core/renderer/plugins/loadable_plugin_placeholder_qt.cpp index b43d9a24b..9dc5fbd94 100644 --- a/src/core/renderer/plugins/loadable_plugin_placeholder_qt.cpp +++ b/src/core/renderer/plugins/loadable_plugin_placeholder_qt.cpp @@ -77,7 +77,7 @@ LoadablePluginPlaceholderQt::~LoadablePluginPlaceholderQt() LoadablePluginPlaceholderQt* LoadablePluginPlaceholderQt::CreateLoadableMissingPlugin(content::RenderFrame* render_frame, const blink::WebPluginParams& params) { - const base::StringPiece template_html(ui::ResourceBundle::GetSharedInstance().GetRawDataResource(IDR_BLOCKED_PLUGIN_HTML)); + std::string template_html(ui::ResourceBundle::GetSharedInstance().LoadDataResourceString(IDR_BLOCKED_PLUGIN_HTML)); base::DictionaryValue values; values.SetString("name", ""); diff --git a/src/core/renderer/plugins/plugin_placeholder_qt.cpp b/src/core/renderer/plugins/plugin_placeholder_qt.cpp deleted file mode 100644 index a72c29873..000000000 --- a/src/core/renderer/plugins/plugin_placeholder_qt.cpp +++ /dev/null @@ -1,75 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtWebEngine module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -// Copyright 2013 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "plugin_placeholder_qt.h" - -#include "content/public/renderer/render_frame.h" -#include "content/public/renderer/v8_value_converter.h" -#include "gin/object_template_builder.h" - -namespace QtWebEngineCore { - -// static -gin::WrapperInfo PluginPlaceholderQt::kWrapperInfo = {gin::kEmbedderNativeGin}; - -PluginPlaceholderQt::PluginPlaceholderQt(content::RenderFrame* render_frame, - const blink::WebPluginParams& params, - const std::string& html_data) - : PluginPlaceholderBase(render_frame, params, html_data) -{} - -PluginPlaceholderQt::~PluginPlaceholderQt() {} - -v8::Local<v8::Value> PluginPlaceholderQt::GetV8Handle(v8::Isolate* isolate) -{ - return gin::CreateHandle(isolate, this).ToV8(); -} - -gin::ObjectTemplateBuilder PluginPlaceholderQt::GetObjectTemplateBuilder(v8::Isolate* isolate) -{ - return gin::Wrappable<PluginPlaceholderQt>::GetObjectTemplateBuilder(isolate) - .SetMethod<void (QtWebEngineCore::PluginPlaceholderQt::*)()>( - "hide", &PluginPlaceholderQt::HideCallback); -} - -} // namespace QtWebEngineCore diff --git a/src/core/renderer/plugins/plugin_placeholder_qt.h b/src/core/renderer/plugins/plugin_placeholder_qt.h deleted file mode 100644 index a99c0d045..000000000 --- a/src/core/renderer/plugins/plugin_placeholder_qt.h +++ /dev/null @@ -1,78 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtWebEngine module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -// Copyright 2013 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef PLUGIN_PLACEHOLDER_QT_H -#define PLUGIN_PLACEHOLDER_QT_H - -#include "base/macros.h" -#include "components/plugins/renderer/plugin_placeholder.h" -#include "gin/handle.h" -#include "gin/wrappable.h" -#include "third_party/blink/public/web/web_plugin_params.h" - -namespace QtWebEngineCore { - -// A basic placeholder that supports only hiding. -class PluginPlaceholderQt final : public plugins::PluginPlaceholderBase - , public gin::Wrappable<PluginPlaceholderQt> -{ -public: - static gin::WrapperInfo kWrapperInfo; - - PluginPlaceholderQt(content::RenderFrame* render_frame, - const blink::WebPluginParams& params, - const std::string& html_data); - ~PluginPlaceholderQt() override; - -private: - // WebViewPlugin::Delegate methods: - v8::Local<v8::Value> GetV8Handle(v8::Isolate* isolate) final; - - // gin::Wrappable method: - gin::ObjectTemplateBuilder GetObjectTemplateBuilder( - v8::Isolate* isolate) override; -}; - -} // namespace QtWebEngineCore - -#endif // PLUGIN_PLACEHOLDER_QT_H |