summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2020-06-03 16:01:24 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2020-09-09 15:19:07 +0200
commitcd61343ceb4a3de8ce16082917a2f197b2481d08 (patch)
treeae88767edf6b3dc07b8dcf54c97a779eb2812768
parentfc3893ea80296bd17e1797d5caf4479e0be4afd1 (diff)
Chromium 81-based adaptations
Change-Id: Ie422b327025da084bc8038c7a0aadee2db801f29 Reviewed-by: Jüri Valdmann <juri.valdmann@qt.io>
-rw-r--r--src/buildtools/config/common.pri21
-rw-r--r--src/core/browser_accessibility_qt.cpp9
-rw-r--r--src/core/browser_main_parts_qt.cpp18
-rw-r--r--src/core/browser_main_parts_qt.h7
-rw-r--r--src/core/certificate_error_controller.cpp2
-rw-r--r--src/core/certificate_error_controller.h3
-rw-r--r--src/core/clipboard_qt.cpp23
-rw-r--r--src/core/clipboard_qt.h2
-rw-r--r--src/core/compositor/display_gl_output_surface.cpp8
-rw-r--r--src/core/compositor/display_gl_output_surface.h1
-rw-r--r--src/core/content_browser_client_qt.cpp67
-rw-r--r--src/core/content_browser_client_qt.h14
-rw-r--r--src/core/content_main_delegate_qt.cpp15
-rw-r--r--src/core/content_main_delegate_qt.h4
-rw-r--r--src/core/delegated_frame_host_client_qt.cpp5
-rw-r--r--src/core/delegated_frame_host_client_qt.h1
-rw-r--r--src/core/devtools_frontend_qt.cpp36
-rw-r--r--src/core/devtools_frontend_qt.h2
-rw-r--r--src/core/download_manager_delegate_qt.cpp43
-rw-r--r--src/core/download_manager_delegate_qt.h8
-rw-r--r--src/core/extensions/extension_system_qt.cpp9
-rw-r--r--src/core/extensions/extension_system_qt.h2
-rw-r--r--src/core/extensions/extensions_browser_client_qt.cpp63
-rw-r--r--src/core/extensions/extensions_browser_client_qt.h5
-rw-r--r--src/core/net/custom_url_loader_factory.cpp64
-rw-r--r--src/core/net/proxying_restricted_cookie_manager_qt.cpp17
-rw-r--r--src/core/net/proxying_restricted_cookie_manager_qt.h14
-rw-r--r--src/core/net/proxying_url_loader_factory_qt.cpp16
-rw-r--r--src/core/net/proxying_url_loader_factory_qt.h1
-rw-r--r--src/core/net/ssl_host_state_delegate_qt.cpp6
-rw-r--r--src/core/net/ssl_host_state_delegate_qt.h6
-rw-r--r--src/core/net/url_request_custom_job_proxy.h6
-rw-r--r--src/core/ozone/gl_ozone_glx_qt.cpp6
-rw-r--r--src/core/ozone/gl_ozone_glx_qt.h1
-rw-r--r--src/core/ozone/gl_surface_egl_qt.cpp4
-rw-r--r--src/core/ozone/gl_surface_egl_qt.h5
-rw-r--r--src/core/ozone/ozone_platform_qt.cpp4
-rw-r--r--src/core/permission_manager_qt.cpp14
-rw-r--r--src/core/printing/print_view_manager_qt.cpp7
-rw-r--r--src/core/qtwebengine_resources.gni12
-rw-r--r--src/core/qtwebengine_sources.gni3
-rw-r--r--src/core/quota_permission_context_qt.cpp14
-rw-r--r--src/core/quota_permission_context_qt.h4
-rw-r--r--src/core/quota_request_controller_impl.cpp11
-rw-r--r--src/core/quota_request_controller_impl.h2
-rw-r--r--src/core/render_widget_host_view_qt.cpp59
-rw-r--r--src/core/render_widget_host_view_qt.h4
-rw-r--r--src/core/renderer/content_renderer_client_qt.cpp9
-rw-r--r--src/core/renderer/content_renderer_client_qt.h2
-rw-r--r--src/core/renderer/print_web_view_helper_delegate_qt.cpp5
-rw-r--r--src/core/renderer/print_web_view_helper_delegate_qt.h2
-rw-r--r--src/core/renderer_host/pepper/pepper_isolated_file_system_message_filter.cpp2
-rw-r--r--src/core/renderer_host/pepper/pepper_isolated_file_system_message_filter.h2
-rw-r--r--src/core/resource_bundle_qt.cpp2
-rw-r--r--src/core/user_script.cpp2
-rw-r--r--src/core/web_contents_adapter.cpp26
-rw-r--r--src/core/web_contents_delegate_qt.cpp8
-rw-r--r--src/core/web_contents_delegate_qt.h2
-rw-r--r--src/core/web_engine_context.cpp2
-rw-r--r--src/core/web_event_factory.cpp18
-rw-r--r--src/core/web_event_factory.h6
-rw-r--r--tests/auto/core/qwebengineurlrequestinterceptor/tst_qwebengineurlrequestinterceptor.cpp2
-rw-r--r--tests/auto/widgets/accessibility/tst_accessibility.cpp2
-rw-r--r--tests/auto/widgets/origins/tst_origins.cpp98
-rwxr-xr-xtools/buildscripts/repack_locales.py8
-rwxr-xr-xtools/scripts/take_snapshot.py1
-rw-r--r--tools/scripts/version_resolver.py4
67 files changed, 520 insertions, 331 deletions
diff --git a/src/buildtools/config/common.pri b/src/buildtools/config/common.pri
index ddcd225cc..c184024e8 100644
--- a/src/buildtools/config/common.pri
+++ b/src/buildtools/config/common.pri
@@ -5,7 +5,6 @@ QT_FOR_CONFIG += buildtools-private webenginecore webenginecore-private
gn_args += \
use_qt=true \
- closure_compile=false \
is_component_build=false \
is_shared=true \
enable_debugallocation=false \
@@ -20,17 +19,27 @@ gn_args += \
enable_web_auth=true \
enable_web_speech=false \
enable_widevine=true \
+ forbid_non_component_debug_builds=false \
has_native_accessibility=false \
- optimize_webui=false \
safe_browsing_mode=0 \
- strip_absolute_paths_from_debug_symbols=false \
toolkit_views=false \
treat_warnings_as_errors=false \
use_allocator_shim=false \
use_allocator=\"none\" \
- use_custom_libcxx=false \
- v8_use_external_startup_data=false \
- forbid_non_component_debug_builds=false
+ use_custom_libcxx=false
+
+# No closure compile supported at this time
+gn_args += \
+ closure_compile=false \
+ optimize_webui=false
+
+# We always embed v8 startup data currently
+gn_args += \
+ v8_use_external_startup_data=false
+
+# Uses special flags for clang not available on xcode, and messes up gdb debugging too.
+gn_args += \
+ strip_absolute_paths_from_debug_symbols=false
greaterThan(QMAKE_JUMBO_MERGE_LIMIT,0) {
gn_args += \
diff --git a/src/core/browser_accessibility_qt.cpp b/src/core/browser_accessibility_qt.cpp
index de78eb85d..cf889961f 100644
--- a/src/core/browser_accessibility_qt.cpp
+++ b/src/core/browser_accessibility_qt.cpp
@@ -264,7 +264,6 @@ QAccessible::Role BrowserAccessibilityQt::role() const
case ax::mojom::Role::kComplementary:
return QAccessible::ComplementaryContent;
case ax::mojom::Role::kComment:
- case ax::mojom::Role::kCommentSection:
return QAccessible::Section;
case ax::mojom::Role::kContentDeletion:
case ax::mojom::Role::kContentInsertion:
@@ -450,8 +449,14 @@ QAccessible::Role BrowserAccessibilityQt::role() const
return QAccessible::Pane;
case ax::mojom::Role::kParagraph:
return QAccessible::Paragraph;
+ case ax::mojom::Role::kPdfActionableHighlight:
+ return QAccessible::Button;
+ case ax::mojom::Role::kPluginObject:
+ return QAccessible::Grouping;
case ax::mojom::Role::kPopUpButton:
return QAccessible::ComboBox;
+ case ax::mojom::Role::kPortal:
+ return QAccessible::Button;
case ax::mojom::Role::kPre:
return QAccessible::Section;
case ax::mojom::Role::kPresentational:
@@ -464,8 +469,6 @@ QAccessible::Role BrowserAccessibilityQt::role() const
return QAccessible::Grouping;
case ax::mojom::Role::kRegion:
return QAccessible::Section;
- case ax::mojom::Role::kRevision:
- return QAccessible::Section;
case ax::mojom::Role::kRow:
return QAccessible::Row;
case ax::mojom::Role::kRowGroup:
diff --git a/src/core/browser_main_parts_qt.cpp b/src/core/browser_main_parts_qt.cpp
index 45056fec2..785c52507 100644
--- a/src/core/browser_main_parts_qt.cpp
+++ b/src/core/browser_main_parts_qt.cpp
@@ -48,6 +48,11 @@
#include "base/task/sequence_manager/sequence_manager_impl.h"
#include "base/task/sequence_manager/thread_controller_with_message_pump_impl.h"
#include "base/threading/thread_restrictions.h"
+#include "chrome/browser/tab_contents/form_interaction_tab_helper.h"
+#include "components/performance_manager/embedder/performance_manager_lifetime.h"
+#include "components/performance_manager/embedder/performance_manager_registry.h"
+#include "components/performance_manager/public/graph/graph.h"
+#include "components/performance_manager/public/performance_manager.h"
#include "content/public/browser/browser_main_parts.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/child_process_security_policy.h"
@@ -255,6 +260,10 @@ void BrowserMainPartsQt::PreMainMessageLoopRun()
void BrowserMainPartsQt::PostMainMessageLoopRun()
{
+ performance_manager_registry_->TearDown();
+ performance_manager_registry_.reset();
+ performance_manager::DestroyPerformanceManager(std::move(performance_manager_));
+
// The ProfileQt's destructor uses the MessageLoop so it should be deleted
// right before the RenderProcessHostImpl's destructor destroys it.
WebEngineContext::current()->destroyProfileAdapter();
@@ -277,8 +286,17 @@ int BrowserMainPartsQt::PreCreateThreads()
return 0;
}
+static void CreatePoliciesAndDecorators(performance_manager::Graph *graph)
+{
+ graph->PassToGraph(FormInteractionTabHelper::CreateGraphObserver());
+}
+
void BrowserMainPartsQt::PostCreateThreads()
{
+ performance_manager_ =
+ performance_manager::CreatePerformanceManagerWithDefaultDecorators(
+ base::BindOnce(&QtWebEngineCore::CreatePoliciesAndDecorators));
+ performance_manager_registry_ = performance_manager::PerformanceManagerRegistry::Create();
}
} // namespace QtWebEngineCore
diff --git a/src/core/browser_main_parts_qt.h b/src/core/browser_main_parts_qt.h
index f287c2e44..9d0967612 100644
--- a/src/core/browser_main_parts_qt.h
+++ b/src/core/browser_main_parts_qt.h
@@ -50,6 +50,11 @@ namespace content {
class ServiceManagerConnection;
}
+namespace performance_manager {
+class PerformanceManager;
+class PerformanceManagerRegistry;
+}
+
namespace QtWebEngineCore {
std::unique_ptr<base::MessagePump> messagePumpFactory();
@@ -69,6 +74,8 @@ public:
private:
DISALLOW_COPY_AND_ASSIGN(BrowserMainPartsQt);
+ std::unique_ptr<performance_manager::PerformanceManager> performance_manager_;
+ std::unique_ptr<performance_manager::PerformanceManagerRegistry> performance_manager_registry_;
};
} // namespace QtWebEngineCore
diff --git a/src/core/certificate_error_controller.cpp b/src/core/certificate_error_controller.cpp
index 353228c2d..0e97f7cd4 100644
--- a/src/core/certificate_error_controller.cpp
+++ b/src/core/certificate_error_controller.cpp
@@ -53,7 +53,6 @@ QT_BEGIN_NAMESPACE
using namespace QtWebEngineCore;
ASSERT_ENUMS_MATCH(CertificateErrorController::SslPinnedKeyNotInCertificateChain, net::ERR_SSL_PINNED_KEY_NOT_IN_CERT_CHAIN)
-ASSERT_ENUMS_MATCH(CertificateErrorController::CertificateCommonNameInvalid, net::ERR_CERT_BEGIN)
ASSERT_ENUMS_MATCH(CertificateErrorController::CertificateCommonNameInvalid, net::ERR_CERT_COMMON_NAME_INVALID)
ASSERT_ENUMS_MATCH(CertificateErrorController::CertificateDateInvalid, net::ERR_CERT_DATE_INVALID)
ASSERT_ENUMS_MATCH(CertificateErrorController::CertificateAuthorityInvalid, net::ERR_CERT_AUTHORITY_INVALID)
@@ -69,6 +68,7 @@ ASSERT_ENUMS_MATCH(CertificateErrorController::CertificateValidityTooLong, net::
ASSERT_ENUMS_MATCH(CertificateErrorController::CertificateTransparencyRequired, net::ERR_CERTIFICATE_TRANSPARENCY_REQUIRED)
ASSERT_ENUMS_MATCH(CertificateErrorController::CertificateSymantecLegacy, net::ERR_CERT_SYMANTEC_LEGACY)
ASSERT_ENUMS_MATCH(CertificateErrorController::CertificateKnownInterceptionBlocked, net::ERR_CERT_KNOWN_INTERCEPTION_BLOCKED)
+ASSERT_ENUMS_MATCH(CertificateErrorController::SslObsoleteVersion, net::ERR_SSL_OBSOLETE_VERSION)
ASSERT_ENUMS_MATCH(CertificateErrorController::CertificateErrorEnd, net::ERR_CERT_END)
void CertificateErrorControllerPrivate::accept(bool accepted)
diff --git a/src/core/certificate_error_controller.h b/src/core/certificate_error_controller.h
index dc1c3cf54..740f7a9d4 100644
--- a/src/core/certificate_error_controller.h
+++ b/src/core/certificate_error_controller.h
@@ -86,7 +86,8 @@ public:
CertificateTransparencyRequired = -214,
CertificateSymantecLegacy = -215,
CertificateKnownInterceptionBlocked = -217,
- CertificateErrorEnd = -218 // not an error, just an enum boundary
+ SslObsoleteVersion = -218,
+ CertificateErrorEnd = -219 // not an error, just an enum boundary
};
CertificateError error() const;
diff --git a/src/core/clipboard_qt.cpp b/src/core/clipboard_qt.cpp
index c3b25ff63..f9bc0bc74 100644
--- a/src/core/clipboard_qt.cpp
+++ b/src/core/clipboard_qt.cpp
@@ -46,6 +46,7 @@
#include "type_conversion.h"
#include "base/logging.h"
+#include "base/strings/utf_string_conversions.h"
#include "third_party/skia/include/core/SkBitmap.h"
#include "ui/base/clipboard/custom_data_helper.h"
#include "ui/base/clipboard/clipboard.h"
@@ -184,14 +185,14 @@ void ClipboardQt::WriteBookmark(const char *title_data, size_t title_len, const
void ClipboardQt::WriteData(const ui::ClipboardFormatType &format, const char *data_data, size_t data_len)
{
- getUncommittedData()->setData(QString::fromStdString(format.ToString()), QByteArray(data_data, data_len));
+ getUncommittedData()->setData(QString::fromStdString(format.GetName()), QByteArray(data_data, data_len));
}
bool ClipboardQt::IsFormatAvailable(const ui::ClipboardFormatType &format, ui::ClipboardBuffer type) const
{
const QMimeData *mimeData = QGuiApplication::clipboard()->mimeData(
type == ui::ClipboardBuffer::kCopyPaste ? QClipboard::Clipboard : QClipboard::Selection);
- return mimeData && mimeData->hasFormat(QString::fromStdString(format.ToString()));
+ return mimeData && mimeData->hasFormat(QString::fromStdString(format.GetName()));
}
void ClipboardQt::Clear(ui::ClipboardBuffer type)
@@ -313,7 +314,7 @@ void ClipboardQt::ReadData(const ui::ClipboardFormatType &format, std::string *r
const QMimeData *mimeData = QGuiApplication::clipboard()->mimeData();
if (!mimeData)
return;
- const QByteArray byteArray = mimeData->data(QString::fromStdString(format.ToString()));
+ const QByteArray byteArray = mimeData->data(QString::fromStdString(format.GetName()));
*result = std::string(byteArray.constData(), byteArray.length());
}
@@ -323,4 +324,20 @@ uint64_t ClipboardQt::GetSequenceNumber(ui::ClipboardBuffer type) const
: QClipboard::Selection);
}
+std::vector<base::string16> ClipboardQt::ReadAvailablePlatformSpecificFormatNames(ui::ClipboardBuffer buffer) const
+{
+ // based on ClipboardAura
+ std::vector<base::string16> types;
+ if (IsFormatAvailable(ui::ClipboardFormatType::GetPlainTextType(), buffer))
+ types.push_back(base::UTF8ToUTF16(ui::ClipboardFormatType::GetPlainTextType().GetName()));
+ if (IsFormatAvailable(ui::ClipboardFormatType::GetHtmlType(), buffer))
+ types.push_back(base::UTF8ToUTF16(ui::ClipboardFormatType::GetHtmlType().GetName()));
+ if (IsFormatAvailable(ui::ClipboardFormatType::GetRtfType(), buffer))
+ types.push_back(base::UTF8ToUTF16(ui::ClipboardFormatType::GetRtfType().GetName()));
+ if (IsFormatAvailable(ui::ClipboardFormatType::GetBitmapType(), buffer))
+ types.push_back(base::UTF8ToUTF16(ui::kMimeTypePNG));
+
+ return types;
+}
+
} // namespace QtWebEngineCore
diff --git a/src/core/clipboard_qt.h b/src/core/clipboard_qt.h
index 6d86e8f6c..034f40863 100644
--- a/src/core/clipboard_qt.h
+++ b/src/core/clipboard_qt.h
@@ -63,6 +63,8 @@ public:
void OnPreShutdown() override {}
+ std::vector<base::string16> ReadAvailablePlatformSpecificFormatNames(ui::ClipboardBuffer buffer) const override;
+
protected:
void WritePortableRepresentations(ui::ClipboardBuffer type, const ObjectMap &objects) override;
void WritePlatformRepresentations(ui::ClipboardBuffer type,
diff --git a/src/core/compositor/display_gl_output_surface.cpp b/src/core/compositor/display_gl_output_surface.cpp
index 4f63e5b69..139015938 100644
--- a/src/core/compositor/display_gl_output_surface.cpp
+++ b/src/core/compositor/display_gl_output_surface.cpp
@@ -47,7 +47,6 @@
#include "gpu/command_buffer/service/mailbox_manager.h"
#include "gpu/command_buffer/service/texture_base.h"
#include "gpu/ipc/in_process_command_buffer.h"
-#include "ui/gl/color_space_utils.h"
namespace QtWebEngineCore {
@@ -116,7 +115,7 @@ void DisplayGLOutputSurface::Reshape(const gfx::Size &sizeInPixels,
{
m_currentShape = Shape{sizeInPixels, devicePixelRatio, colorSpace, hasAlpha};
m_gl->ResizeCHROMIUM(sizeInPixels.width(), sizeInPixels.height(), devicePixelRatio,
- gl::ColorSpaceUtils::GetGLColorSpace(colorSpace), hasAlpha);
+ colorSpace.AsGLColorSpace(), hasAlpha);
}
std::unique_ptr<DisplayGLOutputSurface::Buffer> DisplayGLOutputSurface::makeBuffer(const Shape &shape)
@@ -281,6 +280,11 @@ unsigned DisplayGLOutputSurface::UpdateGpuFence()
return 0;
}
+scoped_refptr<gpu::GpuTaskSchedulerHelper> DisplayGLOutputSurface::GetGpuTaskSchedulerHelper()
+{
+ return nullptr;
+}
+
void DisplayGLOutputSurface::SetUpdateVSyncParametersCallback(viz::UpdateVSyncParametersCallback callback)
{
m_vizContextProvider->SetUpdateVSyncParametersCallback(std::move(callback));
diff --git a/src/core/compositor/display_gl_output_surface.h b/src/core/compositor/display_gl_output_surface.h
index 67d987263..3755a294f 100644
--- a/src/core/compositor/display_gl_output_surface.h
+++ b/src/core/compositor/display_gl_output_surface.h
@@ -86,6 +86,7 @@ public:
void SetUpdateVSyncParametersCallback(viz::UpdateVSyncParametersCallback callback) override;
void SetDisplayTransformHint(gfx::OverlayTransform transform) override;
gfx::OverlayTransform GetDisplayTransform() override;
+ scoped_refptr<gpu::GpuTaskSchedulerHelper> GetGpuTaskSchedulerHelper() override;
// Overridden from DisplayProducer.
QSGNode *updatePaintNode(QSGNode *oldNode, RenderWidgetHostViewQtDelegate *delegate) override;
diff --git a/src/core/content_browser_client_qt.cpp b/src/core/content_browser_client_qt.cpp
index 05957c26f..f50878ae4 100644
--- a/src/core/content_browser_client_qt.cpp
+++ b/src/core/content_browser_client_qt.cpp
@@ -55,6 +55,12 @@
#include "components/navigation_interception/intercept_navigation_throttle.h"
#include "components/navigation_interception/navigation_params.h"
#include "components/network_hints/browser/simple_network_hints_handler_impl.h"
+#include "components/performance_manager/embedder/performance_manager_registry.h"
+#include "components/performance_manager/graph/process_node_impl.h"
+#include "components/performance_manager/performance_manager_impl.h"
+#include "components/performance_manager/public/mojom/coordination_unit.mojom.h"
+#include "components/performance_manager/public/performance_manager.h"
+#include "components/performance_manager/render_process_user_data.h"
#include "components/spellcheck/spellcheck_buildflags.h"
#include "content/browser/renderer_host/render_view_host_delegate.h"
#include "content/browser/web_contents/web_contents_impl.h"
@@ -84,6 +90,7 @@
#include "extensions/buildflags/buildflags.h"
#include "extensions/browser/extension_protocols.h"
#include "extensions/browser/guest_view/web_view/web_view_guest.h"
+#include "extensions/browser/url_loader_factory_manager.h"
#include "mojo/public/cpp/bindings/binding.h"
#include "mojo/public/cpp/bindings/binding_set.h"
#include "mojo/public/cpp/bindings/remote.h"
@@ -394,14 +401,6 @@ scoped_refptr<content::QuotaPermissionContext> ContentBrowserClientQt::CreateQuo
return new QuotaPermissionContextQt;
}
-void ContentBrowserClientQt::GetQuotaSettings(content::BrowserContext* context,
- content::StoragePartition* partition,
- base::OnceCallback<void(base::Optional<storage::QuotaSettings>)> callback)
-{
- storage::GetNominalDynamicSettings(partition->GetPath(), context->IsOffTheRecord(),
- storage::GetDefaultDeviceInfoHelper(), std::move(callback));
-}
-
// Copied from chrome/browser/ssl/ssl_error_handler.cc:
static int IsCertErrorFatal(int cert_error)
{
@@ -409,17 +408,20 @@ static int IsCertErrorFatal(int cert_error)
case net::ERR_CERT_COMMON_NAME_INVALID:
case net::ERR_CERT_DATE_INVALID:
case net::ERR_CERT_AUTHORITY_INVALID:
+ case net::ERR_CERT_NO_REVOCATION_MECHANISM:
+ case net::ERR_CERT_UNABLE_TO_CHECK_REVOCATION:
case net::ERR_CERT_WEAK_SIGNATURE_ALGORITHM:
case net::ERR_CERT_WEAK_KEY:
case net::ERR_CERT_NAME_CONSTRAINT_VIOLATION:
case net::ERR_CERT_VALIDITY_TOO_LONG:
case net::ERR_CERTIFICATE_TRANSPARENCY_REQUIRED:
case net::ERR_CERT_SYMANTEC_LEGACY:
+ case net::ERR_CERT_KNOWN_INTERCEPTION_BLOCKED:
+ case net::ERR_SSL_OBSOLETE_VERSION:
return false;
case net::ERR_CERT_CONTAINS_ERRORS:
case net::ERR_CERT_REVOKED:
case net::ERR_CERT_INVALID:
- case net::ERR_SSL_WEAK_SERVER_EPHEMERAL_DH_KEY:
case net::ERR_SSL_PINNED_KEY_NOT_IN_CERT_CHAIN:
return true;
default:
@@ -649,6 +651,36 @@ void ContentBrowserClientQt::RegisterBrowserInterfaceBindersForFrame(
map->Add<network_hints::mojom::NetworkHintsHandler>(base::BindRepeating(&BindNetworkHintsHandler));
}
+namespace {
+void BindProcessNode(int render_process_host_id,
+ mojo::PendingReceiver<performance_manager::mojom::ProcessCoordinationUnit> receiver)
+{
+ content::RenderProcessHost *render_process_host = content::RenderProcessHost::FromID(render_process_host_id);
+ if (!render_process_host)
+ return;
+
+ performance_manager::RenderProcessUserData *user_data =
+ performance_manager::RenderProcessUserData::GetForRenderProcessHost(render_process_host);
+
+ DCHECK(performance_manager::PerformanceManagerImpl::GetInstance());
+ performance_manager::PerformanceManagerImpl::GetTaskRunner()->PostTask(
+ FROM_HERE, base::BindOnce(&performance_manager::ProcessNodeImpl::Bind,
+ base::Unretained(user_data->process_node()),
+ std::move(receiver)));
+}
+} // namespace
+
+void ContentBrowserClientQt::ExposeInterfacesToRenderer(service_manager::BinderRegistry *registry,
+ blink::AssociatedInterfaceRegistry *associated_registry,
+ content::RenderProcessHost *render_process_host)
+{
+ Q_UNUSED(associated_registry);
+ registry->AddInterface(base::BindRepeating(&BindProcessNode, render_process_host->GetID()),
+ base::SequencedTaskRunnerHandle::Get());
+
+ performance_manager::PerformanceManagerRegistry::GetInstance()->CreateProcessNodeForRenderProcessHost(render_process_host);
+}
+
void ContentBrowserClientQt::RunServiceInstance(const service_manager::Identity &identity,
mojo::PendingReceiver<service_manager::mojom::Service> *receiver)
{
@@ -731,11 +763,10 @@ bool ContentBrowserClientQt::ShouldEnableStrictSiteIsolation()
return false;
}
-bool ContentBrowserClientQt::WillCreateRestrictedCookieManager(
- network::mojom::RestrictedCookieManagerRole role,
+bool ContentBrowserClientQt::WillCreateRestrictedCookieManager(network::mojom::RestrictedCookieManagerRole role,
content::BrowserContext *browser_context,
const url::Origin & /*origin*/,
- const GURL & /*site_for_cookies*/,
+ const net::SiteForCookies & /*site_for_cookies*/,
const url::Origin & /*top_frame_origin*/,
bool is_service_worker,
int process_id,
@@ -1033,6 +1064,17 @@ bool ContentBrowserClientQt::ShouldTreatURLSchemeAsFirstPartyWhenTopLevel(base::
#endif
}
+void ContentBrowserClientQt::OverrideURLLoaderFactoryParams(content::BrowserContext *browser_context,
+ const url::Origin &origin,
+ bool is_for_isolated_world,
+ network::mojom::URLLoaderFactoryParams *factory_params)
+{
+#if BUILDFLAG(ENABLE_EXTENSIONS)
+ extensions::URLLoaderFactoryManager::OverrideURLLoaderFactoryParams(
+ browser_context, origin, is_for_isolated_world, factory_params);
+#endif
+}
+
std::string ContentBrowserClientQt::getUserAgent()
{
// Mention the Chromium version we're based on to get passed stupid UA-string-based feature detection (several WebRTC demos need this)
@@ -1206,6 +1248,7 @@ bool ContentBrowserClientQt::WillCreateURLLoaderFactory(
mojo::PendingReceiver<network::mojom::URLLoaderFactory> *factory_receiver,
mojo::PendingRemote<network::mojom::TrustedURLLoaderHeaderClient> *header_client,
bool *bypass_redirect_checks,
+ bool *disable_secure_dns,
network::mojom::URLLoaderFactoryOverridePtr *factory_override)
{
auto *web_contents = content::WebContents::FromRenderFrameHost(frame);
diff --git a/src/core/content_browser_client_qt.h b/src/core/content_browser_client_qt.h
index 341564574..fe6d8a076 100644
--- a/src/core/content_browser_client_qt.h
+++ b/src/core/content_browser_client_qt.h
@@ -88,9 +88,6 @@ public:
gl::GLShareGroup* GetInProcessGpuShareGroup() override;
content::MediaObserver* GetMediaObserver() override;
scoped_refptr<content::QuotaPermissionContext> CreateQuotaPermissionContext() override;
- void GetQuotaSettings(content::BrowserContext *context,
- content::StoragePartition *partition,
- base::OnceCallback<void(base::Optional<storage::QuotaSettings>)> callback) override;
void OverrideWebkitPrefs(content::RenderViewHost *, content::WebPreferences *) override;
void AllowCertificateError(content::WebContents *web_contents,
int cert_error,
@@ -124,6 +121,9 @@ public:
service_manager::BinderMapWithContext<content::RenderFrameHost *> *map) override;
void RunServiceInstance(const service_manager::Identity &identity,
mojo::PendingReceiver<service_manager::mojom::Service> *receiver) override;
+ void ExposeInterfacesToRenderer(service_manager::BinderRegistry *registry,
+ blink::AssociatedInterfaceRegistry *associated_registry,
+ content::RenderProcessHost *render_process_host) override;
std::vector<service_manager::Manifest> GetExtraServiceManifests() override;
base::Optional<service_manager::Manifest> GetServiceManifestOverlay(base::StringPiece name) override;
@@ -146,7 +146,7 @@ public:
network::mojom::RestrictedCookieManagerRole role,
content::BrowserContext *browser_context,
const url::Origin &origin,
- const GURL &site_for_cookies,
+ const net::SiteForCookies &site_for_cookies,
const url::Origin &top_frame_origin,
bool is_service_worker,
int process_id,
@@ -190,7 +190,10 @@ public:
bool ShouldUseSpareRenderProcessHost(content::BrowserContext *browser_context, const GURL& site_url) override;
bool ShouldTreatURLSchemeAsFirstPartyWhenTopLevel(base::StringPiece scheme,
bool is_embedded_origin_secure) override;
-
+ void OverrideURLLoaderFactoryParams(content::BrowserContext *browser_context,
+ const url::Origin &origin,
+ bool is_for_isolated_world,
+ network::mojom::URLLoaderFactoryParams *factory_params) override;
#if defined(Q_OS_LINUX)
void GetAdditionalMappedFilesForChildProcess(const base::CommandLine& command_line, int child_process_id, content::PosixFileDescriptorInfo* mappings) override;
#endif
@@ -239,6 +242,7 @@ public:
mojo::PendingReceiver<network::mojom::URLLoaderFactory> *factory_receiver,
mojo::PendingRemote<network::mojom::TrustedURLLoaderHeaderClient> *header_client,
bool *bypass_redirect_checks,
+ bool *disable_secure_dns,
network::mojom::URLLoaderFactoryOverridePtr *factory_override) override;
scoped_refptr<network::SharedURLLoaderFactory> GetSystemSharedURLLoaderFactory() override;
network::mojom::NetworkContext *GetSystemNetworkContext() override;
diff --git a/src/core/content_main_delegate_qt.cpp b/src/core/content_main_delegate_qt.cpp
index 30bac71af..2d7d1eb57 100644
--- a/src/core/content_main_delegate_qt.cpp
+++ b/src/core/content_main_delegate_qt.cpp
@@ -55,6 +55,7 @@
#include "ui/base/webui/jstemplate_builder.h"
#include "net/grit/net_resources.h"
#include "net/base/net_module.h"
+#include "services/service_manager/embedder/switches.h"
#include "services/service_manager/sandbox/switches.h"
#include "url/url_util_qt.h"
@@ -177,7 +178,7 @@ void ContentMainDelegateQt::PreSandboxStartup()
#endif
net::NetModule::SetResourceProvider(PlatformResourceProvider);
- ui::ResourceBundle::InitSharedInstanceWithLocale(WebEngineLibraryInfo::getApplicationLocale(), 0, ui::ResourceBundle::LOAD_COMMON_RESOURCES);
+ ui::ResourceBundle::InitSharedInstanceWithLocale(WebEngineLibraryInfo::getApplicationLocale(), nullptr, ui::ResourceBundle::LOAD_COMMON_RESOURCES);
base::CommandLine* parsedCommandLine = base::CommandLine::ForCurrentProcess();
logging::LoggingSettings settings;
@@ -231,6 +232,16 @@ void ContentMainDelegateQt::PreSandboxStartup()
}
}
+void ContentMainDelegateQt::PostEarlyInitialization(bool)
+{
+ PostFieldTrialInitialization();
+}
+
+content::ContentClient *ContentMainDelegateQt::CreateContentClient()
+{
+ return &m_contentClient;
+}
+
content::ContentBrowserClient *ContentMainDelegateQt::CreateContentBrowserClient()
{
m_browserClient.reset(new ContentBrowserClientQt);
@@ -295,8 +306,6 @@ bool ContentMainDelegateQt::BasicStartupComplete(int *exit_code)
#if QT_CONFIG(webengine_spellchecker)
SafeOverridePath(base::DIR_APP_DICTIONARIES, WebEngineLibraryInfo::getPath(base::DIR_APP_DICTIONARIES));
#endif
- if (!content::GetContentClient())
- content::SetContentClient(new ContentClientQt);
url::CustomScheme::LoadSchemes(base::CommandLine::ForCurrentProcess());
diff --git a/src/core/content_main_delegate_qt.h b/src/core/content_main_delegate_qt.h
index 4d2f33792..170ccc3ca 100644
--- a/src/core/content_main_delegate_qt.h
+++ b/src/core/content_main_delegate_qt.h
@@ -44,6 +44,7 @@
#include "compositor/content_gpu_client_qt.h"
#include "content_browser_client_qt.h"
+#include "content_client_qt.h"
#include "content_utility_client_qt.h"
namespace QtWebEngineCore {
@@ -55,7 +56,9 @@ public:
// This is where the embedder puts all of its startup code that needs to run
// before the sandbox is engaged.
void PreSandboxStartup() override;
+ void PostEarlyInitialization(bool) override;
+ content::ContentClient *CreateContentClient() override;
content::ContentBrowserClient* CreateContentBrowserClient() override;
content::ContentGpuClient* CreateContentGpuClient() override;
content::ContentRendererClient* CreateContentRendererClient() override;
@@ -63,6 +66,7 @@ public:
bool BasicStartupComplete(int* /*exit_code*/) override;
private:
+ ContentClientQt m_contentClient;
std::unique_ptr<ContentBrowserClientQt> m_browserClient;
std::unique_ptr<ContentGpuClientQt> m_gpuClient;
std::unique_ptr<ContentUtilityClientQt> m_utilityClient;
diff --git a/src/core/delegated_frame_host_client_qt.cpp b/src/core/delegated_frame_host_client_qt.cpp
index d3f5a4ade..8a3601ada 100644
--- a/src/core/delegated_frame_host_client_qt.cpp
+++ b/src/core/delegated_frame_host_client_qt.cpp
@@ -58,11 +58,6 @@ SkColor DelegatedFrameHostClientQt::DelegatedFrameHostGetGutterColor() const
return p->GetBackgroundColor().value_or(SK_ColorWHITE);
}
-void DelegatedFrameHostClientQt::OnBeginFrame(base::TimeTicks frame_time)
-{
- p->host()->ProgressFlingIfNeeded(frame_time);
-}
-
void DelegatedFrameHostClientQt::OnFrameTokenChanged(uint32_t frame_token)
{
p->OnFrameTokenChangedForView(frame_token);
diff --git a/src/core/delegated_frame_host_client_qt.h b/src/core/delegated_frame_host_client_qt.h
index b5dc6eb59..1f5a9858b 100644
--- a/src/core/delegated_frame_host_client_qt.h
+++ b/src/core/delegated_frame_host_client_qt.h
@@ -57,7 +57,6 @@ public:
ui::Layer *DelegatedFrameHostGetLayer() const override;
bool DelegatedFrameHostIsVisible() const override;
SkColor DelegatedFrameHostGetGutterColor() const override;
- void OnBeginFrame(base::TimeTicks frame_time) override;
void OnFrameTokenChanged(uint32_t frame_token) override;
float GetDeviceScaleFactor() const override;
void InvalidateLocalSurfaceIdOnEviction() override;
diff --git a/src/core/devtools_frontend_qt.cpp b/src/core/devtools_frontend_qt.cpp
index 8070d1c98..fb79a09e6 100644
--- a/src/core/devtools_frontend_qt.cpp
+++ b/src/core/devtools_frontend_qt.cpp
@@ -86,10 +86,21 @@ using namespace QtWebEngineCore;
namespace {
-std::unique_ptr<base::DictionaryValue> BuildObjectForResponse(const net::HttpResponseHeaders *rh)
+std::unique_ptr<base::DictionaryValue> BuildObjectForResponse(const net::HttpResponseHeaders *rh,
+ bool success,
+ int net_error)
{
auto response = std::make_unique<base::DictionaryValue>();
- response->SetInteger("statusCode", rh ? rh->response_code() : 200);
+ int responseCode = 200;
+ if (rh) {
+ responseCode = rh->response_code();
+ } else if (!success) {
+ // In case of no headers, assume file:// URL and failed to load
+ responseCode = 404;
+ }
+ response->SetInteger("statusCode", responseCode);
+ response->SetInteger("netError", net_error);
+ response->SetString("netErrorName", net::ErrorToString(net_error));
auto headers = std::make_unique<base::DictionaryValue>();
size_t iterator = 0;
@@ -159,8 +170,7 @@ private:
void OnComplete(bool success) override
{
- Q_UNUSED(success);
- auto response = BuildObjectForResponse(response_headers_.get());
+ auto response = BuildObjectForResponse(response_headers_.get(), success, loader_->NetError());
bindings_->SendMessageAck(request_id_, response.get());
bindings_->m_loaders.erase(bindings_->m_loaders.find(this));
}
@@ -377,7 +387,7 @@ void DevToolsFrontendQt::HandleMessageFromDevToolsFrontend(const std::string &me
std::string protocol_message;
if (!params->GetString(0, &protocol_message))
return;
- m_agentHost->DispatchProtocolMessage(this, protocol_message);
+ m_agentHost->DispatchProtocolMessage(this, base::as_bytes(base::make_span(protocol_message)));
} else if (method == "loadCompleted") {
web_contents()->GetMainFrame()->ExecuteJavaScript(base::ASCIIToUTF16("DevToolsAPI.setUseSoftMenu(true);"),
base::NullCallback());
@@ -393,6 +403,7 @@ void DevToolsFrontendQt::HandleMessageFromDevToolsFrontend(const std::string &me
if (!gurl.is_valid()) {
base::DictionaryValue response;
response.SetInteger("statusCode", 404);
+ response.SetBoolean("urlValid", false);
SendMessageAck(request_id, &response);
return;
}
@@ -426,7 +437,7 @@ void DevToolsFrontendQt::HandleMessageFromDevToolsFrontend(const std::string &me
resource_request->url = gurl;
// TODO(caseq): this preserves behavior of URLFetcher-based implementation.
// We really need to pass proper first party origin from the front-end.
- resource_request->site_for_cookies = gurl;
+ resource_request->site_for_cookies = net::SiteForCookies::FromUrl(gurl);
resource_request->headers.AddHeadersFromString(headers);
std::unique_ptr<network::mojom::URLLoaderFactory> file_url_loader_factory;
@@ -509,22 +520,23 @@ void DevToolsFrontendQt::HandleMessageFromDevToolsFrontend(const std::string &me
SendMessageAck(request_id, nullptr);
}
-void DevToolsFrontendQt::DispatchProtocolMessage(content::DevToolsAgentHost *agentHost, const std::string &message)
+void DevToolsFrontendQt::DispatchProtocolMessage(content::DevToolsAgentHost *agentHost, base::span<const uint8_t> message)
{
Q_UNUSED(agentHost);
- if (message.length() < kMaxMessageChunkSize) {
+ base::StringPiece message_sp(reinterpret_cast<const char*>(message.data()), message.size());
+ if (message_sp.length() < kMaxMessageChunkSize) {
std::string param;
- base::EscapeJSONString(message, true, &param);
+ base::EscapeJSONString(message_sp, true, &param);
std::string code = "DevToolsAPI.dispatchMessage(" + param + ");";
base::string16 javascript = base::UTF8ToUTF16(code);
web_contents()->GetMainFrame()->ExecuteJavaScript(javascript, base::NullCallback());
return;
}
- size_t total_size = message.length();
- for (size_t pos = 0; pos < message.length(); pos += kMaxMessageChunkSize) {
+ size_t total_size = message_sp.length();
+ for (size_t pos = 0; pos < message_sp.length(); pos += kMaxMessageChunkSize) {
std::string param;
- base::EscapeJSONString(message.substr(pos, kMaxMessageChunkSize), true, &param);
+ base::EscapeJSONString(message_sp.substr(pos, kMaxMessageChunkSize), true, &param);
std::string code = "DevToolsAPI.dispatchMessageChunk(" + param + ","
+ std::to_string(pos ? 0 : total_size) + ");";
base::string16 javascript = base::UTF8ToUTF16(code);
diff --git a/src/core/devtools_frontend_qt.h b/src/core/devtools_frontend_qt.h
index fed2d47fc..9fefcb435 100644
--- a/src/core/devtools_frontend_qt.h
+++ b/src/core/devtools_frontend_qt.h
@@ -97,7 +97,7 @@ protected:
// content::DevToolsAgentHostClient implementation.
void AgentHostClosed(content::DevToolsAgentHost* agent_host) override;
- void DispatchProtocolMessage(content::DevToolsAgentHost* agent_host, const std::string& message) override;
+ void DispatchProtocolMessage(content::DevToolsAgentHost* agent_host, base::span<const uint8_t> message) override;
void SetPreferences(const std::string& json);
virtual void HandleMessageFromDevToolsFrontend(const std::string& message);
diff --git a/src/core/download_manager_delegate_qt.cpp b/src/core/download_manager_delegate_qt.cpp
index ebf498fdf..b3c0c7c07 100644
--- a/src/core/download_manager_delegate_qt.cpp
+++ b/src/core/download_manager_delegate_qt.cpp
@@ -77,9 +77,9 @@ DownloadManagerDelegateQt::~DownloadManagerDelegateQt()
{
}
-void DownloadManagerDelegateQt::GetNextId(const content::DownloadIdCallback& callback)
+void DownloadManagerDelegateQt::GetNextId(content::DownloadIdCallback callback)
{
- callback.Run(m_currentId);
+ std::move(callback).Run(m_currentId);
}
download::DownloadItem *DownloadManagerDelegateQt::findDownloadById(quint32 downloadId)
@@ -88,13 +88,14 @@ download::DownloadItem *DownloadManagerDelegateQt::findDownloadById(quint32 down
return dlm->GetDownload(downloadId);
}
-void DownloadManagerDelegateQt::cancelDownload(const content::DownloadTargetCallback& callback)
+void DownloadManagerDelegateQt::cancelDownload(content::DownloadTargetCallback callback)
{
- callback.Run(base::FilePath(),
- download::DownloadItem::TARGET_DISPOSITION_PROMPT,
- download::DownloadDangerType::DOWNLOAD_DANGER_TYPE_MAYBE_DANGEROUS_CONTENT,
- base::FilePath(),
- download::DownloadInterruptReason::DOWNLOAD_INTERRUPT_REASON_USER_CANCELED);
+ std::move(callback).Run(base::FilePath(),
+ download::DownloadItem::TARGET_DISPOSITION_PROMPT,
+ download::DownloadDangerType::DOWNLOAD_DANGER_TYPE_MAYBE_DANGEROUS_CONTENT,
+ download::DownloadItem::UNKNOWN,
+ base::FilePath(),
+ download::DownloadInterruptReason::DOWNLOAD_INTERRUPT_REASON_USER_CANCELED);
}
void DownloadManagerDelegateQt::cancelDownload(quint32 downloadId)
@@ -121,8 +122,8 @@ void DownloadManagerDelegateQt::removeDownload(quint32 downloadId)
download->Remove();
}
-bool DownloadManagerDelegateQt::DetermineDownloadTarget(download::DownloadItem* item,
- const content::DownloadTargetCallback& callback)
+bool DownloadManagerDelegateQt::DetermineDownloadTarget(download::DownloadItem *item,
+ content::DownloadTargetCallback *callback)
{
m_currentId = item->GetId();
@@ -130,8 +131,11 @@ bool DownloadManagerDelegateQt::DetermineDownloadTarget(download::DownloadItem*
// will already return that the file exists. Forced file paths seem to be only used for
// store downloads and other special downloads, so they might never end up here anyway.
if (!item->GetForcedFilePath().empty()) {
- callback.Run(item->GetForcedFilePath(), download::DownloadItem::TARGET_DISPOSITION_PROMPT,
- download::DownloadDangerType::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS, item->GetForcedFilePath(), download::DownloadInterruptReason::DOWNLOAD_INTERRUPT_REASON_NONE);
+ std::move(*callback).Run(item->GetForcedFilePath(), download::DownloadItem::TARGET_DISPOSITION_PROMPT,
+ download::DownloadDangerType::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS,
+ download::DownloadItem::VALIDATED,
+ item->GetForcedFilePath(),
+ download::DownloadInterruptReason::DOWNLOAD_INTERRUPT_REASON_NONE);
return true;
}
@@ -212,18 +216,19 @@ bool DownloadManagerDelegateQt::DetermineDownloadTarget(download::DownloadItem*
}
if (!info.accepted) {
- cancelDownload(callback);
+ cancelDownload(std::move(*callback));
return true;
}
base::FilePath filePathForCallback(toFilePathString(suggestedFile.absoluteFilePath()));
- callback.Run(filePathForCallback,
- download::DownloadItem::TARGET_DISPOSITION_OVERWRITE,
- download::DownloadDangerType::DOWNLOAD_DANGER_TYPE_MAYBE_DANGEROUS_CONTENT,
- filePathForCallback.AddExtension(toFilePathString("download")),
- download::DownloadInterruptReason::DOWNLOAD_INTERRUPT_REASON_NONE);
+ std::move(*callback).Run(filePathForCallback,
+ download::DownloadItem::TARGET_DISPOSITION_OVERWRITE,
+ download::DownloadDangerType::DOWNLOAD_DANGER_TYPE_MAYBE_DANGEROUS_CONTENT,
+ download::DownloadItem::VALIDATED,
+ filePathForCallback.AddExtension(toFilePathString("download")),
+ download::DownloadInterruptReason::DOWNLOAD_INTERRUPT_REASON_NONE);
} else
- cancelDownload(callback);
+ cancelDownload(std::move(*callback));
return true;
}
diff --git a/src/core/download_manager_delegate_qt.h b/src/core/download_manager_delegate_qt.h
index 0cdbd6ee3..7f4f33702 100644
--- a/src/core/download_manager_delegate_qt.h
+++ b/src/core/download_manager_delegate_qt.h
@@ -70,10 +70,10 @@ class DownloadManagerDelegateQt
public:
DownloadManagerDelegateQt(ProfileAdapter *profileAdapter);
~DownloadManagerDelegateQt();
- void GetNextId(const content::DownloadIdCallback& callback) override;
+ void GetNextId(content::DownloadIdCallback callback) override;
- bool DetermineDownloadTarget(download::DownloadItem* item,
- const content::DownloadTargetCallback& callback) override;
+ bool DetermineDownloadTarget(download::DownloadItem *item,
+ content::DownloadTargetCallback *callback) override;
void GetSaveDir(content::BrowserContext* browser_context,
base::FilePath* website_save_dir,
@@ -96,7 +96,7 @@ public:
void OnDownloadDestroyed(download::DownloadItem *download) override;
private:
- void cancelDownload(const content::DownloadTargetCallback& callback);
+ void cancelDownload(content::DownloadTargetCallback callback);
download::DownloadItem *findDownloadById(quint32 downloadId);
void savePackageDownloadCreated(download::DownloadItem *download);
ProfileAdapter *m_profileAdapter;
diff --git a/src/core/extensions/extension_system_qt.cpp b/src/core/extensions/extension_system_qt.cpp
index a66051fbd..96532d9f6 100644
--- a/src/core/extensions/extension_system_qt.cpp
+++ b/src/core/extensions/extension_system_qt.cpp
@@ -91,10 +91,9 @@
#include "extensions/common/manifest_constants.h"
#include "extensions/common/manifest_handlers/mime_types_handler.h"
#include "extensions/common/manifest_url_handlers.h"
-#include "ui/base/resource/resource_bundle.h"
-#include "chrome/grit/component_extension_resources.h"
-#include "chrome/grit/browser_resources.h"
#include "net/base/mime_util.h"
+#include "qtwebengine/grit/qt_webengine_resources.h"
+#include "ui/base/resource/resource_bundle.h"
using content::BrowserThread;
@@ -405,7 +404,7 @@ void ExtensionSystemQt::InstallUpdate(const std::string &extension_id,
#endif
void ExtensionSystemQt::RegisterExtensionWithRequestContexts(const Extension *extension,
- const base::Closure &callback)
+ base::OnceClosure callback)
{
base::Time install_time = base::Time::Now();
@@ -417,7 +416,7 @@ void ExtensionSystemQt::RegisterExtensionWithRequestContexts(const Extension *ex
base::Bind(&InfoMap::AddExtension, info_map(),
base::RetainedRef(extension), install_time, incognito_enabled,
notifications_disabled),
- callback);
+ std::move(callback));
}
void ExtensionSystemQt::UnregisterExtensionWithRequestContexts(const std::string &extension_id,
diff --git a/src/core/extensions/extension_system_qt.h b/src/core/extensions/extension_system_qt.h
index 04bffb74d..e3762e8a6 100644
--- a/src/core/extensions/extension_system_qt.h
+++ b/src/core/extensions/extension_system_qt.h
@@ -98,7 +98,7 @@ public:
AppSorting *app_sorting() override;
void RegisterExtensionWithRequestContexts(const Extension *extension,
- const base::Closure &callback) override;
+ base::OnceClosure callback) override;
void UnregisterExtensionWithRequestContexts(const std::string &extension_id,
const UnloadedExtensionReason reason) override;
diff --git a/src/core/extensions/extensions_browser_client_qt.cpp b/src/core/extensions/extensions_browser_client_qt.cpp
index 1b2bb51f4..08ce07da8 100644
--- a/src/core/extensions/extensions_browser_client_qt.cpp
+++ b/src/core/extensions/extensions_browser_client_qt.cpp
@@ -64,14 +64,12 @@
#include "extensions/browser/extension_host_delegate.h"
#include "extensions/browser/extension_protocols.h"
#include "extensions/browser/extensions_browser_interface_binders.h"
-#include "extensions/browser/mojo/interface_registration.h"
#include "extensions/browser/url_request_util.h"
#include "extensions/common/file_util.h"
-#include "mojo/public/cpp/bindings/strong_binding.h"
#include "net/base/completion_once_callback.h"
#include "net/base/mime_util.h"
-#include "services/network/public/cpp/resource_response.h"
#include "services/network/public/mojom/url_loader.mojom.h"
+#include "services/network/public/mojom/url_response_head.mojom.h"
#include "third_party/zlib/google/compression_utils.h"
#include "ui/base/resource/resource_bundle.h"
@@ -169,7 +167,7 @@ public:
void ResumeReadingBodyFromNet() override {}
private:
- ResourceBundleFileLoader(const std::string &content_security_policy, bool send_cors_header) : binding_(this)
+ ResourceBundleFileLoader(const std::string &content_security_policy, bool send_cors_header)
{
response_headers_ = extensions::BuildHttpHeaders(content_security_policy, send_cors_header, base::Time());
}
@@ -181,11 +179,11 @@ private:
const base::FilePath &filename, int resource_id)
{
client_.Bind(std::move(client_info_remote));
- binding_.Bind(std::move(loader));
- binding_.set_connection_error_handler(
- base::BindOnce(&ResourceBundleFileLoader::OnBindingError, base::Unretained(this)));
- client_.set_connection_error_handler(
- base::BindOnce(&ResourceBundleFileLoader::OnConnectionError, base::Unretained(this)));
+ receiver_.Bind(std::move(loader));
+ receiver_.set_disconnect_handler(base::BindOnce(
+ &ResourceBundleFileLoader::OnReceiverError, base::Unretained(this)));
+ client_.set_disconnect_handler(base::BindOnce(
+ &ResourceBundleFileLoader::OnMojoDisconnect, base::Unretained(this)));
auto data = GetResource(resource_id, request.url.host());
std::string *read_mime_type = new std::string;
@@ -198,12 +196,12 @@ private:
void OnMimeTypeRead(scoped_refptr<base::RefCountedMemory> data, std::string *read_mime_type, bool read_result)
{
- network::ResourceResponseHead head;
- head.request_start = base::TimeTicks::Now();
- head.response_start = base::TimeTicks::Now();
- head.content_length = data->size();
- head.mime_type = *read_mime_type;
- DetermineCharset(head.mime_type, data.get(), &head.charset);
+ auto head = network::mojom::URLResponseHead::New();
+ head->request_start = base::TimeTicks::Now();
+ head->response_start = base::TimeTicks::Now();
+ head->content_length = data->size();
+ head->mime_type = *read_mime_type;
+ DetermineCharset(head->mime_type, data.get(), &head->charset);
mojo::DataPipe pipe(data->size());
if (!pipe.consumer_handle.is_valid()) {
client_->OnComplete(network::URLLoaderCompletionStatus(net::ERR_FAILED));
@@ -211,14 +209,14 @@ private:
MaybeDeleteSelf();
return;
}
- head.headers = response_headers_;
- head.headers->AddHeader(base::StringPrintf("%s: %s", net::HttpRequestHeaders::kContentLength,
- base::NumberToString(head.content_length).c_str()));
- if (!head.mime_type.empty()) {
- head.headers->AddHeader(
- base::StringPrintf("%s: %s", net::HttpRequestHeaders::kContentType, head.mime_type.c_str()));
+ head->headers = response_headers_;
+ head->headers->AddHeader(base::StringPrintf("%s: %s", net::HttpRequestHeaders::kContentLength,
+ base::NumberToString(head->content_length).c_str()));
+ if (!head->mime_type.empty()) {
+ head->headers->AddHeader(
+ base::StringPrintf("%s: %s", net::HttpRequestHeaders::kContentType, head->mime_type.c_str()));
}
- client_->OnReceiveResponse(head);
+ client_->OnReceiveResponse(std::move(head));
client_->OnStartLoadingResponseBody(std::move(pipe.consumer_handle));
uint32_t write_size = data->size();
@@ -226,21 +224,21 @@ private:
OnFileWritten(result);
}
- void OnConnectionError()
+ void OnMojoDisconnect()
{
client_.reset();
MaybeDeleteSelf();
}
- void OnBindingError()
+ void OnReceiverError()
{
- binding_.Close();
+ receiver_.reset();
MaybeDeleteSelf();
}
void MaybeDeleteSelf()
{
- if (!binding_.is_bound() && !client_.is_bound())
+ if (!receiver_.is_bound() && !client_.is_bound())
delete this;
}
@@ -256,10 +254,10 @@ private:
MaybeDeleteSelf();
}
- mojo::Binding<network::mojom::URLLoader> binding_;
- network::mojom::URLLoaderClientPtr client_;
+ mojo::Receiver<network::mojom::URLLoader> receiver_{this};
+ mojo::Remote<network::mojom::URLLoaderClient> client_;
scoped_refptr<net::HttpResponseHeaders> response_headers_;
- base::WeakPtrFactory<ResourceBundleFileLoader> weak_factory_{ this };
+ base::WeakPtrFactory<ResourceBundleFileLoader> weak_factory_{this};
DISALLOW_COPY_AND_ASSIGN(ResourceBundleFileLoader);
};
@@ -449,13 +447,6 @@ ExtensionSystemProvider *ExtensionsBrowserClientQt::GetExtensionSystemFactory()
return ExtensionSystemFactoryQt::GetInstance();
}
-void ExtensionsBrowserClientQt::RegisterExtensionInterfaces(service_manager::BinderRegistryWithArgs<content::RenderFrameHost *> *registry,
- content::RenderFrameHost *render_frame_host,
- const Extension *extension) const
-{
- RegisterInterfacesForExtension(registry, render_frame_host, extension);
-}
-
void ExtensionsBrowserClientQt::RegisterBrowserInterfaceBindersForFrame(
service_manager::BinderMapWithContext<content::RenderFrameHost*> *binder_map,
content::RenderFrameHost* render_frame_host,
diff --git a/src/core/extensions/extensions_browser_client_qt.h b/src/core/extensions/extensions_browser_client_qt.h
index 97da83240..f57165fcf 100644
--- a/src/core/extensions/extensions_browser_client_qt.h
+++ b/src/core/extensions/extensions_browser_client_qt.h
@@ -47,6 +47,8 @@
#include "base/compiler_specific.h"
#include "extensions/browser/extensions_browser_client.h"
+#include "mojo/public/cpp/bindings/pending_receiver.h"
+#include "mojo/public/cpp/bindings/pending_remote.h"
namespace extensions {
@@ -94,9 +96,6 @@ public:
void RegisterBrowserInterfaceBindersForFrame(service_manager::BinderMapWithContext<content::RenderFrameHost*> *,
content::RenderFrameHost *, const extensions::Extension *) const override;
std::unique_ptr<RuntimeAPIDelegate> CreateRuntimeAPIDelegate(content::BrowserContext *context) const override;
- void RegisterExtensionInterfaces(service_manager::BinderRegistryWithArgs<content::RenderFrameHost *> *registry,
- content::RenderFrameHost *render_frame_host,
- const Extension *extension) const override;
const ComponentExtensionResourceManager *
GetComponentExtensionResourceManager() override;
void BroadcastEventToRenderers(events::HistogramValue histogram_value,
diff --git a/src/core/net/custom_url_loader_factory.cpp b/src/core/net/custom_url_loader_factory.cpp
index e5f580536..709e4451b 100644
--- a/src/core/net/custom_url_loader_factory.cpp
+++ b/src/core/net/custom_url_loader_factory.cpp
@@ -51,9 +51,10 @@
#include "net/base/net_errors.h"
#include "net/http/http_status_code.h"
#include "net/http/http_util.h"
-#include "services/network/public/cpp/resource_response.h"
+#include "services/network/public/cpp/cors/cors.h"
#include "services/network/public/mojom/url_loader.mojom.h"
#include "services/network/public/mojom/url_loader_factory.mojom.h"
+#include "services/network/public/mojom/url_response_head.mojom.h"
#include "api/qwebengineurlscheme.h"
#include "net/url_request_custom_job_proxy.h"
@@ -140,7 +141,19 @@ private:
void Start()
{
DCHECK(m_taskRunner->RunsTasksInCurrentSequence());
- m_head.request_start = base::TimeTicks::Now();
+
+ if (network::cors::IsCorsEnabledRequestMode(m_request.mode)) {
+ // CORS mode requires a valid request_initiator.
+ if (!m_request.request_initiator)
+ return CompleteWithFailure(net::ERR_INVALID_ARGUMENT);
+
+ // Custom schemes are not covered by CorsURLLoader, so we need to reject CORS requests manually.
+ if (!m_corsEnabled && !m_request.request_initiator->IsSameOriginWith(url::Origin::Create(m_request.url)))
+ return CompleteWithFailure(network::CorsErrorStatus(network::mojom::CorsError::kCorsDisabledScheme));
+ }
+
+ m_head = network::mojom::URLResponseHead::New();
+ m_head->request_start = base::TimeTicks::Now();
if (!m_pipe.consumer_handle.is_valid())
return CompleteWithFailure(net::ERR_FAILED);
@@ -162,6 +175,13 @@ private:
m_request.url, m_request.method, m_request.request_initiator, std::move(headers)));
}
+ void CompleteWithFailure(network::CorsErrorStatus cors_error)
+ {
+ DCHECK(m_taskRunner->RunsTasksInCurrentSequence());
+ m_client->OnComplete(network::URLLoaderCompletionStatus(cors_error));
+ ClearProxyAndClient(false);
+ }
+
void CompleteWithFailure(net::Error net_error)
{
DCHECK(m_taskRunner->RunsTasksInCurrentSequence());
@@ -184,7 +204,7 @@ private:
DCHECK(m_taskRunner->RunsTasksInCurrentSequence());
if (result == MOJO_RESULT_OK) {
network::URLLoaderCompletionStatus status(net::OK);
- status.encoded_data_length = m_totalBytesRead + m_head.headers->raw_headers().length();
+ status.encoded_data_length = m_totalBytesRead + m_headerBytesRead;
status.encoded_body_length = m_totalBytesRead;
status.decoded_body_length = m_totalBytesRead;
m_client->OnComplete(status);
@@ -219,17 +239,17 @@ private:
CompleteWithFailure(net::ERR_REQUEST_RANGE_NOT_SATISFIABLE);
} else {
m_maxBytesToRead = m_byteRange.last_byte_position() - m_byteRange.first_byte_position() + 1;
- m_head.content_length = m_maxBytesToRead;
+ m_head->content_length = m_maxBytesToRead;
}
} else {
- m_head.content_length = size;
+ m_head->content_length = size;
}
}
void notifyHeadersComplete() override
{
DCHECK(m_taskRunner->RunsTasksInCurrentSequence());
DCHECK(!m_error);
- m_head.response_start = base::TimeTicks::Now();
+ m_head->response_start = base::TimeTicks::Now();
std::string headers;
if (!m_redirect.is_empty()) {
@@ -262,11 +282,11 @@ private:
headers += "Access-Control-Allow-Credentials: true\n";
}
}
- m_head.headers = base::MakeRefCounted<net::HttpResponseHeaders>(net::HttpUtil::AssembleRawHeaders(headers));
- m_head.encoded_data_length = m_head.headers->raw_headers().length();
+ m_head->headers = base::MakeRefCounted<net::HttpResponseHeaders>(net::HttpUtil::AssembleRawHeaders(headers));
+ m_head->encoded_data_length = m_head->headers->raw_headers().length();
if (!m_redirect.is_empty()) {
- m_head.content_length = m_head.encoded_body_length = -1;
+ m_head->content_length = m_head->encoded_body_length = -1;
net::URLRequest::FirstPartyURLPolicy first_party_url_policy =
m_request.update_first_party_url_on_redirect ? net::URLRequest::UPDATE_FIRST_PARTY_URL_ON_REDIRECT
: net::URLRequest::NEVER_CHANGE_FIRST_PARTY_URL;
@@ -276,15 +296,18 @@ private:
first_party_url_policy, m_request.referrer_policy,
m_request.referrer.spec(), net::HTTP_SEE_OTHER,
m_redirect, base::nullopt, false /*insecure_scheme_was_upgraded*/);
- m_client->OnReceiveRedirect(redirectInfo, m_head);
+ m_client->OnReceiveRedirect(redirectInfo, std::move(m_head));
+ m_head = nullptr;
// ### should m_request be updated with RedirectInfo? (see FollowRedirect)
return;
}
DCHECK(m_device);
- m_head.mime_type = m_mimeType;
- m_head.charset = m_charset;
- m_client->OnReceiveResponse(m_head);
+ m_head->mime_type = m_mimeType;
+ m_head->charset = m_charset;
+ m_headerBytesRead = m_head->headers->raw_headers().length();
+ m_client->OnReceiveResponse(std::move(m_head));
m_client->OnStartLoadingResponseBody(std::move(m_pipe.consumer_handle));
+ m_head = nullptr;
if (readAvailableData()) // May delete this
return;
@@ -309,7 +332,7 @@ private:
void notifyStartFailure(int error) override
{
DCHECK(m_taskRunner->RunsTasksInCurrentSequence());
- m_head.response_start = base::TimeTicks::Now();
+ m_head->response_start = base::TimeTicks::Now();
std::string headers;
switch (error) {
case net::ERR_INVALID_URL:
@@ -331,10 +354,10 @@ private:
headers = "HTTP/1.1 500 Internal Error\n";
break;
}
- m_head.headers = base::MakeRefCounted<net::HttpResponseHeaders>(net::HttpUtil::AssembleRawHeaders(headers));
- m_head.encoded_data_length = m_head.headers->raw_headers().length();
- m_head.content_length = m_head.encoded_body_length = -1;
- m_client->OnReceiveResponse(m_head);
+ m_head->headers = base::MakeRefCounted<net::HttpResponseHeaders>(net::HttpUtil::AssembleRawHeaders(headers));
+ m_head->encoded_data_length = m_head->headers->raw_headers().length();
+ m_head->content_length = m_head->encoded_body_length = -1;
+ m_client->OnReceiveResponse(std::move(m_head));
CompleteWithFailure(net::Error(error));
}
void notifyReadyRead() override
@@ -404,7 +427,7 @@ private:
}
return false;
}
- base::TaskRunner *taskRunner() override
+ base::SequencedTaskRunner *taskRunner() override
{
DCHECK(m_taskRunner->RunsTasksInCurrentSequence());
return m_taskRunner.get();
@@ -422,7 +445,8 @@ private:
int64_t m_totalSize = 0;
int64_t m_maxBytesToRead = -1;
network::ResourceRequest m_request;
- network::ResourceResponseHead m_head;
+ network::mojom::URLResponseHeadPtr m_head;
+ qint64 m_headerBytesRead = 0;
qint64 m_totalBytesRead = 0;
bool m_corsEnabled;
diff --git a/src/core/net/proxying_restricted_cookie_manager_qt.cpp b/src/core/net/proxying_restricted_cookie_manager_qt.cpp
index 331b55e62..b0b46c817 100644
--- a/src/core/net/proxying_restricted_cookie_manager_qt.cpp
+++ b/src/core/net/proxying_restricted_cookie_manager_qt.cpp
@@ -116,7 +116,7 @@ ProxyingRestrictedCookieManagerQt::~ProxyingRestrictedCookieManagerQt()
}
void ProxyingRestrictedCookieManagerQt::GetAllForUrl(const GURL &url,
- const GURL &site_for_cookies,
+ const net::SiteForCookies &site_for_cookies,
const url::Origin &top_frame_origin,
network::mojom::CookieManagerGetOptionsPtr options,
GetAllForUrlCallback callback)
@@ -132,7 +132,8 @@ void ProxyingRestrictedCookieManagerQt::GetAllForUrl(const GURL &url,
void ProxyingRestrictedCookieManagerQt::SetCanonicalCookie(const net::CanonicalCookie &cookie,
const GURL &url,
- const GURL &site_for_cookies, const url::Origin &top_frame_origin,
+ const net::SiteForCookies &site_for_cookies,
+ const url::Origin &top_frame_origin,
SetCanonicalCookieCallback callback)
{
DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
@@ -145,7 +146,7 @@ void ProxyingRestrictedCookieManagerQt::SetCanonicalCookie(const net::CanonicalC
}
void ProxyingRestrictedCookieManagerQt::AddChangeListener(const GURL &url,
- const GURL &site_for_cookies,
+ const net::SiteForCookies &site_for_cookies,
const url::Origin &top_frame_origin,
mojo::PendingRemote<network::mojom::CookieChangeListener> listener,
AddChangeListenerCallback callback)
@@ -155,7 +156,7 @@ void ProxyingRestrictedCookieManagerQt::AddChangeListener(const GURL &url,
}
void ProxyingRestrictedCookieManagerQt::SetCookieFromString(const GURL &url,
- const GURL &site_for_cookies,
+ const net::SiteForCookies &site_for_cookies,
const url::Origin &top_frame_origin,
const std::string &cookie,
SetCookieFromStringCallback callback)
@@ -170,7 +171,7 @@ void ProxyingRestrictedCookieManagerQt::SetCookieFromString(const GURL &url,
}
void ProxyingRestrictedCookieManagerQt::GetCookiesString(const GURL &url,
- const GURL &site_for_cookies,
+ const net::SiteForCookies &site_for_cookies,
const url::Origin &top_frame_origin,
GetCookiesStringCallback callback)
{
@@ -184,7 +185,7 @@ void ProxyingRestrictedCookieManagerQt::GetCookiesString(const GURL &url,
}
void ProxyingRestrictedCookieManagerQt::CookiesEnabledFor(const GURL &url,
- const GURL &site_for_cookies,
+ const net::SiteForCookies &site_for_cookies,
const url::Origin & /*top_frame_origin*/,
CookiesEnabledForCallback callback)
{
@@ -192,11 +193,11 @@ void ProxyingRestrictedCookieManagerQt::CookiesEnabledFor(const GURL &url,
std::move(callback).Run(allowCookies(url, site_for_cookies));
}
-bool ProxyingRestrictedCookieManagerQt::allowCookies(const GURL &url, const GURL &site_for_cookies) const
+bool ProxyingRestrictedCookieManagerQt::allowCookies(const GURL &url, const net::SiteForCookies &site_for_cookies) const
{
if (!m_profileIoData)
return false;
- return m_profileIoData->canGetCookies(toQt(site_for_cookies), toQt(url));
+ return m_profileIoData->canGetCookies(toQt(site_for_cookies.RepresentativeUrl()), toQt(url));
}
} // namespace QtWebEngineCore
diff --git a/src/core/net/proxying_restricted_cookie_manager_qt.h b/src/core/net/proxying_restricted_cookie_manager_qt.h
index b682075ed..3d4765b3b 100644
--- a/src/core/net/proxying_restricted_cookie_manager_qt.h
+++ b/src/core/net/proxying_restricted_cookie_manager_qt.h
@@ -65,36 +65,36 @@ public:
// network::mojom::RestrictedCookieManager interface:
void GetAllForUrl(const GURL &url,
- const GURL &site_for_cookies,
+ const net::SiteForCookies &site_for_cookies,
const url::Origin &top_frame_origin,
network::mojom::CookieManagerGetOptionsPtr options,
GetAllForUrlCallback callback) override;
void SetCanonicalCookie(const net::CanonicalCookie& cookie,
const GURL &url,
- const GURL &site_for_cookies,
+ const net::SiteForCookies &site_for_cookies,
const url::Origin &top_frame_origin,
SetCanonicalCookieCallback callback) override;
void AddChangeListener(const GURL &url,
- const GURL &site_for_cookies,
+ const net::SiteForCookies &site_for_cookies,
const url::Origin &top_frame_origin,
mojo::PendingRemote<network::mojom::CookieChangeListener> listener,
AddChangeListenerCallback callback) override;
void SetCookieFromString(const GURL &url,
- const GURL &site_for_cookies,
+ const net::SiteForCookies &site_for_cookies,
const url::Origin &top_frame_origin,
const std::string &cookie,
SetCookieFromStringCallback callback) override;
void GetCookiesString(const GURL &url,
- const GURL &site_for_cookies,
+ const net::SiteForCookies &site_for_cookies,
const url::Origin &top_frame_origin,
GetCookiesStringCallback callback) override;
void CookiesEnabledFor(const GURL &url,
- const GURL &site_for_cookies,
+ const net::SiteForCookies &site_for_cookies,
const url::Origin &top_frame_origin,
CookiesEnabledForCallback callback) override;
// Internal:
- bool allowCookies(const GURL &url, const GURL &site_for_cookies) const;
+ bool allowCookies(const GURL &url, const net::SiteForCookies &site_for_cookies) const;
private:
ProxyingRestrictedCookieManagerQt(base::WeakPtr<ProfileIODataQt> profileIoData,
diff --git a/src/core/net/proxying_url_loader_factory_qt.cpp b/src/core/net/proxying_url_loader_factory_qt.cpp
index 8e084a40b..cf0b0fb7e 100644
--- a/src/core/net/proxying_url_loader_factory_qt.cpp
+++ b/src/core/net/proxying_url_loader_factory_qt.cpp
@@ -45,7 +45,6 @@
#include "base/strings/string_number_conversions.h"
#include "base/strings/stringprintf.h"
#include "base/task/post_task.h"
-#include "components/safe_browsing/common/safebrowsing_constants.h"
#include "content/browser/web_contents/web_contents_impl.h"
#include "content/public/browser/browser_task_traits.h"
#include "content/public/browser/browser_thread.h"
@@ -151,7 +150,7 @@ private:
// error didn't occur.
int error_status_ = net::OK;
network::ResourceRequest request_;
- network::ResourceResponseHead current_response_;
+ network::mojom::URLResponseHeadPtr current_response_;
const net::MutableNetworkTrafficAnnotationTag traffic_annotation_;
@@ -189,6 +188,7 @@ InterceptedRequest::InterceptedRequest(int process_id, uint64_t request_id, int3
, target_factory_(std::move(target_factory))
, weak_factory_(this)
{
+ current_response_ = network::mojom::URLResponseHead::New();
// If there is a client error, clean up the request.
target_client_.set_disconnect_handler(
base::BindOnce(&InterceptedRequest::OnURLLoaderClientError, weak_factory_.GetWeakPtr()));
@@ -219,12 +219,12 @@ void InterceptedRequest::Restart()
webContents = content::WebContents::FromFrameTreeNodeId(request_.render_frame_id);
}
- GURL top_document_url = webContents ? webContents->GetLastCommittedURL() : GURL();
+ GURL top_document_url = webContents ? webContents->GetVisibleURL() : GURL();
QUrl firstPartyUrl;
if (!top_document_url.is_empty())
firstPartyUrl = toQt(top_document_url);
else
- firstPartyUrl = toQt(request_.site_for_cookies); // m_topDocumentUrl can be empty for the main-frame.
+ firstPartyUrl = toQt(request_.site_for_cookies.RepresentativeUrl()); // m_topDocumentUrl can be empty for the main-frame.
QWebEngineUrlRequestInfoPrivate *infoPrivate =
new QWebEngineUrlRequestInfoPrivate(toQt(resourceType), toQt(navigationType), originalUrl, firstPartyUrl,
@@ -283,7 +283,7 @@ void InterceptedRequest::ContinueAfterIntercept()
false /*insecure_scheme_was_upgraded*/);
// FIXME: Should probably create a new header.
- current_response_.encoded_data_length = 0;
+ current_response_->encoded_data_length = 0;
request_.method = redirectInfo.new_method;
request_.url = redirectInfo.new_url;
request_.site_for_cookies = redirectInfo.new_site_for_cookies;
@@ -291,7 +291,7 @@ void InterceptedRequest::ContinueAfterIntercept()
request_.referrer_policy = redirectInfo.new_referrer_policy;
if (request_.method == net::HttpRequestHeaders::kGetMethod)
request_.request_body = nullptr;
- target_client_->OnReceiveRedirect(redirectInfo, current_response_);
+ target_client_->OnReceiveRedirect(redirectInfo, std::move(current_response_));
return;
}
@@ -319,7 +319,7 @@ void InterceptedRequest::ContinueAfterIntercept()
void InterceptedRequest::OnReceiveResponse(network::mojom::URLResponseHeadPtr head)
{
- current_response_ = head;
+ current_response_ = head.Clone();
target_client_->OnReceiveResponse(std::move(head));
}
@@ -328,7 +328,7 @@ void InterceptedRequest::OnReceiveRedirect(const net::RedirectInfo &redirect_inf
{
// TODO(timvolodine): handle redirect override.
request_was_redirected_ = true;
- current_response_ = head;
+ current_response_ = head.Clone();
target_client_->OnReceiveRedirect(redirect_info, std::move(head));
request_.url = redirect_info.new_url;
request_.method = redirect_info.new_method;
diff --git a/src/core/net/proxying_url_loader_factory_qt.h b/src/core/net/proxying_url_loader_factory_qt.h
index 3d77856cc..e1bcc276c 100644
--- a/src/core/net/proxying_url_loader_factory_qt.h
+++ b/src/core/net/proxying_url_loader_factory_qt.h
@@ -49,7 +49,6 @@
#include "mojo/public/cpp/bindings/receiver_set.h"
#include "net/traffic_annotation/network_traffic_annotation.h"
#include "services/network/public/cpp/resource_request.h"
-#include "services/network/public/cpp/resource_response.h"
#include "services/network/public/mojom/url_loader.mojom.h"
#include "services/network/public/mojom/url_loader_factory.mojom.h"
#include "url/gurl.h"
diff --git a/src/core/net/ssl_host_state_delegate_qt.cpp b/src/core/net/ssl_host_state_delegate_qt.cpp
index 3f3f95c83..3390c092a 100644
--- a/src/core/net/ssl_host_state_delegate_qt.cpp
+++ b/src/core/net/ssl_host_state_delegate_qt.cpp
@@ -77,7 +77,7 @@ SSLHostStateDelegateQt::SSLHostStateDelegateQt() {}
SSLHostStateDelegateQt::~SSLHostStateDelegateQt() {}
-void SSLHostStateDelegateQt::AllowCert(const std::string &host, const net::X509Certificate &cert, int error)
+void SSLHostStateDelegateQt::AllowCert(const std::string &host, const net::X509Certificate &cert, int error, content::WebContents *)
{
m_certPolicyforHost[host].Allow(cert, error);
}
@@ -105,7 +105,7 @@ void SSLHostStateDelegateQt::Clear(base::RepeatingCallback<bool(const std::strin
// prior to this query, otherwise false.
content::SSLHostStateDelegate::CertJudgment SSLHostStateDelegateQt::QueryPolicy(const std::string &host,
const net::X509Certificate &cert,
- int error)
+ int error, content::WebContents *)
{
return m_certPolicyforHost[host].Check(cert, error) ? SSLHostStateDelegate::ALLOWED : SSLHostStateDelegate::DENIED;
}
@@ -132,7 +132,7 @@ void SSLHostStateDelegateQt::RevokeUserAllowExceptions(const std::string &host)
// |host|. This does not mean that *all* certificate errors are allowed, just
// that there exists an exception. To see if a particular certificate and
// error combination exception is allowed, use QueryPolicy().
-bool SSLHostStateDelegateQt::HasAllowException(const std::string &host)
+bool SSLHostStateDelegateQt::HasAllowException(const std::string &host, content::WebContents *)
{
auto policy_iterator = m_certPolicyforHost.find(host);
return policy_iterator != m_certPolicyforHost.end() &&
diff --git a/src/core/net/ssl_host_state_delegate_qt.h b/src/core/net/ssl_host_state_delegate_qt.h
index 26e503eb5..6b407353a 100644
--- a/src/core/net/ssl_host_state_delegate_qt.h
+++ b/src/core/net/ssl_host_state_delegate_qt.h
@@ -66,13 +66,13 @@ public:
~SSLHostStateDelegateQt();
// content::SSLHostStateDelegate implementation:
- void AllowCert(const std::string &, const net::X509Certificate &cert, int error) override;
+ void AllowCert(const std::string &, const net::X509Certificate &cert, int error, content::WebContents *web_contents) override;
void Clear(base::RepeatingCallback<bool(const std::string&)> host_filter) override;
- CertJudgment QueryPolicy(const std::string &host, const net::X509Certificate &cert, int error) override;
+ CertJudgment QueryPolicy(const std::string &host, const net::X509Certificate &cert, int error, content::WebContents *web_contents) override;
void HostRanInsecureContent(const std::string &host, int child_id, InsecureContentType content_type) override;
bool DidHostRunInsecureContent(const std::string &host, int child_id, InsecureContentType content_type) override;
void RevokeUserAllowExceptions(const std::string &host) override;
- bool HasAllowException(const std::string &host) override;
+ bool HasAllowException(const std::string &host, content::WebContents *web_contents) override;
private:
std::map<std::string, CertPolicy> m_certPolicyforHost;
diff --git a/src/core/net/url_request_custom_job_proxy.h b/src/core/net/url_request_custom_job_proxy.h
index db38083dd..b14322f91 100644
--- a/src/core/net/url_request_custom_job_proxy.h
+++ b/src/core/net/url_request_custom_job_proxy.h
@@ -42,7 +42,7 @@
#include "base/memory/weak_ptr.h"
#include "base/optional.h"
-#include "base/task_runner.h"
+#include "base/sequenced_task_runner.h"
#include "url/gurl.h"
#include "url/origin.h"
#include <QtCore/QPointer>
@@ -75,7 +75,7 @@ public:
virtual void notifyAborted() = 0;
virtual void notifyStartFailure(int) = 0;
virtual void notifyReadyRead() = 0;
- virtual base::TaskRunner *taskRunner() = 0;
+ virtual base::SequencedTaskRunner *taskRunner() = 0;
};
URLRequestCustomJobProxy(Client *client,
@@ -101,7 +101,7 @@ public:
std::string m_scheme;
URLRequestCustomJobDelegate *m_delegate;
QPointer<ProfileAdapter> m_profileAdapter;
- scoped_refptr<base::TaskRunner> m_ioTaskRunner;
+ scoped_refptr<base::SequencedTaskRunner> m_ioTaskRunner;
};
} // namespace QtWebEngineCore
diff --git a/src/core/ozone/gl_ozone_glx_qt.cpp b/src/core/ozone/gl_ozone_glx_qt.cpp
index 0c54299ba..60b970209 100644
--- a/src/core/ozone/gl_ozone_glx_qt.cpp
+++ b/src/core/ozone/gl_ozone_glx_qt.cpp
@@ -95,12 +95,6 @@ bool GLOzoneGLXQt::InitializeStaticGLBindings(
return true;
}
-void GLOzoneGLXQt::InitializeLogGLBindings()
-{
- gl::InitializeLogGLBindingsGL();
- gl::InitializeLogGLBindingsGLX();
-}
-
void GLOzoneGLXQt::SetDisabledExtensionsPlatform(
const std::string& disabled_extensions) {
gl::SetDisabledExtensionsGLX(disabled_extensions);
diff --git a/src/core/ozone/gl_ozone_glx_qt.h b/src/core/ozone/gl_ozone_glx_qt.h
index 8f85ea23b..7825cba35 100644
--- a/src/core/ozone/gl_ozone_glx_qt.h
+++ b/src/core/ozone/gl_ozone_glx_qt.h
@@ -54,7 +54,6 @@ public:
bool InitializeGLOneOffPlatform() override;
bool InitializeStaticGLBindings(gl::GLImplementation implementation) override;
- void InitializeLogGLBindings() override;
bool InitializeExtensionSettingsOneOffPlatform() override;
void ShutdownGL() override;
void SetDisabledExtensionsPlatform(
diff --git a/src/core/ozone/gl_surface_egl_qt.cpp b/src/core/ozone/gl_surface_egl_qt.cpp
index ac0e79b67..31126eab9 100644
--- a/src/core/ozone/gl_surface_egl_qt.cpp
+++ b/src/core/ozone/gl_surface_egl_qt.cpp
@@ -252,7 +252,7 @@ void GLSurfaceEGLQt::Destroy()
}
bool GLSurfaceEGLQt::Resize(const gfx::Size& size, float scale_factor,
- ColorSpace color_space, bool has_alpha)
+ const gfx::ColorSpace &color_space, bool has_alpha)
{
if (size == m_size)
return true;
@@ -303,7 +303,7 @@ bool GLSurfacelessQtEGL::IsSurfaceless() const
}
bool GLSurfacelessQtEGL::Resize(const gfx::Size& size, float scale_factor,
- ColorSpace color_space, bool has_alpha)
+ const gfx::ColorSpace &color_space, bool has_alpha)
{
m_size = size;
return true;
diff --git a/src/core/ozone/gl_surface_egl_qt.h b/src/core/ozone/gl_surface_egl_qt.h
index ecc2327b3..dff25e433 100644
--- a/src/core/ozone/gl_surface_egl_qt.h
+++ b/src/core/ozone/gl_surface_egl_qt.h
@@ -57,7 +57,8 @@ public:
void Destroy() override;
void* GetHandle() override;
bool Resize(const gfx::Size& size, float scale_factor,
- ColorSpace color_space, bool has_alpha) override;
+ const gfx::ColorSpace &color_space, bool has_alpha) override;
+
protected:
~GLSurfaceEGLQt();
@@ -85,7 +86,7 @@ public:
void Destroy() override;
bool IsSurfaceless() const override;
bool Resize(const gfx::Size& size, float scale_factor,
- ColorSpace color_space, bool has_alpha) override;
+ const gfx::ColorSpace &color_space, bool has_alpha) override;
EGLSurface GetHandle() override;
void* GetShareHandle() override;
diff --git a/src/core/ozone/ozone_platform_qt.cpp b/src/core/ozone/ozone_platform_qt.cpp
index fb5af18c5..3674ccfe6 100644
--- a/src/core/ozone/ozone_platform_qt.cpp
+++ b/src/core/ozone/ozone_platform_qt.cpp
@@ -73,7 +73,7 @@ public:
ui::InputController* GetInputController() override;
std::unique_ptr<ui::SystemInputInjector> CreateSystemInputInjector() override;
ui::OverlayManagerOzone* GetOverlayManager() override;
- std::unique_ptr<InputMethod> CreateInputMethod(internal::InputMethodDelegate *delegate) override;
+ std::unique_ptr<InputMethod> CreateInputMethod(internal::InputMethodDelegate *delegate, gfx::AcceleratedWidget widget) override;
std::unique_ptr<ui::PlatformScreen> CreateScreen() override { return nullptr; }
private:
void InitializeUI(const ui::OzonePlatform::InitParams &) override;
@@ -148,7 +148,7 @@ void OzonePlatformQt::InitializeGPU(const ui::OzonePlatform::InitParams &)
surface_factory_ozone_.reset(new QtWebEngineCore::SurfaceFactoryQt());
}
-std::unique_ptr<InputMethod> OzonePlatformQt::CreateInputMethod(internal::InputMethodDelegate *)
+std::unique_ptr<InputMethod> OzonePlatformQt::CreateInputMethod(internal::InputMethodDelegate *, gfx::AcceleratedWidget)
{
NOTREACHED();
return nullptr;
diff --git a/src/core/permission_manager_qt.cpp b/src/core/permission_manager_qt.cpp
index ece74b123..5c33ca702 100644
--- a/src/core/permission_manager_qt.cpp
+++ b/src/core/permission_manager_qt.cpp
@@ -61,9 +61,9 @@ static ProfileAdapter::PermissionType toQt(content::PermissionType type)
return ProfileAdapter::AudioCapturePermission;
case content::PermissionType::VIDEO_CAPTURE:
return ProfileAdapter::VideoCapturePermission;
- case content::PermissionType::CLIPBOARD_READ:
+ case content::PermissionType::CLIPBOARD_READ_WRITE:
return ProfileAdapter::ClipboardRead;
- case content::PermissionType::CLIPBOARD_WRITE:
+ case content::PermissionType::CLIPBOARD_SANITIZED_WRITE:
return ProfileAdapter::ClipboardWrite;
case content::PermissionType::NOTIFICATIONS:
return ProfileAdapter::NotificationPermission;
@@ -83,8 +83,10 @@ static ProfileAdapter::PermissionType toQt(content::PermissionType type)
case content::PermissionType::WAKE_LOCK_SCREEN:
case content::PermissionType::WAKE_LOCK_SYSTEM:
case content::PermissionType::NFC:
+ case content::PermissionType::AR:
+ case content::PermissionType::VR:
case content::PermissionType::NUM:
- NOTIMPLEMENTED() << "Unsupported permission type: " << static_cast<int>(type);
+ LOG(INFO) << "Unsupported permission type: " << static_cast<int>(type);
break;
}
return ProfileAdapter::UnsupportedPermission;
@@ -302,13 +304,13 @@ blink::mojom::PermissionStatus PermissionManagerQt::GetPermissionStatusForFrame(
content::RenderFrameHost *render_frame_host,
const GURL &requesting_origin)
{
- if (permission == content::PermissionType::CLIPBOARD_READ ||
- permission == content::PermissionType::CLIPBOARD_WRITE) {
+ if (permission == content::PermissionType::CLIPBOARD_READ_WRITE ||
+ permission == content::PermissionType::CLIPBOARD_SANITIZED_WRITE) {
WebContentsDelegateQt *delegate = static_cast<WebContentsDelegateQt *>(
content::WebContents::FromRenderFrameHost(render_frame_host)->GetDelegate());
if (!delegate->webEngineSettings()->testAttribute(WebEngineSettings::JavascriptCanAccessClipboard))
return blink::mojom::PermissionStatus::DENIED;
- if (permission == content::PermissionType::CLIPBOARD_READ &&
+ if (permission == content::PermissionType::CLIPBOARD_READ_WRITE &&
!delegate->webEngineSettings()->testAttribute(WebEngineSettings::JavascriptCanPaste))
return blink::mojom::PermissionStatus::DENIED;
return blink::mojom::PermissionStatus::GRANTED;
diff --git a/src/core/printing/print_view_manager_qt.cpp b/src/core/printing/print_view_manager_qt.cpp
index 79e92fd6a..3a42f2c41 100644
--- a/src/core/printing/print_view_manager_qt.cpp
+++ b/src/core/printing/print_view_manager_qt.cpp
@@ -347,10 +347,11 @@ void PrintViewManagerQt::resetPdfState()
// IPC handlers
void PrintViewManagerQt::OnRequestPrintPreview(
- const PrintHostMsg_RequestPrintPreview_Params &/*params*/)
+ const PrintHostMsg_RequestPrintPreview_Params & /*params*/)
{
- m_printPreviewRfh->Send(new PrintMsg_PrintPreview(m_printPreviewRfh->GetRoutingID(),
- *m_printSettings));
+ mojo::AssociatedRemote<printing::mojom::PrintRenderFrame> printRenderFrame;
+ m_printPreviewRfh->GetRemoteAssociatedInterfaces()->GetInterface(&printRenderFrame);
+ printRenderFrame->PrintPreview(m_printSettings->Clone());
PrintPreviewDone();
}
diff --git a/src/core/qtwebengine_resources.gni b/src/core/qtwebengine_resources.gni
index 4f6c51d81..38e824f5e 100644
--- a/src/core/qtwebengine_resources.gni
+++ b/src/core/qtwebengine_resources.gni
@@ -21,12 +21,13 @@ group("qtwebengine_resources") {
repack("qtwebengine_repack_resources") {
sources = [
"$root_gen_dir/qtwebengine/qt_webengine_resources.pak",
- "$root_gen_dir/chrome/browser_resources.pak",
"$root_gen_dir/chrome/common_resources.pak",
"$root_gen_dir/chrome/quota_internals_resources.pak",
"$root_gen_dir/components/components_resources.pak",
+ "$root_gen_dir/components/dev_ui_components_resources.pak",
"$root_gen_dir/content/browser/resources/media/media_internals_resources.pak",
"$root_gen_dir/content/content_resources.pak",
+ "$root_gen_dir/content/dev_ui_content_resources.pak",
"$root_gen_dir/mojo/public/js/mojo_bindings_resources.pak",
"$root_gen_dir/net/net_resources.pak",
"$root_gen_dir/third_party/blink/public/resources/blink_resources.pak",
@@ -36,11 +37,12 @@ repack("qtwebengine_repack_resources") {
deps = [
"//qtwebengine/browser:qt_webengine_resources",
"//chrome/browser/resources/quota_internals:quota_internals_resources",
- "//chrome/browser:resources_grit",
"//chrome/common:resources_grit",
"//components/resources:components_resources_grit",
+ "//components/resources:dev_ui_components_resources_grit",
"//content/browser/resources/media:media_internals_resources",
- "//content:resources_grit",
+ "//content:content_resources_grit",
+ "//content:dev_ui_content_resources_grit",
"//mojo/public/js:resources",
"//net:net_resources_grit",
"//third_party/blink/public:resources_grit",
@@ -72,9 +74,9 @@ repack("qtwebengine_repack_resources") {
repack("qtwebengine_repack_resources_100") {
sources = [
+ "$root_gen_dir/chrome/renderer_resources_100_percent.pak",
"$root_gen_dir/components/components_resources_100_percent.pak",
"$root_gen_dir/content/app/resources/content_resources_100_percent.pak",
- "$root_gen_dir/chrome/renderer_resources_100_percent.pak",
"$root_gen_dir/third_party/blink/public/resources/blink_scaled_resources_100_percent.pak",
"$root_gen_dir/ui/resources/ui_resources_100_percent.pak",
]
@@ -98,9 +100,9 @@ repack("qtwebengine_repack_resources_100") {
repack("qtwebengine_repack_resources_200") {
sources = [
+ "$root_gen_dir/chrome/renderer_resources_200_percent.pak",
"$root_gen_dir/components/components_resources_200_percent.pak",
"$root_gen_dir/content/app/resources/content_resources_200_percent.pak",
- "$root_gen_dir/chrome/renderer_resources_200_percent.pak",
"$root_gen_dir/third_party/blink/public/resources/blink_scaled_resources_200_percent.pak",
"$root_gen_dir/ui/resources/ui_resources_200_percent.pak",
]
diff --git a/src/core/qtwebengine_sources.gni b/src/core/qtwebengine_sources.gni
index 3a39455c3..cbe51d052 100644
--- a/src/core/qtwebengine_sources.gni
+++ b/src/core/qtwebengine_sources.gni
@@ -50,6 +50,7 @@ source_set("qtwebengine_sources") {
"//chrome/browser/resources/quota_internals:quota_internals_resources",
"//chrome/common:buildflags",
"//components/nacl/common:buildflags",
+ "//components/performance_manager",
"//components/plugins/renderer/",
"//extensions/buildflags:buildflags",
"//rlz/buildflags:buildflags",
@@ -70,6 +71,8 @@ source_set("qtwebengine_sources") {
"//chrome/browser/prefs/chrome_command_line_pref_store.h",
"//chrome/browser/profiles/profile.cc",
"//chrome/browser/profiles/profile.h",
+ "//chrome/browser/tab_contents/form_interaction_tab_helper.cc",
+ "//chrome/browser/tab_contents/form_interaction_tab_helper.h",
"//chrome/browser/ui/webui/devtools_ui.cc",
"//chrome/browser/ui/webui/devtools_ui.h",
"//chrome/browser/ui/webui/devtools_ui_data_source.cc",
diff --git a/src/core/quota_permission_context_qt.cpp b/src/core/quota_permission_context_qt.cpp
index 94645b237..c7f1e856c 100644
--- a/src/core/quota_permission_context_qt.cpp
+++ b/src/core/quota_permission_context_qt.cpp
@@ -56,12 +56,12 @@ using content::WebContents;
namespace QtWebEngineCore {
-void QuotaPermissionContextQt::RequestQuotaPermission(const StorageQuotaParams &params, int render_process_id, const PermissionCallback &callback)
+void QuotaPermissionContextQt::RequestQuotaPermission(const StorageQuotaParams &params, int render_process_id, PermissionCallback callback)
{
if (params.storage_type != blink::mojom::StorageType::kPersistent) {
// For now we only support requesting quota with this interface
// for Persistent storage type.
- callback.Run(QUOTA_PERMISSION_RESPONSE_DISALLOW);
+ std::move(callback).Run(QUOTA_PERMISSION_RESPONSE_DISALLOW);
return;
}
@@ -69,7 +69,7 @@ void QuotaPermissionContextQt::RequestQuotaPermission(const StorageQuotaParams &
base::PostTask(
FROM_HERE, {content::BrowserThread::UI},
base::BindOnce(&QuotaPermissionContextQt::RequestQuotaPermission, this,
- params, render_process_id, callback));
+ params, render_process_id, std::move(callback)));
return;
}
@@ -86,11 +86,11 @@ void QuotaPermissionContextQt::RequestQuotaPermission(const StorageQuotaParams &
return;
QWebEngineQuotaRequest request(
- QSharedPointer<QuotaRequestControllerImpl>::create(this, params, callback));
+ QSharedPointer<QuotaRequestControllerImpl>::create(this, params, std::move(callback)));
client->runQuotaRequest(std::move(request));
}
-void QuotaPermissionContextQt::dispatchCallbackOnIOThread(const PermissionCallback &callback,
+void QuotaPermissionContextQt::dispatchCallbackOnIOThread(PermissionCallback callback,
QuotaPermissionContext::QuotaPermissionResponse response)
{
if (callback.is_null())
@@ -100,11 +100,11 @@ void QuotaPermissionContextQt::dispatchCallbackOnIOThread(const PermissionCallba
base::PostTask(
FROM_HERE, {content::BrowserThread::IO},
base::BindOnce(&QuotaPermissionContextQt::dispatchCallbackOnIOThread,
- this, callback, response));
+ this, std::move(callback), response));
return;
}
- callback.Run(response);
+ std::move(callback).Run(response);
}
} // namespace QtWebEngineCore
diff --git a/src/core/quota_permission_context_qt.h b/src/core/quota_permission_context_qt.h
index 99e07eec7..6d678c92a 100644
--- a/src/core/quota_permission_context_qt.h
+++ b/src/core/quota_permission_context_qt.h
@@ -50,9 +50,9 @@ class QuotaPermissionContextQt : public content::QuotaPermissionContext {
public:
void RequestQuotaPermission(const content::StorageQuotaParams &params,
int render_process_id,
- const PermissionCallback &callback) override;
+ PermissionCallback callback) override;
- void dispatchCallbackOnIOThread(const PermissionCallback &callback,
+ void dispatchCallbackOnIOThread(PermissionCallback callback,
QuotaPermissionContext::QuotaPermissionResponse response);
};
diff --git a/src/core/quota_request_controller_impl.cpp b/src/core/quota_request_controller_impl.cpp
index a18ad761d..514b85954 100644
--- a/src/core/quota_request_controller_impl.cpp
+++ b/src/core/quota_request_controller_impl.cpp
@@ -43,15 +43,14 @@
namespace QtWebEngineCore {
-QuotaRequestControllerImpl::QuotaRequestControllerImpl(
- QuotaPermissionContextQt *context,
+QuotaRequestControllerImpl::QuotaRequestControllerImpl(QuotaPermissionContextQt *context,
const content::StorageQuotaParams &params,
- const content::QuotaPermissionContext::PermissionCallback &callback)
+ content::QuotaPermissionContext::PermissionCallback callback)
: QuotaRequestController(
toQt(params.origin_url),
params.requested_size)
, m_context(context)
- , m_callback(callback)
+ , m_callback(std::move(callback))
{}
QuotaRequestControllerImpl::~QuotaRequestControllerImpl()
@@ -61,12 +60,12 @@ QuotaRequestControllerImpl::~QuotaRequestControllerImpl()
void QuotaRequestControllerImpl::accepted()
{
- m_context->dispatchCallbackOnIOThread(m_callback, QuotaPermissionContextQt::QUOTA_PERMISSION_RESPONSE_ALLOW);
+ m_context->dispatchCallbackOnIOThread(std::move(m_callback), QuotaPermissionContextQt::QUOTA_PERMISSION_RESPONSE_ALLOW);
}
void QuotaRequestControllerImpl::rejected()
{
- m_context->dispatchCallbackOnIOThread(m_callback, QuotaPermissionContextQt::QUOTA_PERMISSION_RESPONSE_DISALLOW);
+ m_context->dispatchCallbackOnIOThread(std::move(m_callback), QuotaPermissionContextQt::QUOTA_PERMISSION_RESPONSE_DISALLOW);
}
} // namespace QtWebEngineCore
diff --git a/src/core/quota_request_controller_impl.h b/src/core/quota_request_controller_impl.h
index 5814895f3..65e661694 100644
--- a/src/core/quota_request_controller_impl.h
+++ b/src/core/quota_request_controller_impl.h
@@ -50,7 +50,7 @@ public:
QuotaRequestControllerImpl(
QuotaPermissionContextQt *context,
const content::StorageQuotaParams &params,
- const content::QuotaPermissionContext::PermissionCallback &callback);
+ content::QuotaPermissionContext::PermissionCallback callback);
~QuotaRequestControllerImpl();
diff --git a/src/core/render_widget_host_view_qt.cpp b/src/core/render_widget_host_view_qt.cpp
index 7f1adb15e..ef5eaaab6 100644
--- a/src/core/render_widget_host_view_qt.cpp
+++ b/src/core/render_widget_host_view_qt.cpp
@@ -57,6 +57,7 @@
#include "components/viz/common/frame_sinks/begin_frame_source.h"
#include "components/viz/common/surfaces/frame_sink_id_allocator.h"
#include "components/viz/host/host_frame_sink_manager.h"
+#include "content/browser/compositor/image_transport_factory.h"
#include "content/browser/compositor/surface_utils.h"
#include "content/browser/frame_host/frame_tree.h"
#include "content/browser/frame_host/render_frame_host_impl.h"
@@ -272,6 +273,34 @@ static content::ScreenInfo screenInfoFromQScreen(QScreen *screen)
return r;
}
+// An minimal override to support progressing flings
+class FlingingCompositor : public ui::Compositor
+{
+ RenderWidgetHostViewQt *m_rwhv;
+public:
+ FlingingCompositor(RenderWidgetHostViewQt *rwhv,
+ const viz::FrameSinkId &frame_sink_id,
+ ui::ContextFactory *context_factory,
+ ui::ContextFactoryPrivate *context_factory_private,
+ scoped_refptr<base::SingleThreadTaskRunner> task_runner,
+ bool enable_pixel_canvas,
+ bool use_external_begin_frame_control = false,
+ bool force_software_compositor = false,
+ const char *trace_environment_name = nullptr)
+ : ui::Compositor(frame_sink_id, context_factory, context_factory_private,
+ task_runner, enable_pixel_canvas, use_external_begin_frame_control,
+ force_software_compositor, trace_environment_name)
+ , m_rwhv(rwhv)
+ {}
+
+ void BeginMainFrame(const viz::BeginFrameArgs &args) override
+ {
+ if (args.type != viz::BeginFrameArgs::MISSED && !m_rwhv->is_currently_scrolling_viewport())
+ m_rwhv->host()->ProgressFlingIfNeeded(args.frame_time);
+ ui::Compositor::BeginMainFrame(args);
+ }
+};
+
RenderWidgetHostViewQt::RenderWidgetHostViewQt(content::RenderWidgetHost *widget)
: content::RenderWidgetHostViewBase::RenderWidgetHostViewBase(widget)
, m_taskRunner(base::ThreadTaskRunnerHandle::Get())
@@ -310,7 +339,8 @@ RenderWidgetHostViewQt::RenderWidgetHostViewQt(content::RenderWidgetHost *widget
content::ImageTransportFactory *imageTransportFactory = content::ImageTransportFactory::GetInstance();
ui::ContextFactory *contextFactory = imageTransportFactory->GetContextFactory();
ui::ContextFactoryPrivate *contextFactoryPrivate = imageTransportFactory->GetContextFactoryPrivate();
- m_uiCompositor.reset(new ui::Compositor(
+ m_uiCompositor.reset(new FlingingCompositor(
+ this,
contextFactoryPrivate->AllocateFrameSinkId(),
contextFactory,
contextFactoryPrivate,
@@ -717,18 +747,6 @@ void RenderWidgetHostViewQt::DisplayTooltipText(const base::string16 &tooltip_te
m_adapterClient->setToolTip(toQt(tooltip_text));
}
-void RenderWidgetHostViewQt::DidCreateNewRendererCompositorFrameSink(viz::mojom::CompositorFrameSinkClient *frameSinkClient)
-{
- // Not used with viz
- NOTREACHED();
-}
-
-void RenderWidgetHostViewQt::SubmitCompositorFrame(const viz::LocalSurfaceId &local_surface_id, viz::CompositorFrame frame, base::Optional<viz::HitTestRegionList> hit_test_region_list)
-{
- // Not used with viz
- NOTREACHED();
-}
-
void RenderWidgetHostViewQt::GetScreenInfo(content::ScreenInfo *results)
{
*results = m_screenInfo;
@@ -1353,7 +1371,9 @@ void RenderWidgetHostViewQt::handleInputMethodEvent(QInputMethodEvent *ev)
end = qMax(0, start + end);
}
- underlines.push_back(ui::ImeTextSpan(ui::ImeTextSpan::Type::kComposition, start, end, ui::ImeTextSpan::Thickness::kThin, SK_ColorTRANSPARENT));
+ underlines.push_back(ui::ImeTextSpan(ui::ImeTextSpan::Type::kComposition, start, end,
+ ui::ImeTextSpan::Thickness::kThin, ui::ImeTextSpan::UnderlineStyle::kSolid,
+ SK_ColorTRANSPARENT));
QTextCharFormat format = qvariant_cast<QTextFormat>(attribute.value).toCharFormat();
if (format.underlineStyle() != QTextCharFormat::NoUnderline)
@@ -1772,12 +1792,6 @@ void RenderWidgetHostViewQt::handleFocusEvent(QFocusEvent *ev)
}
}
-void RenderWidgetHostViewQt::SetNeedsBeginFrames(bool needs_begin_frames)
-{
- // Not used with viz
- NOTREACHED();
-}
-
content::RenderFrameHost *RenderWidgetHostViewQt::getFocusedFrameHost()
{
content::RenderViewHostImpl *viewHost = content::RenderViewHostImpl::From(host());
@@ -1808,11 +1822,6 @@ ui::TextInputType RenderWidgetHostViewQt::getTextInputType() const
return ui::TEXT_INPUT_TYPE_NONE;
}
-void RenderWidgetHostViewQt::SetWantsAnimateOnlyBeginFrames()
-{
- m_delegatedFrameHost->SetWantsAnimateOnlyBeginFrames();
-}
-
viz::SurfaceId RenderWidgetHostViewQt::GetCurrentSurfaceId() const
{
return m_delegatedFrameHost->GetCurrentSurfaceId();
diff --git a/src/core/render_widget_host_view_qt.h b/src/core/render_widget_host_view_qt.h
index 139a4ebfe..5bddd0d34 100644
--- a/src/core/render_widget_host_view_qt.h
+++ b/src/core/render_widget_host_view_qt.h
@@ -152,8 +152,6 @@ public:
void Destroy() override;
void SetTooltipText(const base::string16 &tooltip_text) override;
void DisplayTooltipText(const base::string16& tooltip_text) override;
- void DidCreateNewRendererCompositorFrameSink(viz::mojom::CompositorFrameSinkClient* renderer_compositor_frame_sink) override;
- void SubmitCompositorFrame(const viz::LocalSurfaceId&, viz::CompositorFrame, base::Optional<viz::HitTestRegionList>) override;
void WheelEventAck(const blink::WebMouseWheelEvent &event, content::InputEventAckState ack_result) override;
void GestureEventAck(const blink::WebGestureEvent &event, content::InputEventAckState ack_result) override;
content::MouseWheelPhaseHandler *GetMouseWheelPhaseHandler() override;
@@ -163,8 +161,6 @@ public:
void GetScreenInfo(content::ScreenInfo *results) override;
gfx::Rect GetBoundsInRootWindow() override;
void ProcessAckedTouchEvent(const content::TouchEventWithLatencyInfo &touch, content::InputEventAckState ack_result) override;
- void SetNeedsBeginFrames(bool needs_begin_frames) override;
- void SetWantsAnimateOnlyBeginFrames() override;
viz::SurfaceId GetCurrentSurfaceId() const override;
const viz::FrameSinkId &GetFrameSinkId() const override;
const viz::LocalSurfaceIdAllocation &GetLocalSurfaceIdAllocation() const override;
diff --git a/src/core/renderer/content_renderer_client_qt.cpp b/src/core/renderer/content_renderer_client_qt.cpp
index 428697936..4786a20ae 100644
--- a/src/core/renderer/content_renderer_client_qt.cpp
+++ b/src/core/renderer/content_renderer_client_qt.cpp
@@ -273,7 +273,8 @@ void ContentRendererClientQt::PrepareErrorPage(content::RenderFrame *renderFrame
{
GetNavigationErrorStringsInternal(
renderFrame, httpMethod,
- error_page::Error::NetError(web_error.url(), web_error.reason(), web_error.has_copy_in_cache()), errorHtml);
+ error_page::Error::NetError((GURL)web_error.url(), web_error.reason(), net::ResolveErrorInfo(), web_error.has_copy_in_cache()),
+ errorHtml);
}
void ContentRendererClientQt::PrepareErrorPageForHttpStatusError(content::RenderFrame *renderFrame,
@@ -306,8 +307,8 @@ void ContentRendererClientQt::GetNavigationErrorStringsInternal(content::RenderF
error_page::LocalizedError::PageState errorPageState =
error_page::LocalizedError::GetPageState(
error.reason(), error.domain(), error.url(), isPost,
- error.stale_copy_in_cache(), false, RenderThreadObserverQt::is_incognito_process(), false,
- false, locale, std::unique_ptr<error_page::ErrorPageParams>());
+ false, error.stale_copy_in_cache(), false, RenderThreadObserverQt::is_incognito_process(), false,
+ false, false, locale, std::unique_ptr<error_page::ErrorPageParams>());
resourceId = IDR_NET_ERROR_HTML;
@@ -606,7 +607,7 @@ void ContentRendererClientQt::InitSpellCheck()
void ContentRendererClientQt::WillSendRequest(blink::WebLocalFrame *frame,
ui::PageTransition transition_type,
const blink::WebURL &url,
- const blink::WebURL &site_for_cookies,
+ const net::SiteForCookies &site_for_cookies,
const url::Origin *initiator_origin,
GURL *new_url,
bool *attach_same_site_cookies)
diff --git a/src/core/renderer/content_renderer_client_qt.h b/src/core/renderer/content_renderer_client_qt.h
index f2e725453..3cbd5b9ee 100644
--- a/src/core/renderer/content_renderer_client_qt.h
+++ b/src/core/renderer/content_renderer_client_qt.h
@@ -122,7 +122,7 @@ public:
void WillSendRequest(blink::WebLocalFrame *frame,
ui::PageTransition transition_type,
const blink::WebURL &url,
- const blink::WebURL &site_for_cookies,
+ const net::SiteForCookies &site_for_cookies,
const url::Origin *initiator_origin,
GURL *new_url,
bool *attach_same_site_cookies) override;
diff --git a/src/core/renderer/print_web_view_helper_delegate_qt.cpp b/src/core/renderer/print_web_view_helper_delegate_qt.cpp
index b85ff7249..beae6ecfa 100644
--- a/src/core/renderer/print_web_view_helper_delegate_qt.cpp
+++ b/src/core/renderer/print_web_view_helper_delegate_qt.cpp
@@ -54,11 +54,6 @@
namespace QtWebEngineCore {
PrintWebViewHelperDelegateQt::~PrintWebViewHelperDelegateQt() {}
-bool PrintWebViewHelperDelegateQt::CancelPrerender(content::RenderFrame *)
-{
- return false;
-}
-
blink::WebElement PrintWebViewHelperDelegateQt::GetPdfElement(blink::WebLocalFrame *frame)
{
GURL url = frame->GetDocument().Url();
diff --git a/src/core/renderer/print_web_view_helper_delegate_qt.h b/src/core/renderer/print_web_view_helper_delegate_qt.h
index f02580b91..2cbc171a6 100644
--- a/src/core/renderer/print_web_view_helper_delegate_qt.h
+++ b/src/core/renderer/print_web_view_helper_delegate_qt.h
@@ -57,8 +57,6 @@ class PrintWebViewHelperDelegateQt : public printing::PrintRenderFrameHelper::De
public:
~PrintWebViewHelperDelegateQt() override;
- bool CancelPrerender(content::RenderFrame *render_frame) override;
-
blink::WebElement GetPdfElement(blink::WebLocalFrame *frame) override;
bool IsPrintPreviewEnabled() override;
diff --git a/src/core/renderer_host/pepper/pepper_isolated_file_system_message_filter.cpp b/src/core/renderer_host/pepper/pepper_isolated_file_system_message_filter.cpp
index 6e9efb5ad..f61c06ea9 100644
--- a/src/core/renderer_host/pepper/pepper_isolated_file_system_message_filter.cpp
+++ b/src/core/renderer_host/pepper/pepper_isolated_file_system_message_filter.cpp
@@ -81,7 +81,7 @@ PepperIsolatedFileSystemMessageFilter::PepperIsolatedFileSystemMessageFilter(int
PepperIsolatedFileSystemMessageFilter::~PepperIsolatedFileSystemMessageFilter()
{}
-scoped_refptr<base::TaskRunner> PepperIsolatedFileSystemMessageFilter::OverrideTaskRunnerForMessage(const IPC::Message &)
+scoped_refptr<base::SequencedTaskRunner> PepperIsolatedFileSystemMessageFilter::OverrideTaskRunnerForMessage(const IPC::Message &)
{
// In order to reach ExtensionSystem, we need to get ProfileManager first.
// ProfileManager lives in UI thread, so we need to do this in UI thread.
diff --git a/src/core/renderer_host/pepper/pepper_isolated_file_system_message_filter.h b/src/core/renderer_host/pepper/pepper_isolated_file_system_message_filter.h
index 750f7cea0..27c23d8e0 100644
--- a/src/core/renderer_host/pepper/pepper_isolated_file_system_message_filter.h
+++ b/src/core/renderer_host/pepper/pepper_isolated_file_system_message_filter.h
@@ -64,7 +64,7 @@ public:
static PepperIsolatedFileSystemMessageFilter *Create(PP_Instance instance, content::BrowserPpapiHost *host);
// ppapi::host::ResourceMessageFilter implementation.
- scoped_refptr<base::TaskRunner> OverrideTaskRunnerForMessage(const IPC::Message &msg) override;
+ scoped_refptr<base::SequencedTaskRunner> OverrideTaskRunnerForMessage(const IPC::Message &msg) override;
int32_t OnResourceMessageReceived(const IPC::Message &msg, ppapi::host::HostMessageContext *context) override;
private:
diff --git a/src/core/resource_bundle_qt.cpp b/src/core/resource_bundle_qt.cpp
index 61b0f3021..22b40a7ba 100644
--- a/src/core/resource_bundle_qt.cpp
+++ b/src/core/resource_bundle_qt.cpp
@@ -58,9 +58,9 @@ namespace ui {
void ResourceBundle::LoadCommonResources()
{
// We repacked the resources we need and installed them. now let chromium mmap that file.
- AddDataPackFromPath(WebEngineLibraryInfo::getPath(QT_RESOURCES_PAK), SCALE_FACTOR_NONE);
AddDataPackFromPath(WebEngineLibraryInfo::getPath(QT_RESOURCES_100P_PAK), SCALE_FACTOR_100P);
AddDataPackFromPath(WebEngineLibraryInfo::getPath(QT_RESOURCES_200P_PAK), SCALE_FACTOR_200P);
+ AddDataPackFromPath(WebEngineLibraryInfo::getPath(QT_RESOURCES_PAK), SCALE_FACTOR_NONE);
AddOptionalDataPackFromPath(WebEngineLibraryInfo::getPath(QT_RESOURCES_DEVTOOLS_PAK), SCALE_FACTOR_NONE);
}
diff --git a/src/core/user_script.cpp b/src/core/user_script.cpp
index 7ccb6e10a..912b204b7 100644
--- a/src/core/user_script.cpp
+++ b/src/core/user_script.cpp
@@ -228,7 +228,7 @@ void UserScript::parseMetadataHeader()
if (line_end == std::string::npos)
line_end = script_text.length() - 1;
- line.set(script_text.data() + line_start, line_end - line_start);
+ line = base::StringPiece(script_text.data() + line_start, line_end - line_start);
if (!in_metadata) {
if (line.starts_with(kUserScriptBegin))
diff --git a/src/core/web_contents_adapter.cpp b/src/core/web_contents_adapter.cpp
index ef482ef08..e3b1c2439 100644
--- a/src/core/web_contents_adapter.cpp
+++ b/src/core/web_contents_adapter.cpp
@@ -66,6 +66,8 @@
#include "base/task/sequence_manager/sequence_manager_impl.h"
#include "base/task/sequence_manager/thread_controller_with_message_pump_impl.h"
#include "base/values.h"
+#include "chrome/browser/tab_contents/form_interaction_tab_helper.h"
+#include "components/performance_manager/embedder/performance_manager_registry.h"
#include "content/browser/renderer_host/render_view_host_impl.h"
#include "content/browser/renderer_host/text_input_manager.h"
#include "content/browser/web_contents/web_contents_impl.h"
@@ -86,9 +88,9 @@
#include "content/public/common/url_constants.h"
#include "content/public/common/web_preferences.h"
#include "extensions/buildflags/buildflags.h"
-#include "third_party/blink/public/common/media/media_player_action.h"
#include "third_party/blink/public/common/page/page_zoom.h"
#include "third_party/blink/public/common/peerconnection/webrtc_ip_handling_policy.h"
+#include "third_party/blink/public/mojom/frame/media_player_action.mojom.h"
#include "printing/buildflags/buildflags.h"
#include "ui/base/clipboard/clipboard.h"
#include "ui/base/clipboard/clipboard_constants.h"
@@ -525,6 +527,9 @@ void WebContentsAdapter::initialize(content::SiteInstance *site)
#if BUILDFLAG(ENABLE_EXTENSIONS)
extensions::ExtensionWebContentsObserverQt::CreateForWebContents(webContents());
#endif
+ FormInteractionTabHelper::CreateForWebContents(webContents());
+ if (auto *performance_manager_registry = performance_manager::PerformanceManagerRegistry::GetInstance())
+ performance_manager_registry->CreatePageNodeForWebContents(webContents());
// Create an instance of WebEngineVisitedLinksManager to catch the first
// content::NOTIFICATION_RENDERER_PROCESS_CREATED event. This event will
@@ -1185,22 +1190,22 @@ void WebContentsAdapter::copyImageAt(const QPoint &location)
m_webContents->GetRenderViewHost()->GetMainFrame()->CopyImageAt(location.x(), location.y());
}
-static blink::MediaPlayerAction::Type toBlinkMediaPlayerActionType(WebContentsAdapter::MediaPlayerAction action)
+static blink::mojom::MediaPlayerActionType toBlinkMediaPlayerActionType(WebContentsAdapter::MediaPlayerAction action)
{
switch (action) {
case WebContentsAdapter::MediaPlayerPlay:
- return blink::MediaPlayerAction::Type::kPlay;
+ return blink::mojom::MediaPlayerActionType::kPlay;
case WebContentsAdapter::MediaPlayerMute:
- return blink::MediaPlayerAction::Type::kMute;
+ return blink::mojom::MediaPlayerActionType::kMute;
case WebContentsAdapter::MediaPlayerLoop:
- return blink::MediaPlayerAction::Type::kLoop;
+ return blink::mojom::MediaPlayerActionType::kLoop;
case WebContentsAdapter::MediaPlayerControls:
- return blink::MediaPlayerAction::Type::kControls;
+ return blink::mojom::MediaPlayerActionType::kControls;
case WebContentsAdapter::MediaPlayerNoAction:
break;
}
NOTREACHED();
- return (blink::MediaPlayerAction::Type)-1;
+ return (blink::mojom::MediaPlayerActionType)-1;
}
void WebContentsAdapter::executeMediaPlayerActionAt(const QPoint &location, MediaPlayerAction action, bool enable)
@@ -1208,7 +1213,7 @@ void WebContentsAdapter::executeMediaPlayerActionAt(const QPoint &location, Medi
CHECK_INITIALIZED();
if (action == MediaPlayerNoAction)
return;
- blink::MediaPlayerAction blinkAction(toBlinkMediaPlayerActionType(action), enable);
+ blink::mojom::MediaPlayerAction blinkAction(toBlinkMediaPlayerActionType(action), enable);
m_webContents->GetRenderViewHost()->GetMainFrame()->ExecuteMediaPlayerActionAtLocation(toGfx(location), blinkAction);
}
@@ -1893,7 +1898,7 @@ WebContentsAdapter::LifecycleState WebContentsAdapter::determineRecommendedState
return LifecycleState::Frozen;
// Form input is not saved.
- if (m_webContents->GetPageImportanceSignals().had_form_interaction)
+ if (FormInteractionTabHelper::FromWebContents(m_webContents.get())->had_form_interaction())
return LifecycleState::Frozen;
// Do not discard PDFs as they might contain entry that is not saved and they
@@ -2001,6 +2006,9 @@ void WebContentsAdapter::discard()
#if BUILDFLAG(ENABLE_EXTENSIONS)
extensions::ExtensionWebContentsObserverQt::CreateForWebContents(webContents());
#endif
+ FormInteractionTabHelper::CreateForWebContents(webContents());
+ if (auto *performance_manager_registry = performance_manager::PerformanceManagerRegistry::GetInstance())
+ performance_manager_registry->CreatePageNodeForWebContents(webContents());
}
void WebContentsAdapter::undiscard()
diff --git a/src/core/web_contents_delegate_qt.cpp b/src/core/web_contents_delegate_qt.cpp
index 7822d7a41..e75a461e2 100644
--- a/src/core/web_contents_delegate_qt.cpp
+++ b/src/core/web_contents_delegate_qt.cpp
@@ -459,7 +459,7 @@ void WebContentsDelegateQt::didFailLoad(const QUrl &url, int errorCode, const QS
EmitLoadFinished(false /* success */ , url, false /* isErrorPage */, errorCode, errorDescription);
}
-void WebContentsDelegateQt::DidFailLoad(content::RenderFrameHost* render_frame_host, const GURL& validated_url, int error_code, const base::string16& error_description)
+void WebContentsDelegateQt::DidFailLoad(content::RenderFrameHost* render_frame_host, const GURL& validated_url, int error_code)
{
if (m_loadingState == LoadingState::Loading)
setLoadingState(LoadingState::Loaded);
@@ -476,7 +476,11 @@ void WebContentsDelegateQt::DidFailLoad(content::RenderFrameHost* render_frame_h
EmitLoadFinished(false /* success */, toQt(validated_url), true /* isErrorPage */);
return;
}
-
+ // Qt6: Consider getting rid of the error_description (Chromium already has)
+ base::string16 error_description;
+ error_description = error_page::LocalizedError::GetErrorDetails(
+ error_code <= 0 ? error_page::Error::kNetErrorDomain : error_page::Error::kHttpErrorDomain,
+ error_code, false, false);
didFailLoad(toQt(validated_url), error_code, toQt(error_description));
}
diff --git a/src/core/web_contents_delegate_qt.h b/src/core/web_contents_delegate_qt.h
index 8a9d8be1b..bce02df4f 100644
--- a/src/core/web_contents_delegate_qt.h
+++ b/src/core/web_contents_delegate_qt.h
@@ -161,7 +161,7 @@ public:
void DidStartLoading() override;
void DidReceiveResponse() override;
void DidStopLoading() override;
- void DidFailLoad(content::RenderFrameHost* render_frame_host, const GURL& validated_url, int error_code, const base::string16& error_description) override;
+ void DidFailLoad(content::RenderFrameHost* render_frame_host, const GURL& validated_url, int error_code) override;
void DidFinishLoad(content::RenderFrameHost *render_frame_host, const GURL &validated_url) override;
void BeforeUnloadFired(bool proceed, const base::TimeTicks& proceed_time) override;
void DidUpdateFaviconURL(const std::vector<content::FaviconURL> &candidates) override;
diff --git a/src/core/web_engine_context.cpp b/src/core/web_engine_context.cpp
index 8c7a4bed4..410ada37a 100644
--- a/src/core/web_engine_context.cpp
+++ b/src/core/web_engine_context.cpp
@@ -750,8 +750,6 @@ WebEngineContext::WebEngineContext()
registerMainThreadFactories();
- SetContentClient(new ContentClientQt);
-
content::ContentMainParams contentMainParams(m_mainDelegate.get());
#if defined(OS_WIN)
contentMainParams.sandbox_info = staticSandboxInterfaceInfo();
diff --git a/src/core/web_event_factory.cpp b/src/core/web_event_factory.cpp
index 5b6c6bd0e..7bc905bbf 100644
--- a/src/core/web_event_factory.cpp
+++ b/src/core/web_event_factory.cpp
@@ -1431,8 +1431,8 @@ static WebPointerProperties::PointerType pointerTypeForTabletEvent(const QTablet
WebMouseEvent WebEventFactory::toWebMouseEvent(QMouseEvent *ev)
{
WebMouseEvent webKitEvent(webEventTypeForEvent(ev),
- WebFloatPoint(ev->x(), ev->y()),
- WebFloatPoint(ev->globalX(), ev->globalY()),
+ gfx::PointF(ev->x(), ev->y()),
+ gfx::PointF(ev->globalX(), ev->globalY()),
mouseButtonForEvent<QMouseEvent>(ev),
0,
modifiersForEvent(ev),
@@ -1462,8 +1462,8 @@ WebMouseEvent WebEventFactory::toWebMouseEvent(QHoverEvent *ev)
WebMouseEvent WebEventFactory::toWebMouseEvent(QTabletEvent *ev)
{
WebMouseEvent webKitEvent(webEventTypeForEvent(ev),
- WebFloatPoint(ev->x(), ev->y()),
- WebFloatPoint(ev->globalX(), ev->globalY()),
+ gfx::PointF(ev->x(), ev->y()),
+ gfx::PointF(ev->globalX(), ev->globalY()),
mouseButtonForEvent<QTabletEvent>(ev),
0,
modifiersForEvent(ev),
@@ -1496,11 +1496,9 @@ WebGestureEvent WebEventFactory::toWebGestureEvent(QNativeGestureEvent *ev)
webKitEvent.SetTimeStamp(base::TimeTicks::Now());
webKitEvent.SetModifiers(modifiersForEvent(ev));
- webKitEvent.SetPositionInWidget(WebFloatPoint(ev->localPos().x(),
- ev->localPos().y()));
+ webKitEvent.SetPositionInWidget(gfx::PointF(ev->localPos().x(), ev->localPos().y()));
- webKitEvent.SetPositionInScreen(WebFloatPoint(ev->screenPos().x(),
- ev->screenPos().y()));
+ webKitEvent.SetPositionInScreen(gfx::PointF(ev->screenPos().x(), ev->screenPos().y()));
webKitEvent.SetSourceDevice(blink::WebGestureDevice::kTouchpad);
@@ -1628,9 +1626,9 @@ bool WebEventFactory::coalesceWebWheelEvent(blink::WebMouseWheelEvent &webEvent,
return true;
}
-static QPointF toQt(blink::WebFloatPoint p)
+static QPointF toQt(gfx::PointF p)
{
- return QPointF(p.x, p.y);
+ return QPointF(p.x(), p.y());
}
void WebEventFactory::sendUnhandledWheelEvent(const blink::WebGestureEvent &event,
diff --git a/src/core/web_event_factory.h b/src/core/web_event_factory.h
index 390502a9d..df2f26694 100644
--- a/src/core/web_event_factory.h
+++ b/src/core/web_event_factory.h
@@ -42,10 +42,10 @@
#include "content/public/browser/native_web_keyboard_event.h"
#ifndef QT_NO_GESTURES
-#include "third_party/blink/public/platform/web_gesture_event.h"
+#include "third_party/blink/public/common/input/web_gesture_event.h"
#endif
-#include "third_party/blink/public/platform/web_mouse_event.h"
-#include "third_party/blink/public/platform/web_mouse_wheel_event.h"
+#include "third_party/blink/public/common/input/web_mouse_event.h"
+#include "third_party/blink/public/common/input/web_mouse_wheel_event.h"
#include <QtGlobal>
diff --git a/tests/auto/core/qwebengineurlrequestinterceptor/tst_qwebengineurlrequestinterceptor.cpp b/tests/auto/core/qwebengineurlrequestinterceptor/tst_qwebengineurlrequestinterceptor.cpp
index d22c897da..20e191a4f 100644
--- a/tests/auto/core/qwebengineurlrequestinterceptor/tst_qwebengineurlrequestinterceptor.cpp
+++ b/tests/auto/core/qwebengineurlrequestinterceptor/tst_qwebengineurlrequestinterceptor.cpp
@@ -760,7 +760,7 @@ void tst_QWebEngineUrlRequestInterceptor::jsServiceWorker()
QTRY_COMPARE(page->messages.count(), 1);
QCOMPARE(page->levels.at(0), QWebEnginePage::InfoMessageLevel);
- QUrl firstPartyUrl = QUrl(server.url().toString() + "sw.js");
+ QUrl firstPartyUrl = QUrl(server.url().toString(QUrl::RemovePort));
QList<RequestInfo> infos;
// Service Worker
QTRY_VERIFY(interceptor.hasUrlRequestForType(QWebEngineUrlRequestInfo::ResourceTypeServiceWorker));
diff --git a/tests/auto/widgets/accessibility/tst_accessibility.cpp b/tests/auto/widgets/accessibility/tst_accessibility.cpp
index 748837c7f..84382d6f1 100644
--- a/tests/auto/widgets/accessibility/tst_accessibility.cpp
+++ b/tests/auto/widgets/accessibility/tst_accessibility.cpp
@@ -361,7 +361,6 @@ void tst_Accessibility::roles_data()
QTest::newRow("ax::mojom::Role::kTextFieldWithComboBox") << QString("<input role='combobox'>") << 1 << QAccessible::ComboBox;
QTest::newRow("ax::mojom::Role::kComplementary") << QString("<aside>a</aside>") << 0 << QAccessible::ComplementaryContent;
QTest::newRow("ax::mojom::Role::kComment") << QString("<div role='comment'></div>") << 0 << QAccessible::Section;
- QTest::newRow("ax::mojom::Role::kCommenSection") << QString("<div role='commentsection'></div>") << 0 << QAccessible::Section;
QTest::newRow("ax::mojom::Role::kContentDeletion") << QString("<div role='deletion'></div>") << 0 << QAccessible::Grouping;
QTest::newRow("ax::mojom::Role::kContentInsertion") << QString("<div role='insertion'></div>") << 0 << QAccessible::Grouping;
QTest::newRow("ax::mojom::Role::kContentInfo") << QString("<div role='contentinfo'></div>") << 0 << QAccessible::Section;
@@ -480,7 +479,6 @@ void tst_Accessibility::roles_data()
QTest::newRow("ax::mojom::Role::kRadioButton") << QString("<input type='radio'></input>") << 1 << QAccessible::RadioButton;
QTest::newRow("ax::mojom::Role::kRadioGroup") << QString("<fieldset role='radiogroup'></fieldset>") << 0 << QAccessible::Grouping;
QTest::newRow("ax::mojom::Role::kRegion") << QString("<div role='region'>a</div>") << 0 << QAccessible::Section;
- QTest::newRow("ax::mojom::Role::kRevision") << QString("<div role='revision'></div>") << 0 << QAccessible::Section;
QTest::newRow("ax::mojom::Role::kRow") << QString("<table role=table><tr><td>a</td></tr></table>") << 1 << QAccessible::Row;
QTest::newRow("ax::mojom::Role::kRowGroup") << QString("<table role=table><tbody role=rowgroup><tr><td>a</td></tr></tbody></table>") << 1 << QAccessible::Section;
QTest::newRow("ax::mojom::Role::kRowHeader") << QString("<table role=table><tr><th>a</td><td>b</td></tr></table>") << 2 << QAccessible::RowHeader;
diff --git a/tests/auto/widgets/origins/tst_origins.cpp b/tests/auto/widgets/origins/tst_origins.cpp
index e3927f763..c24fbede4 100644
--- a/tests/auto/widgets/origins/tst_origins.cpp
+++ b/tests/auto/widgets/origins/tst_origins.cpp
@@ -217,6 +217,7 @@ private Q_SLOTS:
void subdirWithoutAccess();
void mixedSchemes();
void mixedSchemesWithCsp();
+ void mixedXHR_data();
void mixedXHR();
#if defined(WEBSOCKETS)
void webSocket();
@@ -609,43 +610,72 @@ void tst_Origins::mixedSchemesWithCsp()
// Cross-origin XMLHttpRequests can only be made to CORS-enabled schemes. These
// include the builtin schemes http, https, data, and chrome, as well as custom
// schemes with the CorsEnabled flag.
-void tst_Origins::mixedXHR()
+void tst_Origins::mixedXHR_data()
{
- QVERIFY(verifyLoad(QSL("file:" THIS_DIR "resources/mixedXHR.html")));
- eval(QSL("sendXHR('file:" THIS_DIR "resources/mixedXHR.txt')"));
- QTRY_COMPARE(eval(QSL("result")), QVariant(QSL("ok")));
- eval(QSL("sendXHR('qrc:/resources/mixedXHR.txt')"));
- QTRY_COMPARE(eval(QSL("result")), QVariant(QSL("error")));
- eval(QSL("sendXHR('tst:/resources/mixedXHR.txt')"));
- QTRY_COMPARE(eval(QSL("result")), QVariant(QSL("error")));
- eval(QSL("sendXHR('data:,ok')"));
- QTRY_COMPARE(eval(QSL("result")), QVariant(QSL("ok")));
- eval(QSL("sendXHR('cors:/resources/mixedXHR.txt')"));
- QTRY_COMPARE(eval(QSL("result")), QVariant(QSL("ok")));
+ QTest::addColumn<QString>("url");
+ QTest::addColumn<QString>("command");
+ QTest::addColumn<QVariant>("result");
+ QTest::newRow("file->file") << QString("file:" THIS_DIR "resources/mixedXHR.html")
+ << QString("sendXHR('file:" THIS_DIR "resources/mixedXHR.txt')")
+ << QVariant(QString("ok"));
+ QTest::newRow("file->qrc") << QString("file:" THIS_DIR "resources/mixedXHR.html")
+ << QString("sendXHR('qrc:/resources/mixedXHR.txt')")
+ << QVariant(QString("error"));
+ QTest::newRow("file->tst") << QString("file:" THIS_DIR "resources/mixedXHR.html")
+ << QString("sendXHR('tst:/resources/mixedXHR.txt')")
+ << QVariant(QString("error"));
+ QTest::newRow("file->data") << QString("file:" THIS_DIR "resources/mixedXHR.html")
+ << QString("sendXHR('data:,ok')")
+ << QVariant(QString("ok"));
+ QTest::newRow("file->cors") << QString("file:" THIS_DIR "resources/mixedXHR.html")
+ << QString("sendXHR('cors:/resources/mixedXHR.txt')")
+ << QVariant(QString("ok"));
+
+ QTest::newRow("qrc->file") << QString("qrc:/resources/mixedXHR.html")
+ << QString("sendXHR('file:" THIS_DIR "resources/mixedXHR.txt')")
+ << QVariant(QString("ok"));
+ QTest::newRow("qrc->qrc") << QString("qrc:/resources/mixedXHR.html")
+ << QString("sendXHR('qrc:/resources/mixedXHR.txt')")
+ << QVariant(QString("ok"));
+ QTest::newRow("qrc->tst") << QString("qrc:/resources/mixedXHR.html")
+ << QString("sendXHR('tst:/resources/mixedXHR.txt')")
+ << QVariant(QString("error"));
+ QTest::newRow("qrc->data") << QString("qrc:/resources/mixedXHR.html")
+ << QString("sendXHR('data:,ok')")
+ << QVariant(QString("ok"));
+ QTest::newRow("qrc->cors") << QString("qrc:/resources/mixedXHR.html")
+ << QString("sendXHR('cors:/resources/mixedXHR.txt')")
+ << QVariant(QString("ok"));
+
+
+ QTest::newRow("tst->file") << QString("tst:/resources/mixedXHR.html")
+ << QString("sendXHR('file:" THIS_DIR "resources/mixedXHR.txt')")
+ << QVariant(QString("error"));
+ QTest::newRow("tst->qrc") << QString("tst:/resources/mixedXHR.html")
+ << QString("sendXHR('qrc:/resources/mixedXHR.txt')")
+ << QVariant(QString("error"));
+ QTest::newRow("tst->tst") << QString("tst:/resources/mixedXHR.html")
+ << QString("sendXHR('tst:/resources/mixedXHR.txt')")
+ << QVariant(QString("ok"));
+ QTest::newRow("tst->data") << QString("tst:/resources/mixedXHR.html")
+ << QString("sendXHR('data:,ok')")
+ << QVariant(QString("ok"));
+ QTest::newRow("tst->cors") << QString("tst:/resources/mixedXHR.html")
+ << QString("sendXHR('cors:/resources/mixedXHR.txt')")
+ << QVariant(QString("ok"));
- QVERIFY(verifyLoad(QSL("qrc:/resources/mixedXHR.html")));
- eval(QSL("sendXHR('file:" THIS_DIR "resources/mixedXHR.txt')"));
- QTRY_COMPARE(eval(QSL("result")), QVariant(QSL("ok")));
- eval(QSL("sendXHR('qrc:/resources/mixedXHR.txt')"));
- QTRY_COMPARE(eval(QSL("result")), QVariant(QSL("ok")));
- eval(QSL("sendXHR('tst:/resources/mixedXHR.txt')"));
- QTRY_COMPARE(eval(QSL("result")), QVariant(QSL("error")));
- eval(QSL("sendXHR('data:,ok')"));
- QTRY_COMPARE(eval(QSL("result")), QVariant(QSL("ok")));
- eval(QSL("sendXHR('cors:/resources/mixedXHR.txt')"));
- QTRY_COMPARE(eval(QSL("result")), QVariant(QSL("ok")));
+}
- QVERIFY(verifyLoad(QSL("tst:/resources/mixedXHR.html")));
- eval(QSL("sendXHR('file:" THIS_DIR "resources/mixedXHR.txt')"));
- QTRY_COMPARE(eval(QSL("result")), QVariant(QSL("error")));
- eval(QSL("sendXHR('qrc:/resources/mixedXHR.txt')"));
- QTRY_COMPARE(eval(QSL("result")), QVariant(QSL("error")));
- eval(QSL("sendXHR('tst:/resources/mixedXHR.txt')"));
- QTRY_COMPARE(eval(QSL("result")), QVariant(QSL("ok")));
- eval(QSL("sendXHR('data:,ok')"));
- QTRY_COMPARE(eval(QSL("result")), QVariant(QSL("ok")));
- eval(QSL("sendXHR('cors:/resources/mixedXHR.txt')"));
- QTRY_COMPARE(eval(QSL("result")), QVariant(QSL("ok")));
+
+void tst_Origins::mixedXHR()
+{
+ QFETCH(QString, url);
+ QFETCH(QString, command);
+ QFETCH(QVariant, result);
+
+ QVERIFY(verifyLoad(url));
+ eval(command);
+ QTRY_COMPARE(eval(QString("result")), result);
}
#if defined(WEBSOCKETS)
diff --git a/tools/buildscripts/repack_locales.py b/tools/buildscripts/repack_locales.py
index 8f1ae190b..dc4452d94 100755
--- a/tools/buildscripts/repack_locales.py
+++ b/tools/buildscripts/repack_locales.py
@@ -89,6 +89,12 @@ def calc_inputs(locale):
inputs.append(os.path.join(SHARE_INT_DIR, 'components', 'strings',
'components_%s_strings_%s.pak' % (BRANDING, locale)))
+ inputs.append(os.path.join(SHARE_INT_DIR, 'services', 'strings',
+ 'services_strings_%s.pak' % locale))
+
+ inputs.append(os.path.join(SHARE_INT_DIR, 'third_party', 'blink', 'public', 'strings,
+ 'blink_strings_%s.pak' % locale))
+
if OS != 'ios':
#e.g. '<(SHARED_INTERMEDIATE_DIR)/content/app/strings/content_strings_en-US.pak'
inputs.append(os.path.join(SHARE_INT_DIR, 'content', 'app', 'strings',
@@ -107,7 +113,7 @@ def calc_inputs(locale):
inputs.append(os.path.join(SHARE_INT_DIR, 'chrome',
'generated_resources_%s.pak' % locale))
- #e.g. '<(SHARED_INTERMEDIATE_DIR)/chrome/generated_resources_da.pak'
+ #e.g. '<(SHARED_INTERMEDIATE_DIR)/chrome/chromium_strings_da.pak'
inputs.append(os.path.join(SHARE_INT_DIR, 'chrome',
'chromium_strings_%s.pak' % locale))
diff --git a/tools/scripts/take_snapshot.py b/tools/scripts/take_snapshot.py
index 8ec0a898e..6edacaca6 100755
--- a/tools/scripts/take_snapshot.py
+++ b/tools/scripts/take_snapshot.py
@@ -81,6 +81,7 @@ def isInChromiumBlacklist(file_path):
not file_path.startswith('chrome/browser/printing/') and
not file_path.startswith('chrome/browser/renderer_host/') and
not file_path.startswith('chrome/browser/spellchecker') and
+ not file_path.startswith('chrome/browser/tab_contents/') and
not file_path.startswith('chrome/browser/ui/webui/') and
not (file_path.startswith('chrome/browser/resources/') and
not '/chromeos/' in file_path and
diff --git a/tools/scripts/version_resolver.py b/tools/scripts/version_resolver.py
index b3181db10..7bc88de4c 100644
--- a/tools/scripts/version_resolver.py
+++ b/tools/scripts/version_resolver.py
@@ -38,8 +38,8 @@ import json
import urllib2
import git_submodule as GitSubmodule
-chromium_version = '80.0.3987.163'
-chromium_branch = '3987'
+chromium_version = '81.0.4044.152'
+chromium_branch = '4044'
ninja_version = 'v1.8.2'
json_url = 'http://omahaproxy.appspot.com/all.json'