diff --git a/src/core/access_token_store_qt.cpp b/src/core/access_token_store_qt.cpp deleted file mode 100644 index ebc010408ff2beb106120ebac575726d352244fd..0000000000000000000000000000000000000000 --- a/src/core/access_token_store_qt.cpp +++ /dev/null @@ -1,94 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtWebEngine module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -// Copyright (c) 2012 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE.Chromium file. - -#include "access_token_store_qt.h" - -#include "base/bind.h" -#include "base/message_loop/message_loop.h" -#include "base/strings/utf_string_conversions.h" -#include "content/public/browser/browser_thread.h" -#include "content/public/browser/storage_partition.h" - -#include "browser_context_qt.h" -#include "browser_context_adapter.h" -#include "content_browser_client_qt.h" -#include "web_engine_context.h" - -namespace QtWebEngineCore { - -using device::AccessTokenStore; -using content::BrowserThread; - -AccessTokenStoreQt::AccessTokenStoreQt() - : m_systemRequestContext(0) -{ -} - -AccessTokenStoreQt::~AccessTokenStoreQt() -{ -} - -void AccessTokenStoreQt::LoadAccessTokens(const LoadAccessTokensCallback& callback) -{ - BrowserThread::PostTaskAndReply(BrowserThread::UI, FROM_HERE - , base::Bind(&AccessTokenStoreQt::performWorkOnUIThread, this) - , base::Bind(&AccessTokenStoreQt::respondOnOriginatingThread, this, callback)); -} - -void AccessTokenStoreQt::performWorkOnUIThread() -{ - m_systemRequestContext = content::BrowserContext::GetDefaultStoragePartition(WebEngineContext::current()->defaultBrowserContext()->browserContext())->GetURLRequestContext(); -} - -void AccessTokenStoreQt::respondOnOriginatingThread(const LoadAccessTokensCallback& callback) -{ - callback.Run(m_accessTokenSet, m_systemRequestContext); - m_systemRequestContext = 0; -} - -void AccessTokenStoreQt::SaveAccessToken(const GURL& serverUrl, const base::string16& accessToken) -{ - m_accessTokenSet[serverUrl] = accessToken; -} - -} // namespace QtWebEngineCore diff --git a/src/core/access_token_store_qt.h b/src/core/access_token_store_qt.h deleted file mode 100644 index 74fc0c898a82100936023d1c813e67b3a4f1da5c..0000000000000000000000000000000000000000 --- a/src/core/access_token_store_qt.h +++ /dev/null @@ -1,76 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtWebEngine module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef ACCESS_TOKEN_STORE_QT_H -#define ACCESS_TOKEN_STORE_QT_H - -#include "base/memory/ref_counted.h" -#include "device/geolocation/access_token_store.h" - -#include <QtCore/QFile> -#include <QtCore/QScopedPointer> - -namespace net { -class URLRequestContextGetter; -} - -namespace QtWebEngineCore { - -class AccessTokenStoreQt : public device::AccessTokenStore { -public: - AccessTokenStoreQt(); - ~AccessTokenStoreQt(); - - void LoadAccessTokens(const LoadAccessTokensCallback& request) override; - void SaveAccessToken(const GURL& serverUrl, const base::string16& accessToken) override; - -private: - void performWorkOnUIThread(); - void respondOnOriginatingThread(const LoadAccessTokensCallback& callback); - - - net::URLRequestContextGetter *m_systemRequestContext; - AccessTokenMap m_accessTokenSet; - - DISALLOW_COPY_AND_ASSIGN(AccessTokenStoreQt); -}; - -} // namespace QtWebEngineCore - -#endif // ACCESS_TOKEN_STORE_QT_H diff --git a/src/core/browser_accessibility_manager_qt.cpp b/src/core/browser_accessibility_manager_qt.cpp index 730786bbd5f0659e3446fd42b2a9a713df7042dd..50319e11c31b09a0fce3654d254799103686e0a3 100644 --- a/src/core/browser_accessibility_manager_qt.cpp +++ b/src/core/browser_accessibility_manager_qt.cpp @@ -82,9 +82,8 @@ QAccessibleInterface *BrowserAccessibilityManagerQt::rootParentAccessible() return QAccessible::queryAccessibleInterface(m_parentObject); } -void BrowserAccessibilityManagerQt::NotifyAccessibilityEvent(BrowserAccessibilityEvent::Source source, - ui::AXEvent event_type, - BrowserAccessibility* node) +void BrowserAccessibilityManagerQt::FireBlinkEvent(ui::AXEvent event_type, + BrowserAccessibility* node) { BrowserAccessibilityQt *iface = static_cast<BrowserAccessibilityQt*>(node); diff --git a/src/core/browser_accessibility_manager_qt.h b/src/core/browser_accessibility_manager_qt.h index 239d7344645d82dc620beb7489b423c330b80622..e2315d98abb047846718b01c87e998d978b98315 100644 --- a/src/core/browser_accessibility_manager_qt.h +++ b/src/core/browser_accessibility_manager_qt.h @@ -63,10 +63,8 @@ public: const ui::AXTreeUpdate& initialTree, BrowserAccessibilityDelegate* delegate, BrowserAccessibilityFactory* factory = new BrowserAccessibilityFactoryQt()); - - void NotifyAccessibilityEvent(BrowserAccessibilityEvent::Source source, - ui::AXEvent event_type, - BrowserAccessibility* node) override; + void FireBlinkEvent(ui::AXEvent event_type, + BrowserAccessibility* node) override; QAccessibleInterface *rootParentAccessible(); diff --git a/src/core/browser_accessibility_qt.cpp b/src/core/browser_accessibility_qt.cpp index 8441fdad514f1738c3092ba3dc9c4d3442d77600..89a6f0992302fff939a3f4898d534cb688da758e 100644 --- a/src/core/browser_accessibility_qt.cpp +++ b/src/core/browser_accessibility_qt.cpp @@ -236,7 +236,9 @@ QAccessible::Role BrowserAccessibilityQt::role() const return QAccessible::Column; case ui::AX_ROLE_COLUMN_HEADER: return QAccessible::ColumnHeader; - case ui::AX_ROLE_COMBO_BOX: + case ui::AX_ROLE_COMBO_BOX_GROUPING: + case ui::AX_ROLE_COMBO_BOX_MENU_BUTTON: + case ui::AX_ROLE_TEXT_FIELD_WITH_COMBO_BOX: return QAccessible::ComboBox; case ui::AX_ROLE_COMPLEMENTARY: return QAccessible::ComplementaryContent; diff --git a/src/core/browser_message_filter_qt.cpp b/src/core/browser_message_filter_qt.cpp index 5248c2a736dc185fdd094dd72b36db824b47539f..72b38e1bbfded442df1aad373707408fc7d264f5 100644 --- a/src/core/browser_message_filter_qt.cpp +++ b/src/core/browser_message_filter_qt.cpp @@ -70,9 +70,8 @@ bool BrowserMessageFilterQt::OnMessageReceived(const IPC::Message& message) #if BUILDFLAG(ENABLE_LIBRARY_CDMS) void BrowserMessageFilterQt::OnIsInternalPluginAvailableForMimeType( - const std::string& mime_type, bool* is_available, - std::vector<base::string16>* additional_param_names, - std::vector<base::string16>* additional_param_values) + const std::string& mime_type, + base::Optional<std::vector<content::WebPluginMimeType::Param>> *opt_additional_params) { std::vector<content::WebPluginInfo> plugins; content::PluginService::GetInstance()->GetInternalPlugins(&plugins); @@ -82,15 +81,11 @@ void BrowserMessageFilterQt::OnIsInternalPluginAvailableForMimeType( const std::vector<content::WebPluginMimeType>& mime_types = plugin.mime_types; for (size_t j = 0; j < mime_types.size(); ++j) { if (mime_types[j].mime_type == mime_type) { - *is_available = true; - *additional_param_names = mime_types[j].additional_param_names; - *additional_param_values = mime_types[j].additional_param_values; + *opt_additional_params = base::make_optional(mime_types[j].additional_params); return; } } } - - *is_available = false; } #endif // BUILDFLAG(ENABLE_LIBRARY_CDMS) diff --git a/src/core/browser_message_filter_qt.h b/src/core/browser_message_filter_qt.h index 175319805ca2fcf7a18be962d6976505bc693335..9ad9a0e6ed6a65e7df6e0a28cd29caaa5f09eed3 100644 --- a/src/core/browser_message_filter_qt.h +++ b/src/core/browser_message_filter_qt.h @@ -41,6 +41,7 @@ #define BROWSER_MESSAGE_FILTER_QT_H #include "content/public/browser/browser_message_filter.h" +#include "content/public/common/webplugininfo.h" #include "media/media_features.h" namespace QtWebEngineCore { @@ -62,9 +63,7 @@ private: // |mime_type|. void OnIsInternalPluginAvailableForMimeType( const std::string& mime_type, - bool* is_available, - std::vector<base::string16>* additional_param_names, - std::vector<base::string16>* additional_param_values); + base::Optional<std::vector<content::WebPluginMimeType::Param>> *opt_additional_params); #endif }; diff --git a/src/core/common/qt_messages.h b/src/core/common/qt_messages.h index 3bedb10d217f667e84d7791770fc17fd6b4eef3b..62d88521cf4b10f3e22461d869376189bd3a91e7 100644 --- a/src/core/common/qt_messages.h +++ b/src/core/common/qt_messages.h @@ -4,11 +4,12 @@ // Multiply-included file, no traditional include guard. +#include "base/optional.h" #include "media/media_features.h" #include "content/public/common/common_param_traits.h" +#include "content/public/common/webplugininfo.h" #include "ipc/ipc_message_macros.h" #include "ppapi/features/features.h" - #include "user_script_data.h" IPC_STRUCT_TRAITS_BEGIN(UserScriptData) @@ -81,9 +82,7 @@ IPC_MESSAGE_ROUTED1(WebChannelIPCTransportHost_SendMessage, std::vector<char> /* // When the returned *|is_available| is true, |additional_param_names| and // |additional_param_values| contain the name-value pairs, if any, specified // for the *first* non-disabled plugin found that is registered for |mime_type|. -IPC_SYNC_MESSAGE_CONTROL1_3(QtWebEngineHostMsg_IsInternalPluginAvailableForMimeType, +IPC_SYNC_MESSAGE_CONTROL1_1(QtWebEngineHostMsg_IsInternalPluginAvailableForMimeType, std::string /* mime_type */, - bool /* is_available */, - std::vector<base::string16> /* additional_param_names */, - std::vector<base::string16> /* additional_param_values */) + base::Optional<std::vector<content::WebPluginMimeType::Param>>) #endif diff --git a/src/core/content_browser_client_qt.cpp b/src/core/content_browser_client_qt.cpp index 446764f19ae027e136b876fc397eb59635e7d83f..18d0ff1c92ccbb7d1992af41aaf6aa03abe74717 100644 --- a/src/core/content_browser_client_qt.cpp +++ b/src/core/content_browser_client_qt.cpp @@ -39,6 +39,7 @@ #include "content_browser_client_qt.h" +#include "base/json/json_reader.h" #include "base/memory/ptr_util.h" #include "base/message_loop/message_loop.h" #include "base/threading/thread_restrictions.h" @@ -64,15 +65,15 @@ #include "content/public/browser/web_contents_user_data.h" #include "content/public/common/content_switches.h" #include "content/public/common/main_function_params.h" +#include "content/public/common/service_names.mojom.h" #include "content/public/common/url_constants.h" -#include "device/geolocation/geolocation_delegate.h" -#include "device/geolocation/geolocation_provider.h" #include "mojo/public/cpp/bindings/binding.h" #include "mojo/public/cpp/bindings/binding_set.h" #include "printing/features/features.h" #include "net/ssl/client_cert_identity.h" #include "services/service_manager/public/cpp/bind_source_info.h" #include "services/service_manager/public/cpp/binder_registry.h" +#include "services/service_manager/public/cpp/service.h" #include "third_party/WebKit/public/platform/modules/insecure_input/insecure_input_service.mojom.h" #include "ui/base/ui_base_switches.h" #include "ui/display/screen.h" @@ -81,7 +82,8 @@ #include "ui/gl/gl_share_group.h" #include "ui/gl/gpu_timing.h" -#include "access_token_store_qt.h" +#include "chrome/grit/qt_webengine_resources.h" + #include "browser_context_adapter.h" #include "browser_context_qt.h" #include "browser_message_filter_qt.h" @@ -89,11 +91,6 @@ #include "certificate_error_controller_p.h" #include "desktop_screen_qt.h" #include "devtools_manager_delegate_qt.h" -#ifdef QT_USE_POSITIONING -#include "location_provider_qt.h" -#else -#include "device/geolocation/location_provider.h" -#endif #include "media_capture_devices_dispatcher.h" #include "network_delegate_qt.h" #if BUILDFLAG(ENABLE_BASIC_PRINTING) @@ -249,28 +246,6 @@ std::unique_ptr<base::MessagePump> messagePumpFactory() return base::WrapUnique(new MessagePumpForUIQt); } -// A provider of services needed by Geolocation. -class GeolocationDelegateQt : public device::GeolocationDelegate { -public: - GeolocationDelegateQt() {} - scoped_refptr<device::AccessTokenStore> CreateAccessTokenStore() final - { - return scoped_refptr<device::AccessTokenStore>(new AccessTokenStoreQt); - } - - std::unique_ptr<device::LocationProvider> OverrideSystemLocationProvider() final - { -#ifdef QT_USE_POSITIONING - return base::WrapUnique(new LocationProviderQt); -#else - return nullptr; -#endif - } - -private: - DISALLOW_COPY_AND_ASSIGN(GeolocationDelegateQt); -}; - } // anonymous namespace class BrowserMainPartsQt : public content::BrowserMainParts @@ -285,11 +260,6 @@ public: base::MessageLoop::InitMessagePumpForUIFactory(messagePumpFactory); } - void PreMainMessageLoopRun() override - { - device::GeolocationProvider::SetGeolocationDelegate(new GeolocationDelegateQt()); - } - void PostMainMessageLoopRun() override { // The BrowserContext's destructor uses the MessageLoop so it should be deleted @@ -620,19 +590,72 @@ void ContentBrowserClientQt::BindInterfaceRequestFromFrame(content::RenderFrameH m_frameInterfaces->TryBindInterface(interface_name, &interface_pipe); } -void ContentBrowserClientQt::ExposeInterfacesToRenderer(service_manager::BinderRegistry *registry, - content::AssociatedInterfaceRegistry */*associated_registry*/, - content::RenderProcessHost *render_process_host) +class ServiceQt : public service_manager::Service { +public: + ServiceQt(); + + static std::unique_ptr<service_manager::Service> Create() + { + return base::MakeUnique<ServiceQt>(); + } + +private: + // service_manager::Service: + void OnBindInterface(const service_manager::BindSourceInfo& remote_info, + const std::string& name, + mojo::ScopedMessagePipeHandle handle) override; + + service_manager::BinderRegistry m_registry; + service_manager::BinderRegistryWithArgs<const service_manager::BindSourceInfo&> m_registry_with_source_info; + + DISALLOW_COPY_AND_ASSIGN(ServiceQt); +}; + +ServiceQt::ServiceQt() { + DCHECK_CURRENTLY_ON(content::BrowserThread::IO); #if BUILDFLAG(ENABLE_SPELLCHECK) - registry->AddInterface(base::Bind(&SpellCheckHostImpl::Create, render_process_host->GetID()), - content::BrowserThread::GetTaskRunnerForThread(content::BrowserThread::UI)); -#else - Q_UNUSED(registry); - Q_UNUSED(render_process_host); + m_registry_with_source_info.AddInterface( + base::Bind(&SpellCheckHostImpl::Create), + content::BrowserThread::GetTaskRunnerForThread(content::BrowserThread::UI)); #endif } +void ServiceQt::OnBindInterface(const service_manager::BindSourceInfo& remote_info, + const std::string& name, + mojo::ScopedMessagePipeHandle handle) +{ + content::OverrideOnBindInterface(remote_info, name, &handle); + if (!handle.is_valid()) + return; + + if (!m_registry.TryBindInterface(name, &handle)) + m_registry_with_source_info.TryBindInterface(name, &handle, remote_info); +} + +void ContentBrowserClientQt::RegisterInProcessServices(StaticServiceMap* services) +{ + service_manager::EmbeddedServiceInfo info; + info.factory = base::Bind(&ServiceQt::Create); + services->insert(std::make_pair("qtwebengine", info)); +} + +std::unique_ptr<base::Value> ContentBrowserClientQt::GetServiceManifestOverlay(base::StringPiece name) +{ + ui::ResourceBundle &rb = ui::ResourceBundle::GetSharedInstance(); + int id = -1; + if (name == content::mojom::kPackagedServicesServiceName) + id = IDR_QTWEBENGINE_CONTENT_PACKAGED_SERVICES_MANIFEST_OVERLAY; + else if (name == content::mojom::kRendererServiceName) + id = IDR_QTWEBENGINE_CONTENT_RENDERER_MANIFEST_OVERLAY; + if (id == -1) + return nullptr; + + base::StringPiece manifest_contents = + rb.GetRawDataResourceForScale(id, ui::ScaleFactor::SCALE_FACTOR_NONE); + return base::JSONReader::Read(manifest_contents); +} + bool ContentBrowserClientQt::CanCreateWindow( content::RenderFrameHost* opener, const GURL& opener_url, @@ -688,14 +711,14 @@ bool ContentBrowserClientQt::AllowGetCookie(const GURL &url, bool ContentBrowserClientQt::AllowSetCookie(const GURL &url, const GURL &first_party, - const std::string &cookie_line, + const net::CanonicalCookie& /*cookie*/, content::ResourceContext *context, int /*render_process_id*/, int /*render_frame_id*/, const net::CookieOptions& /*options*/) { NetworkDelegateQt *networkDelegate = static_cast<NetworkDelegateQt *>(context->GetRequestContext()->network_delegate()); - return networkDelegate->canSetCookies(first_party, url, cookie_line); + return networkDelegate->canSetCookies(first_party, url, std::string()); } } // namespace QtWebEngineCore diff --git a/src/core/content_browser_client_qt.h b/src/core/content_browser_client_qt.h index 094ad65490937afb25e3d7cacc3de82176950adf..86bd2977ce4c787c872d0575aabbf9be9fdaae55 100644 --- a/src/core/content_browser_client_qt.h +++ b/src/core/content_browser_client_qt.h @@ -118,10 +118,8 @@ public: void BindInterfaceRequestFromFrame(content::RenderFrameHost* render_frame_host, const std::string& interface_name, mojo::ScopedMessagePipeHandle interface_pipe) override; - void ExposeInterfacesToRenderer(service_manager::BinderRegistry *registry, - content::AssociatedInterfaceRegistry *associated_registry, - content::RenderProcessHost *render_process_host) override; - + void RegisterInProcessServices(StaticServiceMap* services) override; + std::unique_ptr<base::Value> GetServiceManifestOverlay(base::StringPiece name) override; bool CanCreateWindow( content::RenderFrameHost* opener, const GURL& opener_url, @@ -146,7 +144,7 @@ public: bool AllowSetCookie(const GURL& url, const GURL& first_party, - const std::string& cookie_line, + const net::CanonicalCookie& cookie, content::ResourceContext* context, int render_process_id, int render_frame_id, diff --git a/src/core/content_client_qt.cpp b/src/core/content_client_qt.cpp index 66c63b1b8942f6472fd63c563e56380fdc432713..a412345ea717c4eb0424e3d30c38870fd4306f25 100644 --- a/src/core/content_client_qt.cpp +++ b/src/core/content_client_qt.cpp @@ -263,11 +263,9 @@ void AddPepperWidevine(std::vector<content::PepperPluginInfo>* plugins) #endif // defined(USE_PROPRIETARY_CODECS) std::string codec_string = base::JoinString(codecs, ","); - widevine_cdm_mime_type.additional_param_names.push_back( - base::ASCIIToUTF16(kCdmSupportedCodecsParamName)); - widevine_cdm_mime_type.additional_param_values.push_back( - base::ASCIIToUTF16(codec_string)); - + widevine_cdm_mime_type.additional_params.emplace_back( + base::ASCIIToUTF16(kCdmSupportedCodecsParamName), + base::ASCIIToUTF16(codec_string)); widevine_cdm.mime_types.push_back(widevine_cdm_mime_type); widevine_cdm.permissions = kWidevineCdmPluginPermissions; plugins->push_back(widevine_cdm); @@ -300,12 +298,12 @@ std::string ContentClientQt::getUserAgent() } base::StringPiece ContentClientQt::GetDataResource(int resource_id, ui::ScaleFactor scale_factor) const { - return ResourceBundle::GetSharedInstance().GetRawDataResourceForScale(resource_id, scale_factor); + return ui::ResourceBundle::GetSharedInstance().GetRawDataResourceForScale(resource_id, scale_factor); } base::RefCountedMemory *ContentClientQt::GetDataResourceBytes(int resource_id) const { - return ResourceBundle::GetSharedInstance().LoadDataResourceBytes(resource_id); + return ui::ResourceBundle::GetSharedInstance().LoadDataResourceBytes(resource_id); } base::string16 ContentClientQt::GetLocalizedString(int message_id) const diff --git a/src/core/core_chromium.pri b/src/core/core_chromium.pri index e62ffdbfbaf9c9f3a6df9bb4eac4117446b32cc0..783c41e883f4d4dfee165216191dd5dcfb026e25 100644 --- a/src/core/core_chromium.pri +++ b/src/core/core_chromium.pri @@ -35,7 +35,6 @@ qtConfig(egl): CONFIG += egl INCLUDEPATH += $$PWD $$PWD/api SOURCES = \ - access_token_store_qt.cpp \ authentication_dialog_controller.cpp \ browser_accessibility_manager_qt.cpp \ browser_accessibility_qt.cpp \ @@ -114,7 +113,6 @@ SOURCES = \ webui/webui_controller_factory_qt.cpp HEADERS = \ - access_token_store_qt.h \ authentication_dialog_controller_p.h \ authentication_dialog_controller.h \ browser_accessibility_manager_qt.h \ diff --git a/src/core/devtools_frontend_qt.cpp b/src/core/devtools_frontend_qt.cpp index f715eefbf309480a50566cdea033450ec8611376..98008fa5806a8ea1d47de240784ba26c108b8e38 100644 --- a/src/core/devtools_frontend_qt.cpp +++ b/src/core/devtools_frontend_qt.cpp @@ -510,7 +510,7 @@ void DevToolsFrontendQt::SendMessageAck(int request_id, const base::Value *arg) CallClientFunction("DevToolsAPI.embedderMessageAck", &id_value, arg, nullptr); } -void DevToolsFrontendQt::AgentHostClosed(content::DevToolsAgentHost *agentHost, bool /*replaced*/) +void DevToolsFrontendQt::AgentHostClosed(content::DevToolsAgentHost *agentHost) { DCHECK(agentHost == m_agentHost.get()); m_agentHost = nullptr; diff --git a/src/core/devtools_frontend_qt.h b/src/core/devtools_frontend_qt.h index 7d00845baf20b6f081362f2eb84e55bf09a4e970..88cc7aeac833ee33343d49ed1a51838f0a6dc257 100644 --- a/src/core/devtools_frontend_qt.h +++ b/src/core/devtools_frontend_qt.h @@ -96,7 +96,7 @@ protected: ~DevToolsFrontendQt() override; // content::DevToolsAgentHostClient implementation. - void AgentHostClosed(content::DevToolsAgentHost* agent_host, bool replaced) override; + void AgentHostClosed(content::DevToolsAgentHost* agent_host) override; void DispatchProtocolMessage(content::DevToolsAgentHost* agent_host, const std::string& message) override; void SetPreferences(const std::string& json); diff --git a/src/core/devtools_manager_delegate_qt.cpp b/src/core/devtools_manager_delegate_qt.cpp index 305e322786dad9ff34abb22565ccc2bfb560ed7c..e926a818fa264da9003910e511eb0d38d5321644 100644 --- a/src/core/devtools_manager_delegate_qt.cpp +++ b/src/core/devtools_manager_delegate_qt.cpp @@ -49,7 +49,6 @@ #include "base/memory/ptr_util.h" #include "base/strings/string_number_conversions.h" #include "base/strings/utf_string_conversions.h" -#include "chrome/grit/qt_webengine_resources.h" #include "content/browser/devtools/devtools_http_handler.h" #include "content/public/browser/devtools_agent_host.h" #include "content/public/browser/devtools_frontend_host.h" @@ -65,6 +64,8 @@ #include "net/socket/tcp_server_socket.h" #include "ui/base/resource/resource_bundle.h" +#include "qtwebengine/grit/qt_webengine_resources.h" + #include "type_conversion.h" using content::DevToolsAgentHost; @@ -180,7 +181,7 @@ void DevToolsManagerDelegateQt::Initialized(const net::IPEndPoint *ip_address) std::string DevToolsManagerDelegateQt::GetDiscoveryPageHTML() { - return ResourceBundle::GetSharedInstance().GetRawDataResource(IDR_DEVTOOLS_DISCOVERY_PAGE_HTML).as_string(); + return ui::ResourceBundle::GetSharedInstance().GetRawDataResource(IDR_DEVTOOLS_DISCOVERY_PAGE_HTML).as_string(); } std::string DevToolsManagerDelegateQt::GetFrontendResource(const std::string& path) diff --git a/src/core/gl_surface_qt.cpp b/src/core/gl_surface_qt.cpp index 941fbd211347f222ae0ff0825b68931116c139c6..918001adbe54547ce96636f50c6dc7a40c927c1c 100644 --- a/src/core/gl_surface_qt.cpp +++ b/src/core/gl_surface_qt.cpp @@ -288,9 +288,9 @@ bool GLSurfaceQtGLX::Initialize(GLSurfaceFormat format) const int pbuffer_attributes[] = { GLX_PBUFFER_WIDTH, m_size.width(), GLX_PBUFFER_HEIGHT, m_size.height(), - GLX_LARGEST_PBUFFER, False, - GLX_PRESERVED_CONTENTS, False, - 0 + GLX_LARGEST_PBUFFER, x11::False, + GLX_PRESERVED_CONTENTS, x11::False, + GLX_NONE }; m_surfaceBuffer = glXCreatePbuffer(display, static_cast<GLXFBConfig>(g_config), pbuffer_attributes); @@ -577,7 +577,7 @@ bool GLSurfaceQt::IsOffscreen() return true; } -gfx::SwapResult GLSurfaceQt::SwapBuffers() +gfx::SwapResult GLSurfaceQt::SwapBuffers(const PresentationCallback &callback) { LOG(ERROR) << "Attempted to call SwapBuffers on a pbuffer."; Q_UNREACHABLE(); diff --git a/src/core/gl_surface_qt.h b/src/core/gl_surface_qt.h index c26cb7ed0cf7e46bc77fe2eaf0a4ad185c2c6ddf..ceb8cbba3b394e84c2ea8c762c5b53115fce3098 100644 --- a/src/core/gl_surface_qt.h +++ b/src/core/gl_surface_qt.h @@ -57,7 +57,7 @@ public: void *GetDisplay() override; void *GetConfig() override; bool IsOffscreen() override; - gfx::SwapResult SwapBuffers() override; + gfx::SwapResult SwapBuffers(const PresentationCallback &callback) override; gfx::Size GetSize() override; GLSurfaceFormat GetFormat() override; diff --git a/src/core/javascript_dialog_manager_qt.cpp b/src/core/javascript_dialog_manager_qt.cpp index fe465740539bd43b9a20d50e651c5a4dfbe547a7..bfa23d2a1c548d9675285716666d5664e423884a 100644 --- a/src/core/javascript_dialog_manager_qt.cpp +++ b/src/core/javascript_dialog_manager_qt.cpp @@ -71,7 +71,8 @@ void JavaScriptDialogManagerQt::RunJavaScriptDialog(content::WebContents *webCon runDialogForContents(webContents, dialogType, toQt(messageText), toQt(defaultPromptText), toQt(originUrl.GetOrigin()), std::move(callback)); } -void JavaScriptDialogManagerQt::RunBeforeUnloadDialog(content::WebContents *webContents, bool isReload, +void JavaScriptDialogManagerQt::RunBeforeUnloadDialog(content::WebContents *webContents, content::RenderFrameHost */*render_frame_host*/, + bool isReload, content::JavaScriptDialogManager::DialogClosedCallback callback) { Q_UNUSED(isReload); runDialogForContents(webContents, WebContentsAdapterClient::UnloadDialog, QString(), QString(), QUrl(), std::move(callback)); diff --git a/src/core/javascript_dialog_manager_qt.h b/src/core/javascript_dialog_manager_qt.h index 2856b30f0b3016b555f94eb23585afd7b1f0e1f7..aa82b690f25896854777e93c9a1abfb29dc573be 100644 --- a/src/core/javascript_dialog_manager_qt.h +++ b/src/core/javascript_dialog_manager_qt.h @@ -64,8 +64,10 @@ public: const base::string16 &messageText, const base::string16 &defaultPromptText, DialogClosedCallback callback, bool *didSuppressMessage) override; - void RunBeforeUnloadDialog(content::WebContents *, bool isReload, - content::JavaScriptDialogManager::DialogClosedCallback callback) override; + void RunBeforeUnloadDialog(content::WebContents *web_contents, + content::RenderFrameHost *render_frame_host, + bool is_reload, + DialogClosedCallback callback) override; bool HandleJavaScriptDialog(content::WebContents *, bool accept, const base::string16 *promptOverride) override; void CancelDialogs(content::WebContents *contents, bool /*reset_state*/) override { diff --git a/src/core/location_provider_qt.cpp b/src/core/location_provider_qt.cpp index a507f32d15c2e0d17a9ef5a3592500665748e1bb..5f0df2c0c0203a4b9e871fe5a816ddd6f86339c1 100644 --- a/src/core/location_provider_qt.cpp +++ b/src/core/location_provider_qt.cpp @@ -161,8 +161,8 @@ void QtPositioningHelper::updatePosition(const QGeoPositionInfo &pos) if (!pos.isValid()) return; Q_ASSERT(m_positionInfoSource->error() == QGeoPositionInfoSource::NoError); - device::Geoposition newPos; - newPos.error_code = device::Geoposition::ERROR_CODE_NONE; + device::mojom::Geoposition newPos; + newPos.error_code = device::mojom::Geoposition::ErrorCode::NONE; newPos.error_message.clear(); newPos.timestamp = toTime(pos.timestamp()); @@ -195,15 +195,15 @@ void QtPositioningHelper::updatePosition(const QGeoPositionInfo &pos) void QtPositioningHelper::error(QGeoPositionInfoSource::Error positioningError) { Q_ASSERT(positioningError != QGeoPositionInfoSource::NoError); - device::Geoposition newPos; + device::mojom::Geoposition newPos; switch (positioningError) { case QGeoPositionInfoSource::AccessError: - newPos.error_code = device::Geoposition::ERROR_CODE_PERMISSION_DENIED; + newPos.error_code = device::mojom::Geoposition::ErrorCode::PERMISSION_DENIED; break; case QGeoPositionInfoSource::ClosedError: case QGeoPositionInfoSource::UnknownSourceError: // position unavailable is as good as it gets in Geoposition default: - newPos.error_code = device::Geoposition::ERROR_CODE_POSITION_UNAVAILABLE; + newPos.error_code = device::mojom::Geoposition::ErrorCode::POSITION_UNAVAILABLE; break; } if (m_locationProvider) @@ -212,11 +212,11 @@ void QtPositioningHelper::error(QGeoPositionInfoSource::Error positioningError) void QtPositioningHelper::timeout() { - device::Geoposition newPos; + device::mojom::Geoposition newPos; // content::Geoposition::ERROR_CODE_TIMEOUT is not handled properly in the renderer process, and the timeout // argument used in JS never comes all the way to the browser process. // Let's just treat it like any other error where the position is unavailable. - newPos.error_code = device::Geoposition::ERROR_CODE_POSITION_UNAVAILABLE; + newPos.error_code = device::mojom::Geoposition::ErrorCode::POSITION_UNAVAILABLE; if (m_locationProvider) postToLocationProvider(base::Bind(&LocationProviderQt::updatePosition, m_locationProviderFactory.GetWeakPtr(), newPos)); } @@ -240,7 +240,7 @@ LocationProviderQt::~LocationProviderQt() } } -bool LocationProviderQt::StartProvider(bool highAccuracy) +void LocationProviderQt::StartProvider(bool highAccuracy) { QThread *guiThread = qApp->thread(); if (!m_positioningHelper) { @@ -249,7 +249,6 @@ bool LocationProviderQt::StartProvider(bool highAccuracy) } QMetaObject::invokeMethod(m_positioningHelper, "start", Qt::QueuedConnection, Q_ARG(bool, highAccuracy)); - return true; } void LocationProviderQt::StopProvider() @@ -269,7 +268,7 @@ void LocationProviderQt::SetUpdateCallback(const LocationProviderUpdateCallback& m_callback = callback; } -void LocationProviderQt::updatePosition(const device::Geoposition &position) +void LocationProviderQt::updatePosition(const device::mojom::Geoposition &position) { m_lastKnownPosition = position; m_callback.Run(this, position); diff --git a/src/core/location_provider_qt.h b/src/core/location_provider_qt.h index b1ff354a03b1a5a2034299467b72d02f3b995fd3..5c59b07ede010c5953990173d50e59131aeee6b9 100644 --- a/src/core/location_provider_qt.h +++ b/src/core/location_provider_qt.h @@ -42,8 +42,8 @@ #include <QtCore/qcompilerdetection.h> -#include "device/geolocation/geoposition.h" -#include "device/geolocation/location_provider.h" +#include "device/geolocation/public/cpp/geoposition.h" +#include "device/geolocation/public/cpp/location_provider.h" QT_FORWARD_DECLARE_CLASS(QThread) @@ -61,18 +61,18 @@ public: virtual ~LocationProviderQt(); // LocationProvider - bool StartProvider(bool high_accuracy) override; + void StartProvider(bool high_accuracy) override; void StopProvider() override; - const device::Geoposition& GetPosition() override { return m_lastKnownPosition; } + const device::mojom::Geoposition& GetPosition() override { return m_lastKnownPosition; } void OnPermissionGranted() override; void SetUpdateCallback(const LocationProviderUpdateCallback& callback) override; private: friend class QtPositioningHelper; - void updatePosition(const device::Geoposition &); + void updatePosition(const device::mojom::Geoposition &); - device::Geoposition m_lastKnownPosition; + device::mojom::Geoposition m_lastKnownPosition; LocationProviderUpdateCallback m_callback; QtPositioningHelper *m_positioningHelper; }; diff --git a/src/core/network_delegate_qt.cpp b/src/core/network_delegate_qt.cpp index a378584b45fb9d200f095c92b7995747651d975d..acebbcf0b458547725df3143608b12fc6fda82ff 100644 --- a/src/core/network_delegate_qt.cpp +++ b/src/core/network_delegate_qt.cpp @@ -281,10 +281,10 @@ void NetworkDelegateQt::OnCompleted(net::URLRequest */*request*/, bool /*started } bool NetworkDelegateQt::OnCanSetCookie(const net::URLRequest& request, - const std::string& cookie_line, + const net::CanonicalCookie & /*cookie*/, net::CookieOptions*) { - return canSetCookies(request.site_for_cookies(), request.url(), cookie_line); + return canSetCookies(request.site_for_cookies(), request.url(), std::string()); } bool NetworkDelegateQt::OnCanGetCookies(const net::URLRequest& request, const net::CookieList&) @@ -332,7 +332,7 @@ void NetworkDelegateQt::OnBeforeRedirect(net::URLRequest*, const GURL&) { } -void NetworkDelegateQt::OnResponseStarted(net::URLRequest*) +void NetworkDelegateQt::OnResponseStarted(net::URLRequest*, int) { } diff --git a/src/core/network_delegate_qt.h b/src/core/network_delegate_qt.h index 21e00c71086738e7d5d319d50901fc494ccb1bd1..b5165d22952582fbee4c762fc24a2c55e3cce2f7 100644 --- a/src/core/network_delegate_qt.h +++ b/src/core/network_delegate_qt.h @@ -62,14 +62,14 @@ public: // net::NetworkDelegate implementation int OnBeforeURLRequest(net::URLRequest* request, const net::CompletionCallback& callback, GURL* newUrl) override; void OnURLRequestDestroyed(net::URLRequest* request) override; - bool OnCanSetCookie(const net::URLRequest&, const std::string&, net::CookieOptions*) override; + bool OnCanSetCookie(const net::URLRequest& request, const net::CanonicalCookie& cookie, net::CookieOptions* options) override; int OnBeforeStartTransaction(net::URLRequest *request, const net::CompletionCallback &callback, net::HttpRequestHeaders *headers) override; void OnBeforeSendHeaders(net::URLRequest* request, const net::ProxyInfo& proxy_info, const net::ProxyRetryInfoMap& proxy_retry_info, net::HttpRequestHeaders* headers) override; void OnStartTransaction(net::URLRequest *request, const net::HttpRequestHeaders &headers) override; int OnHeadersReceived(net::URLRequest*, const net::CompletionCallback&, const net::HttpResponseHeaders*, scoped_refptr<net::HttpResponseHeaders>*, GURL*) override; void OnBeforeRedirect(net::URLRequest*, const GURL&) override; - void OnResponseStarted(net::URLRequest*) override; + void OnResponseStarted(net::URLRequest*, int) override; void OnNetworkBytesReceived(net::URLRequest*, int64_t) override; void OnNetworkBytesSent(net::URLRequest *, int64_t) override; void OnCompleted(net::URLRequest *request, bool started, int net_error) override; diff --git a/src/core/permission_manager_qt.cpp b/src/core/permission_manager_qt.cpp index 95d01dd070978e6a55a9b8332288e9189783d917..c65da34af77ab64aa8a700d13c8b8e24ef88fa34 100644 --- a/src/core/permission_manager_qt.cpp +++ b/src/core/permission_manager_qt.cpp @@ -62,13 +62,14 @@ BrowserContextAdapter::PermissionType toQt(content::PermissionType type) case content::PermissionType::FLASH: case content::PermissionType::NOTIFICATIONS: case content::PermissionType::MIDI_SYSEX: - case content::PermissionType::PUSH_MESSAGING: case content::PermissionType::PROTECTED_MEDIA_IDENTIFIER: case content::PermissionType::MIDI: case content::PermissionType::DURABLE_STORAGE: case content::PermissionType::BACKGROUND_SYNC: case content::PermissionType::SENSORS: case content::PermissionType::ACCESSIBILITY_EVENTS: + case content::PermissionType::CLIPBOARD_READ: + case content::PermissionType::CLIPBOARD_WRITE: case content::PermissionType::NUM: break; } diff --git a/src/core/qtwebengine.gni b/src/core/qtwebengine.gni index eeaf6c15fa85cac9b4e8d79389af11f74a7e959e..60165f3205a590409c14c46b90660d9e823417e2 100644 --- a/src/core/qtwebengine.gni +++ b/src/core/qtwebengine.gni @@ -13,12 +13,10 @@ include_dirs = [ deps = [ "//base", - "//chrome/common:features", "//components/error_page/common", "//components/keyed_service/content", "//components/visitedlink/browser", "//components/visitedlink/renderer", - "//components/signin/core/common:signin_features", "//components/web_cache/browser", "//components/web_cache/renderer", "//components/spellcheck:build_features", @@ -49,6 +47,8 @@ if (is_linux && !is_desktop_linux) { deps += [ "//ui/events/ozone:events_ozone_evdev"] } +data_deps = [ "//qtwebengine/browser:service_manifests" ] + defines = [ "CHROMIUM_VERSION=\"" + chromium_version[0] + "\"" ] diff --git a/src/core/qtwebengine_resources.gni b/src/core/qtwebengine_resources.gni index bc86eee7bc329de568a693cbb39ce79ad1201b4c..491b26efcab9f1f85f5ba123e90760ed98ee8aca 100644 --- a/src/core/qtwebengine_resources.gni +++ b/src/core/qtwebengine_resources.gni @@ -17,7 +17,7 @@ group("qtwebengine_resources") { repack("qtwebengine_repack_resources") { sources = [ "$root_gen_dir/blink/public/resources/blink_resources.pak", - "$root_gen_dir/chrome/qt_webengine_resources.pak", + "$root_gen_dir/qtwebengine/qt_webengine_resources.pak", "$root_gen_dir/chrome/quota_internals_resources.pak", "$root_gen_dir/chrome/task_scheduler_internals_resources.pak", "$root_gen_dir/components/components_resources.pak", @@ -27,7 +27,7 @@ repack("qtwebengine_repack_resources") { ] output = "$root_out_dir/qtwebengine_resources.pak" deps = [ - "//chrome/browser/resources:qt_webengine_resources", + "//qtwebengine/browser:qt_webengine_resources", "//chrome/browser/resources:quota_internals_resources", "//chrome/browser/resources:task_scheduler_internals_resources", "//components/resources:components_resources_grit", diff --git a/src/core/qtwebengine_sources.gni b/src/core/qtwebengine_sources.gni index bdedf11d39ab3e4f78291dfa1b5e2397f17daa56..c5c642ddde18d63b516edd36e1a30b81805d0938 100644 --- a/src/core/qtwebengine_sources.gni +++ b/src/core/qtwebengine_sources.gni @@ -74,6 +74,8 @@ source_set("qtwebengine_sources") { "//chrome/common/pref_names.h", "//chrome/common/url_constants.cc", "//chrome/common/url_constants.h", + "//chrome/common/webui_url_constants.cc", + "//chrome/common/webui_url_constants.h", "//extensions/common/constants.cc", "//extensions/common/constants.h", "//extensions/common/url_pattern.cc", diff --git a/src/core/render_widget_host_view_qt.cpp b/src/core/render_widget_host_view_qt.cpp index 49c07d3ed1c3608c25c56bb2444f9a03b40cadc3..a9e2f2ccb4ee1b319a19022b1668cadaceb9aa76 100644 --- a/src/core/render_widget_host_view_qt.cpp +++ b/src/core/render_widget_host_view_qt.cpp @@ -342,7 +342,7 @@ RenderWidgetHostViewQt::RenderWidgetHostViewQt(content::RenderWidgetHost* widget { auto* task_runner = base::ThreadTaskRunnerHandle::Get().get(); m_beginFrameSource.reset(new viz::DelayBasedBeginFrameSource( - base::MakeUnique<viz::DelayBasedTimeSource>(task_runner))); + base::MakeUnique<viz::DelayBasedTimeSource>(task_runner), 0)); m_host->SetView(this); #ifndef QT_NO_ACCESSIBILITY @@ -732,7 +732,7 @@ void RenderWidgetHostViewQt::DidCreateNewRendererCompositorFrameSink(viz::mojom: m_rendererCompositorFrameSink = frameSink; } -void RenderWidgetHostViewQt::SubmitCompositorFrame(const viz::LocalSurfaceId &local_surface_id, viz::CompositorFrame frame) +void RenderWidgetHostViewQt::SubmitCompositorFrame(const viz::LocalSurfaceId &local_surface_id, viz::CompositorFrame frame, viz::mojom::HitTestRegionListPtr) { bool scrollOffsetChanged = (m_lastScrollOffset != frame.metadata.root_scroll_offset); bool contentsSizeChanged = (m_lastContentsSize != frame.metadata.root_layer_size); diff --git a/src/core/render_widget_host_view_qt.h b/src/core/render_widget_host_view_qt.h index 548142c84e8fe2743c696153be92e71c53dabad8..678c1a8ee13e9aa37f88c9c7516d131c4ad6a435 100644 --- a/src/core/render_widget_host_view_qt.h +++ b/src/core/render_widget_host_view_qt.h @@ -152,7 +152,7 @@ public: void SetTooltipText(const base::string16 &tooltip_text) override; bool HasAcceleratedSurface(const gfx::Size&) override; void DidCreateNewRendererCompositorFrameSink(viz::mojom::CompositorFrameSinkClient* renderer_compositor_frame_sink) override; - void SubmitCompositorFrame(const viz::LocalSurfaceId&, viz::CompositorFrame) override; + void SubmitCompositorFrame(const viz::LocalSurfaceId&, viz::CompositorFrame, viz::mojom::HitTestRegionListPtr) override; void WheelEventAck(const blink::WebMouseWheelEvent &event, content::InputEventAckState ack_result) override; void GetScreenInfo(content::ScreenInfo* results); diff --git a/src/core/renderer/content_renderer_client_qt.cpp b/src/core/renderer/content_renderer_client_qt.cpp index a77bcf7854f92989fffaed09d53aa3adb8d4a8df..63b99c7bc4c1c37e58e9f93b449349a8c0b53ff1 100644 --- a/src/core/renderer/content_renderer_client_qt.cpp +++ b/src/core/renderer/content_renderer_client_qt.cpp @@ -80,6 +80,7 @@ #include "renderer/user_resource_controller.h" #include "renderer/web_channel_ipc_transport.h" #include "services/service_manager/public/cpp/binder_registry.h" +#include "services/service_manager/public/cpp/connector.h" #include "components/grit/components_resources.h" @@ -115,7 +116,7 @@ void ContentRendererClientQt::RenderThreadStarted() renderThread->AddObserver(UserResourceController::instance()); #if BUILDFLAG(ENABLE_SPELLCHECK) - m_spellCheck.reset(new SpellCheck()); + m_spellCheck.reset(new SpellCheck(this)); renderThread->AddObserver(m_spellCheck.data()); #endif } @@ -134,7 +135,7 @@ void ContentRendererClientQt::RenderFrameCreated(content::RenderFrame* render_fr UserResourceController::instance()->renderFrameCreated(render_frame); #if BUILDFLAG(ENABLE_SPELLCHECK) - new SpellCheckProvider(render_frame, m_spellCheck.data()); + new SpellCheckProvider(render_frame, m_spellCheck.data(), this); #endif #if BUILDFLAG(ENABLE_BASIC_PRINTING) new printing::PrintRenderFrameHelper( @@ -182,22 +183,26 @@ bool ContentRendererClientQt::ShouldSuppressErrorPage(content::RenderFrame *fram return !(frame->GetWebkitPreferences().enable_error_page); } -std::string domain2String(blink::WebURLError::Domain domain) +// To tap into the chromium localized strings. Ripped from the chrome layer (highly simplified). +void ContentRendererClientQt::GetNavigationErrorStrings(content::RenderFrame* renderFrame, const blink::WebURLRequest &failedRequest, + const blink::WebURLError &web_error, + std::string *errorHtml, base::string16 *errorDescription) { - switch (domain) { - case blink::WebURLError::Domain::kEmpty: - return "(null)"; - case blink::WebURLError::Domain::kNet: - return "net"; - case blink::WebURLError::Domain::kTest: - return "testing"; - } - Q_UNREACHABLE(); - return std::string(); + GetNavigationErrorStringsInternal(renderFrame, failedRequest, + error_page::Error::NetError(web_error.url(), web_error.reason(), web_error.has_copy_in_cache()), + errorHtml, errorDescription); } -// To tap into the chromium localized strings. Ripped from the chrome layer (highly simplified). -void ContentRendererClientQt::GetNavigationErrorStrings(content::RenderFrame* renderFrame, const blink::WebURLRequest &failedRequest, const blink::WebURLError &error, std::string *errorHtml, base::string16 *errorDescription) +void ContentRendererClientQt::GetNavigationErrorStringsForHttpStatusError(content::RenderFrame* renderFrame, const blink::WebURLRequest& failedRequest, + const GURL& unreachable_url, int http_status, + std::string* errorHtml, base::string16* errorDescription) +{ + GetNavigationErrorStringsInternal(renderFrame, failedRequest, + error_page::Error::HttpError(unreachable_url, http_status), + errorHtml, errorDescription); +} + +void ContentRendererClientQt::GetNavigationErrorStringsInternal(content::RenderFrame */*renderFrame*/, const blink::WebURLRequest &failedRequest, const error_page::Error &error, std::string *errorHtml, base::string16 *errorDescription) { const bool isPost = QByteArray::fromStdString(failedRequest.HttpMethod().Utf8()) == QByteArrayLiteral("POST"); @@ -211,8 +216,8 @@ void ContentRendererClientQt::GetNavigationErrorStrings(content::RenderFrame* re // NetErrorHelper::GetErrorStringsForDnsProbe, but that one is harder to untangle. error_page::LocalizedError::GetStrings( - error.reason, domain2String(error.domain), error.unreachable_url, isPost, - error.stale_copy_in_cache, false, false, + error.reason(), error.domain(), error.url(), isPost, + error.stale_copy_in_cache(), false, false, locale, std::unique_ptr<error_page::ErrorPageParams>(), &errorStrings); resourceId = IDR_NET_ERROR_HTML; @@ -224,7 +229,7 @@ void ContentRendererClientQt::GetNavigationErrorStrings(content::RenderFrame* re } if (errorDescription) - *errorDescription = error_page::LocalizedError::GetErrorDetails(domain2String(error.domain), error.reason, isPost); + *errorDescription = error_page::LocalizedError::GetErrorDetails(error.domain(), error.reason(), isPost); } unsigned long long ContentRendererClientQt::VisitedLinkHash(const char *canonicalUrl, size_t length) @@ -237,6 +242,13 @@ bool ContentRendererClientQt::IsLinkVisited(unsigned long long linkHash) return m_visitedLinkSlave->IsVisited(linkHash); } +void ContentRendererClientQt::GetInterface(const std::string &interface_name, mojo::ScopedMessagePipeHandle interface_pipe) +{ + content::RenderThread::Get()->GetConnector()->BindInterface(service_manager::Identity("qtwebengine"), + interface_name, + std::move(interface_pipe)); +} + // The following is based on chrome/renderer/media/chrome_key_systems.cc: // Copyright 2013 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be @@ -246,18 +258,18 @@ bool ContentRendererClientQt::IsLinkVisited(unsigned long long linkHash) static const char kExternalClearKeyPepperType[] = "application/x-ppapi-clearkey-cdm"; static bool IsPepperCdmAvailable(const std::string& pepper_type, - std::vector<base::string16>* additional_param_names, - std::vector<base::string16>* additional_param_values) + std::vector<content::WebPluginMimeType::Param>* additional_params) { - bool is_available = false; + base::Optional<std::vector<content::WebPluginMimeType::Param>> opt_additional_params; content::RenderThread::Get()->Send( new QtWebEngineHostMsg_IsInternalPluginAvailableForMimeType( pepper_type, - &is_available, - additional_param_names, - additional_param_values)); + &opt_additional_params)); + + if (opt_additional_params) + *additional_params = *opt_additional_params; - return is_available; + return opt_additional_params.has_value(); } // KeySystemProperties implementation for external Clear Key systems. @@ -349,11 +361,8 @@ static void AddExternalClearKey(std::vector<std::unique_ptr<media::KeySystemProp static const char kExternalClearKeyCrashKeySystem[] = "org.chromium.externalclearkey.crash"; - std::vector<base::string16> additional_param_names; - std::vector<base::string16> additional_param_values; - if (!IsPepperCdmAvailable(kExternalClearKeyPepperType, - &additional_param_names, - &additional_param_values)) + std::vector<content::WebPluginMimeType::Param> additional_params; + if (!IsPepperCdmAvailable(kExternalClearKeyPepperType, &additional_params)) return; concrete_key_systems->emplace_back( @@ -389,11 +398,8 @@ static void AddPepperBasedWidevine(std::vector<std::unique_ptr<media::KeySystemP // return; //#endif // defined(WIDEVINE_CDM_MIN_GLIBC_VERSION) - std::vector<base::string16> additional_param_names; - std::vector<base::string16> additional_param_values; - if (!IsPepperCdmAvailable(kWidevineCdmPluginMimeType, - &additional_param_names, - &additional_param_values)) { + std::vector<content::WebPluginMimeType::Param> additional_params; + if (!IsPepperCdmAvailable(kWidevineCdmPluginMimeType, &additional_params)) { DVLOG(1) << "Widevine CDM is not currently available."; return; } diff --git a/src/core/renderer/content_renderer_client_qt.h b/src/core/renderer/content_renderer_client_qt.h index 18cf129c25f1d1a47d758e19519724840f94abc6..11538b3f075b123629f241c9640a18b24ffdd6f5 100644 --- a/src/core/renderer/content_renderer_client_qt.h +++ b/src/core/renderer/content_renderer_client_qt.h @@ -41,9 +41,14 @@ #include "content/public/renderer/content_renderer_client.h" #include "components/spellcheck/spellcheck_build_features.h" +#include "services/service_manager/public/cpp/local_interface_provider.h" #include <QScopedPointer> +namespace error_page { +class Error; +} + namespace visitedlink { class VisitedLinkSlave; } @@ -58,7 +63,9 @@ class SpellCheck; namespace QtWebEngineCore { -class ContentRendererClientQt : public content::ContentRendererClient { +class ContentRendererClientQt : public content::ContentRendererClient + , public service_manager::LocalInterfaceProvider +{ public: ContentRendererClientQt(); ~ContentRendererClientQt(); @@ -69,6 +76,9 @@ public: bool HasErrorPage(int http_status_code) override; void GetNavigationErrorStrings(content::RenderFrame* renderFrame, const blink::WebURLRequest& failedRequest, const blink::WebURLError& error, std::string* errorHtml, base::string16* errorDescription) override; + void GetNavigationErrorStringsForHttpStatusError(content::RenderFrame* render_frame, const blink::WebURLRequest& failed_request, + const GURL& unreachable_url, int http_status, + std::string* error_html, base::string16* error_description) override; unsigned long long VisitedLinkHash(const char *canonicalUrl, size_t length) override; bool IsLinkVisited(unsigned long long linkHash) override; @@ -78,6 +88,13 @@ public: void RunScriptsAtDocumentEnd(content::RenderFrame* render_frame) override; private: + // service_manager::LocalInterfaceProvider: + void GetInterface(const std::string& name, mojo::ScopedMessagePipeHandle request_handle) override; + + void GetNavigationErrorStringsInternal(content::RenderFrame* renderFrame, const blink::WebURLRequest& failedRequest, + const error_page::Error& error, std::string* errorHtml, base::string16* errorDescription); + + QScopedPointer<visitedlink::VisitedLinkSlave> m_visitedLinkSlave; QScopedPointer<web_cache::WebCacheImpl> m_webCacheImpl; #if BUILDFLAG(ENABLE_SPELLCHECK) diff --git a/src/core/renderer/pepper/pepper_flash_renderer_host_qt.cpp b/src/core/renderer/pepper/pepper_flash_renderer_host_qt.cpp index bac1d7c1fa655c71be8c78d3548dcf810d6d7003..5d21201bac1a492d81d1e5170e24cccae825c683 100644 --- a/src/core/renderer/pepper/pepper_flash_renderer_host_qt.cpp +++ b/src/core/renderer/pepper/pepper_flash_renderer_host_qt.cpp @@ -251,12 +251,13 @@ int32_t PepperFlashRendererHostQt::OnDrawGlyphs( params.glyph_indices.empty()) return PP_ERROR_FAILED; - int style = SkTypeface::kNormal; - if (static_cast<PP_BrowserFont_Trusted_Weight>(params.font_desc.weight) >= PP_BROWSERFONT_TRUSTED_WEIGHT_BOLD) - style |= SkTypeface::kBold; + int weight = (params.font_desc.weight + 1) * 100; + SkFontStyle::Slant slant = SkFontStyle::kUpright_Slant; if (params.font_desc.italic) - style |= SkTypeface::kItalic; - sk_sp<SkTypeface> typeface(SkTypeface::MakeFromName(params.font_desc.face.c_str(), SkFontStyle::FromOldStyle(style))); + slant = SkFontStyle::kItalic_Slant; + SkFontStyle style(weight, SkFontStyle::kNormal_Width, slant); + sk_sp<SkTypeface> typeface( + SkTypeface::MakeFromName(params.font_desc.face.c_str(), style)); if (!typeface) return PP_ERROR_FAILED; diff --git a/src/core/renderer_host/pepper/pepper_host_factory_qt.cpp b/src/core/renderer_host/pepper/pepper_host_factory_qt.cpp index 46cd16751ddfbf294ff54ba3c427e6cac74cdaac..00ab4963b0ce34a98cd2e81edb6fa390c1ac63fa 100644 --- a/src/core/renderer_host/pepper/pepper_host_factory_qt.cpp +++ b/src/core/renderer_host/pepper/pepper_host_factory_qt.cpp @@ -86,7 +86,7 @@ std::unique_ptr<ppapi::host::ResourceHost> PepperHostFactoryQt::CreateResourceHo case PpapiHostMsg_Flash_Create::ID: return base::WrapUnique(new PepperFlashBrowserHostQt(host_, instance, resource)); case PpapiHostMsg_FlashClipboard_Create::ID: { - scoped_refptr<ResourceMessageFilter> clipboard_filter(new chrome::PepperFlashClipboardMessageFilter); + scoped_refptr<ResourceMessageFilter> clipboard_filter(new PepperFlashClipboardMessageFilter); return base::WrapUnique(new MessageFilterHost( host_->GetPpapiHost(), instance, resource, clipboard_filter)); } diff --git a/src/core/ssl_host_state_delegate_qt.cpp b/src/core/ssl_host_state_delegate_qt.cpp index d7e86cfbcab5fb42450005e3f336ed94f5004c56..9fa62cacb3e16ca426f6fb4eaaeb87a7ea8f9b6b 100644 --- a/src/core/ssl_host_state_delegate_qt.cpp +++ b/src/core/ssl_host_state_delegate_qt.cpp @@ -47,13 +47,6 @@ namespace QtWebEngineCore { // Mirrors implementation in aw_ssl_host_state_delegate.cc -static net::SHA256HashValue getChainFingerprint256(const net::X509Certificate &cert) -{ - net::SHA256HashValue fingerprint = - net::X509Certificate::CalculateChainFingerprint256(cert.os_cert_handle(), cert.GetIntermediateCertificates()); - return fingerprint; -} - CertPolicy::CertPolicy() { } @@ -64,7 +57,7 @@ CertPolicy::~CertPolicy() bool CertPolicy::Check(const net::X509Certificate& cert, net::CertStatus error) const { - net::SHA256HashValue fingerprint = getChainFingerprint256(cert); + net::SHA256HashValue fingerprint = cert.CalculateChainFingerprint256(); auto allowed_iter = m_allowed.find(fingerprint); if ((allowed_iter != m_allowed.end()) && (allowed_iter->second & error) && ((allowed_iter->second & error) == error)) return true; @@ -73,7 +66,7 @@ bool CertPolicy::Check(const net::X509Certificate& cert, net::CertStatus error) void CertPolicy::Allow(const net::X509Certificate& cert, net::CertStatus error) { - net::SHA256HashValue fingerprint = getChainFingerprint256(cert); + net::SHA256HashValue fingerprint = cert.CalculateChainFingerprint256(); m_allowed[fingerprint] |= error; } diff --git a/src/core/type_conversion.h b/src/core/type_conversion.h index eb7c9d48b924ccc25ece99827a69061cf4a7cc30..023bed21e64e2fe69445bde600ef4a54d1dd592b 100644 --- a/src/core/type_conversion.h +++ b/src/core/type_conversion.h @@ -132,6 +132,11 @@ inline gfx::Point toGfx(const QPoint& point) return gfx::Point(point.x(), point.y()); } +inline gfx::PointF toGfx(const QPointF& point) +{ + return gfx::PointF(point.x(), point.y()); +} + inline QRect toQt(const gfx::Rect &rect) { return QRect(rect.x(), rect.y(), rect.width(), rect.height()); diff --git a/src/core/url_request_context_getter_qt.cpp b/src/core/url_request_context_getter_qt.cpp index d3f46163980aefa93638c1559e26333b0591a1c7..7f78cbc20eb4e9ef410247fc8300faedc64235cb 100644 --- a/src/core/url_request_context_getter_qt.cpp +++ b/src/core/url_request_context_getter_qt.cpp @@ -80,6 +80,7 @@ #include "net/url_request/ftp_protocol_handler.h" #include "net/url_request/url_request_intercepting_job_factory.h" #include "net/ftp/ftp_network_layer.h" +#include "services/proxy_resolver/public/interfaces/proxy_resolver.mojom.h" #include "api/qwebengineurlschemehandler.h" #include "browser_context_adapter.h" @@ -188,6 +189,8 @@ void URLRequestContextGetterQt::updateStorageSettings() new ProxyConfigServiceQt( net::ProxyService::CreateSystemProxyConfigService( content::BrowserThread::GetTaskRunnerForThread(BrowserThread::IO))); + m_proxyResolverFactory = ChromeMojoProxyResolverFactory::CreateWithStrongBinding(); + if (m_contextInitialized) content::BrowserThread::PostTask(content::BrowserThread::IO, FROM_HERE, base::Bind(&URLRequestContextGetterQt::generateAllStorage, this)); @@ -263,9 +266,9 @@ void URLRequestContextGetterQt::generateStorage() m_dhcpProxyScriptFetcherFactory.reset(new net::DhcpProxyScriptFetcherFactory); m_storage->set_proxy_service(content::CreateProxyServiceUsingMojoFactory( - ChromeMojoProxyResolverFactory::GetInstance(), + std::move(m_proxyResolverFactory), std::unique_ptr<net::ProxyConfigService>(proxyConfigService), - new net::ProxyScriptFetcherImpl(m_urlRequestContext.get()), + std::make_unique<net::ProxyScriptFetcherImpl>(m_urlRequestContext.get()), m_dhcpProxyScriptFetcherFactory->Create(m_urlRequestContext.get()), host_resolver.get(), nullptr /* NetLog */, diff --git a/src/core/url_request_context_getter_qt.h b/src/core/url_request_context_getter_qt.h index fd80d62c2fe522e4561cc46a5487fed008f4f6d1..809e4190dcc15338bd63b7b7c6a441219092d7ff 100644 --- a/src/core/url_request_context_getter_qt.h +++ b/src/core/url_request_context_getter_qt.h @@ -128,6 +128,7 @@ private: content::URLRequestInterceptorScopedVector m_requestInterceptors; std::unique_ptr<net::HttpNetworkSession> m_httpNetworkSession; std::unique_ptr<net::HttpAuthPreferences> m_httpAuthPreferences; + proxy_resolver::mojom::ProxyResolverFactoryPtr m_proxyResolverFactory; QList<QByteArray> m_installedCustomSchemes; QWebEngineUrlRequestInterceptor* m_requestInterceptor; diff --git a/src/core/web_contents_adapter.cpp b/src/core/web_contents_adapter.cpp index 081dbd28dda745b89db15ac517a6b424082f0b2b..770f660073d4641da9415f06c2259343145301c4 100644 --- a/src/core/web_contents_adapter.cpp +++ b/src/core/web_contents_adapter.cpp @@ -119,7 +119,7 @@ static const int kHistoryStreamVersion = 3; static QVariant fromJSValue(const base::Value *result) { QVariant ret; - switch (result->GetType()) { + switch (result->type()) { case base::Value::Type::NONE: break; case base::Value::Type::BOOLEAN: @@ -428,7 +428,7 @@ void WebContentsAdapter::initialize(WebContentsAdapterClient *adapterClient) rendererPrefs->use_custom_colors = true; // Qt returns a flash time (the whole cycle) in ms, chromium expects just the interval in seconds const int qtCursorFlashTime = QGuiApplication::styleHints()->cursorFlashTime(); - rendererPrefs->caret_blink_interval = 0.5 * static_cast<double>(qtCursorFlashTime) / 1000; + rendererPrefs->caret_blink_interval = base::TimeDelta::FromMillisecondsD(0.5 * static_cast<double>(qtCursorFlashTime)); rendererPrefs->user_agent_override = d->browserContextAdapter->httpUserAgent().toStdString(); rendererPrefs->accept_languages = d->browserContextAdapter->httpAcceptLanguageWithoutQualities().toStdString(); #if BUILDFLAG(ENABLE_WEBRTC) @@ -1342,8 +1342,8 @@ void WebContentsAdapter::startDragging(QObject *dragSource, const content::DropD if (d->webContents) { content::RenderViewHost *rvh = d->webContents->GetRenderViewHost(); if (rvh) { - rvh->GetWidget()->DragSourceEndedAt(gfx::Point(d->lastDragClientPos.x(), d->lastDragClientPos.y()), - gfx::Point(d->lastDragScreenPos.x(), d->lastDragScreenPos.y()), + rvh->GetWidget()->DragSourceEndedAt(gfx::PointF(d->lastDragClientPos.x(), d->lastDragClientPos.y()), + gfx::PointF(d->lastDragScreenPos.x(), d->lastDragScreenPos.y()), d->currentDropAction); rvh->GetWidget()->DragSourceSystemDragEnded(); } @@ -1408,7 +1408,7 @@ static void fillDropDataFromMimeData(content::DropData *dropData, const QMimeDat } } -void WebContentsAdapter::enterDrag(QDragEnterEvent *e, const QPoint &screenPos) +void WebContentsAdapter::enterDrag(QDragEnterEvent *e, const QPointF &screenPos) { Q_D(WebContentsAdapter); @@ -1420,7 +1420,7 @@ void WebContentsAdapter::enterDrag(QDragEnterEvent *e, const QPoint &screenPos) content::RenderViewHost *rvh = d->webContents->GetRenderViewHost(); rvh->GetWidget()->FilterDropData(d->currentDropData.get()); - rvh->GetWidget()->DragTargetDragEnter(*d->currentDropData, toGfx(e->pos()), toGfx(screenPos), + rvh->GetWidget()->DragTargetDragEnter(*d->currentDropData, toGfx(e->posF()), toGfx(screenPos), toWeb(e->possibleActions()), flagsFromModifiers(e->keyboardModifiers())); } @@ -1462,11 +1462,11 @@ static int toWeb(Qt::KeyboardModifiers modifiers) return result; } -Qt::DropAction WebContentsAdapter::updateDragPosition(QDragMoveEvent *e, const QPoint &screenPos) +Qt::DropAction WebContentsAdapter::updateDragPosition(QDragMoveEvent *e, const QPointF &screenPos) { Q_D(WebContentsAdapter); content::RenderViewHost *rvh = d->webContents->GetRenderViewHost(); - d->lastDragClientPos = toGfx(e->pos()); + d->lastDragClientPos = toGfx(e->posF()); d->lastDragScreenPos = toGfx(screenPos); rvh->GetWidget()->DragTargetDragOver(d->lastDragClientPos, d->lastDragScreenPos, toWeb(e->possibleActions()), toWeb(e->mouseButtons()) | toWeb(e->keyboardModifiers())); @@ -1503,7 +1503,7 @@ void WebContentsAdapter::updateDragAction(int action) d->currentDropAction = static_cast<blink::WebDragOperation>(action); } -void WebContentsAdapter::endDragging(const QPoint &clientPos, const QPoint &screenPos) +void WebContentsAdapter::endDragging(const QPointF &clientPos, const QPointF &screenPos) { Q_D(WebContentsAdapter); content::RenderViewHost *rvh = d->webContents->GetRenderViewHost(); @@ -1586,7 +1586,7 @@ FaviconManager *WebContentsAdapter::faviconManager() void WebContentsAdapter::viewSource() { Q_D(WebContentsAdapter); - d->webContents->ViewSource(); + d->webContents->GetMainFrame()->ViewSource(); } bool WebContentsAdapter::canViewSource() diff --git a/src/core/web_contents_adapter.h b/src/core/web_contents_adapter.h index 367e44397a711e2c8f17c0c9f8d8abe10df16b19..54b07b4ff375156f968a7d9a246623e3afa4555b 100644 --- a/src/core/web_contents_adapter.h +++ b/src/core/web_contents_adapter.h @@ -173,10 +173,10 @@ public: void startDragging(QObject *dragSource, const content::DropData &dropData, Qt::DropActions allowedActions, const QPixmap &pixmap, const QPoint &offset); - void enterDrag(QDragEnterEvent *e, const QPoint &screenPos); - Qt::DropAction updateDragPosition(QDragMoveEvent *e, const QPoint &screenPos); + void enterDrag(QDragEnterEvent *e, const QPointF &screenPos); + Qt::DropAction updateDragPosition(QDragMoveEvent *e, const QPointF &screenPos); void updateDragAction(int action); - void endDragging(const QPoint &clientPos, const QPoint &screenPos); + void endDragging(const QPointF &clientPos, const QPointF &screenPos); void leaveDrag(); void printToPDF(const QPageLayout&, const QString&); quint64 printToPDFCallbackResult(const QPageLayout &, diff --git a/src/core/web_contents_adapter_p.h b/src/core/web_contents_adapter_p.h index 50096c92e8f4c59eab469fe27b727ae20b631025..5b902fc946ef52e4487ddc7b2ae4779586da58c2 100644 --- a/src/core/web_contents_adapter_p.h +++ b/src/core/web_contents_adapter_p.h @@ -53,10 +53,10 @@ #include "web_contents_adapter.h" -#include <base/callback.h> +#include "base/callback.h" #include "base/memory/ref_counted.h" -#include <ui/gfx/geometry/point.h> -#include <third_party/WebKit/public/platform/WebDragOperation.h> +#include "ui/gfx/geometry/point_f.h" +#include "third_party/WebKit/public/platform/WebDragOperation.h" #include <QScopedPointer> #include <QSharedPointer> @@ -98,8 +98,8 @@ public: std::unique_ptr<content::DropData> currentDropData; blink::WebDragOperation currentDropAction; bool updateDragActionCalled; - gfx::Point lastDragClientPos; - gfx::Point lastDragScreenPos; + gfx::PointF lastDragClientPos; + gfx::PointF lastDragScreenPos; std::unique_ptr<QTemporaryDir> dndTmpDir; DevToolsFrontendQt *devToolsFrontend; }; diff --git a/src/core/web_contents_view_qt.cpp b/src/core/web_contents_view_qt.cpp index 0ad3c1c389c2e9739dee7bf16381c7ce4d6a3c7b..1e7e718da628afd68f1fa41dd65649433dcce7de 100644 --- a/src/core/web_contents_view_qt.cpp +++ b/src/core/web_contents_view_qt.cpp @@ -258,5 +258,20 @@ void WebContentsViewQt::GetScreenInfo(content::ScreenInfo* results) const rwhv->GetScreenInfo(results); } +void WebContentsViewQt::FocusThroughTabTraversal(bool reverse) +{ + content::WebContentsImpl *web_contents = static_cast<content::WebContentsImpl*>(m_webContents); + if (web_contents->ShowingInterstitialPage()) { + web_contents->GetInterstitialPage()->FocusThroughTabTraversal(reverse); + return; + } + content::RenderWidgetHostView *fullscreen_view = web_contents->GetFullscreenRenderWidgetHostView(); + if (fullscreen_view) { + fullscreen_view->Focus(); + return; + } + web_contents->GetRenderViewHost()->SetInitialFocus(reverse); +} + } // namespace QtWebEngineCore diff --git a/src/core/web_contents_view_qt.h b/src/core/web_contents_view_qt.h index 5db4e2879b9724ede9f247839b5bb28326c8b1d0..1e4b275350ccf19a648f31fad162b465afe3410d 100644 --- a/src/core/web_contents_view_qt.h +++ b/src/core/web_contents_view_qt.h @@ -120,6 +120,9 @@ public: void GetScreenInfo(content::ScreenInfo* results) const override; + void FocusThroughTabTraversal(bool reverse) override; + + #if defined(OS_MACOSX) void SetAllowOtherViews(bool allow) override { m_allowOtherViews = allow; } bool GetAllowOtherViews() const override { return m_allowOtherViews; } diff --git a/src/core/web_engine_context.cpp b/src/core/web_engine_context.cpp index e6907cb8a05096e00f453525b1ccac778b6298a7..b9820d4df64878ebc1c5b87d814000a2d260d4bc 100644 --- a/src/core/web_engine_context.cpp +++ b/src/core/web_engine_context.cpp @@ -72,6 +72,7 @@ #include "gpu/ipc/host/gpu_switches.h" #include "net/base/port_util.h" #include "ppapi/features/features.h" +#include "services/service_manager/sandbox/switches.h" #include "ui/events/event_switches.h" #include "ui/native_theme/native_theme_features.h" #include "ui/gl/gl_switches.h" @@ -332,7 +333,7 @@ WebEngineContext::WebEngineContext() #if defined(Q_OS_WIN) parsedCommandLine->AppendSwitch(switches::kNoSandbox); #elif defined(Q_OS_LINUX) - parsedCommandLine->AppendSwitch(switches::kDisableSetuidSandbox); + parsedCommandLine->AppendSwitch(service_manager::switches::kDisableSetuidSandbox); #endif } else { parsedCommandLine->AppendSwitch(switches::kNoSandbox); diff --git a/src/core/web_engine_settings.cpp b/src/core/web_engine_settings.cpp index d16c2bd156ae87c41bc5e48be9b6d57fb6d1f292..4cd4b6452f360f975b17c9ec285c0974a2ea82b3 100644 --- a/src/core/web_engine_settings.cpp +++ b/src/core/web_engine_settings.cpp @@ -276,10 +276,10 @@ void WebEngineSettings::initDefaults() QtWebEngineCore::WebEngineContext::current(); base::CommandLine* commandLine = base::CommandLine::ForCurrentProcess(); bool smoothScrolling = commandLine->HasSwitch(switches::kEnableSmoothScrolling); - bool webGL = content::GpuProcessHost::gpu_enabled() && + bool webGL = !commandLine->HasSwitch(switches::kDisable3DAPIs) && !commandLine->HasSwitch(switches::kDisableWebGL); - bool accelerated2dCanvas = content::GpuProcessHost::gpu_enabled() && + bool accelerated2dCanvas = !commandLine->HasSwitch(switches::kDisableAccelerated2dCanvas); bool allowRunningInsecureContent = commandLine->HasSwitch(switches::kAllowRunningInsecureContent); s_defaultAttributes.insert(ScrollAnimatorEnabled, smoothScrolling); diff --git a/src/core/web_event_factory.cpp b/src/core/web_event_factory.cpp index 4fb89d4e67ba03cd3b76950443283d14a32ec7e4..44c04e3e6180f5dd7a1f5e489bf00bde0dedf544 100644 --- a/src/core/web_event_factory.cpp +++ b/src/core/web_event_factory.cpp @@ -1203,15 +1203,13 @@ static WebPointerProperties::PointerType pointerTypeForTabletEvent(const QTablet WebMouseEvent WebEventFactory::toWebMouseEvent(QMouseEvent *ev, double dpiScale) { WebMouseEvent webKitEvent(webEventTypeForEvent(ev), - ev->x() / dpiScale, - ev->y() / dpiScale, - ev->globalX(), - ev->globalY(), + WebFloatPoint(ev->x() / dpiScale, ev->y() / dpiScale), + WebFloatPoint(ev->globalX(), ev->globalY()), + mouseButtonForEvent<QMouseEvent>(ev), + 0, modifiersForEvent(ev), currentTimeForEvent(ev)); - webKitEvent.button = mouseButtonForEvent<QMouseEvent>(ev); - webKitEvent.click_count = 0; webKitEvent.pointer_type = WebPointerProperties::PointerType::kMouse; return webKitEvent; @@ -1235,10 +1233,10 @@ WebMouseEvent WebEventFactory::toWebMouseEvent(QHoverEvent *ev, double dpiScale) WebMouseEvent WebEventFactory::toWebMouseEvent(QTabletEvent *ev, double dpiScale) { WebMouseEvent webKitEvent(webEventTypeForEvent(ev), - ev->x() / dpiScale, - ev->y() / dpiScale, - ev->globalX(), - ev->globalY(), + WebFloatPoint(ev->x() / dpiScale, ev->y() / dpiScale), + WebFloatPoint(ev->globalX(), ev->globalY()), + mouseButtonForEvent<QTabletEvent>(ev), + 0, modifiersForEvent(ev), currentTimeForEvent(ev)); @@ -1248,9 +1246,6 @@ WebMouseEvent WebEventFactory::toWebMouseEvent(QTabletEvent *ev, double dpiScale webKitEvent.tangential_pressure = ev->tangentialPressure(); webKitEvent.twist = ev->rotation(); webKitEvent.pointer_type = pointerTypeForTabletEvent(ev); - - webKitEvent.button = mouseButtonForEvent<QTabletEvent>(ev); - webKitEvent.click_count = 0; return webKitEvent; } diff --git a/tools/scripts/git_submodule.py b/tools/scripts/git_submodule.py index fcf2af37a0b833aac4ba97c3359a289c1db3b663..c2f5d9c312cb36edc1d302f6783796ddc81d4889 100644 --- a/tools/scripts/git_submodule.py +++ b/tools/scripts/git_submodule.py @@ -81,8 +81,10 @@ class DEPSParser: if len(rev) == 40: # Length of a git shasum submodule.ref = rev + elif len(rev) == 0: + submodule.ref = 'master' else: - sys.exit("Invalid shasum: " + str(rev)) + sys.exit("Invalid shasum: " + str(scope[dep])) submodules.append(submodule) return submodules diff --git a/tools/scripts/init-repository.py b/tools/scripts/init-repository.py index dc5cdb8ce74eb71c2cf539f1c08b429a7eed1490..a5bef10c36d72112b149cc2e19c930f7d446404b 100755 --- a/tools/scripts/init-repository.py +++ b/tools/scripts/init-repository.py @@ -79,8 +79,8 @@ def updateLastChange(): os.chdir(chromium_src) print 'updating LASTCHANGE files' subprocess.call(['python', 'build/util/lastchange.py', '-o', 'build/util/LASTCHANGE']) - subprocess.call(['python', 'build/util/lastchange.py', '-s', 'third_party/WebKit', '-o', 'build/util/LASTCHANGE.blink']) subprocess.call(['python', 'build/util/lastchange.py', '-m', 'SKIA_COMMIT_HASH', '-s', 'third_party/skia', '--header', 'skia/ext/skia_commit_hash.h']) + subprocess.call(['python', 'build/util/lastchange.py', '-m', 'GPU_LISTS_VERSION', '--revision-id-only', '--header', 'gpu/config/gpu_lists_version.h']) os.chdir(currentDir) def initUpstreamSubmodules(): diff --git a/tools/scripts/take_snapshot.py b/tools/scripts/take_snapshot.py index a6274f0aa72c3a77ecd730ac19a1ed7cf5bcdab2..0b279f5d3969a4a23d30f6c8d7a40b1aa9228593 100755 --- a/tools/scripts/take_snapshot.py +++ b/tools/scripts/take_snapshot.py @@ -92,18 +92,18 @@ def isInChromiumBlacklist(file_path): not 'third_party/chromevox' in file_path and not 'media/webrtc/desktop_media_list.h' in file_path and not 'media/webrtc/desktop_streams_registry.' in file_path and - not 'browser/custom_handlers/protocol_handler_registry.' in file_path and - not 'browser/custom_handlers/protocol_handler_registry_factory.' in file_path and not 'browser/net/chrome_mojo_proxy_resolver_factory.' in file_path and + not '/browser/custom_handlers/' in file_path and not '/browser/devtools/' in file_path and not '/browser/ui/webui/' in file_path and not 'common/chrome_constants.' in file_path and not 'common/chrome_paths' in file_path and not 'common/chrome_switches.' in file_path and not 'common/content_restriction.h' in file_path and - not 'common/custom_handlers/protocol_handler.' in file_path and + not 'common/custom_handlers/' in file_path and not 'common/spellcheck_' in file_path and not 'common/url_constants' in file_path and + not 'common/webui_url_constants' in file_path and not '/extensions/api/' in file_path and not '/extensions/browser/api/' in file_path and not '/extensions/permissions/' in file_path and @@ -319,8 +319,8 @@ def exportChromium(): files = listFilesInCurrentRepository() # Add LASTCHANGE files which are not tracked by git. files.append('build/util/LASTCHANGE') - files.append('build/util/LASTCHANGE.blink') files.append('skia/ext/skia_commit_hash.h') + files.append('gpu/config/gpu_lists_version.h') print 'copying files to ' + third_party_chromium for i in xrange(len(files)): printProgress(i+1, len(files)) diff --git a/tools/scripts/version_resolver.py b/tools/scripts/version_resolver.py index 7a22765ef2d1bc0a98dadeaab01e31a4d73d33cf..6e2ab7cdadbc39ea645433fe069217d293988d23 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 = '63.0.3239.117' -chromium_branch = '3239' +chromium_version = '64.0.3282.139' +chromium_branch = '3282' ninja_version = 'v1.8.2' json_url = 'http://omahaproxy.appspot.com/all.json'