summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJüri Valdmann <juri.valdmann@qt.io>2018-10-22 11:21:46 +0200
committerJüri Valdmann <juri.valdmann@qt.io>2018-10-22 11:26:22 +0200
commitb84324ece095ad1f5a16326c49bdf1428ff5f866 (patch)
tree9a28dba3724d2ee8c5a6a9f5ac69ea6c9a82da18
parent17bd9d9de2d424ef7f7a193e17d1619d6effec7b (diff)
parentf65c5fc155c9f6c3f880389a57b7652614627654 (diff)
Merge remote-tracking branch 'origin/5.12' into dev
Conflicts: src/core/net/network_delegate_qt.cpp Changed to src/3rdparty: 156c2b70 Disable "some invariants violation checks" for Qt 52bf8b45 Support non-base::Thread GPU thread ba4a51bc [Backport] Speculative fix for mac DCHECK failure 508fda09 Add support for static-libraries to our GN integration Change-Id: If0205ce032ce86b5759b321b6d907b0431b6a978
-rw-r--r--mkspecs/features/platform.prf3
m---------src/3rdparty0
-rw-r--r--src/core/api/core_api.pro7
-rw-r--r--src/core/chromium_overrides.cpp1
-rw-r--r--src/core/config/common.pri6
-rw-r--r--src/core/config/linux.pri1
-rw-r--r--src/core/config/mac_osx.pri1
-rw-r--r--src/core/config/windows.pri1
-rw-r--r--src/core/configure.json9
-rw-r--r--src/core/content_browser_client_qt.cpp7
-rw-r--r--src/core/content_browser_client_qt.h3
-rw-r--r--src/core/javascript_dialog_manager_qt.cpp2
-rw-r--r--src/core/login_delegate_qt.cpp1
-rw-r--r--src/core/media_capture_devices_dispatcher.cpp3
-rw-r--r--src/core/net/network_delegate_qt.cpp2
-rw-r--r--src/core/permission_manager_qt.cpp2
-rw-r--r--src/core/printing/print_view_manager_qt.cpp4
-rw-r--r--src/core/profile_io_data_qt.cpp2
-rw-r--r--src/core/qtwebengine_sources.gni1
-rw-r--r--src/core/quota_permission_context_qt.cpp2
-rw-r--r--src/core/render_widget_host_view_qt.cpp21
-rw-r--r--src/core/renderer/content_renderer_client_qt.cpp7
-rw-r--r--src/core/web_contents_adapter.cpp1
-rw-r--r--src/core/web_contents_delegate_qt.cpp10
-rw-r--r--src/core/web_contents_view_qt.cpp3
-rw-r--r--src/core/web_contents_view_qt.h20
-rw-r--r--src/core/web_engine_context.cpp1
-rw-r--r--tests/auto/widgets/origins/resources/mixedXHR.html19
-rw-r--r--tests/auto/widgets/origins/resources/mixedXHR.txt1
-rw-r--r--tests/auto/widgets/origins/tst_origins.cpp38
-rw-r--r--tests/auto/widgets/origins/tst_origins.qrc2
-rw-r--r--tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp20
-rw-r--r--tests/auto/widgets/schemes/tst_schemes.cpp5
-rwxr-xr-xtools/scripts/take_snapshot.py7
34 files changed, 158 insertions, 55 deletions
diff --git a/mkspecs/features/platform.prf b/mkspecs/features/platform.prf
index 341f7d457..35eb6b89c 100644
--- a/mkspecs/features/platform.prf
+++ b/mkspecs/features/platform.prf
@@ -62,7 +62,8 @@ defineTest(isPlatformSupported) {
return(false)
}
- !contains(QT_CONFIG, c++14) {
+ # QMAKE doesn't set c++14 for MSVC2017, so only test for gcc and clang (which pretends to be gcc)
+ gcc:!contains(QT_CONFIG, c++14) {
skipBuild("C++14 support is required in order to build chromium.")
return(false)
}
diff --git a/src/3rdparty b/src/3rdparty
-Subproject 3f8994c671d1cfc674ab64e118304b897a84762
+Subproject 156c2b70ceef9a4464a5a241c9f816dea4fd316
diff --git a/src/core/api/core_api.pro b/src/core/api/core_api.pro
index e0600e6fe..38dc6b39d 100644
--- a/src/core/api/core_api.pro
+++ b/src/core/api/core_api.pro
@@ -3,7 +3,7 @@ DESTDIR = $$OUT_PWD/$$getConfigDir()
TEMPLATE = lib
-CONFIG += staticlib c++14
+CONFIG += staticlib
QT += network core-private webenginecoreheaders-private
# Don't create .prl file for this intermediate library because
@@ -27,7 +27,7 @@ INCLUDEPATH += $$QTWEBENGINE_ROOT/src/core \
$$CHROMIUM_GEN_DIR \
$$CHROMIUM_SRC_DIR
-linux-g++*: QMAKE_CXXFLAGS += -Wno-unused-parameter
+gcc: QMAKE_CXXFLAGS_WARN_ON = -Wno-unused-parameter
HEADERS = \
qwebenginecallback.h \
@@ -59,6 +59,7 @@ SOURCES = \
### Qt6 Remove this workaround
unix:!isEmpty(QMAKE_LFLAGS_VERSION_SCRIPT):!static {
+ CONFIG -= warning_clean
SOURCES += qtbug-60565.cpp \
qtbug-61521.cpp
}
@@ -70,3 +71,5 @@ msvc {
"if exist $(DESTDIR_TARGET).objects del $(DESTDIR_TARGET).objects$$escape_expand(\\n\\t)" \
"for %%a in ($(OBJECTS)) do echo $$shell_quote($$shell_path($$OUT_PWD))\\%%a >> $(DESTDIR_TARGET).objects"
}
+
+load(qt_common)
diff --git a/src/core/chromium_overrides.cpp b/src/core/chromium_overrides.cpp
index f3b7d3897..a497ddc46 100644
--- a/src/core/chromium_overrides.cpp
+++ b/src/core/chromium_overrides.cpp
@@ -46,6 +46,7 @@
#include "base/values.h"
#include "content/browser/renderer_host/pepper/pepper_truetype_font_list.h"
#include "content/browser/renderer_host/render_widget_host_view_base.h"
+#include "content/browser/web_contents/web_contents_impl.h"
#include "content/common/font_list.h"
#include "ui/base/dragdrop/os_exchange_data.h"
#include "ui/base/dragdrop/os_exchange_data_provider_factory.h"
diff --git a/src/core/config/common.pri b/src/core/config/common.pri
index c41348f28..bb318f1f0 100644
--- a/src/core/config/common.pri
+++ b/src/core/config/common.pri
@@ -100,4 +100,10 @@ qtConfig(webengine-v8-snapshot) {
gn_args += v8_use_snapshot=false
}
+qtConfig(webengine-kerberos) {
+ gn_args += use_kerberos=true
+} else {
+ gn_args += use_kerberos=false
+}
+
!msvc: gn_args += enable_iterator_debugging=false
diff --git a/src/core/config/linux.pri b/src/core/config/linux.pri
index 8ffc276de..7f634472d 100644
--- a/src/core/config/linux.pri
+++ b/src/core/config/linux.pri
@@ -5,7 +5,6 @@ gn_args += \
use_cups=false \
use_gio=false \
use_gnome_keyring=false \
- use_kerberos=false \
linux_use_bundled_binutils=false \
use_udev=true \
use_bundled_fontconfig=false \
diff --git a/src/core/config/mac_osx.pri b/src/core/config/mac_osx.pri
index e5e819e04..4426901cf 100644
--- a/src/core/config/mac_osx.pri
+++ b/src/core/config/mac_osx.pri
@@ -24,7 +24,6 @@ system("$${QMAKE_CLANG_PATH} --version")
gn_args += \
is_clang=true \
use_sysroot=false \
- use_kerberos=false \
clang_base_path=\"$${QMAKE_CLANG_DIR}\" \
clang_use_chrome_plugins=false \
mac_deployment_target=\"$${QMAKE_MACOSX_DEPLOYMENT_TARGET}\" \
diff --git a/src/core/config/windows.pri b/src/core/config/windows.pri
index 5aa511da3..3b42a0b9a 100644
--- a/src/core/config/windows.pri
+++ b/src/core/config/windows.pri
@@ -3,7 +3,6 @@ include(common.pri)
gn_args += \
is_clang=false \
use_sysroot=false \
- use_kerberos=true \
enable_session_service=false \
ninja_use_custom_environment_files=false \
is_multi_dll_chrome=false \
diff --git a/src/core/configure.json b/src/core/configure.json
index 000faf686..a72e6ca55 100644
--- a/src/core/configure.json
+++ b/src/core/configure.json
@@ -24,6 +24,7 @@
"webengine-geolocation": "boolean",
"webengine-v8-snapshot": "boolean",
"webengine-webchannel": "boolean",
+ "webengine-kerberos": "boolean",
"alsa": { "type": "boolean", "name": "webengine-alsa" },
"pulseaudio": { "type": "boolean", "name": "webengine-pulseaudio" },
"ffmpeg": { "type": "enum", "name": "webengine-system-ffmpeg", "values": { "system": "yes", "qt": "no" } },
@@ -518,6 +519,13 @@
"autoDetect": false,
"output": [ "privateFeature" ]
},
+ "webengine-kerberos": {
+ "label": "Kerberos Authentication",
+ "purpose": "Enables Kerberos Authentication Support",
+ "autoDetect": "config.win32",
+ "section": "WebEngine",
+ "output": [ "privateFeature" ]
+ },
"webengine-spellchecker": {
"label": "Spellchecker",
"purpose": "Provides a spellchecker.",
@@ -695,6 +703,7 @@
"webengine-geolocation",
"webengine-webchannel",
"webengine-v8-snapshot",
+ "webengine-kerberos",
{
"type": "feature",
"args": "webengine-v8-snapshot-support",
diff --git a/src/core/content_browser_client_qt.cpp b/src/core/content_browser_client_qt.cpp
index 03f5a10fb..83b4e7cb5 100644
--- a/src/core/content_browser_client_qt.cpp
+++ b/src/core/content_browser_client_qt.cpp
@@ -72,7 +72,6 @@
#include "mojo/public/cpp/bindings/binding_set.h"
#include "printing/buildflags/buildflags.h"
#include "net/ssl/client_cert_identity.h"
-#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/service_manager/public/cpp/connector.h"
@@ -767,14 +766,12 @@ bool ContentBrowserClientQt::CanCreateWindow(
return (settings && settings->getJavaScriptCanOpenWindowsAutomatically()) || user_gesture;
}
+#if QT_CONFIG(webengine_geolocation)
std::unique_ptr<device::LocationProvider> ContentBrowserClientQt::OverrideSystemLocationProvider()
{
-#if QT_CONFIG(webengine_geolocation)
return base::WrapUnique(new LocationProviderQt());
-#else
- return nullptr;
-#endif
}
+#endif
scoped_refptr<net::URLRequestContextGetter> GetSystemRequestContextOnUIThread()
{
diff --git a/src/core/content_browser_client_qt.h b/src/core/content_browser_client_qt.h
index 330024831..4d25ddf6a 100644
--- a/src/core/content_browser_client_qt.h
+++ b/src/core/content_browser_client_qt.h
@@ -168,7 +168,10 @@ public:
content::ResourceContext *context,
const std::vector<std::pair<int, int> > &render_frames) override;
+#if QT_CONFIG(webengine_geolocation)
std::unique_ptr<device::LocationProvider> OverrideSystemLocationProvider() override;
+#endif
+
#if defined(Q_OS_LINUX)
void GetAdditionalMappedFilesForChildProcess(const base::CommandLine& command_line, int child_process_id, content::PosixFileDescriptorInfo* mappings) override;
#endif
diff --git a/src/core/javascript_dialog_manager_qt.cpp b/src/core/javascript_dialog_manager_qt.cpp
index 7f43f9020..289947237 100644
--- a/src/core/javascript_dialog_manager_qt.cpp
+++ b/src/core/javascript_dialog_manager_qt.cpp
@@ -44,7 +44,9 @@
#include "web_contents_view_qt.h"
#include "type_conversion.h"
+
#include "base/memory/singleton.h"
+#include "content/browser/web_contents/web_contents_impl.h"
namespace QtWebEngineCore {
diff --git a/src/core/login_delegate_qt.cpp b/src/core/login_delegate_qt.cpp
index 6dd2aa5ed..2dbc27cf2 100644
--- a/src/core/login_delegate_qt.cpp
+++ b/src/core/login_delegate_qt.cpp
@@ -43,6 +43,7 @@
#include "login_delegate_qt.h"
+#include "content/browser/web_contents/web_contents_impl.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/render_view_host.h"
#include "content/public/browser/resource_dispatcher_host.h"
diff --git a/src/core/media_capture_devices_dispatcher.cpp b/src/core/media_capture_devices_dispatcher.cpp
index 59c3544a7..2bac62084 100644
--- a/src/core/media_capture_devices_dispatcher.cpp
+++ b/src/core/media_capture_devices_dispatcher.cpp
@@ -50,13 +50,14 @@
#include "base/strings/utf_string_conversions.h"
#include "chrome/browser/media/webrtc/desktop_streams_registry.h"
+#include "content/browser/web_contents/web_contents_impl.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/desktop_media_id.h"
#include "content/public/browser/media_capture_devices.h"
#include "content/public/browser/notification_service.h"
#include "content/public/browser/notification_source.h"
#include "content/public/browser/notification_types.h"
-#include "content/public/browser/web_contents.h"
+#include "content/public/browser/render_process_host.h"
#include "content/public/common/origin_util.h"
#include "content/public/common/media_stream_request.h"
#include "media/audio/audio_device_description.h"
diff --git a/src/core/net/network_delegate_qt.cpp b/src/core/net/network_delegate_qt.cpp
index 8cf974d17..e5bbb53c7 100644
--- a/src/core/net/network_delegate_qt.cpp
+++ b/src/core/net/network_delegate_qt.cpp
@@ -40,7 +40,7 @@
#include "network_delegate_qt.h"
#include "profile_adapter.h"
-
+#include "content/browser/web_contents/web_contents_impl.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/render_view_host.h"
#include "content/public/browser/resource_request_info.h"
diff --git a/src/core/permission_manager_qt.cpp b/src/core/permission_manager_qt.cpp
index 996a83d12..2fa42bf10 100644
--- a/src/core/permission_manager_qt.cpp
+++ b/src/core/permission_manager_qt.cpp
@@ -40,11 +40,11 @@
#include "permission_manager_qt.h"
#include "content/browser/renderer_host/render_view_host_delegate.h"
+#include "content/browser/web_contents/web_contents_impl.h"
#include "content/public/browser/permission_controller.h"
#include "content/public/browser/permission_type.h"
#include "content/public/browser/render_frame_host.h"
#include "content/public/browser/render_view_host.h"
-#include "content/public/browser/web_contents.h"
#include "type_conversion.h"
#include "web_contents_delegate_qt.h"
diff --git a/src/core/printing/print_view_manager_qt.cpp b/src/core/printing/print_view_manager_qt.cpp
index 6813d54ee..ff9fc76be 100644
--- a/src/core/printing/print_view_manager_qt.cpp
+++ b/src/core/printing/print_view_manager_qt.cpp
@@ -44,8 +44,9 @@
#include "print_view_manager_qt.h"
#include "type_conversion.h"
-#include "web_engine_context.h"
+#include "web_contents_adapter_client.h"
#include "web_contents_view_qt.h"
+#include "web_engine_context.h"
#include <QtGui/qpagelayout.h>
#include <QtGui/qpagesize.h>
@@ -57,6 +58,7 @@
#include "chrome/browser/printing/printer_query.h"
#include "components/printing/common/print_messages.h"
#include "content/browser/renderer_host/render_view_host_impl.h"
+#include "content/browser/web_contents/web_contents_impl.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/render_frame_host.h"
#include "content/public/common/web_preferences.h"
diff --git a/src/core/profile_io_data_qt.cpp b/src/core/profile_io_data_qt.cpp
index ad79304d3..d67a36863 100644
--- a/src/core/profile_io_data_qt.cpp
+++ b/src/core/profile_io_data_qt.cpp
@@ -98,7 +98,7 @@ namespace QtWebEngineCore {
static const char* const kDefaultAuthSchemes[] = { net::kBasicAuthScheme,
net::kDigestAuthScheme,
-#if defined(USE_KERBEROS) && !defined(OS_ANDROID)
+#if QT_CONFIG(webengine_kerberos)
net::kNegotiateAuthScheme,
#endif
net::kNtlmAuthScheme };
diff --git a/src/core/qtwebengine_sources.gni b/src/core/qtwebengine_sources.gni
index ea18dad97..b1361e727 100644
--- a/src/core/qtwebengine_sources.gni
+++ b/src/core/qtwebengine_sources.gni
@@ -44,6 +44,7 @@ source_set("qtwebengine_sources") {
"//chrome/common:buildflags",
"//components/nacl/common:buildflags",
"//extensions/buildflags:buildflags",
+ "//third_party/blink/public/mojom:mojom_platform",
]
sources = [
"//chrome/common/custom_handlers/protocol_handler.cc",
diff --git a/src/core/quota_permission_context_qt.cpp b/src/core/quota_permission_context_qt.cpp
index f00b2008a..cb1467364 100644
--- a/src/core/quota_permission_context_qt.cpp
+++ b/src/core/quota_permission_context_qt.cpp
@@ -39,9 +39,9 @@
#include "quota_permission_context_qt.h"
+#include "content/browser/web_contents/web_contents_impl.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/render_frame_host.h"
-#include "content/public/browser/web_contents.h"
#include "quota_request_controller_impl.h"
#include "qwebenginequotarequest.h"
#include "web_contents_delegate_qt.h"
diff --git a/src/core/render_widget_host_view_qt.cpp b/src/core/render_widget_host_view_qt.cpp
index 0b33c359c..f96bbff30 100644
--- a/src/core/render_widget_host_view_qt.cpp
+++ b/src/core/render_widget_host_view_qt.cpp
@@ -39,49 +39,38 @@
#include "render_widget_host_view_qt.h"
-#include "common/qt_messages.h"
#include "browser_accessibility_manager_qt.h"
-#include "browser_accessibility_qt.h"
#include "chromium_overrides.h"
#include "compositor.h"
#include "qtwebenginecoreglobal_p.h"
#include "render_widget_host_view_qt_delegate.h"
#include "type_conversion.h"
-#include "web_contents_adapter.h"
#include "web_contents_adapter_client.h"
#include "web_event_factory.h"
-#include "base/command_line.h"
#include "components/viz/common/surfaces/frame_sink_id_allocator.h"
-#include "components/viz/common/surfaces/parent_local_surface_id_allocator.h"
-#include "components/viz/service/display/direct_renderer.h"
-#include "components/viz/service/frame_sinks/frame_sink_manager_impl.h"
#include "content/browser/accessibility/browser_accessibility_state_impl.h"
-#include "content/browser/browser_main_loop.h"
#include "content/browser/frame_host/render_frame_host_impl.h"
#include "content/browser/frame_host/frame_tree.h"
-#include "content/browser/renderer_host/cursor_manager.h"
#include "content/browser/renderer_host/render_view_host_impl.h"
#include "content/common/cursors/webcursor.h"
#include "content/common/input_messages.h"
-#include "content/public/browser/browser_accessibility_state.h"
-#include "content/public/browser/browser_thread.h"
-#include "content/public/common/content_switches.h"
#include "third_party/skia/include/core/SkColor.h"
#include "third_party/blink/public/platform/web_cursor_info.h"
-#include "ui/base/clipboard/scoped_clipboard_writer.h"
-#include "ui/base/resource/resource_bundle.h"
#include "ui/events/blink/blink_event_util.h"
#include "ui/events/event.h"
#include "ui/events/gesture_detection/gesture_provider_config_helper.h"
#include "ui/events/gesture_detection/motion_event.h"
-#include "ui/events/keycodes/keyboard_codes.h"
#include "ui/gfx/geometry/size_conversions.h"
-#include "ui/gfx/image/image_skia.h"
+
+#if defined(USE_OZONE)
+#include "ui/base/clipboard/scoped_clipboard_writer.h"
+#endif
#if defined(USE_AURA)
#include "ui/base/cursor/cursor.h"
#include "ui/base/cursor/cursors_aura.h"
+#include "ui/base/resource/resource_bundle.h"
#endif
#include <private/qguiapplication_p.h>
diff --git a/src/core/renderer/content_renderer_client_qt.cpp b/src/core/renderer/content_renderer_client_qt.cpp
index 76baf131b..3eda3993a 100644
--- a/src/core/renderer/content_renderer_client_qt.cpp
+++ b/src/core/renderer/content_renderer_client_qt.cpp
@@ -69,6 +69,8 @@
#include "services/service_manager/public/cpp/service_context.h"
#include "third_party/blink/public/platform/web_url_error.h"
#include "third_party/blink/public/platform/web_url_request.h"
+#include "third_party/blink/public/web/web_security_policy.h"
+#include "third_party/blink/renderer/platform/weborigin/kurl.h"
#include "ui/base/resource/resource_bundle.h"
#include "ui/base/webui/jstemplate_builder.h"
#include "content/public/common/web_preferences.h"
@@ -131,6 +133,11 @@ void ContentRendererClientQt::RenderThreadStarted()
if (!m_spellCheck)
InitSpellCheck();
#endif
+
+ // Allow XMLHttpRequests from qrc to file.
+ blink::WebURL qrc(blink::KURL("qrc:"));
+ blink::WebString file(blink::WebString::FromASCII("file"));
+ blink::WebSecurityPolicy::AddOriginAccessWhitelistEntry(qrc, file, blink::WebString(), true);
}
void ContentRendererClientQt::RenderViewCreated(content::RenderView* render_view)
diff --git a/src/core/web_contents_adapter.cpp b/src/core/web_contents_adapter.cpp
index cac5bd09e..762d9f53a 100644
--- a/src/core/web_contents_adapter.cpp
+++ b/src/core/web_contents_adapter.cpp
@@ -55,6 +55,7 @@
#include "profile_qt.h"
#include "qwebenginecallback_p.h"
#include "render_view_observer_host_qt.h"
+#include "render_widget_host_view_qt.h"
#include "type_conversion.h"
#include "web_contents_view_qt.h"
#include "web_engine_context.h"
diff --git a/src/core/web_contents_delegate_qt.cpp b/src/core/web_contents_delegate_qt.cpp
index 11f64c5ad..569b939d8 100644
--- a/src/core/web_contents_delegate_qt.cpp
+++ b/src/core/web_contents_delegate_qt.cpp
@@ -602,14 +602,12 @@ void WebContentsDelegateQt::launchExternalURL(const QUrl &url, ui::PageTransitio
}
if (!navigationAllowedByPolicy || !navigationRequestAccepted) {
+ QString errorDescription;
if (!navigationAllowedByPolicy)
- didFailLoad(url, 420, QStringLiteral("Launching external protocol forbidden by WebEngineSettings::UnknownUrlSchemePolicy"));
+ errorDescription = QStringLiteral("Launching external protocol forbidden by WebEngineSettings::UnknownUrlSchemePolicy");
else
- didFailLoad(url, 420, QStringLiteral("Launching external protocol suppressed by WebContentsAdapterClient::navigationRequested"));
- if (settings->testAttribute(WebEngineSettings::ErrorPageEnabled)) {
- EmitLoadStarted(toQt(GURL(content::kUnreachableWebDataURL)), true);
- m_viewClient->webContentsAdapter()->load(toQt(GURL(content::kUnreachableWebDataURL)));
- }
+ errorDescription = QStringLiteral("Launching external protocol suppressed by WebContentsAdapterClient::navigationRequested");
+ didFailLoad(url, net::Error::ERR_ABORTED, errorDescription);
}
}
diff --git a/src/core/web_contents_view_qt.cpp b/src/core/web_contents_view_qt.cpp
index f1d795ed7..7910688d3 100644
--- a/src/core/web_contents_view_qt.cpp
+++ b/src/core/web_contents_view_qt.cpp
@@ -42,12 +42,15 @@
#include "profile_adapter.h"
#include "content_browser_client_qt.h"
#include "render_widget_host_view_qt_delegate.h"
+#include "render_widget_host_view_qt.h"
#include "type_conversion.h"
#include "web_contents_adapter.h"
#include "web_engine_context.h"
#include "components/spellcheck/spellcheck_buildflags.h"
#include "content/browser/renderer_host/render_view_host_impl.h"
+#include "content/browser/renderer_host/render_widget_host_impl.h"
+#include "content/browser/web_contents/web_contents_impl.h"
#include "content/public/common/context_menu_params.h"
#include <ui/gfx/image/image_skia.h>
diff --git a/src/core/web_contents_view_qt.h b/src/core/web_contents_view_qt.h
index 2dd94eabb..d1a2ff81e 100644
--- a/src/core/web_contents_view_qt.h
+++ b/src/core/web_contents_view_qt.h
@@ -41,16 +41,16 @@
#define WEB_CONTENTS_VIEW_QT_H
#include "content/browser/renderer_host/render_view_host_delegate_view.h"
-#include "content/browser/web_contents/web_contents_impl.h"
#include "content/browser/web_contents/web_contents_view.h"
-#include "content/public/browser/render_view_host.h"
-#include "content/public/browser/render_widget_host.h"
-#include "render_widget_host_view_qt.h"
-#include "web_contents_adapter_client.h"
-#include "web_contents_delegate_qt.h"
-#include "web_engine_context.h"
+
+#include "api/qtwebenginecoreglobal_p.h"
+
+namespace content {
+class WebContents;
+}
namespace QtWebEngineCore {
+class WebContentsAdapterClient;
class WebContentsViewQt
: public content::WebContentsView
@@ -61,8 +61,8 @@ public:
WebContentsViewQt(content::WebContents* webContents)
: m_webContents(webContents)
- , m_client(0)
- , m_factoryClient(0)
+ , m_client(nullptr)
+ , m_factoryClient(nullptr)
, m_allowOtherViews(false)
{ }
@@ -103,7 +103,7 @@ public:
void RestoreFocus() override { QT_NOT_USED }
- content::DropData* GetDropData() const override { QT_NOT_YET_IMPLEMENTED return 0; }
+ content::DropData* GetDropData() const override { QT_NOT_YET_IMPLEMENTED return nullptr; }
gfx::Rect GetViewBounds() const override { QT_NOT_YET_IMPLEMENTED return gfx::Rect(); }
diff --git a/src/core/web_engine_context.cpp b/src/core/web_engine_context.cpp
index 6fbdbec61..b7cf1344b 100644
--- a/src/core/web_engine_context.cpp
+++ b/src/core/web_engine_context.cpp
@@ -53,7 +53,6 @@
#endif
#include "components/viz/common/features.h"
#include "components/web_cache/browser/web_cache_manager.h"
-#include "content/app/content_service_manager_main_delegate.h"
#include "content/browser/devtools/devtools_http_handler.h"
#include "content/browser/gpu/gpu_main_thread_factory.h"
#include "content/browser/renderer_host/render_process_host_impl.h"
diff --git a/tests/auto/widgets/origins/resources/mixedXHR.html b/tests/auto/widgets/origins/resources/mixedXHR.html
new file mode 100644
index 000000000..3dfd90006
--- /dev/null
+++ b/tests/auto/widgets/origins/resources/mixedXHR.html
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>Mixed</title>
+ <script>
+ var result;
+ function sendXHR(url) {
+ result = undefined;
+ let req = new XMLHttpRequest();
+ req.addEventListener("load", () => { result = req.responseText });
+ req.addEventListener("error", () => { result = "error"; });
+ req.open("GET", url);
+ req.send();
+ }
+ </script>
+ </head>
+ <body>
+ </body>
+</html>
diff --git a/tests/auto/widgets/origins/resources/mixedXHR.txt b/tests/auto/widgets/origins/resources/mixedXHR.txt
new file mode 100644
index 000000000..b5754e203
--- /dev/null
+++ b/tests/auto/widgets/origins/resources/mixedXHR.txt
@@ -0,0 +1 @@
+ok \ No newline at end of file
diff --git a/tests/auto/widgets/origins/tst_origins.cpp b/tests/auto/widgets/origins/tst_origins.cpp
index a24791f6f..4e415af90 100644
--- a/tests/auto/widgets/origins/tst_origins.cpp
+++ b/tests/auto/widgets/origins/tst_origins.cpp
@@ -177,6 +177,7 @@ private Q_SLOTS:
void subdirWithoutAccess();
void mixedSchemes();
void mixedSchemesWithCsp();
+ void mixedXHR();
#if defined(WEBSOCKETS)
void webSocket();
#endif
@@ -479,6 +480,43 @@ void tst_Origins::mixedSchemesWithCsp()
QTRY_COMPARE(eval(QSL("result")), QVariant(QSL("canLoadButNotAccess")));
}
+// Load the main page over one scheme, then make an XMLHttpRequest to a
+// different scheme.
+//
+// XMLHttpRequests can only be made to http, https, data, and chrome.
+void tst_Origins::mixedXHR()
+{
+ QVERIFY(load(QSL("file:" THIS_DIR "resources/mixedXHR.html")));
+ eval(QSL("sendXHR('file:" THIS_DIR "resources/mixedXHR.txt')"));
+ QTRY_COMPARE(eval(QSL("result")), QVariant(QSL("ok")));
+ eval(QSL("sendXHR('qrc:/resources/mixedXHR.txt')"));
+ QTRY_COMPARE(eval(QSL("result")), QVariant(QSL("error")));
+ eval(QSL("sendXHR('tst:/resources/mixedXHR.txt')"));
+ QTRY_COMPARE(eval(QSL("result")), QVariant(QSL("error")));
+ eval(QSL("sendXHR('data:,ok')"));
+ QTRY_COMPARE(eval(QSL("result")), QVariant(QSL("ok")));
+
+ QVERIFY(load(QSL("qrc:/resources/mixedXHR.html")));
+ eval(QSL("sendXHR('file:" THIS_DIR "resources/mixedXHR.txt')"));
+ QTRY_COMPARE(eval(QSL("result")), QVariant(QSL("ok")));
+ eval(QSL("sendXHR('qrc:/resources/mixedXHR.txt')"));
+ QTRY_COMPARE(eval(QSL("result")), QVariant(QSL("ok")));
+ eval(QSL("sendXHR('tst:/resources/mixedXHR.txt')"));
+ QTRY_COMPARE(eval(QSL("result")), QVariant(QSL("error")));
+ eval(QSL("sendXHR('data:,ok')"));
+ QTRY_COMPARE(eval(QSL("result")), QVariant(QSL("ok")));
+
+ QVERIFY(load(QSL("tst:/resources/mixedXHR.html")));
+ eval(QSL("sendXHR('file:" THIS_DIR "resources/mixedXHR.txt')"));
+ QTRY_COMPARE(eval(QSL("result")), QVariant(QSL("error")));
+ eval(QSL("sendXHR('qrc:/resources/mixedXHR.txt')"));
+ QTRY_COMPARE(eval(QSL("result")), QVariant(QSL("error")));
+ eval(QSL("sendXHR('tst:/resources/mixedXHR.txt')"));
+ QTRY_COMPARE(eval(QSL("result")), QVariant(QSL("ok")));
+ eval(QSL("sendXHR('data:,ok')"));
+ QTRY_COMPARE(eval(QSL("result")), QVariant(QSL("ok")));
+}
+
#if defined(WEBSOCKETS)
class EchoServer : public QObject {
Q_OBJECT
diff --git a/tests/auto/widgets/origins/tst_origins.qrc b/tests/auto/widgets/origins/tst_origins.qrc
index 0b1fe2d31..fcf54aaea 100644
--- a/tests/auto/widgets/origins/tst_origins.qrc
+++ b/tests/auto/widgets/origins/tst_origins.qrc
@@ -7,6 +7,8 @@
<file>resources/mixedSchemes.html</file>
<file>resources/mixedSchemesWithCsp.html</file>
<file>resources/mixedSchemes_frame.html</file>
+ <file>resources/mixedXHR.html</file>
+ <file>resources/mixedXHR.txt</file>
<file>resources/serviceWorker.html</file>
<file>resources/serviceWorker.js</file>
<file>resources/sharedWorker.html</file>
diff --git a/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp b/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp
index cb6e9e405..8ec89a7fa 100644
--- a/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp
+++ b/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp
@@ -2484,6 +2484,18 @@ void tst_QWebEnginePage::getUserMediaRequestDesktopVideoManyPages()
const QString constraints = QStringLiteral("{video: { mandatory: { chromeMediaSource: 'desktop' }}}");
const QWebEnginePage::Feature feature = QWebEnginePage::DesktopVideoCapture;
std::vector<GetUserMediaTestPage> pages(10);
+
+ // Desktop capture needs to be on a desktop
+ std::vector<QWebEngineView> views(10);
+ for (size_t i = 0; i < views.size(); ++i) {
+ QWebEngineView *view = &(views[i]);
+ GetUserMediaTestPage *page = &(pages[i]);
+ view->setPage(page);
+ view->resize(640, 480);
+ view->show();
+ QVERIFY(QTest::qWaitForWindowExposed(view));
+ }
+
for (GetUserMediaTestPage &page : pages)
QTRY_VERIFY_WITH_TIMEOUT(page.loadSucceeded(), 20000);
for (GetUserMediaTestPage &page : pages)
@@ -2505,6 +2517,14 @@ void tst_QWebEnginePage::getUserMediaRequestDesktopVideoManyRequests()
const QString constraints = QStringLiteral("{video: { mandatory: { chromeMediaSource: 'desktop' }}}");
const QWebEnginePage::Feature feature = QWebEnginePage::DesktopVideoCapture;
GetUserMediaTestPage page;
+
+ // Desktop capture needs to be on a desktop
+ QWebEngineView view;
+ view.setPage(&page);
+ view.resize(640, 480);
+ view.show();
+ QVERIFY(QTest::qWaitForWindowExposed(&view));
+
QTRY_VERIFY_WITH_TIMEOUT(page.loadSucceeded(), 20000);
page.settings()->setAttribute(QWebEngineSettings::ScreenCaptureEnabled, true);
for (int i = 0; i != 100; ++i) {
diff --git a/tests/auto/widgets/schemes/tst_schemes.cpp b/tests/auto/widgets/schemes/tst_schemes.cpp
index 2097120ef..6da34efd8 100644
--- a/tests/auto/widgets/schemes/tst_schemes.cpp
+++ b/tests/auto/widgets/schemes/tst_schemes.cpp
@@ -68,7 +68,7 @@ void tst_Schemes::unknownUrlSchemePolicy()
view.show();
QVERIFY(QTest::qWaitForWindowExposed(&view));
QWebEngineSettings *settings = view.page()->profile()->settings();
- settings->setAttribute(QWebEngineSettings::ErrorPageEnabled, false);
+ settings->setAttribute(QWebEngineSettings::ErrorPageEnabled, true);
settings->setAttribute(QWebEngineSettings::FocusOnNavigationEnabled, true);
QWebEngineSettings::UnknownUrlSchemePolicy policies[6] = {QWebEngineSettings::DisallowUnknownUrlSchemes,
@@ -103,8 +103,7 @@ void tst_Schemes::unknownUrlSchemePolicy()
});
}
- bool errorPageEnabled = settings->testAttribute(QWebEngineSettings::ErrorPageEnabled);
- QTRY_COMPARE_WITH_TIMEOUT(loadFinishedSpy.size(), 2 + (errorPageEnabled ? 1 : 0), 15000);
+ QTRY_COMPARE_WITH_TIMEOUT(loadFinishedSpy.size(), 2, 15000);
QCOMPARE(page.acceptNavigationRequestCalls, shouldAccept ? 1 : 0);
}
}
diff --git a/tools/scripts/take_snapshot.py b/tools/scripts/take_snapshot.py
index 442b5fe2a..4bf4381cb 100755
--- a/tools/scripts/take_snapshot.py
+++ b/tools/scripts/take_snapshot.py
@@ -82,6 +82,9 @@ def isInChromiumBlacklist(file_path):
or file_path.startswith('base/android')
or file_path.startswith('breakpad')
or file_path.startswith('buildtools/clang_format/script')
+ or file_path.startswith('buildtools/third_party/libc++')
+ or file_path.startswith('buildtools/third_party/libc++abi')
+ or file_path.startswith('buildtools/third_party/libunwind')
or (file_path.startswith('chrome/') and
not file_path.startswith('chrome/VERSION') and
not file_path.startswith('chrome/browser/chrome_notification_types.h') and
@@ -197,7 +200,7 @@ def isInChromiumBlacklist(file_path):
or file_path.startswith('third_party/icu/android')
or file_path.startswith('third_party/icu/ios')
or file_path.startswith('third_party/instrumented_libraries')
- or file_path.startswith('third_party/jsr-305/src')
+ or file_path.startswith('third_party/jsr-305')
or file_path.startswith('third_party/junit')
or file_path.startswith('third_party/lcov')
or file_path.startswith('third_party/libphonenumber')
@@ -229,7 +232,7 @@ def isInChromiumBlacklist(file_path):
or file_path.startswith('third_party/talloc')
or file_path.startswith('third_party/trace-viewer')
or file_path.startswith('third_party/undoview')
- or file_path.startswith('third_party/wayland/src')
+ or file_path.startswith('third_party/wayland')
or file_path.startswith('third_party/webgl')
or file_path.startswith('third_party/webrtc/resources/')
or file_path.startswith('third_party/webrtc/third_party/boringssl/crypto_test_data.cc')