summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2018-10-22 22:10:41 +0000
committerThe Qt Project <gerrit-noreply@qt-project.org>2018-10-22 22:10:41 +0000
commit7430a9dae01f8d77a7fbbf163327ea65894cf8bb (patch)
tree1e7904a220ec809b83d2c0584bd3c5407a51d05a /src
parentf65c5fc155c9f6c3f880389a57b7652614627654 (diff)
parent34cd9bb6006b854ef8029448be10822b14a2b7ac (diff)
Merge "Merge remote-tracking branch 'origin/5.11' into 5.12" into refs/staging/5.12
Diffstat (limited to 'src')
m---------src/3rdparty0
-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
13 files changed, 160 insertions, 7 deletions
diff --git a/src/3rdparty b/src/3rdparty
-Subproject 156c2b70ceef9a4464a5a241c9f816dea4fd316
+Subproject 2e498629651ddfbac13a3f8ccce8691bb60b0f7
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 83b4e7cb5..a169576b0 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"
@@ -74,6 +75,7 @@
#include "net/ssl/client_cert_identity.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"
@@ -701,6 +703,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();
@@ -709,6 +717,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 4d25ddf6a..b2761b311 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 2dbc27cf2..9659b354a 100644
--- a/src/core/login_delegate_qt.cpp
+++ b/src/core/login_delegate_qt.cpp
@@ -84,6 +84,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",