diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2018-10-19 11:42:25 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2018-10-22 17:06:43 +0200 |
commit | 34cd9bb6006b854ef8029448be10822b14a2b7ac (patch) | |
tree | 2d04302f7d5c71b13ef73fc419937047b3a0f218 /src/core | |
parent | 404201b9a41564512937a7d96e55d6b095bdcab0 (diff) | |
parent | 6fffee8bfb270eda4f06fa5dbe3a4b190036e90a (diff) |
Merge remote-tracking branch 'origin/5.11' into 5.12
Conflicts:
configure.json
src/3rdparty
src/core/content_browser_client_qt.cpp
src/core/content_browser_client_qt.h
src/core/login_delegate_qt.cpp
src/core/login_delegate_qt.h
src/core/net/url_request_context_getter_qt.cpp
src/core/net/url_request_context_getter_qt.h
src/core/qtwebengine.gni
3rdparty changes:
616a7f558c7e This is expected for us, so don't report it as an error.
c30febceaa1b Do not write <protocol>.json to source directory
9e68e4f2d92c Remove incomplete logic to detect AMD K2 CPU's
e0ed41c8e90a FIXUP: This is expected for us, so don't report it as an error.
f9fd9109b4b7 Fix --single-process --disable-gpu combination not to hit asserts
f305d65cc27e Reduce severity level of messages when kDisableGpu switch is used
5e3e5074bb78 Work around MSVC2017 optimizer bug when printing a page usind Pdfium
34f52ec3bae8 Bump maximum number of custom isolated world ids
f7a2f8153c82 Fix hunspell::NodeReader::affix_id_for_leaf bounds check
1e80090f7044 Fix resolve_proxy service permissions
2e498629651d Add proxy_resolver_manifest
Change-Id: I2b176c80aa315a0ae0a22b5707694fdcd407407b
Diffstat (limited to 'src/core')
-rw-r--r-- | src/core/configure.json | 15 | ||||
-rw-r--r-- | src/core/content_browser_client_qt.cpp | 10 | ||||
-rw-r--r-- | src/core/content_browser_client_qt.h | 1 | ||||
-rw-r--r-- | src/core/content_main_delegate_qt.cpp | 6 | ||||
-rw-r--r-- | src/core/content_main_delegate_qt.h | 4 | ||||
-rw-r--r-- | src/core/content_utility_client_qt.cpp | 60 | ||||
-rw-r--r-- | src/core/content_utility_client_qt.h | 56 | ||||
-rw-r--r-- | src/core/core_chromium.pri | 2 | ||||
-rw-r--r-- | src/core/login_delegate_qt.cpp | 1 | ||||
-rw-r--r-- | src/core/profile_io_data_qt.cpp | 9 | ||||
-rw-r--r-- | src/core/profile_io_data_qt.h | 2 | ||||
-rw-r--r-- | src/core/qtwebengine.gni | 1 |
12 files changed, 160 insertions, 7 deletions
diff --git a/src/core/configure.json b/src/core/configure.json index a72e6ca55..3aba2d55a 100644 --- a/src/core/configure.json +++ b/src/core/configure.json @@ -213,8 +213,21 @@ }, "webengine-freetype": { "label": "freetype >= 2.4.2", + "test": { + "head": [ + "#include <ft2build.h>", + "#include FT_FREETYPE_H", + "#if ((FREETYPE_MAJOR*10000 + FREETYPE_MINOR*100 + FREETYPE_PATCH) < 20402)", + "# error This version of freetype is too old.", + "#endif" + ], + "main": [ + "FT_Face ft_face = 0;", + "FT_Reference_Face(ft_face);" + ] + }, "sources": [ - { "type": "pkgConfig", "args": "freetype2 >= 2.4.2" } + { "type": "pkgConfig", "args": "freetype2" } ] }, "webengine-x11" : { diff --git a/src/core/content_browser_client_qt.cpp b/src/core/content_browser_client_qt.cpp index 03f5a10fb..0b92016f1 100644 --- a/src/core/content_browser_client_qt.cpp +++ b/src/core/content_browser_client_qt.cpp @@ -42,6 +42,7 @@ #include "base/json/json_reader.h" #include "base/memory/ptr_util.h" #include "base/message_loop/message_loop.h" +#include "base/strings/utf_string_conversions.h" #include "base/threading/thread_restrictions.h" #if QT_CONFIG(webengine_spellchecker) #include "chrome/browser/spellchecker/spell_check_host_chrome_impl.h" @@ -75,6 +76,7 @@ #include "services/device/public/cpp/geolocation/location_provider.h" #include "services/resource_coordinator/public/cpp/process_resource_coordinator.h" #include "services/resource_coordinator/public/cpp/resource_coordinator_features.h" +#include "services/proxy_resolver/proxy_resolver_service.h" #include "services/service_manager/public/cpp/connector.h" #include "services/service_manager/public/cpp/service.h" #include "services/service_manager/sandbox/switches.h" @@ -702,6 +704,12 @@ void ContentBrowserClientQt::RegisterInProcessServices(StaticServiceMap* service services->insert(std::make_pair("qtwebengine", info)); } +void ContentBrowserClientQt::RegisterOutOfProcessServices(content::ContentBrowserClient::OutOfProcessServiceMap *services) +{ + (*services)[proxy_resolver::mojom::kProxyResolverServiceName] = + base::BindRepeating(&base::ASCIIToUTF16, "V8 Proxy Resolver"); +} + std::unique_ptr<base::Value> ContentBrowserClientQt::GetServiceManifestOverlay(base::StringPiece name) { ui::ResourceBundle &rb = ui::ResourceBundle::GetSharedInstance(); @@ -710,6 +718,8 @@ std::unique_ptr<base::Value> ContentBrowserClientQt::GetServiceManifestOverlay(b id = IDR_QTWEBENGINE_CONTENT_PACKAGED_SERVICES_MANIFEST_OVERLAY; else if (name == content::mojom::kRendererServiceName) id = IDR_QTWEBENGINE_CONTENT_RENDERER_MANIFEST_OVERLAY; + else if (name == content::mojom::kBrowserServiceName) + id = IDR_QTWEBENGINE_CONTENT_BROWSER_MANIFEST_OVERLAY; if (id == -1) return nullptr; diff --git a/src/core/content_browser_client_qt.h b/src/core/content_browser_client_qt.h index 330024831..a8ac91a92 100644 --- a/src/core/content_browser_client_qt.h +++ b/src/core/content_browser_client_qt.h @@ -118,6 +118,7 @@ public: const std::string& interface_name, mojo::ScopedMessagePipeHandle interface_pipe) override; void RegisterInProcessServices(StaticServiceMap* services, content::ServiceManagerConnection* connection) override; + void RegisterOutOfProcessServices(OutOfProcessServiceMap* services) override; std::vector<ServiceManifestInfo> GetExtraServiceManifests() override; std::unique_ptr<base::Value> GetServiceManifestOverlay(base::StringPiece name) override; bool CanCreateWindow( diff --git a/src/core/content_main_delegate_qt.cpp b/src/core/content_main_delegate_qt.cpp index d9ddf3f49..2811d5545 100644 --- a/src/core/content_main_delegate_qt.cpp +++ b/src/core/content_main_delegate_qt.cpp @@ -186,6 +186,12 @@ content::ContentRendererClient *ContentMainDelegateQt::CreateContentRendererClie return new ContentRendererClientQt; } +content::ContentUtilityClient *ContentMainDelegateQt::CreateContentUtilityClient() +{ + m_utilityClient.reset(new ContentUtilityClientQt); + return m_utilityClient.get(); +} + // see icu_util.cc #define ICU_UTIL_DATA_FILE 0 #define ICU_UTIL_DATA_SHARED 1 diff --git a/src/core/content_main_delegate_qt.h b/src/core/content_main_delegate_qt.h index 407687c81..c06afb0fb 100644 --- a/src/core/content_main_delegate_qt.h +++ b/src/core/content_main_delegate_qt.h @@ -43,6 +43,7 @@ #include "content/public/app/content_main_delegate.h" #include "content_browser_client_qt.h" +#include "content_utility_client_qt.h" namespace QtWebEngineCore { @@ -56,11 +57,12 @@ public: content::ContentBrowserClient* CreateContentBrowserClient() override; content::ContentRendererClient* CreateContentRendererClient() override; - + content::ContentUtilityClient* CreateContentUtilityClient() override; bool BasicStartupComplete(int* /*exit_code*/) override; private: std::unique_ptr<ContentBrowserClientQt> m_browserClient; + std::unique_ptr<ContentUtilityClientQt> m_utilityClient; }; } // namespace QtWebEngineCore diff --git a/src/core/content_utility_client_qt.cpp b/src/core/content_utility_client_qt.cpp new file mode 100644 index 000000000..9e86826fe --- /dev/null +++ b/src/core/content_utility_client_qt.cpp @@ -0,0 +1,60 @@ +/**************************************************************************** +** +** Copyright (C) 2018 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$ +** +****************************************************************************/ + +#include "content_utility_client_qt.h" + +#include "content/public/utility/utility_thread.h" +#include "services/proxy_resolver/proxy_resolver_service.h" + +ContentUtilityClientQt::ContentUtilityClientQt() { +} + +ContentUtilityClientQt::~ContentUtilityClientQt() = default; + + +void ContentUtilityClientQt::RegisterServices( + ContentUtilityClient::StaticServiceMap* services) { + service_manager::EmbeddedServiceInfo proxy_resolver_info; + proxy_resolver_info.task_runner = + content::ChildThread::Get()->GetIOTaskRunner(); + proxy_resolver_info.factory = + base::Bind(&proxy_resolver::ProxyResolverService::CreateService); + services->emplace(proxy_resolver::mojom::kProxyResolverServiceName, + proxy_resolver_info); +} diff --git a/src/core/content_utility_client_qt.h b/src/core/content_utility_client_qt.h new file mode 100644 index 000000000..df1eb5557 --- /dev/null +++ b/src/core/content_utility_client_qt.h @@ -0,0 +1,56 @@ +/**************************************************************************** +** +** Copyright (C) 2018 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 CONTENT_UTILITY_CLIENT_QT_H +#define CONTENT_UTILITY_CLIENT_QT_H +#include "content/public/utility/content_utility_client.h" + +class MashServiceFactory; +class UtilityMessageHandler; + +class ContentUtilityClientQt : public content::ContentUtilityClient { + public: + ContentUtilityClientQt(); + ~ContentUtilityClientQt() override; + + // content::ContentUtilityClient: + void RegisterServices(StaticServiceMap* services) override; +}; + +#endif diff --git a/src/core/core_chromium.pri b/src/core/core_chromium.pri index 92fefe533..b4d1f2b8e 100644 --- a/src/core/core_chromium.pri +++ b/src/core/core_chromium.pri @@ -58,6 +58,7 @@ SOURCES = \ content_client_qt.cpp \ content_browser_client_qt.cpp \ content_main_delegate_qt.cpp \ + content_utility_client_qt.cpp \ delegated_frame_node.cpp \ desktop_screen_qt.cpp \ devtools_frontend_qt.cpp \ @@ -145,6 +146,7 @@ HEADERS = \ content_client_qt.h \ content_browser_client_qt.h \ content_main_delegate_qt.h \ + content_utility_client_qt.h \ delegated_frame_node.h \ desktop_screen_qt.h \ devtools_frontend_qt.h \ diff --git a/src/core/login_delegate_qt.cpp b/src/core/login_delegate_qt.cpp index 6dd2aa5ed..0bde12811 100644 --- a/src/core/login_delegate_qt.cpp +++ b/src/core/login_delegate_qt.cpp @@ -83,6 +83,7 @@ LoginDelegateQt::~LoginDelegateQt() void LoginDelegateQt::OnRequestCancelled() { destroy(); + // TODO: this should close native dialog, since page can be navigated somewhere else } QUrl LoginDelegateQt::url() const diff --git a/src/core/profile_io_data_qt.cpp b/src/core/profile_io_data_qt.cpp index 91ffef152..7aaddc35a 100644 --- a/src/core/profile_io_data_qt.cpp +++ b/src/core/profile_io_data_qt.cpp @@ -288,10 +288,11 @@ void ProfileIODataQt::generateStorage() if (!m_dhcpPacFileFetcherFactory) m_dhcpPacFileFetcherFactory.reset(new net::DhcpPacFileFetcherFactory); + proxy_resolver::mojom::ProxyResolverFactoryPtr proxyResolver(std::move(m_proxyResolverFactoryInterface)); m_storage->set_proxy_resolution_service(network::CreateProxyResolutionServiceUsingMojoFactory( - std::move(m_proxyResolverFactory), + std::move(proxyResolver), std::unique_ptr<net::ProxyConfigService>(proxyConfigService), - net::PacFileFetcherImpl::Create(m_urlRequestContext.get()), + net::PacFileFetcherImpl::CreateWithFileUrlSupport(m_urlRequestContext.get()), m_dhcpPacFileFetcherFactory->Create(m_urlRequestContext.get()), host_resolver.get(), nullptr /* NetLog */, @@ -590,8 +591,8 @@ void ProfileIODataQt::updateStorageSettings() new ProxyConfigServiceQt( net::ProxyResolutionService::CreateSystemProxyConfigService( content::BrowserThread::GetTaskRunnerForThread(content::BrowserThread::IO))); - m_proxyResolverFactory = ChromeMojoProxyResolverFactory::CreateWithStrongBinding(); - + //pass interface to io thread + m_proxyResolverFactoryInterface = ChromeMojoProxyResolverFactory::CreateWithStrongBinding().PassInterface(); if (m_initialized) content::BrowserThread::PostTask(content::BrowserThread::IO, FROM_HERE, base::Bind(&ProfileIODataQt::generateAllStorage, m_weakPtr)); diff --git a/src/core/profile_io_data_qt.h b/src/core/profile_io_data_qt.h index 7c4dae14b..60f4d2d1e 100644 --- a/src/core/profile_io_data_qt.h +++ b/src/core/profile_io_data_qt.h @@ -117,7 +117,7 @@ private: scoped_refptr<CookieMonsterDelegateQt> m_cookieDelegate; content::URLRequestInterceptorScopedVector m_requestInterceptors; content::ProtocolHandlerMap m_protocolHandlers; - proxy_resolver::mojom::ProxyResolverFactoryPtr m_proxyResolverFactory; + mojo::InterfacePtrInfo<proxy_resolver::mojom::ProxyResolverFactory> m_proxyResolverFactoryInterface; net::URLRequestJobFactoryImpl *m_baseJobFactory = nullptr; QAtomicPointer<net::ProxyConfigService> m_proxyConfigService; QPointer<ProfileAdapter> m_profileAdapter; // never dereferenced in IO thread and it is passed by qpointer diff --git a/src/core/qtwebengine.gni b/src/core/qtwebengine.gni index ba2f6e936..14da1e6cf 100644 --- a/src/core/qtwebengine.gni +++ b/src/core/qtwebengine.gni @@ -31,6 +31,7 @@ deps = [ "//content/public/renderer", "//media:media_buildflags", "//net:net_with_v8", + "//services/proxy_resolver:lib", "//skia", "//third_party/blink/public:blink", "//third_party/mesa:mesa_headers", |