summaryrefslogtreecommitdiffstats
path: root/src/core
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2018-10-19 11:42:25 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2018-10-22 17:06:43 +0200
commit34cd9bb6006b854ef8029448be10822b14a2b7ac (patch)
tree2d04302f7d5c71b13ef73fc419937047b3a0f218 /src/core
parent404201b9a41564512937a7d96e55d6b095bdcab0 (diff)
parent6fffee8bfb270eda4f06fa5dbe3a4b190036e90a (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.json15
-rw-r--r--src/core/content_browser_client_qt.cpp10
-rw-r--r--src/core/content_browser_client_qt.h1
-rw-r--r--src/core/content_main_delegate_qt.cpp6
-rw-r--r--src/core/content_main_delegate_qt.h4
-rw-r--r--src/core/content_utility_client_qt.cpp60
-rw-r--r--src/core/content_utility_client_qt.h56
-rw-r--r--src/core/core_chromium.pri2
-rw-r--r--src/core/login_delegate_qt.cpp1
-rw-r--r--src/core/profile_io_data_qt.cpp9
-rw-r--r--src/core/profile_io_data_qt.h2
-rw-r--r--src/core/qtwebengine.gni1
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",