diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-03-04 17:47:21 +0100 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-04-07 10:17:37 +0200 |
commit | 2893bc8f0b6432b9b1c686a93cdca94a36418308 (patch) | |
tree | f3113ca4b73b4f3caab57a4776602fbe0b0d6755 /src/core | |
parent | 98bbdd3330171332c8b73aa5329d24e7780c4661 (diff) |
Adaptations for Chromium 80
Change-Id: Icaf68648cbc2c13a61fc3b208ff1e64ca36c90b6
Reviewed-by: Jüri Valdmann <juri.valdmann@qt.io>
Diffstat (limited to 'src/core')
51 files changed, 367 insertions, 304 deletions
diff --git a/src/core/browser_accessibility_qt.cpp b/src/core/browser_accessibility_qt.cpp index d816678e3..6104fb1f8 100644 --- a/src/core/browser_accessibility_qt.cpp +++ b/src/core/browser_accessibility_qt.cpp @@ -225,15 +225,6 @@ QAccessible::Role BrowserAccessibilityQt::role() const return QAccessible::AlertMessage; case ax::mojom::Role::kAnchor: return QAccessible::Link; - - // REMINDER: annotation roles are removed from Chromium 80: https://chromium-review.googlesource.com/c/chromium/src/+/1907074 - case ax::mojom::Role::kAnnotationAttribution: - case ax::mojom::Role::kAnnotationCommentary: - case ax::mojom::Role::kAnnotationPresence: - case ax::mojom::Role::kAnnotationRevision: - case ax::mojom::Role::kAnnotationSuggestion: - return QAccessible::Section; - case ax::mojom::Role::kApplication: return QAccessible::Document; // returning Application here makes Qt return the top level app object case ax::mojom::Role::kArticle: @@ -258,6 +249,8 @@ QAccessible::Role BrowserAccessibilityQt::role() const return QAccessible::CheckBox; case ax::mojom::Role::kClient: return QAccessible::Client; + case ax::mojom::Role::kCode: + return QAccessible::StaticText; case ax::mojom::Role::kColorWell: return QAccessible::ColorChooser; case ax::mojom::Role::kColumn: @@ -270,6 +263,9 @@ QAccessible::Role BrowserAccessibilityQt::role() const return QAccessible::ComboBox; 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: return QAccessible::Grouping; @@ -348,6 +344,8 @@ QAccessible::Role BrowserAccessibilityQt::role() const return QAccessible::Document; case ax::mojom::Role::kEmbeddedObject: return QAccessible::Grouping; + case ax::mojom::Role::kEmphasis: + return QAccessible::StaticText; case ax::mojom::Role::kFeed: return QAccessible::Section; case ax::mojom::Role::kFigcaption: @@ -466,8 +464,12 @@ 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: + return QAccessible::Section; case ax::mojom::Role::kRowHeader: return QAccessible::RowHeader; case ax::mojom::Role::kRuby: @@ -495,6 +497,10 @@ QAccessible::Role BrowserAccessibilityQt::role() const return QAccessible::StaticText; case ax::mojom::Role::kStatus: return QAccessible::Indicator; + case ax::mojom::Role::kStrong: + return QAccessible::StaticText; + case ax::mojom::Role::kSuggestion: + return QAccessible::Section; case ax::mojom::Role::kSvgRoot: return QAccessible::Graphic; case ax::mojom::Role::kSwitch: diff --git a/src/core/certificate_error_controller.cpp b/src/core/certificate_error_controller.cpp index f3b16357b..353228c2d 100644 --- a/src/core/certificate_error_controller.cpp +++ b/src/core/certificate_error_controller.cpp @@ -68,11 +68,12 @@ ASSERT_ENUMS_MATCH(CertificateErrorController::CertificateNameConstraintViolatio ASSERT_ENUMS_MATCH(CertificateErrorController::CertificateValidityTooLong, net::ERR_CERT_VALIDITY_TOO_LONG) 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::CertificateErrorEnd, net::ERR_CERT_END) void CertificateErrorControllerPrivate::accept(bool accepted) { - callback.Run(accepted ? content::CERTIFICATE_REQUEST_RESULT_TYPE_CONTINUE : content::CERTIFICATE_REQUEST_RESULT_TYPE_DENY); + std::move(callback).Run(accepted ? content::CERTIFICATE_REQUEST_RESULT_TYPE_CONTINUE : content::CERTIFICATE_REQUEST_RESULT_TYPE_DENY); } CertificateErrorControllerPrivate::CertificateErrorControllerPrivate(int cert_error, @@ -81,14 +82,14 @@ CertificateErrorControllerPrivate::CertificateErrorControllerPrivate(int cert_er bool main_frame, bool fatal_error, bool strict_enforcement, - const base::Callback<void(content::CertificateRequestResultType)>& cb + base::OnceCallback<void(content::CertificateRequestResultType)> cb ) : certError(CertificateErrorController::CertificateError(cert_error)) , requestUrl(toQt(request_url)) , resourceType(main_frame ? CertificateErrorController::ResourceTypeMainFrame : CertificateErrorController::ResourceTypeOther) , fatalError(fatal_error) , strictEnforcement(strict_enforcement) - , callback(cb) + , callback(std::move(cb)) { if (auto cert = ssl_info.cert.get()) { validStart = toQt(cert->valid_start()); @@ -158,6 +159,8 @@ QString CertificateErrorController::errorString() const else return getQStringForMessageId(IDS_CERT_ERROR_NOT_YET_VALID_DESCRIPTION); case CertificateAuthorityInvalid: + case CertificateKnownInterceptionBlocked: + case CertificateSymantecLegacy: return getQStringForMessageId(IDS_CERT_ERROR_AUTHORITY_INVALID_DESCRIPTION); case CertificateContainsErrors: return getQStringForMessageId(IDS_CERT_ERROR_CONTAINS_ERRORS_DESCRIPTION); diff --git a/src/core/certificate_error_controller.h b/src/core/certificate_error_controller.h index 7c7db37ef..dc1c3cf54 100644 --- a/src/core/certificate_error_controller.h +++ b/src/core/certificate_error_controller.h @@ -85,7 +85,8 @@ public: CertificateValidityTooLong = -213, CertificateTransparencyRequired = -214, CertificateSymantecLegacy = -215, - CertificateErrorEnd = -217 // not an error, just an enum boundary + CertificateKnownInterceptionBlocked = -217, + CertificateErrorEnd = -218 // not an error, just an enum boundary }; CertificateError error() const; diff --git a/src/core/certificate_error_controller_p.h b/src/core/certificate_error_controller_p.h index ceae99853..b0b0bc658 100644 --- a/src/core/certificate_error_controller_p.h +++ b/src/core/certificate_error_controller_p.h @@ -59,7 +59,7 @@ QT_BEGIN_NAMESPACE class CertificateErrorControllerPrivate { public: - CertificateErrorControllerPrivate(int cert_error, const net::SSLInfo& ssl_info, const GURL& request_url, bool main_frame, bool fatal_error, bool strict_enforcement, const base::Callback<void(content::CertificateRequestResultType)>& callback); + CertificateErrorControllerPrivate(int cert_error, const net::SSLInfo& ssl_info, const GURL& request_url, bool main_frame, bool fatal_error, bool strict_enforcement, base::OnceCallback<void(content::CertificateRequestResultType)> callback); void accept(bool accepted); @@ -70,7 +70,7 @@ public: CertificateErrorController::ResourceType resourceType; bool fatalError; bool strictEnforcement; - const base::Callback<void(content::CertificateRequestResultType)> callback; + base::OnceCallback<void(content::CertificateRequestResultType)> callback; QList<QSslCertificate> certificateChain; }; diff --git a/src/core/content_browser_client_qt.cpp b/src/core/content_browser_client_qt.cpp index d38a5916e..2c5ba36c8 100644 --- a/src/core/content_browser_client_qt.cpp +++ b/src/core/content_browser_client_qt.cpp @@ -54,7 +54,7 @@ #include "components/guest_view/browser/guest_view_base.h" #include "components/navigation_interception/intercept_navigation_throttle.h" #include "components/navigation_interception/navigation_params.h" -#include "components/network_hints/browser/network_hints_message_filter.h" +#include "components/network_hints/browser/simple_network_hints_handler_impl.h" #include "components/spellcheck/spellcheck_buildflags.h" #include "content/browser/renderer_host/render_view_host_delegate.h" #include "content/common/url_schemes.h" @@ -162,7 +162,6 @@ #include "content/public/browser/file_url_loader.h" #include "extensions/browser/extension_message_filter.h" #include "extensions/browser/guest_view/extensions_guest_view_message_filter.h" -#include "extensions/browser/io_thread_extension_message_filter.h" #include "extensions/common/constants.h" #include "common/extensions/extensions_client_qt.h" @@ -194,6 +193,43 @@ QT_BEGIN_NAMESPACE Q_GUI_EXPORT QOpenGLContext *qt_gl_global_share_context(); QT_END_NAMESPACE +// Implement IsHandledProtocol as declared in //url/url_util_qt.h. +namespace url { +bool IsHandledProtocol(base::StringPiece scheme) +{ + static const char *const kProtocolList[] = { + url::kHttpScheme, + url::kHttpsScheme, +#if BUILDFLAG(ENABLE_WEBSOCKETS) + url::kWsScheme, + url::kWssScheme, +#endif // BUILDFLAG(ENABLE_WEBSOCKETS) + url::kFileScheme, + content::kChromeDevToolsScheme, +#if BUILDFLAG(ENABLE_EXTENSIONS) + extensions::kExtensionScheme, +#endif + content::kChromeUIScheme, + url::kDataScheme, + url::kAboutScheme, +#if !BUILDFLAG(DISABLE_FTP_SUPPORT) + url::kFtpScheme, +#endif // !BUILDFLAG(DISABLE_FTP_SUPPORT) + url::kBlobScheme, + url::kFileSystemScheme, + url::kQrcScheme, + }; + + for (const char *protocol : kProtocolList) { + if (scheme == protocol) + return true; + } + if (const auto cs = url::CustomScheme::FindScheme(scheme)) + return true; + return false; +} +} + namespace QtWebEngineCore { class QtShareGLContext : public gl::GLContext { @@ -301,8 +337,6 @@ void ContentBrowserClientQt::RenderProcessWillLaunch(content::RenderProcessHost const int id = host->GetID(); Profile *profile = Profile::FromBrowserContext(host->GetBrowserContext()); - host->AddFilter(new network_hints::NetworkHintsMessageFilter(id)); - // Allow requesting custom schemes. const auto policy = content::ChildProcessSecurityPolicy::GetInstance(); const auto profileAdapter = static_cast<ProfileQt *>(profile)->profileAdapter(); @@ -318,7 +352,6 @@ void ContentBrowserClientQt::RenderProcessWillLaunch(content::RenderProcessHost #endif #if BUILDFLAG(ENABLE_EXTENSIONS) host->AddFilter(new extensions::ExtensionMessageFilter(id, profile)); - host->AddFilter(new extensions::IOThreadExtensionMessageFilter()); host->AddFilter(new extensions::ExtensionsGuestViewMessageFilter(id, profile)); #endif //ENABLE_EXTENSIONS @@ -363,7 +396,7 @@ void ContentBrowserClientQt::GetQuotaSettings(content::BrowserContext* context, base::OnceCallback<void(base::Optional<storage::QuotaSettings>)> callback) { storage::GetNominalDynamicSettings(partition->GetPath(), context->IsOffTheRecord(), - storage::GetDefaultDiskInfoHelper(), std::move(callback)); + storage::GetDefaultDeviceInfoHelper(), std::move(callback)); } // Copied from chrome/browser/ssl/ssl_error_handler.cc: @@ -398,7 +431,7 @@ void ContentBrowserClientQt::AllowCertificateError(content::WebContents *webCont const GURL &request_url, bool is_main_frame_request, bool strict_enforcement, - const base::Callback<void(content::CertificateRequestResultType)> &callback) + base::OnceCallback<void(content::CertificateRequestResultType)> callback) { WebContentsDelegateQt* contentsDelegate = static_cast<WebContentsDelegateQt*>(webContents->GetDelegate()); @@ -411,7 +444,7 @@ void ContentBrowserClientQt::AllowCertificateError(content::WebContents *webCont is_main_frame_request, IsCertErrorFatal(cert_error), strict_enforcement, - callback))); + std::move(callback)))); contentsDelegate->allowCertificateError(errorController); } @@ -435,12 +468,12 @@ base::OnceClosure ContentBrowserClientQt::SelectClientCertificate(content::WebCo return base::OnceClosure(); } -std::unique_ptr<net::ClientCertStore> ContentBrowserClientQt::CreateClientCertStore(content::ResourceContext *resource_context) +std::unique_ptr<net::ClientCertStore> ContentBrowserClientQt::CreateClientCertStore(content::BrowserContext *browser_context) { - if (!resource_context) + if (!browser_context) return nullptr; - return ProfileIODataQt::FromResourceContext(resource_context)->CreateClientCertStore(); + return ProfileIODataQt::FromBrowserContext(browser_context)->CreateClientCertStore(); } std::string ContentBrowserClientQt::GetApplicationLocale() @@ -490,7 +523,7 @@ void ContentBrowserClientQt::GetAdditionalAllowedSchemesForFileSystem(std::vecto void ContentBrowserClientQt::GetAdditionalMappedFilesForChildProcess(const base::CommandLine& command_line, int child_process_id, content::PosixFileDescriptorInfo* mappings) { const std::string &locale = GetApplicationLocale(); - const base::FilePath &locale_file_path = ui::ResourceBundle::GetSharedInstance().GetLocaleFilePath(locale, true); + const base::FilePath &locale_file_path = ui::ResourceBundle::GetSharedInstance().GetLocaleFilePath(locale); if (locale_file_path.empty()) return; @@ -599,6 +632,20 @@ void ContentBrowserClientQt::BindHostReceiverForRenderer(content::RenderProcessH #endif // BUILDFLAG(ENABLE_SPELLCHECK) } +static void BindNetworkHintsHandler(content::RenderFrameHost *frame_host, + mojo::PendingReceiver<network_hints::mojom::NetworkHintsHandler> receiver) +{ + network_hints::SimpleNetworkHintsHandlerImpl::Create(frame_host, std::move(receiver)); +} + +void ContentBrowserClientQt::RegisterBrowserInterfaceBindersForFrame( + content::RenderFrameHost *render_frame_host, + service_manager::BinderMapWithContext<content::RenderFrameHost *> *map) +{ + Q_UNUSED(render_frame_host); + map->Add<network_hints::mojom::NetworkHintsHandler>(base::BindRepeating(&BindNetworkHintsHandler)); +} + void ContentBrowserClientQt::RunServiceInstance(const service_manager::Identity &identity, mojo::PendingReceiver<service_manager::mojom::Service> *receiver) { @@ -616,8 +663,6 @@ base::Optional<service_manager::Manifest> ContentBrowserClientQt::GetServiceMani { if (name == content::mojom::kBrowserServiceName) return GetQtWebEngineContentBrowserOverlayManifest(); - else if (name == content::mojom::kRendererServiceName) - return GetQtWebEngineContentRendererOverlayManifest(); return base::nullopt; } @@ -763,11 +808,11 @@ bool ContentBrowserClientQt::AllowWorkerIndexedDB(const GURL &url, } static void LaunchURL(const GURL& url, - const content::WebContents::Getter& web_contents_getter, + base::OnceCallback<content::WebContents*()> web_contents_getter, ui::PageTransition page_transition, bool is_main_frame, bool has_user_gesture) { Q_ASSERT(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); - content::WebContents* webContents = web_contents_getter.Run(); + content::WebContents* webContents = std::move(web_contents_getter).Run(); if (!webContents) return; @@ -783,26 +828,26 @@ static void LaunchURL(const GURL& url, } -bool ContentBrowserClientQt::HandleExternalProtocol( - const GURL &url, - content::WebContents::Getter web_contents_getter, +bool ContentBrowserClientQt::HandleExternalProtocol(const GURL &url, + base::OnceCallback<content::WebContents*()> web_contents_getter, int child_id, content::NavigationUIData *navigation_data, bool is_main_frame, ui::PageTransition page_transition, bool has_user_gesture, const base::Optional<url::Origin> &initiating_origin, - network::mojom::URLLoaderFactoryPtr *out_factory) + mojo::PendingRemote<network::mojom::URLLoaderFactory> *out_factory) { // Q_ASSERT(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO)); Q_UNUSED(child_id); Q_UNUSED(navigation_data); + Q_UNUSED(initiating_origin); Q_UNUSED(out_factory); base::PostTask(FROM_HERE, {content::BrowserThread::UI}, base::BindOnce(&LaunchURL, url, - web_contents_getter, + std::move(web_contents_getter), page_transition, is_main_frame, has_user_gesture)); @@ -826,7 +871,8 @@ public: } void WillRedirectRequest(net::RedirectInfo *redirect_info, - const network::ResourceResponseHead &response_head, bool *defer, + const network::mojom::URLResponseHead &response_head, + bool *defer, std::vector<std::string> *to_be_removed_headers, net::HttpRequestHeaders *modified_headers) override { @@ -921,34 +967,7 @@ std::vector<std::unique_ptr<content::NavigationThrottle>> ContentBrowserClientQt bool ContentBrowserClientQt::IsHandledURL(const GURL &url) { - static const char *const kProtocolList[] = { - url::kFileScheme, - content::kChromeDevToolsScheme, -#if BUILDFLAG(ENABLE_EXTENSIONS) - extensions::kExtensionScheme, -#endif - content::kChromeUIScheme, - url::kDataScheme, - url::kAboutScheme, -#if !BUILDFLAG(DISABLE_FTP_SUPPORT) - url::kFtpScheme, -#endif // !BUILDFLAG(DISABLE_FTP_SUPPORT) - url::kBlobScheme, - url::kFileSystemScheme, - url::kQrcScheme, - }; - - // We don't check url.IsCustom() here because we don't - // know if the registered protocol is installed in the - // profile that will be used to load the URL. - - const std::string scheme = url.scheme(); - - for (const char *protocol : kProtocolList) { - if (scheme == protocol) - return true; - } - return net::URLRequest::IsHandledProtocol(scheme); + return url::IsHandledProtocol(url.scheme()); } std::unique_ptr<content::LoginDelegate> ContentBrowserClientQt::CreateLoginDelegate( @@ -1000,8 +1019,10 @@ bool ContentBrowserClientQt::ShouldUseSpareRenderProcessHost(content::BrowserCon return ContentBrowserClient::ShouldUseSpareRenderProcessHost(browser_context, site_url); } -bool ContentBrowserClientQt::ShouldTreatURLSchemeAsFirstPartyWhenTopLevel(base::StringPiece scheme) +bool ContentBrowserClientQt::ShouldTreatURLSchemeAsFirstPartyWhenTopLevel(base::StringPiece scheme, bool is_embedded_origin_secure) { + if (is_embedded_origin_secure && scheme == content::kChromeUIScheme) + return true; #if BUILDFLAG(ENABLE_EXTENSIONS) return scheme == extensions::kExtensionScheme; #else @@ -1185,9 +1206,11 @@ bool ContentBrowserClientQt::WillCreateURLLoaderFactory( int render_process_id, URLLoaderFactoryType type, const url::Origin &request_initiator, + base::Optional<int64_t> navigation_id, mojo::PendingReceiver<network::mojom::URLLoaderFactory> *factory_receiver, mojo::PendingRemote<network::mojom::TrustedURLLoaderHeaderClient> *header_client, - bool *bypass_redirect_checks) + bool *bypass_redirect_checks, + network::mojom::URLLoaderFactoryOverridePtr *factory_override) { if (!base::FeatureList::IsEnabled(network::features::kNetworkService)) return false; diff --git a/src/core/content_browser_client_qt.h b/src/core/content_browser_client_qt.h index d828d44b6..341564574 100644 --- a/src/core/content_browser_client_qt.h +++ b/src/core/content_browser_client_qt.h @@ -98,12 +98,12 @@ public: const GURL &request_url, bool is_main_frame_request, bool strict_enforcement, - const base::Callback<void(content::CertificateRequestResultType)> &callback) override; + base::OnceCallback<void(content::CertificateRequestResultType)> callback) override; base::OnceClosure SelectClientCertificate(content::WebContents* web_contents, net::SSLCertRequestInfo* cert_request_info, net::ClientCertIdentityList client_certs, std::unique_ptr<content::ClientCertificateDelegate> delegate) override; - std::unique_ptr<net::ClientCertStore> CreateClientCertStore(content::ResourceContext *resource_context) override; + std::unique_ptr<net::ClientCertStore> CreateClientCertStore(content::BrowserContext *browser_context) override; content::DevToolsManagerDelegate *GetDevToolsManagerDelegate() override; content::PlatformNotificationService * GetPlatformNotificationService(content::BrowserContext *browser_context) override; @@ -120,6 +120,8 @@ public: mojo::ScopedMessagePipeHandle interface_pipe) override; void BindHostReceiverForRenderer(content::RenderProcessHost *render_process_host, mojo::GenericPendingReceiver receiver) override; + void RegisterBrowserInterfaceBindersForFrame(content::RenderFrameHost *render_frame_host, + service_manager::BinderMapWithContext<content::RenderFrameHost *> *map) override; void RunServiceInstance(const service_manager::Identity &identity, mojo::PendingReceiver<service_manager::mojom::Service> *receiver) override; @@ -186,7 +188,8 @@ public: bool DoesSiteRequireDedicatedProcess(content::BrowserContext *browser_context, const GURL &effective_site_url) override; bool ShouldUseSpareRenderProcessHost(content::BrowserContext *browser_context, const GURL& site_url) override; - bool ShouldTreatURLSchemeAsFirstPartyWhenTopLevel(base::StringPiece scheme) override; + bool ShouldTreatURLSchemeAsFirstPartyWhenTopLevel(base::StringPiece scheme, + bool is_embedded_origin_secure) override; #if defined(Q_OS_LINUX) void GetAdditionalMappedFilesForChildProcess(const base::CommandLine& command_line, int child_process_id, content::PosixFileDescriptorInfo* mappings) override; @@ -208,14 +211,14 @@ public: bool HandleExternalProtocol( const GURL &url, - base::Callback<content::WebContents*(void)> web_contents_getter, + base::OnceCallback<content::WebContents*()> web_contents_getter, int child_id, content::NavigationUIData *navigation_data, bool is_main_frame, ui::PageTransition page_transition, bool has_user_gesture, const base::Optional<url::Origin> &initiating_origin, - network::mojom::URLLoaderFactoryPtr *out_factory) override; + mojo::PendingRemote<network::mojom::URLLoaderFactory> *out_factory) override; std::vector<std::unique_ptr<blink::URLLoaderThrottle>> CreateURLLoaderThrottles( const network::ResourceRequest &request, content::BrowserContext *browser_context, @@ -232,9 +235,11 @@ public: int render_process_id, URLLoaderFactoryType type, const url::Origin &request_initiator, + base::Optional<int64_t> navigation_id, mojo::PendingReceiver<network::mojom::URLLoaderFactory> *factory_receiver, mojo::PendingRemote<network::mojom::TrustedURLLoaderHeaderClient> *header_client, - bool *bypass_redirect_checks) override; + bool *bypass_redirect_checks, + network::mojom::URLLoaderFactoryOverridePtr *factory_override) override; scoped_refptr<network::SharedURLLoaderFactory> GetSystemSharedURLLoaderFactory() override; network::mojom::NetworkContext *GetSystemNetworkContext() override; void OnNetworkServiceCreated(network::mojom::NetworkService *network_service) override; diff --git a/src/core/content_client_qt.cpp b/src/core/content_client_qt.cpp index 6f8fc04f9..1ab7e5d8e 100644 --- a/src/core/content_client_qt.cpp +++ b/src/core/content_client_qt.cpp @@ -347,8 +347,8 @@ static bool IsWidevineAvailable(base::FilePath *cdm_path, // Add the supported encryption schemes as if they came from the // component manifest. This list must match the CDM that is being // bundled with Chrome. - capability->encryption_schemes.insert(media::EncryptionMode::kCenc); - capability->encryption_schemes.insert(media::EncryptionMode::kCbcs); + capability->encryption_schemes.insert(media::EncryptionScheme::kCenc); + capability->encryption_schemes.insert(media::EncryptionScheme::kCbcs); // Temporary session is always supported. capability->session_types.insert(media::CdmSessionType::kTemporary); @@ -391,7 +391,7 @@ void ContentClientQt::AddContentDecryptionModules(std::vector<content::CdmInfo> // Supported codecs are hard-coded in ExternalClearKeyProperties. content::CdmCapability capability( - {}, {media::EncryptionMode::kCenc, media::EncryptionMode::kCbcs}, + {}, {media::EncryptionScheme::kCenc, media::EncryptionScheme::kCbcs}, {media::CdmSessionType::kTemporary, media::CdmSessionType::kPersistentLicense}, {}); diff --git a/src/core/content_main_delegate_qt.cpp b/src/core/content_main_delegate_qt.cpp index ff6bf4366..708d175f3 100644 --- a/src/core/content_main_delegate_qt.cpp +++ b/src/core/content_main_delegate_qt.cpp @@ -107,7 +107,7 @@ struct LazyDirectoryListerCacher dict.SetString("textdirection", base::i18n::IsRTL() ? "rtl" : "ltr"); std::string html = webui::GetI18nTemplateHtml( - ui::ResourceBundle::GetSharedInstance().DecompressDataResource(IDR_DIR_HEADER_HTML), + ui::ResourceBundle::GetSharedInstance().LoadDataResourceString(IDR_DIR_HEADER_HTML), &dict); html_data = base::RefCountedString::TakeString(&html); } diff --git a/src/core/core_chromium.pri b/src/core/core_chromium.pri index ac118101a..6a8b8c4bd 100644 --- a/src/core/core_chromium.pri +++ b/src/core/core_chromium.pri @@ -118,7 +118,6 @@ SOURCES = \ renderer/render_view_observer_qt.cpp \ renderer/render_thread_observer_qt.cpp \ renderer/user_resource_controller.cpp \ - renderer/plugins/loadable_plugin_placeholder_qt.cpp \ renderer/plugins/plugin_placeholder_qt.cpp \ renderer_host/render_view_observer_host_qt.cpp \ renderer_host/user_resource_controller_host.cpp \ @@ -231,7 +230,6 @@ HEADERS = \ renderer/render_view_observer_qt.h \ renderer/render_thread_observer_qt.h \ renderer/user_resource_controller.h \ - renderer/plugins/loadable_plugin_placeholder_qt.h \ renderer/plugins/plugin_placeholder_qt.h \ renderer_host/render_view_observer_host_qt.h \ renderer_host/user_resource_controller_host.h \ @@ -269,14 +267,16 @@ qtConfig(webengine-pepper-plugins) { renderer_host/pepper/pepper_host_factory_qt.cpp \ renderer_host/pepper/pepper_isolated_file_system_message_filter.cpp \ renderer/pepper/pepper_flash_renderer_host_qt.cpp \ - renderer/pepper/pepper_renderer_host_factory_qt.cpp + renderer/pepper/pepper_renderer_host_factory_qt.cpp \ + renderer/plugins/loadable_plugin_placeholder_qt.cpp HEADERS += \ renderer_host/pepper/pepper_flash_browser_host_qt.h \ renderer_host/pepper/pepper_host_factory_qt.h \ renderer_host/pepper/pepper_isolated_file_system_message_filter.h \ renderer/pepper/pepper_flash_renderer_host_qt.h \ - renderer/pepper/pepper_renderer_host_factory_qt.h + renderer/pepper/pepper_renderer_host_factory_qt.h \ + renderer/plugins/loadable_plugin_placeholder_qt.h } qtConfig(webengine-printing-and-pdf) { diff --git a/src/core/download_manager_delegate_qt.cpp b/src/core/download_manager_delegate_qt.cpp index fe7f7c57b..ebf498fdf 100644 --- a/src/core/download_manager_delegate_qt.cpp +++ b/src/core/download_manager_delegate_qt.cpp @@ -241,7 +241,7 @@ void DownloadManagerDelegateQt::ChooseSavePath(content::WebContents *web_content const base::FilePath &suggested_path, const base::FilePath::StringType &default_extension, bool can_save_as_complete, - const content::SavePackagePathPickedCallback &callback) + content::SavePackagePathPickedCallback callback) { Q_UNUSED(default_extension); Q_UNUSED(can_save_as_complete); @@ -308,29 +308,9 @@ void DownloadManagerDelegateQt::ChooseSavePath(content::WebContents *web_content if (!info.accepted) return; - callback.Run(toFilePath(info.path), static_cast<content::SavePageType>(info.savePageFormat), - base::Bind(&DownloadManagerDelegateQt::savePackageDownloadCreated, - m_weakPtrFactory.GetWeakPtr())); -} - -bool DownloadManagerDelegateQt::IsMostRecentDownloadItemAtFilePath(download::DownloadItem *download) -{ - content::BrowserContext *context = content::DownloadItemUtils::GetBrowserContext(download); - std::vector<download::DownloadItem*> all_downloads; - - content::DownloadManager* manager = - content::BrowserContext::GetDownloadManager(context); - if (manager) - manager->GetAllDownloads(&all_downloads); - - for (const auto* item : all_downloads) { - if (item->GetGuid() == download->GetGuid() || - item->GetTargetFilePath() != download->GetTargetFilePath()) - continue; - if (item->GetState() == download::DownloadItem::IN_PROGRESS) - return false; - } - return true; + std::move(callback).Run(toFilePath(info.path), static_cast<content::SavePageType>(info.savePageFormat), + base::Bind(&DownloadManagerDelegateQt::savePackageDownloadCreated, + m_weakPtrFactory.GetWeakPtr())); } void DownloadManagerDelegateQt::savePackageDownloadCreated(download::DownloadItem *item) diff --git a/src/core/download_manager_delegate_qt.h b/src/core/download_manager_delegate_qt.h index 4634790cc..0cdbd6ee3 100644 --- a/src/core/download_manager_delegate_qt.h +++ b/src/core/download_manager_delegate_qt.h @@ -82,9 +82,7 @@ public: const base::FilePath &suggested_path, const base::FilePath::StringType &default_extension, bool can_save_as_complete, - const content::SavePackagePathPickedCallback &callback) override; - bool IsMostRecentDownloadItemAtFilePath(download::DownloadItem* download) override; - + content::SavePackagePathPickedCallback callback) override; void cancelDownload(quint32 downloadId); void pauseDownload(quint32 downloadId); diff --git a/src/core/extensions/extensions_browser_client_qt.cpp b/src/core/extensions/extensions_browser_client_qt.cpp index a91127192..8b5da3d60 100644 --- a/src/core/extensions/extensions_browser_client_qt.cpp +++ b/src/core/extensions/extensions_browser_client_qt.cpp @@ -63,13 +63,13 @@ #include "extensions/browser/event_router.h" #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 "net/url_request/url_request_simple_job.h" #include "services/network/public/cpp/resource_response.h" #include "services/network/public/mojom/url_loader.mojom.h" #include "third_party/zlib/google/compression_utils.h" @@ -144,9 +144,11 @@ scoped_refptr<base::RefCountedMemory> GetResource(int resource_id, const std::st class ResourceBundleFileLoader : public network::mojom::URLLoader { public: - static void CreateAndStart(const network::ResourceRequest &request, network::mojom::URLLoaderRequest loader, - network::mojom::URLLoaderClientPtrInfo client_info, const base::FilePath &filename, - int resource_id, const std::string &content_security_policy, bool send_cors_header) + static void CreateAndStart(const network::ResourceRequest &request, + mojo::PendingReceiver<network::mojom::URLLoader> loader, + mojo::PendingRemote<network::mojom::URLLoaderClient> client_info, + const base::FilePath &filename, int resource_id, + const std::string &content_security_policy, bool send_cors_header) { // Owns itself. Will live as long as its URLLoader and URLLoaderClientPtr // bindings are alive - essentially until either the client gives up or all @@ -174,10 +176,12 @@ private: } ~ResourceBundleFileLoader() override = default; - void Start(const network::ResourceRequest &request, network::mojom::URLLoaderRequest loader, - network::mojom::URLLoaderClientPtrInfo client_info, const base::FilePath &filename, int resource_id) + void Start(const network::ResourceRequest &request, + mojo::PendingReceiver<network::mojom::URLLoader> loader, + mojo::PendingRemote<network::mojom::URLLoaderClient> client_info_remote, + const base::FilePath &filename, int resource_id) { - client_.Bind(std::move(client_info)); + client_.Bind(std::move(client_info_remote)); binding_.Bind(std::move(loader)); binding_.set_connection_error_handler( base::BindOnce(&ResourceBundleFileLoader::OnBindingError, base::Unretained(this))); @@ -364,14 +368,14 @@ base::FilePath ExtensionsBrowserClientQt::GetBundleResourcePath(const network::R // Creates and starts a URLLoader to load an extension resource from the // embedder's resource bundle (.pak) files. Used for component extensions. void ExtensionsBrowserClientQt::LoadResourceFromResourceBundle(const network::ResourceRequest &request, - network::mojom::URLLoaderRequest loader, + mojo::PendingReceiver<network::mojom::URLLoader> loader, const base::FilePath &resource_relative_path, int resource_id, const std::string &content_security_policy, - network::mojom::URLLoaderClientPtr client, + mojo::PendingRemote<network::mojom::URLLoaderClient> client, bool send_cors_header) { - ResourceBundleFileLoader::CreateAndStart(request, std::move(loader), client.PassInterface(), resource_relative_path, + ResourceBundleFileLoader::CreateAndStart(request, std::move(loader), std::move(client), resource_relative_path, resource_id, content_security_policy, send_cors_header); } @@ -460,6 +464,18 @@ void ExtensionsBrowserClientQt::RegisterExtensionInterfaces(service_manager::Bin RegisterInterfacesForExtension(registry, render_frame_host, extension); } +void ExtensionsBrowserClientQt::RegisterBrowserInterfaceBindersForFrame( + service_manager::BinderMapWithContext<content::RenderFrameHost*> *binder_map, + content::RenderFrameHost* render_frame_host, + const Extension* extension) const +{ + PopulateExtensionFrameBinders(binder_map, render_frame_host, extension); + + // FIXME Do we need something from here? + // PopulateChromeFrameBindersForExtension(binder_map, render_frame_host, + // extension); +} + std::unique_ptr<RuntimeAPIDelegate> ExtensionsBrowserClientQt::CreateRuntimeAPIDelegate(content::BrowserContext *context) const { // TODO(extensions): Implement to support Apps. diff --git a/src/core/extensions/extensions_browser_client_qt.h b/src/core/extensions/extensions_browser_client_qt.h index 1a90bae95..97da83240 100644 --- a/src/core/extensions/extensions_browser_client_qt.h +++ b/src/core/extensions/extensions_browser_client_qt.h @@ -91,7 +91,8 @@ public: bool IsRunningInForcedAppMode() override; bool IsLoggedInAsPublicAccount() override; ExtensionSystemProvider *GetExtensionSystemFactory() override; -// void RegisterExtensionFunctions(ExtensionFunctionRegistry *registry) const; + 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, @@ -122,11 +123,11 @@ public: // Creates and starts a URLLoader to load an extension resource from the // embedder's resource bundle (.pak) files. Used for component extensions. void LoadResourceFromResourceBundle(const network::ResourceRequest &request, - network::mojom::URLLoaderRequest loader, + mojo::PendingReceiver<network::mojom::URLLoader> loader, const base::FilePath &resource_relative_path, int resource_id, const std::string &content_security_policy, - network::mojom::URLLoaderClientPtr client, + mojo::PendingRemote<network::mojom::URLLoaderClient> client, bool send_cors_header) override; // Returns the locale used by the application. diff --git a/src/core/favicon_manager.cpp b/src/core/favicon_manager.cpp index a06da6769..412aab90d 100644 --- a/src/core/favicon_manager.cpp +++ b/src/core/favicon_manager.cpp @@ -96,6 +96,7 @@ int FaviconManager::downloadIcon(const QUrl &url) id = m_webContents->DownloadImage( toGurl(url), true, // is_favicon + 0, // preferred_size maxSize, false, // normal cache policy base::Bind(&FaviconManager::iconDownloadFinished, m_weakFactory->GetWeakPtr())); diff --git a/src/core/net/custom_url_loader_factory.cpp b/src/core/net/custom_url_loader_factory.cpp index a96b35696..e5f580536 100644 --- a/src/core/net/custom_url_loader_factory.cpp +++ b/src/core/net/custom_url_loader_factory.cpp @@ -441,12 +441,12 @@ public: ~CustomURLLoaderFactory() override = default; // network::mojom::URLLoaderFactory: - void CreateLoaderAndStart(network::mojom::URLLoaderRequest loader, + void CreateLoaderAndStart(mojo::PendingReceiver<network::mojom::URLLoader> loader, int32_t routing_id, int32_t request_id, uint32_t options, const network::ResourceRequest &request, - network::mojom::URLLoaderClientPtr client, + mojo::PendingRemote<network::mojom::URLLoaderClient> client, const net::MutableNetworkTrafficAnnotationTag &traffic_annotation) override { DCHECK_CURRENTLY_ON(content::BrowserThread::UI); @@ -457,7 +457,7 @@ public: m_taskRunner->PostTask(FROM_HERE, base::BindOnce(&CustomURLLoader::CreateAndStart, request, - std::move(loader), client.PassInterface(), + std::move(loader), std::move(client), m_profileAdapter)); } diff --git a/src/core/net/plugin_response_interceptor_url_loader_throttle.cpp b/src/core/net/plugin_response_interceptor_url_loader_throttle.cpp index 2b6158f4a..d854a556c 100644 --- a/src/core/net/plugin_response_interceptor_url_loader_throttle.cpp +++ b/src/core/net/plugin_response_interceptor_url_loader_throttle.cpp @@ -104,7 +104,7 @@ PluginResponseInterceptorURLLoaderThrottle::PluginResponseInterceptorURLLoaderTh {} void PluginResponseInterceptorURLLoaderThrottle::WillProcessResponse(const GURL &response_url, - network::ResourceResponseHead *response_head, + network::mojom::URLResponseHead *response_head, bool *defer) { Q_UNUSED(defer); diff --git a/src/core/net/plugin_response_interceptor_url_loader_throttle.h b/src/core/net/plugin_response_interceptor_url_loader_throttle.h index 1fc9e654f..7b9db6490 100644 --- a/src/core/net/plugin_response_interceptor_url_loader_throttle.h +++ b/src/core/net/plugin_response_interceptor_url_loader_throttle.h @@ -61,7 +61,7 @@ public: private: // content::URLLoaderThrottle overrides; - void WillProcessResponse(const GURL &response_url, network::ResourceResponseHead *response_head, bool *defer) override; + void WillProcessResponse(const GURL &response_url, network::mojom::URLResponseHead *response_head, bool *defer) override; content::ResourceContext *m_resource_context = nullptr; content::BrowserContext *m_browser_context = nullptr; diff --git a/src/core/net/proxying_url_loader_factory_qt.cpp b/src/core/net/proxying_url_loader_factory_qt.cpp index 4931bb3e3..71f710737 100644 --- a/src/core/net/proxying_url_loader_factory_qt.cpp +++ b/src/core/net/proxying_url_loader_factory_qt.cpp @@ -97,8 +97,9 @@ public: const network::ResourceRequest &request, const net::MutableNetworkTrafficAnnotationTag &traffic_annotation, ProfileIODataQt *profileData, - network::mojom::URLLoaderRequest loader_request, network::mojom::URLLoaderClientPtr client, - network::mojom::URLLoaderFactoryPtr target_factory); + mojo::PendingReceiver<network::mojom::URLLoader> loader, + mojo::PendingRemote<network::mojom::URLLoaderClient> client, + mojo::PendingRemote<network::mojom::URLLoaderFactory> target_factory); ~InterceptedRequest() override; void Start(); @@ -158,12 +159,12 @@ private: QWebEngineUrlRequestInfo m_requestInfo; ProfileIODataQt *m_profileData; - mojo::Binding<network::mojom::URLLoader> proxied_loader_binding_; - network::mojom::URLLoaderClientPtr target_client_; + mojo::Receiver<network::mojom::URLLoader> proxied_loader_receiver_; + mojo::Remote<network::mojom::URLLoaderClient> target_client_; - mojo::Binding<network::mojom::URLLoaderClient> proxied_client_binding_; - network::mojom::URLLoaderPtr target_loader_; - network::mojom::URLLoaderFactoryPtr target_factory_; + mojo::Receiver<network::mojom::URLLoaderClient> proxied_client_receiver_{this}; + mojo::Remote<network::mojom::URLLoader> target_loader_; + mojo::Remote<network::mojom::URLLoaderFactory> target_factory_; base::WeakPtrFactory<InterceptedRequest> m_weakFactory; base::WeakPtr<InterceptedRequest> m_weakPtr; @@ -174,9 +175,9 @@ InterceptedRequest::InterceptedRequest(int process_id, uint64_t request_id, int3 const network::ResourceRequest &request, const net::MutableNetworkTrafficAnnotationTag &traffic_annotation, ProfileIODataQt *profileData, - network::mojom::URLLoaderRequest loader_request, - network::mojom::URLLoaderClientPtr client, - network::mojom::URLLoaderFactoryPtr target_factory) + mojo::PendingReceiver<network::mojom::URLLoader> loader_receiver, + mojo::PendingRemote<network::mojom::URLLoaderClient> client, + mojo::PendingRemote<network::mojom::URLLoaderFactory> target_factory) : process_id_(process_id) , request_id_(request_id) , routing_id_(routing_id) @@ -184,18 +185,17 @@ InterceptedRequest::InterceptedRequest(int process_id, uint64_t request_id, int3 , request_(request) , traffic_annotation_(traffic_annotation) , m_profileData(profileData) - , proxied_loader_binding_(this, std::move(loader_request)) + , proxied_loader_receiver_(this, std::move(loader_receiver)) , target_client_(std::move(client)) - , proxied_client_binding_(this) , target_factory_(std::move(target_factory)) , m_weakFactory(this) , m_weakPtr(m_weakFactory.GetWeakPtr()) { // If there is a client error, clean up the request. - target_client_.set_connection_error_handler( - base::BindOnce(&InterceptedRequest::OnURLLoaderClientError, m_weakFactory.GetWeakPtr())); - proxied_loader_binding_.set_connection_error_with_reason_handler( - base::BindOnce(&InterceptedRequest::OnURLLoaderError, m_weakFactory.GetWeakPtr())); + target_client_.set_disconnect_handler( + base::BindOnce(&InterceptedRequest::OnURLLoaderClientError, m_weakFactory.GetWeakPtr())); + proxied_loader_receiver_.set_disconnect_with_reason_handler( + base::BindOnce(&InterceptedRequest::OnURLLoaderError, m_weakFactory.GetWeakPtr())); } InterceptedRequest::~InterceptedRequest() @@ -341,10 +341,9 @@ void InterceptedRequest::ContinueAfterIntercept() } if (!target_loader_ && target_factory_) { - network::mojom::URLLoaderClientPtr proxied_client; - proxied_client_binding_.Bind(mojo::MakeRequest(&proxied_client)); - target_factory_->CreateLoaderAndStart(mojo::MakeRequest(&target_loader_), routing_id_, request_id_, options_, - request_, std::move(proxied_client), traffic_annotation_); + target_factory_->CreateLoaderAndStart(target_loader_.BindNewPipeAndPassReceiver(), routing_id_, request_id_, + options_, request_, proxied_client_receiver_.BindNewPipeAndPassRemote(), + traffic_annotation_); } } @@ -460,18 +459,18 @@ void InterceptedRequest::CallOnComplete(const network::URLLoaderCompletionStatus if (target_client_) target_client_->OnComplete(status); - if (proxied_loader_binding_ && wait_for_loader_error) { - // Don't delete |this| yet, in case the |proxied_loader_binding_|'s + if (proxied_loader_receiver_.is_bound() && wait_for_loader_error) { + // Since the original client is gone no need to continue loading the + // request. + proxied_client_receiver_.reset(); + target_loader_.reset(); + + // Don't delete |this| yet, in case the |proxied_loader_receiver_|'s // error_handler is called with a reason to indicate an error which we want // to send to the client bridge. Also reset |target_client_| so we don't // get its error_handler called and then delete |this|. target_client_.reset(); - // Since the original client is gone no need to continue loading the - // request. - proxied_client_binding_.Close(); - target_loader_.reset(); - // In case there are pending checks as to whether this request should be // intercepted, we don't want that causing |target_client_| to be used // later. @@ -523,10 +522,10 @@ void ProxyingURLLoaderFactoryQt::CreateProxy(int process_id, new ProxyingURLLoaderFactoryQt(process_id, resourceContext, std::move(loader_receiver), std::move(target_factory_info)); } -void ProxyingURLLoaderFactoryQt::CreateLoaderAndStart(network::mojom::URLLoaderRequest loader, int32_t routing_id, - int32_t request_id, uint32_t options, +void ProxyingURLLoaderFactoryQt::CreateLoaderAndStart(mojo::PendingReceiver<network::mojom::URLLoader> loader, + int32_t routing_id, int32_t request_id, uint32_t options, const network::ResourceRequest &request, - network::mojom::URLLoaderClientPtr client, + mojo::PendingRemote<network::mojom::URLLoaderClient> client, const net::MutableNetworkTrafficAnnotationTag &traffic_annotation) { DCHECK_CURRENTLY_ON(content::BrowserThread::IO); @@ -541,9 +540,9 @@ void ProxyingURLLoaderFactoryQt::CreateLoaderAndStart(network::mojom::URLLoaderR return; } - network::mojom::URLLoaderFactoryPtr target_factory_clone; + mojo::PendingRemote<network::mojom::URLLoaderFactory> target_factory_clone; if (m_targetFactory) - m_targetFactory->Clone(mojo::MakeRequest(&target_factory_clone)); + m_targetFactory->Clone(target_factory_clone.InitWithNewPipeAndPassReceiver()); // Will manage its own lifetime InterceptedRequest *req = new InterceptedRequest(m_processId, request_id, routing_id, options, request, diff --git a/src/core/net/proxying_url_loader_factory_qt.h b/src/core/net/proxying_url_loader_factory_qt.h index 0a436fd81..ba19bab97 100644 --- a/src/core/net/proxying_url_loader_factory_qt.h +++ b/src/core/net/proxying_url_loader_factory_qt.h @@ -78,9 +78,10 @@ public: mojo::PendingReceiver<network::mojom::URLLoaderFactory> loader_receiver, network::mojom::URLLoaderFactoryPtrInfo target_factory_info); - void CreateLoaderAndStart(network::mojom::URLLoaderRequest loader, int32_t routing_id, int32_t request_id, + void CreateLoaderAndStart(mojo::PendingReceiver<network::mojom::URLLoader> loader, + int32_t routing_id, int32_t request_id, uint32_t options, const network::ResourceRequest &request, - network::mojom::URLLoaderClientPtr client, + mojo::PendingRemote<network::mojom::URLLoaderClient> client, const net::MutableNetworkTrafficAnnotationTag &traffic_annotation) override; void Clone(mojo::PendingReceiver<network::mojom::URLLoaderFactory> receiver) override; diff --git a/src/core/net/ssl_host_state_delegate_qt.cpp b/src/core/net/ssl_host_state_delegate_qt.cpp index f327717e9..3f3f95c83 100644 --- a/src/core/net/ssl_host_state_delegate_qt.cpp +++ b/src/core/net/ssl_host_state_delegate_qt.cpp @@ -83,7 +83,7 @@ void SSLHostStateDelegateQt::AllowCert(const std::string &host, const net::X509C } // Clear all allow preferences. -void SSLHostStateDelegateQt::Clear(const base::Callback<bool(const std::string &)> &host_filter) +void SSLHostStateDelegateQt::Clear(base::RepeatingCallback<bool(const std::string&)> host_filter) { if (host_filter.is_null()) { m_certPolicyforHost.clear(); diff --git a/src/core/net/ssl_host_state_delegate_qt.h b/src/core/net/ssl_host_state_delegate_qt.h index b3b89f117..26e503eb5 100644 --- a/src/core/net/ssl_host_state_delegate_qt.h +++ b/src/core/net/ssl_host_state_delegate_qt.h @@ -67,7 +67,7 @@ public: // content::SSLHostStateDelegate implementation: void AllowCert(const std::string &, const net::X509Certificate &cert, int error) override; - void Clear(const base::Callback<bool(const std::string &)> &host_filter) 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; 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; diff --git a/src/core/net/system_network_context_manager.cpp b/src/core/net/system_network_context_manager.cpp index 2c5f49615..bc42a684d 100644 --- a/src/core/net/system_network_context_manager.cpp +++ b/src/core/net/system_network_context_manager.cpp @@ -74,7 +74,7 @@ #include "net/net_buildflags.h" #include "net/third_party/uri_template/uri_template.h" #include "services/network/network_service.h" -#include "services/network/public/cpp/cross_thread_shared_url_loader_factory_info.h" +#include "services/network/public/cpp/cross_thread_pending_shared_url_loader_factory.h" #include "services/network/public/cpp/features.h" #include "services/network/public/cpp/shared_url_loader_factory.h" #include "services/network/public/mojom/host_resolver.mojom.h" @@ -122,19 +122,23 @@ public: // mojom::URLLoaderFactory implementation: - void CreateLoaderAndStart(network::mojom::URLLoaderRequest request, int32_t routing_id, int32_t request_id, - uint32_t options, const network::ResourceRequest &url_request, - network::mojom::URLLoaderClientPtr client, + void CreateLoaderAndStart(mojo::PendingReceiver<network::mojom::URLLoader> receiver, + int32_t routing_id, + int32_t request_id, + uint32_t options, + const network::ResourceRequest &url_request, + mojo::PendingRemote<network::mojom::URLLoaderClient> client, const net::MutableNetworkTrafficAnnotationTag &traffic_annotation) override { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); if (!manager_) return; - manager_->GetURLLoaderFactory()->CreateLoaderAndStart(std::move(request), routing_id, request_id, options, - url_request, std::move(client), traffic_annotation); + manager_->GetURLLoaderFactory()->CreateLoaderAndStart( + std::move(receiver), routing_id, request_id, options, url_request, + std::move(client), traffic_annotation); } - void Clone(mojo::PendingReceiver<network::mojom::URLLoaderFactory> receiver) + void Clone(mojo::PendingReceiver<network::mojom::URLLoaderFactory> receiver) override { if (!manager_) return; @@ -142,10 +146,10 @@ public: } // SharedURLLoaderFactory implementation: - std::unique_ptr<network::SharedURLLoaderFactoryInfo> Clone() override + std::unique_ptr<network::PendingSharedURLLoaderFactory> Clone() override { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - return std::make_unique<network::CrossThreadSharedURLLoaderFactoryInfo>(this); + return std::make_unique<network::CrossThreadPendingSharedURLLoaderFactory>(this); } void Shutdown() { manager_ = nullptr; } diff --git a/src/core/ozone/BUILD.gn b/src/core/ozone/BUILD.gn index b96d8a47a..4d27f8877 100644 --- a/src/core/ozone/BUILD.gn +++ b/src/core/ozone/BUILD.gn @@ -18,8 +18,4 @@ source_set("qt") { ] defines = [ "OZONE_IMPLEMENTATION" ] - - if (is_linux && !is_desktop_linux) { - deps += [ "//ui/events/ozone:events_ozone_evdev"] - } } diff --git a/src/core/ozone/gl_ozone_glx_qt.cpp b/src/core/ozone/gl_ozone_glx_qt.cpp index f934a5c80..0c54299ba 100644 --- a/src/core/ozone/gl_ozone_glx_qt.cpp +++ b/src/core/ozone/gl_ozone_glx_qt.cpp @@ -95,9 +95,10 @@ bool GLOzoneGLXQt::InitializeStaticGLBindings( return true; } -void GLOzoneGLXQt::InitializeDebugGLBindings() { - gl::InitializeDebugGLBindingsGL(); - gl::InitializeDebugGLBindingsGLX(); +void GLOzoneGLXQt::InitializeLogGLBindings() +{ + gl::InitializeLogGLBindingsGL(); + gl::InitializeLogGLBindingsGLX(); } void GLOzoneGLXQt::SetDisabledExtensionsPlatform( diff --git a/src/core/ozone/gl_ozone_glx_qt.h b/src/core/ozone/gl_ozone_glx_qt.h index 1596ea12f..8f85ea23b 100644 --- a/src/core/ozone/gl_ozone_glx_qt.h +++ b/src/core/ozone/gl_ozone_glx_qt.h @@ -54,7 +54,7 @@ public: bool InitializeGLOneOffPlatform() override; bool InitializeStaticGLBindings(gl::GLImplementation implementation) override; - void InitializeDebugGLBindings() override; + void InitializeLogGLBindings() override; bool InitializeExtensionSettingsOneOffPlatform() override; void ShutdownGL() override; void SetDisabledExtensionsPlatform( diff --git a/src/core/ozone/ozone_platform_qt.cpp b/src/core/ozone/ozone_platform_qt.cpp index 887bc167e..fb5af18c5 100644 --- a/src/core/ozone/ozone_platform_qt.cpp +++ b/src/core/ozone/ozone_platform_qt.cpp @@ -48,6 +48,7 @@ #include "ui/ozone/public/gpu_platform_support_host.h" #include "ui/ozone/public/input_controller.h" #include "ui/ozone/public/ozone_platform.h" +#include "ui/ozone/public/platform_screen.h" #include "ui/ozone/public/system_input_injector.h" #include "ui/platform_window/platform_window_delegate.h" #include "ui/platform_window/platform_window_init_properties.h" @@ -67,13 +68,13 @@ public: ui::SurfaceFactoryOzone* GetSurfaceFactoryOzone() override; ui::CursorFactoryOzone* GetCursorFactoryOzone() override; GpuPlatformSupportHost* GetGpuPlatformSupportHost() override; - std::unique_ptr<PlatformWindowBase> CreatePlatformWindow(PlatformWindowDelegate* delegate, PlatformWindowInitProperties properties) override; + std::unique_ptr<PlatformWindow> CreatePlatformWindow(PlatformWindowDelegate* delegate, PlatformWindowInitProperties properties) override; std::unique_ptr<display::NativeDisplayDelegate> CreateNativeDisplayDelegate() override; 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<ui::PlatformScreen> CreateScreen() override { return nullptr; } private: void InitializeUI(const ui::OzonePlatform::InitParams &) override; void InitializeGPU(const ui::OzonePlatform::InitParams &) override; @@ -108,7 +109,7 @@ GpuPlatformSupportHost* OzonePlatformQt::GetGpuPlatformSupportHost() return gpu_platform_support_host_.get(); } -std::unique_ptr<PlatformWindowBase> OzonePlatformQt::CreatePlatformWindow(PlatformWindowDelegate* delegate, PlatformWindowInitProperties properties) +std::unique_ptr<PlatformWindow> OzonePlatformQt::CreatePlatformWindow(PlatformWindowDelegate* delegate, PlatformWindowInitProperties properties) { return base::WrapUnique(new PlatformWindowQt(delegate, properties.bounds)); } diff --git a/src/core/ozone/platform_window_qt.h b/src/core/ozone/platform_window_qt.h index 344e9b115..b1021df9d 100644 --- a/src/core/ozone/platform_window_qt.h +++ b/src/core/ozone/platform_window_qt.h @@ -45,12 +45,12 @@ #include "ui/events/platform/platform_event_dispatcher.h" #include "ui/gfx/geometry/point.h" #include "ui/gfx/geometry/rect.h" -#include "ui/platform_window/platform_window_base.h" +#include "ui/platform_window/platform_window.h" #include "ui/platform_window/platform_window_delegate.h" namespace ui { -class PlatformWindowQt : public PlatformWindowBase, public PlatformEventDispatcher +class PlatformWindowQt : public PlatformWindow, public PlatformEventDispatcher { public: PlatformWindowQt(PlatformWindowDelegate* delegate, const gfx::Rect& bounds); diff --git a/src/core/permission_manager_qt.cpp b/src/core/permission_manager_qt.cpp index decc6dd7c..c6eb2c238 100644 --- a/src/core/permission_manager_qt.cpp +++ b/src/core/permission_manager_qt.cpp @@ -82,6 +82,7 @@ ProfileAdapter::PermissionType toQt(content::PermissionType type) case content::PermissionType::PERIODIC_BACKGROUND_SYNC: case content::PermissionType::WAKE_LOCK_SCREEN: case content::PermissionType::WAKE_LOCK_SYSTEM: + case content::PermissionType::NFC: case content::PermissionType::NUM: NOTIMPLEMENTED() << "Unsupported permission type: " << static_cast<int>(type); break; diff --git a/src/core/printing/print_view_manager_base_qt.cpp b/src/core/printing/print_view_manager_base_qt.cpp index 0cc334776..34c86e506 100644 --- a/src/core/printing/print_view_manager_base_qt.cpp +++ b/src/core/printing/print_view_manager_base_qt.cpp @@ -48,7 +48,6 @@ #include "web_engine_context.h" #include "base/memory/ref_counted_memory.h" -#include "base/memory/shared_memory.h" #include "base/message_loop/message_loop.h" #include "base/message_loop/message_loop_current.h" #include "base/run_loop.h" @@ -427,12 +426,8 @@ void PrintViewManagerBaseQt::ReleasePrintJob() if (!m_printJob.get()) return; - if (rfh) { - auto msg = std::make_unique<PrintMsg_PrintingDone>(rfh->GetRoutingID(), - m_didPrintingSucceed); - rfh->Send(msg.release()); - } - + if (rfh) + GetPrintRenderFrame(rfh)->PrintingDone(m_didPrintingSucceed); m_registrar.Remove(this, chrome::NOTIFICATION_PRINT_JOB_EVENT, content::Source<printing::PrintJob>(m_printJob.get())); @@ -543,7 +538,7 @@ void PrintViewManagerBaseQt::StopWorker(int documentCookie) void PrintViewManagerBaseQt::SendPrintingEnabled(bool enabled, content::RenderFrameHost* rfh) { - rfh->Send(new PrintMsg_SetPrintingEnabled(rfh->GetRoutingID(), enabled)); + GetPrintRenderFrame(rfh)->SetPrintingEnabled(enabled); } } // namespace QtWebEngineCore diff --git a/src/core/printing/print_view_manager_qt.cpp b/src/core/printing/print_view_manager_qt.cpp index ebaad9a80..79e92fd6a 100644 --- a/src/core/printing/print_view_manager_qt.cpp +++ b/src/core/printing/print_view_manager_qt.cpp @@ -270,7 +270,7 @@ bool PrintViewManagerQt::PrintToPDFInternal(const QPageLayout &pageLayout, return false; content::RenderFrameHost* rfh = web_contents()->GetMainFrame(); - GetPrintRenderFrame(rfh)->InitiatePrintPreview(nullptr, false); + GetPrintRenderFrame(rfh)->InitiatePrintPreview(mojo::PendingAssociatedRemote<printing::mojom::PrintRenderer>(), false); DCHECK(!m_printPreviewRfh); m_printPreviewRfh = rfh; diff --git a/src/core/printing/printing_message_filter_qt.h b/src/core/printing/printing_message_filter_qt.h index 88559d3df..89e473dcf 100644 --- a/src/core/printing/printing_message_filter_qt.h +++ b/src/core/printing/printing_message_filter_qt.h @@ -50,10 +50,6 @@ #include "components/prefs/pref_member.h" #include "content/public/browser/browser_message_filter.h" -#if defined(OS_WIN) -#include "base/memory/shared_memory.h" -#endif - struct PrintHostMsg_PreviewIds; struct PrintHostMsg_ScriptedPrint_Params; diff --git a/src/core/qtwebengine.gni b/src/core/qtwebengine.gni index f17f28495..a5628bb88 100644 --- a/src/core/qtwebengine.gni +++ b/src/core/qtwebengine.gni @@ -22,7 +22,7 @@ deps = [ "//components/keyed_service/content", "//components/navigation_interception", "//components/network_hints/browser", - "//components/network_hints/common", + "//components/network_hints/common:mojo_bindings", "//components/network_hints/renderer", "//components/visitedlink/browser", "//components/visitedlink/renderer", @@ -34,7 +34,7 @@ deps = [ "//content/public/app:browser", "//content", "//media:media_buildflags", - "//net:net_with_v8", + "//net", "//services/proxy_resolver:lib", "//skia", "//third_party/blink/public:blink", @@ -48,7 +48,7 @@ deps = [ ] if (enable_webrtc) { - deps += [ "//third_party/webrtc_overrides" ] + deps += [ "//third_party/webrtc_overrides:webrtc_component" ] } if (use_ozone) { diff --git a/src/core/qtwebengine_resources.gni b/src/core/qtwebengine_resources.gni index 749546741..4f6c51d81 100644 --- a/src/core/qtwebengine_resources.gni +++ b/src/core/qtwebengine_resources.gni @@ -25,6 +25,7 @@ repack("qtwebengine_repack_resources") { "$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/content/browser/resources/media/media_internals_resources.pak", "$root_gen_dir/content/content_resources.pak", "$root_gen_dir/mojo/public/js/mojo_bindings_resources.pak", "$root_gen_dir/net/net_resources.pak", @@ -34,10 +35,11 @@ repack("qtwebengine_repack_resources") { output = "$root_out_dir/qtwebengine_resources.pak" deps = [ "//qtwebengine/browser:qt_webengine_resources", - "//chrome/browser/resources:quota_internals_resources", + "//chrome/browser/resources/quota_internals:quota_internals_resources", "//chrome/browser:resources_grit", "//chrome/common:resources_grit", "//components/resources:components_resources_grit", + "//content/browser/resources/media:media_internals_resources", "//content:resources_grit", "//mojo/public/js:resources", "//net:net_resources_grit", @@ -58,6 +60,14 @@ repack("qtwebengine_repack_resources") { ] } + if (enable_webrtc) { + sources += [ + "$root_gen_dir/content/browser/webrtc/resources/webrtc_internals_resources.pak", + ] + deps += [ + "//content/browser/webrtc/resources", + ] + } } repack("qtwebengine_repack_resources_100") { diff --git a/src/core/render_widget_host_view_qt.cpp b/src/core/render_widget_host_view_qt.cpp index c1b1791cf..813ce4be9 100644 --- a/src/core/render_widget_host_view_qt.cpp +++ b/src/core/render_widget_host_view_qt.cpp @@ -1840,7 +1840,6 @@ const viz::LocalSurfaceIdAllocation &RenderWidgetHostViewQt::GetLocalSurfaceIdAl void RenderWidgetHostViewQt::TakeFallbackContentFrom(content::RenderWidgetHostView *view) { DCHECK(!static_cast<RenderWidgetHostViewBase*>(view)->IsRenderWidgetHostViewChildFrame()); - DCHECK(!static_cast<RenderWidgetHostViewBase*>(view)->IsRenderWidgetHostViewGuest()); RenderWidgetHostViewQt *viewQt = static_cast<RenderWidgetHostViewQt *>(view); base::Optional<SkColor> color = viewQt->GetBackgroundColor(); if (color) diff --git a/src/core/renderer/content_renderer_client_qt.cpp b/src/core/renderer/content_renderer_client_qt.cpp index f7c8a497b..b2138a82a 100644 --- a/src/core/renderer/content_renderer_client_qt.cpp +++ b/src/core/renderer/content_renderer_client_qt.cpp @@ -39,7 +39,6 @@ #include "renderer/content_renderer_client_qt.h" -#include "common/qt_messages.h" #include "extensions/buildflags/buildflags.h" #include "printing/buildflags/buildflags.h" #include "renderer/content_settings_observer_qt.h" @@ -53,20 +52,20 @@ #include "components/error_page/common/error.h" #include "components/error_page/common/error_page_params.h" #include "components/error_page/common/localized_error.h" -#include "components/network_hints/renderer/prescient_networking_dispatcher.h" +#include "components/network_hints/renderer/web_prescient_networking_impl.h" #if QT_CONFIG(webengine_printing_and_pdf) #include "components/printing/renderer/print_render_frame_helper.h" #endif -#include "components/visitedlink/renderer/visitedlink_slave.h" +#include "components/visitedlink/renderer/visitedlink_reader.h" #include "components/web_cache/renderer/web_cache_impl.h" #include "content/public/renderer/render_frame.h" #include "content/public/child/child_thread.h" -#include "content/public/common/service_manager_connection.h" -#include "content/public/common/simple_connection_filter.h" +#include "content/public/common/url_constants.h" #include "content/public/renderer/render_thread.h" #include "content/public/renderer/render_view.h" #include "media/base/key_system_properties.h" #include "media/media_buildflags.h" +#include "mojo/public/cpp/bindings/binder_map.h" #include "net/base/net_errors.h" #include "services/service_manager/public/cpp/connector.h" #include "services/service_manager/public/cpp/interface_provider.h" @@ -82,6 +81,7 @@ #include "renderer/print_web_view_helper_delegate_qt.h" #endif +#include "common/qt_messages.h" #include "renderer/render_frame_observer_qt.h" #include "renderer/render_view_observer_qt.h" #include "renderer/render_thread_observer_qt.h" @@ -134,16 +134,9 @@ void ContentRendererClientQt::RenderThreadStarted() { content::RenderThread *renderThread = content::RenderThread::Get(); m_renderThreadObserver.reset(new RenderThreadObserverQt()); - m_visitedLinkSlave.reset(new visitedlink::VisitedLinkSlave); + m_visitedLinkReader.reset(new visitedlink::VisitedLinkReader); m_webCacheImpl.reset(new web_cache::WebCacheImpl()); - m_prescientNetworkingDispatcher.reset(new network_hints::PrescientNetworkingDispatcher()); - - auto registry = std::make_unique<service_manager::BinderRegistry>(); - registry->AddInterface(m_visitedLinkSlave->GetBindCallback(), base::ThreadTaskRunnerHandle::Get()); - content::ChildThread::Get()->GetServiceManagerConnection()->AddConnectionFilter( - std::make_unique<content::SimpleConnectionFilter>(std::move(registry))); - renderThread->AddObserver(m_renderThreadObserver.data()); renderThread->AddObserver(UserResourceController::instance()); @@ -174,6 +167,26 @@ void ContentRendererClientQt::RenderThreadStarted() #endif } +void ContentRendererClientQt::ExposeInterfacesToBrowser(mojo::BinderMap* binders) +{ + binders->Add(m_visitedLinkReader->GetBindCallback(), base::SequencedTaskRunnerHandle::Get()); + + binders->Add(base::BindRepeating(&web_cache::WebCacheImpl::BindReceiver, + base::Unretained(m_webCacheImpl.get())), + base::SequencedTaskRunnerHandle::Get()); + +#if QT_CONFIG(webengine_spellchecker) + binders->Add(base::BindRepeating( + [](ContentRendererClientQt *client, + mojo::PendingReceiver<spellcheck::mojom::SpellChecker> receiver) { + if (!client->m_spellCheck) + client->InitSpellCheck(); + client->m_spellCheck->BindReceiver(std::move(receiver)); + }, this), + base::SequencedTaskRunnerHandle::Get()); +#endif +} + void ContentRendererClientQt::RenderViewCreated(content::RenderView *render_view) { // RenderViewObservers destroy themselves with their RenderView. @@ -298,7 +311,7 @@ void ContentRendererClientQt::GetNavigationErrorStringsInternal(content::RenderF resourceId = IDR_NET_ERROR_HTML; - std::string extracted_string = ui::ResourceBundle::GetSharedInstance().DecompressDataResource(resourceId); + std::string extracted_string = ui::ResourceBundle::GetSharedInstance().LoadDataResourceString(resourceId); const base::StringPiece template_html(extracted_string.data(), extracted_string.size()); if (template_html.empty()) NOTREACHED() << "unable to load template. ID: " << resourceId; @@ -309,17 +322,17 @@ void ContentRendererClientQt::GetNavigationErrorStringsInternal(content::RenderF uint64_t ContentRendererClientQt::VisitedLinkHash(const char *canonicalUrl, size_t length) { - return m_visitedLinkSlave->ComputeURLFingerprint(canonicalUrl, length); + return m_visitedLinkReader->ComputeURLFingerprint(canonicalUrl, length); } bool ContentRendererClientQt::IsLinkVisited(uint64_t linkHash) { - return m_visitedLinkSlave->IsVisited(linkHash); + return m_visitedLinkReader->IsVisited(linkHash); } -blink::WebPrescientNetworking *ContentRendererClientQt::GetPrescientNetworking() +std::unique_ptr<blink::WebPrescientNetworking> ContentRendererClientQt::CreatePrescientNetworking(content::RenderFrame *render_frame) { - return m_prescientNetworkingDispatcher.get(); + return std::make_unique<network_hints::WebPrescientNetworkingImpl>(render_frame); } bool ContentRendererClientQt::OverrideCreatePlugin(content::RenderFrame *render_frame, @@ -586,25 +599,32 @@ void ContentRendererClientQt::AddSupportedKeySystems(std::vector<std::unique_ptr #if QT_CONFIG(webengine_spellchecker) void ContentRendererClientQt::InitSpellCheck() { - m_spellCheck.reset(new SpellCheck(&m_registry, this)); + m_spellCheck.reset(new SpellCheck(this)); } #endif void ContentRendererClientQt::WillSendRequest(blink::WebLocalFrame *frame, ui::PageTransition transition_type, const blink::WebURL &url, + const blink::WebURL &site_for_cookies, const url::Origin *initiator_origin, GURL *new_url, bool *attach_same_site_cookies) { #if BUILDFLAG(ENABLE_EXTENSIONS) - ExtensionsRendererClientQt::GetInstance()->WillSendRequest(frame, transition_type, url, initiator_origin, new_url, - attach_same_site_cookies); + ExtensionsRendererClientQt::GetInstance()->WillSendRequest(frame, transition_type, url, /*site_for_cookies,*/ + initiator_origin, new_url, attach_same_site_cookies); if (!new_url->is_empty()) return; #endif - content::ContentRendererClient::WillSendRequest(frame, transition_type, url, initiator_origin, new_url, - attach_same_site_cookies); +} + +bool ContentRendererClientQt::RequiresWebComponentsV0(const GURL &url) +{ + Q_UNUSED(url); + // Google services still presents pages using these features + // to Chromium 80 based browsers (YouTube in particular). + return true; } } // namespace QtWebEngineCore diff --git a/src/core/renderer/content_renderer_client_qt.h b/src/core/renderer/content_renderer_client_qt.h index da70d29a8..f2e725453 100644 --- a/src/core/renderer/content_renderer_client_qt.h +++ b/src/core/renderer/content_renderer_client_qt.h @@ -57,12 +57,8 @@ namespace error_page { class Error; } -namespace network_hints { -class PrescientNetworkingDispatcher; -} - namespace visitedlink { -class VisitedLinkSlave; +class VisitedLinkReader; } namespace web_cache { @@ -91,6 +87,7 @@ public: // content::ContentRendererClient: void RenderThreadStarted() override; + void ExposeInterfacesToBrowser(mojo::BinderMap* binders) override; void RenderViewCreated(content::RenderView *render_view) override; void RenderFrameCreated(content::RenderFrame *render_frame) override; bool ShouldSuppressErrorPage(content::RenderFrame *, const GURL &) override; @@ -108,7 +105,7 @@ public: uint64_t VisitedLinkHash(const char *canonical_url, size_t length) override; bool IsLinkVisited(uint64_t linkHash) override; - blink::WebPrescientNetworking *GetPrescientNetworking() override; + std::unique_ptr<blink::WebPrescientNetworking> CreatePrescientNetworking(content::RenderFrame *render_frame) override; void AddSupportedKeySystems(std::vector<std::unique_ptr<media::KeySystemProperties>> *key_systems) override; void RunScriptsAtDocumentStart(content::RenderFrame *render_frame) override; @@ -125,11 +122,13 @@ public: void WillSendRequest(blink::WebLocalFrame *frame, ui::PageTransition transition_type, const blink::WebURL &url, + const blink::WebURL &site_for_cookies, const url::Origin *initiator_origin, GURL *new_url, bool *attach_same_site_cookies) override; void BindReceiverOnMainThread(mojo::GenericPendingReceiver receiver) override; + bool RequiresWebComponentsV0(const GURL &url) override; #if BUILDFLAG(ENABLE_PLUGINS) static blink::WebPlugin* CreatePlugin(content::RenderFrame* render_frame, @@ -148,14 +147,13 @@ private: const error_page::Error &error, std::string *errorHtml); QScopedPointer<RenderThreadObserverQt> m_renderThreadObserver; - QScopedPointer<visitedlink::VisitedLinkSlave> m_visitedLinkSlave; + QScopedPointer<visitedlink::VisitedLinkReader> m_visitedLinkReader; QScopedPointer<web_cache::WebCacheImpl> m_webCacheImpl; #if QT_CONFIG(webengine_spellchecker) QScopedPointer<SpellCheck> m_spellCheck; #endif service_manager::BinderRegistry m_registry; - std::unique_ptr<network_hints::PrescientNetworkingDispatcher> m_prescientNetworkingDispatcher; DISALLOW_COPY_AND_ASSIGN(ContentRendererClientQt); }; diff --git a/src/core/renderer/content_settings_observer_qt.cpp b/src/core/renderer/content_settings_observer_qt.cpp index fc7019367..df9b77037 100644 --- a/src/core/renderer/content_settings_observer_qt.cpp +++ b/src/core/renderer/content_settings_observer_qt.cpp @@ -59,8 +59,8 @@ namespace { bool IsUniqueFrame(blink::WebFrame *frame) { - return frame->GetSecurityOrigin().IsUnique() || - frame->Top()->GetSecurityOrigin().IsUnique(); + return frame->GetSecurityOrigin().IsOpaque() || + frame->Top()->GetSecurityOrigin().IsOpaque(); } } // namespace @@ -139,14 +139,15 @@ void ContentSettingsObserverQt::RequestFileSystemAccessAsync(base::OnceCallback< url::Origin(frame->Top()->GetSecurityOrigin()).GetURL())); } -bool ContentSettingsObserverQt::AllowIndexedDB(const WebSecurityOrigin &origin) +bool ContentSettingsObserverQt::AllowIndexedDB() { blink::WebFrame *frame = render_frame()->GetWebFrame(); if (IsUniqueFrame(frame)) return false; bool result = false; - Send(new QtWebEngineHostMsg_AllowIndexedDB(routing_id(), url::Origin(origin).GetURL(), + Send(new QtWebEngineHostMsg_AllowIndexedDB(routing_id(), + url::Origin(frame->GetSecurityOrigin()).GetURL(), url::Origin(frame->Top()->GetSecurityOrigin()).GetURL(), &result)); return result; } diff --git a/src/core/renderer/content_settings_observer_qt.h b/src/core/renderer/content_settings_observer_qt.h index 71e1fbca5..0c69d289c 100644 --- a/src/core/renderer/content_settings_observer_qt.h +++ b/src/core/renderer/content_settings_observer_qt.h @@ -69,7 +69,7 @@ public: // blink::WebContentSettingsClient: bool AllowDatabase() override; void RequestFileSystemAccessAsync(base::OnceCallback<void(bool)> callback) override; - bool AllowIndexedDB(const blink::WebSecurityOrigin &origin) override; + bool AllowIndexedDB() override; bool AllowStorage(bool local) override; private: 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 bd93f0dd3..6e9efb5ad 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 @@ -58,7 +58,7 @@ #include "ppapi/host/ppapi_host.h" #include "ppapi/proxy/ppapi_messages.h" #include "ppapi/shared_impl/file_system_util.h" -#include "storage/browser/fileapi/isolated_context.h" +#include "storage/browser/file_system/isolated_context.h" namespace QtWebEngineCore { diff --git a/src/core/renderer_host/web_channel_ipc_transport_host.cpp b/src/core/renderer_host/web_channel_ipc_transport_host.cpp index c071a566a..9ed3749ad 100644 --- a/src/core/renderer_host/web_channel_ipc_transport_host.cpp +++ b/src/core/renderer_host/web_channel_ipc_transport_host.cpp @@ -74,7 +74,7 @@ WebChannelIPCTransportHost::WebChannelIPCTransportHost(content::WebContents *con : QWebChannelAbstractTransport(parent) , content::WebContentsObserver(contents) , m_worldId(worldId) - , m_binding(contents, this) + , m_receiver(contents, this) { for (content::RenderFrameHost *frame : contents->GetAllFrames()) setWorldId(frame, worldId); @@ -136,7 +136,7 @@ void WebChannelIPCTransportHost::DispatchWebChannelMessage(const std::vector<uin { content::RenderFrameHost *frame = web_contents()->GetMainFrame(); - if (m_binding.GetCurrentTargetFrame() != frame) { + if (m_receiver.GetCurrentTargetFrame() != frame) { return; } diff --git a/src/core/renderer_host/web_channel_ipc_transport_host.h b/src/core/renderer_host/web_channel_ipc_transport_host.h index d53b24b6b..a1575355a 100644 --- a/src/core/renderer_host/web_channel_ipc_transport_host.h +++ b/src/core/renderer_host/web_channel_ipc_transport_host.h @@ -43,8 +43,7 @@ #include "qtwebenginecoreglobal.h" #include "content/public/browser/web_contents_observer.h" -#include "services/service_manager/public/cpp/binder_registry.h" -#include "content/public/browser/web_contents_binding_set.h" +#include "content/public/browser/web_contents_receiver_set.h" #include "qtwebengine/browser/qtwebchannel.mojom.h" #include <QWebChannelAbstractTransport> @@ -82,7 +81,7 @@ private: // Empty only during construction/destruction. Synchronized to all the // WebChannelIPCTransports/RenderFrames in the observed WebContents. uint32_t m_worldId; - content::WebContentsFrameBindingSet<qtwebchannel::mojom::WebChannelTransportHost> m_binding; + content::WebContentsFrameReceiverSet<qtwebchannel::mojom::WebChannelTransportHost> m_receiver; }; } // namespace diff --git a/src/core/resource_bundle_qt.cpp b/src/core/resource_bundle_qt.cpp index 0e80859ae..61b0f3021 100644 --- a/src/core/resource_bundle_qt.cpp +++ b/src/core/resource_bundle_qt.cpp @@ -87,7 +87,7 @@ bool ResourceBundle::LocaleDataPakExists(const std::string& locale) } #endif - return !GetLocaleFilePath(locale, true).empty(); + return !GetLocaleFilePath(locale).empty(); } std::string ResourceBundle::LoadLocaleResources(const std::string& pref_locale) @@ -108,7 +108,7 @@ std::string ResourceBundle::LoadLocaleResources(const std::string& pref_locale) base::FilePath locale_file_path = GetOverriddenPakPath(); if (locale_file_path.empty()) - locale_file_path = GetLocaleFilePath(app_locale, true); + locale_file_path = GetLocaleFilePath(app_locale); if (locale_file_path.empty()) { // It's possible that there is no locale.pak. diff --git a/src/core/visited_links_manager_qt.cpp b/src/core/visited_links_manager_qt.cpp index d4885e8e8..37343cc39 100644 --- a/src/core/visited_links_manager_qt.cpp +++ b/src/core/visited_links_manager_qt.cpp @@ -45,12 +45,12 @@ #include <base/files/file_util.h> #include "components/visitedlink/browser/visitedlink_delegate.h" -#include "components/visitedlink/browser/visitedlink_master.h" +#include "components/visitedlink/browser/visitedlink_writer.h" namespace QtWebEngineCore { namespace { -class BasicUrlIterator : public visitedlink::VisitedLinkMaster::URLIterator { +class BasicUrlIterator : public visitedlink::VisitedLinkWriter::URLIterator { public: BasicUrlIterator(const QList<QUrl> &urls) : m_urls(urls) {} virtual const GURL& NextURL() { m_currentUrl = toGurl(m_urls.takeFirst()); return m_currentUrl; } @@ -76,18 +76,18 @@ public: void VisitedLinksManagerQt::deleteAllVisitedLinkData() { - m_visitedLinkMaster->DeleteAllURLs(); + m_visitedLinkWriter->DeleteAllURLs(); } void VisitedLinksManagerQt::deleteVisitedLinkDataForUrls(const QList<QUrl> &urlsToDelete) { BasicUrlIterator iterator(urlsToDelete); - m_visitedLinkMaster->DeleteURLs(&iterator); + m_visitedLinkWriter->DeleteURLs(&iterator); } bool VisitedLinksManagerQt::containsUrl(const QUrl &url) const { - return m_visitedLinkMaster->IsVisited(toGurl(url)); + return m_visitedLinkWriter->IsVisited(toGurl(url)); } static void ensureDirectoryExists(const base::FilePath &path) @@ -111,8 +111,8 @@ VisitedLinksManagerQt::VisitedLinksManagerQt(ProfileQt *profile, bool persistVis Q_ASSERT(profile); if (persistVisitedLinks) ensureDirectoryExists(profile->GetPath()); - m_visitedLinkMaster.reset(new visitedlink::VisitedLinkMaster(profile, m_delegate.data(), persistVisitedLinks)); - m_visitedLinkMaster->Init(); + m_visitedLinkWriter.reset(new visitedlink::VisitedLinkWriter(profile, m_delegate.data(), persistVisitedLinks)); + m_visitedLinkWriter->Init(); } VisitedLinksManagerQt::~VisitedLinksManagerQt() @@ -121,8 +121,8 @@ VisitedLinksManagerQt::~VisitedLinksManagerQt() void VisitedLinksManagerQt::addUrl(const GURL &urlToAdd) { - Q_ASSERT(m_visitedLinkMaster); - m_visitedLinkMaster->AddURL(urlToAdd); + Q_ASSERT(m_visitedLinkWriter); + m_visitedLinkWriter->AddURL(urlToAdd); } } // namespace QtWebEngineCore diff --git a/src/core/visited_links_manager_qt.h b/src/core/visited_links_manager_qt.h index ecac8f30f..c4e24ce1f 100644 --- a/src/core/visited_links_manager_qt.h +++ b/src/core/visited_links_manager_qt.h @@ -60,7 +60,7 @@ class QUrl; QT_END_NAMESPACE namespace visitedlink { -class VisitedLinkMaster; +class VisitedLinkWriter; } class GURL; @@ -85,7 +85,7 @@ private: void addUrl(const GURL &); friend class WebContentsDelegateQt; - QScopedPointer<visitedlink::VisitedLinkMaster> m_visitedLinkMaster; + QScopedPointer<visitedlink::VisitedLinkWriter> m_visitedLinkWriter; QScopedPointer<VisitedLinkDelegateQt> m_delegate; }; diff --git a/src/core/web_contents_adapter.cpp b/src/core/web_contents_adapter.cpp index 9cecb9ecb..61f8e5da0 100644 --- a/src/core/web_contents_adapter.cpp +++ b/src/core/web_contents_adapter.cpp @@ -86,9 +86,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/web/web_media_player_action.h" #include "printing/buildflags/buildflags.h" #include "ui/base/clipboard/clipboard.h" #include "ui/base/clipboard/clipboard_constants.h" @@ -239,7 +239,7 @@ static void callbackOnPdfSavingFinished(WebContentsAdapterClient *adapterClient, static std::unique_ptr<content::WebContents> createBlankWebContents(WebContentsAdapterClient *adapterClient, content::BrowserContext *browserContext) { - content::WebContents::CreateParams create_params(browserContext, NULL); + content::WebContents::CreateParams create_params(browserContext, nullptr); create_params.routing_id = MSG_ROUTING_NONE; create_params.initially_hidden = true; @@ -1175,22 +1175,22 @@ void WebContentsAdapter::copyImageAt(const QPoint &location) m_webContents->GetRenderViewHost()->GetMainFrame()->CopyImageAt(location.x(), location.y()); } -static blink::WebMediaPlayerAction::Type toBlinkMediaPlayerActionType(WebContentsAdapter::MediaPlayerAction action) +static blink::MediaPlayerAction::Type toBlinkMediaPlayerActionType(WebContentsAdapter::MediaPlayerAction action) { switch (action) { case WebContentsAdapter::MediaPlayerPlay: - return blink::WebMediaPlayerAction::Type::kPlay; + return blink::MediaPlayerAction::Type::kPlay; case WebContentsAdapter::MediaPlayerMute: - return blink::WebMediaPlayerAction::Type::kMute; + return blink::MediaPlayerAction::Type::kMute; case WebContentsAdapter::MediaPlayerLoop: - return blink::WebMediaPlayerAction::Type::kLoop; + return blink::MediaPlayerAction::Type::kLoop; case WebContentsAdapter::MediaPlayerControls: - return blink::WebMediaPlayerAction::Type::kControls; + return blink::MediaPlayerAction::Type::kControls; case WebContentsAdapter::MediaPlayerNoAction: break; } NOTREACHED(); - return (blink::WebMediaPlayerAction::Type)-1; + return (blink::MediaPlayerAction::Type)-1; } void WebContentsAdapter::executeMediaPlayerActionAt(const QPoint &location, MediaPlayerAction action, bool enable) @@ -1198,7 +1198,7 @@ void WebContentsAdapter::executeMediaPlayerActionAt(const QPoint &location, Medi CHECK_INITIALIZED(); if (action == MediaPlayerNoAction) return; - blink::WebMediaPlayerAction blinkAction(toBlinkMediaPlayerActionType(action), enable); + blink::MediaPlayerAction blinkAction(toBlinkMediaPlayerActionType(action), enable); m_webContents->GetRenderViewHost()->GetMainFrame()->ExecuteMediaPlayerActionAtLocation(toGfx(location), blinkAction); } diff --git a/src/core/web_contents_delegate_qt.cpp b/src/core/web_contents_delegate_qt.cpp index e97536593..d1cdb8d9f 100644 --- a/src/core/web_contents_delegate_qt.cpp +++ b/src/core/web_contents_delegate_qt.cpp @@ -156,7 +156,7 @@ content::WebContents *WebContentsDelegateQt::OpenURLFromTab(content::WebContents load_url_params.override_user_agent = content::NavigationController::UA_OVERRIDE_TRUE; load_url_params.href_translate = params.href_translate; load_url_params.reload_type = params.reload_type; - if (params.uses_post) { + if (params.post_data) { load_url_params.load_type = content::NavigationController::LOAD_TYPE_HTTP_POST; load_url_params.post_data = params.post_data; } @@ -255,7 +255,7 @@ void WebContentsDelegateQt::CloseContents(content::WebContents *source) GetJavaScriptDialogManager(source)->CancelDialogs(source, /* whatever?: */false); } -void WebContentsDelegateQt::LoadProgressChanged(content::WebContents */*source*/, double progress) +void WebContentsDelegateQt::LoadProgressChanged(double progress) { if (!m_loadingErrorFrameList.isEmpty()) return; diff --git a/src/core/web_contents_delegate_qt.h b/src/core/web_contents_delegate_qt.h index 6818fa551..81d6c8671 100644 --- a/src/core/web_contents_delegate_qt.h +++ b/src/core/web_contents_delegate_qt.h @@ -122,7 +122,7 @@ public: void NavigationStateChanged(content::WebContents* source, content::InvalidateTypes changed_flags) override; void AddNewContents(content::WebContents *source, std::unique_ptr<content::WebContents> new_contents, WindowOpenDisposition disposition, const gfx::Rect &initial_pos, bool user_gesture, bool *was_blocked) override; void CloseContents(content::WebContents *source) override; - void LoadProgressChanged(content::WebContents* source, double progress) override; + void LoadProgressChanged(double progress) override; bool HandleKeyboardEvent(content::WebContents *source, const content::NativeWebKeyboardEvent &event) override; content::ColorChooser* OpenColorChooser(content::WebContents *source, SkColor color, const std::vector<blink::mojom::ColorSuggestionPtr> &suggestions) override; void WebContentsCreated(content::WebContents *source_contents, int opener_render_process_id, int opener_render_frame_id, diff --git a/src/core/web_contents_view_qt.cpp b/src/core/web_contents_view_qt.cpp index 139450cd8..7f6bfe34f 100644 --- a/src/core/web_contents_view_qt.cpp +++ b/src/core/web_contents_view_qt.cpp @@ -57,6 +57,8 @@ #include "content/browser/web_contents/web_contents_impl.h" #include "content/public/browser/web_contents_delegate.h" #include "content/public/common/context_menu_params.h" +#include "third_party/blink/public/common/context_menu_data/edit_flags.h" +#include "third_party/blink/public/common/context_menu_data/media_type.h" #include "ui/gfx/image/image_skia.h" #include <QtGui/qpixmap.h> @@ -87,7 +89,7 @@ void WebContentsViewQt::setClient(WebContentsAdapterClient* client) } } -content::RenderWidgetHostViewBase* WebContentsViewQt::CreateViewForWidget(content::RenderWidgetHost* render_widget_host, bool is_guest_view_hack) +content::RenderWidgetHostViewBase* WebContentsViewQt::CreateViewForWidget(content::RenderWidgetHost *render_widget_host) { RenderWidgetHostViewQt *view = new RenderWidgetHostViewQt(render_widget_host); @@ -158,13 +160,13 @@ void WebContentsViewQt::FocusThroughTabTraversal(bool reverse) } -ASSERT_ENUMS_MATCH(WebEngineContextMenuData::MediaTypeNone, blink::WebContextMenuData::kMediaTypeNone) -ASSERT_ENUMS_MATCH(WebEngineContextMenuData::MediaTypeImage, blink::WebContextMenuData::kMediaTypeImage) -ASSERT_ENUMS_MATCH(WebEngineContextMenuData::MediaTypeVideo, blink::WebContextMenuData::kMediaTypeVideo) -ASSERT_ENUMS_MATCH(WebEngineContextMenuData::MediaTypeAudio, blink::WebContextMenuData::kMediaTypeAudio) -ASSERT_ENUMS_MATCH(WebEngineContextMenuData::MediaTypeCanvas, blink::WebContextMenuData::kMediaTypeCanvas) -ASSERT_ENUMS_MATCH(WebEngineContextMenuData::MediaTypeFile, blink::WebContextMenuData::kMediaTypeFile) -ASSERT_ENUMS_MATCH(WebEngineContextMenuData::MediaTypePlugin, blink::WebContextMenuData::kMediaTypePlugin) +ASSERT_ENUMS_MATCH(WebEngineContextMenuData::MediaTypeNone, blink::ContextMenuDataMediaType::kNone) +ASSERT_ENUMS_MATCH(WebEngineContextMenuData::MediaTypeImage, blink::ContextMenuDataMediaType::kImage) +ASSERT_ENUMS_MATCH(WebEngineContextMenuData::MediaTypeVideo, blink::ContextMenuDataMediaType::kVideo) +ASSERT_ENUMS_MATCH(WebEngineContextMenuData::MediaTypeAudio, blink::ContextMenuDataMediaType::kAudio) +ASSERT_ENUMS_MATCH(WebEngineContextMenuData::MediaTypeCanvas, blink::ContextMenuDataMediaType::kCanvas) +ASSERT_ENUMS_MATCH(WebEngineContextMenuData::MediaTypeFile, blink::ContextMenuDataMediaType::kFile) +ASSERT_ENUMS_MATCH(WebEngineContextMenuData::MediaTypePlugin, blink::ContextMenuDataMediaType::kPlugin) ASSERT_ENUMS_MATCH(WebEngineContextMenuData::MediaNone, blink::WebContextMenuData::kMediaNone) ASSERT_ENUMS_MATCH(WebEngineContextMenuData::MediaInError, blink::WebContextMenuData::kMediaInError) @@ -178,16 +180,16 @@ ASSERT_ENUMS_MATCH(WebEngineContextMenuData::MediaControls, blink::WebContextMen ASSERT_ENUMS_MATCH(WebEngineContextMenuData::MediaCanPrint, blink::WebContextMenuData::kMediaCanPrint) ASSERT_ENUMS_MATCH(WebEngineContextMenuData::MediaCanRotate, blink::WebContextMenuData::kMediaCanRotate) -ASSERT_ENUMS_MATCH(WebEngineContextMenuData::CanDoNone, blink::WebContextMenuData::kCanDoNone) -ASSERT_ENUMS_MATCH(WebEngineContextMenuData::CanUndo, blink::WebContextMenuData::kCanUndo) -ASSERT_ENUMS_MATCH(WebEngineContextMenuData::CanRedo, blink::WebContextMenuData::kCanRedo) -ASSERT_ENUMS_MATCH(WebEngineContextMenuData::CanCut, blink::WebContextMenuData::kCanCut) -ASSERT_ENUMS_MATCH(WebEngineContextMenuData::CanCopy, blink::WebContextMenuData::kCanCopy) -ASSERT_ENUMS_MATCH(WebEngineContextMenuData::CanPaste, blink::WebContextMenuData::kCanPaste) -ASSERT_ENUMS_MATCH(WebEngineContextMenuData::CanDelete, blink::WebContextMenuData::kCanDelete) -ASSERT_ENUMS_MATCH(WebEngineContextMenuData::CanSelectAll, blink::WebContextMenuData::kCanSelectAll) -ASSERT_ENUMS_MATCH(WebEngineContextMenuData::CanTranslate, blink::WebContextMenuData::kCanTranslate) -ASSERT_ENUMS_MATCH(WebEngineContextMenuData::CanEditRichly, blink::WebContextMenuData::kCanEditRichly) +ASSERT_ENUMS_MATCH(WebEngineContextMenuData::CanDoNone, blink::kCanDoNone) +ASSERT_ENUMS_MATCH(WebEngineContextMenuData::CanUndo, blink::kCanUndo) +ASSERT_ENUMS_MATCH(WebEngineContextMenuData::CanRedo, blink::kCanRedo) +ASSERT_ENUMS_MATCH(WebEngineContextMenuData::CanCut, blink::kCanCut) +ASSERT_ENUMS_MATCH(WebEngineContextMenuData::CanCopy, blink::kCanCopy) +ASSERT_ENUMS_MATCH(WebEngineContextMenuData::CanPaste, blink::kCanPaste) +ASSERT_ENUMS_MATCH(WebEngineContextMenuData::CanDelete, blink::kCanDelete) +ASSERT_ENUMS_MATCH(WebEngineContextMenuData::CanSelectAll, blink::kCanSelectAll) +ASSERT_ENUMS_MATCH(WebEngineContextMenuData::CanTranslate, blink::kCanTranslate) +ASSERT_ENUMS_MATCH(WebEngineContextMenuData::CanEditRichly, blink::kCanEditRichly) static inline WebEngineContextMenuData fromParams(const content::ContextMenuParams ¶ms) { diff --git a/src/core/web_contents_view_qt.h b/src/core/web_contents_view_qt.h index 6f5ffdb86..3dcb648bf 100644 --- a/src/core/web_contents_view_qt.h +++ b/src/core/web_contents_view_qt.h @@ -70,7 +70,7 @@ public: WebContentsAdapterClient *client() { return m_client; } // content::WebContentsView overrides: - content::RenderWidgetHostViewBase *CreateViewForWidget(content::RenderWidgetHost* render_widget_host, bool is_guest_view_hack) override; + content::RenderWidgetHostViewBase *CreateViewForWidget(content::RenderWidgetHost *render_widget_host) override; void CreateView(gfx::NativeView context) override; diff --git a/src/core/web_engine_context.cpp b/src/core/web_engine_context.cpp index 1fa12885f..5e6a18e5b 100644 --- a/src/core/web_engine_context.cpp +++ b/src/core/web_engine_context.cpp @@ -589,9 +589,10 @@ WebEngineContext::WebEngineContext() appendToFeatureList(disableFeatures, features::kFontSrcLocalMatching.name); #endif -#if QT_CONFIG(webengine_printing_and_pdf) - appendToFeatureList(disableFeatures, printing::features::kUsePdfCompositorServiceForPrint.name); -#endif + // We don't support the skia renderer (enabled by default on Linux since 80) + appendToFeatureList(disableFeatures, features::kUseSkiaRenderer.name); + + appendToFeatureList(disableFeatures, network::features::kDnsOverHttpsUpgrade.name); // Explicitly tell Chromium about default-on features we do not support appendToFeatureList(disableFeatures, features::kBackgroundFetch.name); @@ -629,7 +630,7 @@ WebEngineContext::WebEngineContext() // Viz Display Compositor is enabled by default since 73. Doesn't work for us (also implies SurfaceSynchronization) appendToFeatureList(disableFeatures, features::kVizDisplayCompositor.name); // VideoSurfaceLayer is enabled by default since 75. We don't support it. - appendToFeatureList(disableFeatures, media::kUseSurfaceLayerForVideo.name); + appendToFeatureList(enableFeatures, media::kDisableSurfaceLayerForVideo.name); } appendToFeatureSwitch(parsedCommandLine, switches::kDisableFeatures, disableFeatures); diff --git a/src/core/web_engine_settings.cpp b/src/core/web_engine_settings.cpp index c54570b33..edd72a117 100644 --- a/src/core/web_engine_settings.cpp +++ b/src/core/web_engine_settings.cpp @@ -404,18 +404,23 @@ void WebEngineSettings::applySettingsToWebPreferences(content::WebPreferences *p // Set the theme colors. Based on chrome_content_browser_client.cc: const ui::NativeTheme *webTheme = ui::NativeTheme::GetInstanceForWeb(); - if (webTheme) { - switch (webTheme->GetPreferredColorScheme()) { - case ui::NativeTheme::PreferredColorScheme::kDark: - prefs->preferred_color_scheme = blink::PreferredColorScheme::kDark; - break; - case ui::NativeTheme::PreferredColorScheme::kLight: - prefs->preferred_color_scheme = blink::PreferredColorScheme::kLight; - break; - case ui::NativeTheme::PreferredColorScheme::kNoPreference: - prefs->preferred_color_scheme = blink::PreferredColorScheme::kNoPreference; - } - } + // WebPreferences::preferred_color_scheme was deleted in Chromium 80, but it + // will make a comeback in Chromium 82... + // + // See also: https://chromium-review.googlesource.com/c/chromium/src/+/2079192 + // + // if (webTheme) { + // switch (webTheme->GetPreferredColorScheme()) { + // case ui::NativeTheme::PreferredColorScheme::kDark: + // prefs->preferred_color_scheme = blink::PreferredColorScheme::kDark; + // break; + // case ui::NativeTheme::PreferredColorScheme::kLight: + // prefs->preferred_color_scheme = blink::PreferredColorScheme::kLight; + // break; + // case ui::NativeTheme::PreferredColorScheme::kNoPreference: + // prefs->preferred_color_scheme = blink::PreferredColorScheme::kNoPreference; + // } + // } // Apply native CaptionStyle parameters. base::Optional<ui::CaptionStyle> style; |