diff options
author | Jüri Valdmann <juri.valdmann@qt.io> | 2018-10-22 11:21:46 +0200 |
---|---|---|
committer | Jüri Valdmann <juri.valdmann@qt.io> | 2018-10-22 11:26:22 +0200 |
commit | b84324ece095ad1f5a16326c49bdf1428ff5f866 (patch) | |
tree | 9a28dba3724d2ee8c5a6a9f5ac69ea6c9a82da18 | |
parent | 17bd9d9de2d424ef7f7a193e17d1619d6effec7b (diff) | |
parent | f65c5fc155c9f6c3f880389a57b7652614627654 (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
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') |