summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOswald Buddenhagen <oswald.buddenhagen@qt.io>2018-02-06 12:45:32 +0100
committerOswald Buddenhagen <oswald.buddenhagen@qt.io>2018-02-06 12:45:32 +0100
commit9225efb8f8ff0ee75b132b16d93d5c9368b43de8 (patch)
tree2a7fdf716947fe631195eab30af1fe446ae20e29
parentdff5f546d13422dd3f6772baed42c4061be2732a (diff)
parentf52737f60e505101d2364cd6f3713ea8303f30f0 (diff)
Merge dev into 5.11
-rw-r--r--config.tests/winversion/winversion.cpp4
-rw-r--r--mkspecs/features/platform.prf6
m---------src/3rdparty0
-rw-r--r--src/core/api/core_api.pro2
-rw-r--r--src/core/browser_accessibility_qt.cpp22
-rw-r--r--src/core/browser_context_qt.cpp5
-rw-r--r--src/core/browser_context_qt.h1
-rw-r--r--src/core/browser_message_filter_qt.cpp6
-rw-r--r--src/core/browser_message_filter_qt.h4
-rw-r--r--src/core/clipboard_qt.cpp2
-rw-r--r--src/core/common/qt_messages.h3
-rw-r--r--src/core/config/linux.pri7
-rw-r--r--src/core/content_browser_client_qt.cpp60
-rw-r--r--src/core/content_browser_client_qt.h20
-rw-r--r--src/core/content_client_qt.cpp2
-rw-r--r--src/core/cookie_monster_delegate_qt.cpp21
-rw-r--r--src/core/cookie_monster_delegate_qt.h7
-rw-r--r--src/core/core_project.pro1
-rw-r--r--src/core/delegated_frame_node.cpp154
-rw-r--r--src/core/delegated_frame_node.h36
-rw-r--r--src/core/devtools_frontend_qt.cpp16
-rw-r--r--src/core/devtools_manager_delegate_qt.cpp3
-rw-r--r--src/core/gl_surface_qt.cpp114
-rw-r--r--src/core/javascript_dialog_controller.cpp8
-rw-r--r--src/core/javascript_dialog_controller_p.h5
-rw-r--r--src/core/javascript_dialog_manager_qt.cpp12
-rw-r--r--src/core/javascript_dialog_manager_qt.h8
-rw-r--r--src/core/native_web_keyboard_event_qt.cpp6
-rw-r--r--src/core/network_delegate_qt.cpp41
-rw-r--r--src/core/network_delegate_qt.h19
-rw-r--r--src/core/ozone_platform_qt.cpp1
-rw-r--r--src/core/permission_manager_qt.cpp2
-rw-r--r--src/core/print_view_manager_base_qt.cpp75
-rw-r--r--src/core/print_view_manager_base_qt.h11
-rw-r--r--src/core/print_view_manager_qt.cpp19
-rw-r--r--src/core/print_view_manager_qt.h2
-rw-r--r--src/core/qtwebengine.gni3
-rw-r--r--src/core/qtwebengine_resources.gni8
-rw-r--r--src/core/qtwebengine_sources.gni6
-rw-r--r--src/core/render_view_observer_host_qt.cpp10
-rw-r--r--src/core/render_widget_host_view_qt.cpp22
-rw-r--r--src/core/render_widget_host_view_qt.h18
-rw-r--r--src/core/renderer/content_renderer_client_qt.cpp38
-rw-r--r--src/core/renderer/content_renderer_client_qt.h2
-rw-r--r--src/core/renderer/print_web_view_helper_delegate_qt.h4
-rw-r--r--src/core/renderer/user_resource_controller.cpp34
-rw-r--r--src/core/renderer_host/user_resource_controller_host.cpp18
-rw-r--r--src/core/renderer_host/web_channel_ipc_transport_host.cpp22
-rw-r--r--src/core/url_request_context_getter_qt.cpp59
-rw-r--r--src/core/user_script.cpp17
-rw-r--r--src/core/web_contents_adapter.cpp12
-rw-r--r--src/core/web_contents_delegate_qt.cpp15
-rw-r--r--src/core/web_contents_delegate_qt.h3
-rw-r--r--src/core/web_engine_context.cpp11
-rw-r--r--src/core/web_engine_settings.cpp4
-rw-r--r--src/core/yuv_video_node.cpp4
-rw-r--r--src/tools/qwebengine_convert_dict/qwebengine_convert_dict.pro3
-rw-r--r--src/webengine/api/qquickwebengineview.cpp10
-rw-r--r--tests/auto/core/qwebengineurlrequestinterceptor/tst_qwebengineurlrequestinterceptor.cpp6
-rw-r--r--tests/auto/quick/qmltests/data/TestWebEngineView.qml17
-rw-r--r--tests/auto/quick/qmltests/data/script-with-metadata.js4
-rw-r--r--tests/auto/quick/qmltests/data/tst_favicon.qml4
-rw-r--r--tests/auto/quick/qmltests/data/tst_loadFail.qml4
-rw-r--r--tests/auto/quick/qmltests/data/tst_loadUrl.qml6
-rw-r--r--tests/auto/quick/qmltests/data/tst_userScripts.qml12
-rw-r--r--tests/auto/quick/qmltests/data/tst_viewSource.qml6
-rw-r--r--tests/auto/widgets/qwebenginedownloads/tst_qwebenginedownloads.cpp10
-rw-r--r--tests/auto/widgets/qwebenginefaviconmanager/tst_qwebenginefaviconmanager.cpp8
-rw-r--r--tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp52
-rw-r--r--tests/auto/widgets/qwebengineschemes/tst_qwebengineschemes.cpp11
-rwxr-xr-xtools/scripts/take_snapshot.py8
-rw-r--r--tools/scripts/version_resolver.py4
72 files changed, 674 insertions, 506 deletions
diff --git a/config.tests/winversion/winversion.cpp b/config.tests/winversion/winversion.cpp
index 3a7b67212..32748e02c 100644
--- a/config.tests/winversion/winversion.cpp
+++ b/config.tests/winversion/winversion.cpp
@@ -26,8 +26,8 @@
**
****************************************************************************/
-#if !defined(_MSC_FULL_VER) || _MSC_FULL_VER < 190024213
-#error VS 2015 Update 3 with Cumulative Servicing Release or higher is required
+#if !defined(__clang__) && _MSC_FULL_VER < 191125507
+#error VS 2017 Update 3.2 or higher is required
#endif
int main(int, char **)
diff --git a/mkspecs/features/platform.prf b/mkspecs/features/platform.prf
index bb171f753..7f6cc2e3e 100644
--- a/mkspecs/features/platform.prf
+++ b/mkspecs/features/platform.prf
@@ -34,7 +34,7 @@ defineTest(isPlatformSupported) {
return(false)
}
!qtConfig(webengine-winversion) {
- skipBuild("Needs VS 2015 Update 3 with Cumulative Servicing Release or higher")
+ skipBuild("Needs VS 2017 Update 3.2 with Cumulative Servicing Release or higher")
return(false)
}
} else:osx {
@@ -88,11 +88,9 @@ defineTest(isArchSupported) {
}
defineTest(isGCCVersionSupported) {
- # The below will work for gcc 4.7 and up and also match gcc 5
- greaterThan(QT_GCC_MINOR_VERSION, 6):return(true)
greaterThan(QT_GCC_MAJOR_VERSION, 4):return(true)
- skipBuild("Using gcc version "$$QT_GCC_MAJOR_VERSION"."$$QT_GCC_MINOR_VERSION", but at least gcc version 4.7 is required to build Qt WebEngine.")
+ skipBuild("Using gcc version "$$QT_GCC_MAJOR_VERSION"."$$QT_GCC_MINOR_VERSION", but at least gcc version 5 is required to build Qt WebEngine.")
return(false)
}
diff --git a/src/3rdparty b/src/3rdparty
-Subproject f0775ea93ab66f0676993db1633c9098dfb3a3a
+Subproject 3fa04d22883e42bd987e4f83d394a1040b41002
diff --git a/src/core/api/core_api.pro b/src/core/api/core_api.pro
index 0fea312f4..3763fb391 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++11
+CONFIG += staticlib c++14
QT += network core-private
QT_PRIVATE += webenginecoreheaders-private
diff --git a/src/core/browser_accessibility_qt.cpp b/src/core/browser_accessibility_qt.cpp
index e31951307..8441fdad5 100644
--- a/src/core/browser_accessibility_qt.cpp
+++ b/src/core/browser_accessibility_qt.cpp
@@ -214,8 +214,6 @@ QAccessible::Role BrowserAccessibilityQt::role() const
return QAccessible::Section;
case ui::AX_ROLE_BLOCKQUOTE:
return QAccessible::Section;
- case ui::AX_ROLE_BUSY_INDICATOR:
- return QAccessible::NoRole; // This is unused and planned to be removed.
case ui::AX_ROLE_BUTTON:
return QAccessible::Button;
case ui::AX_ROLE_BUTTON_DROP_DOWN:
@@ -297,8 +295,6 @@ QAccessible::Role BrowserAccessibilityQt::role() const
return QAccessible::Graphic;
case ui::AX_ROLE_IMAGE_MAP:
return QAccessible::Graphic;
- case ui::AX_ROLE_IMAGE_MAP_LINK:
- return QAccessible::Link;
case ui::AX_ROLE_INLINE_TEXT_BOX:
return QAccessible::EditableText;
case ui::AX_ROLE_INPUT_TIME:
@@ -355,8 +351,6 @@ QAccessible::Role BrowserAccessibilityQt::role() const
return QAccessible::Section;
case ui::AX_ROLE_NOTE:
return QAccessible::Note;
- case ui::AX_ROLE_OUTLINE:
- return QAccessible::Tree;
case ui::AX_ROLE_PANE:
return QAccessible::Pane;
case ui::AX_ROLE_PARAGRAPH:
@@ -381,14 +375,8 @@ QAccessible::Role BrowserAccessibilityQt::role() const
return QAccessible::RowHeader;
case ui::AX_ROLE_RUBY:
return QAccessible::StaticText;
- case ui::AX_ROLE_RULER:
- return QAccessible::NoRole; // FIXME
- case ui::AX_ROLE_SCROLL_AREA:
- return QAccessible::Client; // FIXME
case ui::AX_ROLE_SCROLL_BAR:
return QAccessible::ScrollBar;
- case ui::AX_ROLE_SEAMLESS_WEB_AREA:
- return QAccessible::NoRole; // FIXME
case ui::AX_ROLE_SEARCH:
return QAccessible::Section;
case ui::AX_ROLE_SEARCH_BOX:
@@ -417,8 +405,6 @@ QAccessible::Role BrowserAccessibilityQt::role() const
return QAccessible::Section;
case ui::AX_ROLE_TAB:
return QAccessible::PageTab;
- case ui::AX_ROLE_TAB_GROUP: // blink doesn't use (uses ROLE_TAB_LIST)
- return QAccessible::NoRole; // FIXME
case ui::AX_ROLE_TAB_LIST:
return QAccessible::PageTabList;
case ui::AX_ROLE_TAB_PANEL:
@@ -456,8 +442,6 @@ QAccessible::State BrowserAccessibilityQt::state() const
{
QAccessible::State state = QAccessible::State();
int32_t s = GetState();
- if (s & (1 << ui::AX_STATE_BUSY))
- state.busy = true;
if (s & (1 << ui::AX_STATE_COLLAPSED))
state.collapsed = true;
if (s & (1 << ui::AX_STATE_DEFAULT))
@@ -478,8 +462,6 @@ QAccessible::State BrowserAccessibilityQt::state() const
state.linked = true;
if (s & (1 << ui::AX_STATE_MULTISELECTABLE))
state.multiSelectable = true;
- if (s & (1 << ui::AX_STATE_OFFSCREEN))
- state.offscreen = true;
if (s & (1 << ui::AX_STATE_PROTECTED))
{} // FIXME
if (s & (1 << ui::AX_STATE_REQUIRED))
@@ -495,8 +477,12 @@ QAccessible::State BrowserAccessibilityQt::state() const
if (s & (1 << ui::AX_STATE_VISITED))
{} // FIXME
+ if (IsOffscreen())
+ state.offscreen = true;
if (manager()->GetFocus() == this)
state.focused = true;
+ if (GetBoolAttribute(ui::AX_ATTR_BUSY))
+ state.busy = true;
if (HasIntAttribute(ui::AX_ATTR_CHECKED_STATE)) {
ui::AXCheckedState checkedState = (ui::AXCheckedState)GetIntAttribute(ui::AX_ATTR_CHECKED_STATE);
switch (checkedState) {
diff --git a/src/core/browser_context_qt.cpp b/src/core/browser_context_qt.cpp
index 8b8fbf69e..af8655b83 100644
--- a/src/core/browser_context_qt.cpp
+++ b/src/core/browser_context_qt.cpp
@@ -177,6 +177,11 @@ std::unique_ptr<content::ZoomLevelDelegate> BrowserContextQt::CreateZoomLevelDel
return nullptr;
}
+content::BackgroundFetchDelegate* BrowserContextQt::GetBackgroundFetchDelegate()
+{
+ return nullptr;
+}
+
content::BackgroundSyncController* BrowserContextQt::GetBackgroundSyncController()
{
return nullptr;
diff --git a/src/core/browser_context_qt.h b/src/core/browser_context_qt.h
index e7002c012..58bc75d5b 100644
--- a/src/core/browser_context_qt.h
+++ b/src/core/browser_context_qt.h
@@ -90,6 +90,7 @@ public:
content::URLRequestInterceptorScopedVector request_interceptors) override;
std::unique_ptr<content::ZoomLevelDelegate> CreateZoomLevelDelegate(const base::FilePath& partition_path) override;
content::PermissionManager *GetPermissionManager() override;
+ content::BackgroundFetchDelegate* GetBackgroundFetchDelegate() override;
content::BackgroundSyncController* GetBackgroundSyncController() override;
content::BrowsingDataRemoverDelegate *GetBrowsingDataRemoverDelegate() override;
diff --git a/src/core/browser_message_filter_qt.cpp b/src/core/browser_message_filter_qt.cpp
index 13d74df72..5248c2a73 100644
--- a/src/core/browser_message_filter_qt.cpp
+++ b/src/core/browser_message_filter_qt.cpp
@@ -58,7 +58,7 @@ BrowserMessageFilterQt::BrowserMessageFilterQt(int /*render_process_id*/)
bool BrowserMessageFilterQt::OnMessageReceived(const IPC::Message& message)
{
IPC_BEGIN_MESSAGE_MAP(BrowserMessageFilterQt, message)
-#if BUILDFLAG(ENABLE_PEPPER_CDMS)
+#if BUILDFLAG(ENABLE_LIBRARY_CDMS)
IPC_MESSAGE_HANDLER(
QtWebEngineHostMsg_IsInternalPluginAvailableForMimeType,
OnIsInternalPluginAvailableForMimeType)
@@ -68,7 +68,7 @@ bool BrowserMessageFilterQt::OnMessageReceived(const IPC::Message& message)
return true;
}
-#if BUILDFLAG(ENABLE_PEPPER_CDMS)
+#if BUILDFLAG(ENABLE_LIBRARY_CDMS)
void BrowserMessageFilterQt::OnIsInternalPluginAvailableForMimeType(
const std::string& mime_type, bool* is_available,
std::vector<base::string16>* additional_param_names,
@@ -93,6 +93,6 @@ void BrowserMessageFilterQt::OnIsInternalPluginAvailableForMimeType(
*is_available = false;
}
-#endif // BUILDFLAG(ENABLE_PEPPER_CDMS)
+#endif // BUILDFLAG(ENABLE_LIBRARY_CDMS)
} // namespace QtWebEngineCore
diff --git a/src/core/browser_message_filter_qt.h b/src/core/browser_message_filter_qt.h
index 054625c96..175319805 100644
--- a/src/core/browser_message_filter_qt.h
+++ b/src/core/browser_message_filter_qt.h
@@ -41,7 +41,7 @@
#define BROWSER_MESSAGE_FILTER_QT_H
#include "content/public/browser/browser_message_filter.h"
-#include "ppapi/features/features.h"
+#include "media/media_features.h"
namespace QtWebEngineCore {
@@ -52,7 +52,7 @@ public:
private:
bool OnMessageReceived(const IPC::Message& message) override;
-#if BUILDFLAG(ENABLE_PEPPER_CDMS)
+#if BUILDFLAG(ENABLE_LIBRARY_CDMS)
// Returns whether any internal plugin supporting |mime_type| is registered
// and enabled. Does not determine whether the plugin can actually be
// instantiated (e.g. whether it has all its dependencies).
diff --git a/src/core/clipboard_qt.cpp b/src/core/clipboard_qt.cpp
index 152c4db63..cff975e61 100644
--- a/src/core/clipboard_qt.cpp
+++ b/src/core/clipboard_qt.cpp
@@ -223,7 +223,7 @@ void ClipboardQt::WriteObjects(ui::ClipboardType type, const ObjectMap& objects)
if (text_iter != objects.end()) {
// Copy text and SourceTag to the selection clipboard.
ObjectMap::const_iterator next_iter = text_iter;
- WriteObjects(ui::CLIPBOARD_TYPE_SELECTION, ObjectMap(text_iter, ++next_iter));
+ WriteObjects(ui::CLIPBOARD_TYPE_SELECTION, ObjectMap(text_iter, ++next_iter, base::KEEP_FIRST_OF_DUPES));
}
}
}
diff --git a/src/core/common/qt_messages.h b/src/core/common/qt_messages.h
index fae80186b..3bedb10d2 100644
--- a/src/core/common/qt_messages.h
+++ b/src/core/common/qt_messages.h
@@ -4,6 +4,7 @@
// Multiply-included file, no traditional include guard.
+#include "media/media_features.h"
#include "content/public/common/common_param_traits.h"
#include "ipc/ipc_message_macros.h"
#include "ppapi/features/features.h"
@@ -73,7 +74,7 @@ IPC_MESSAGE_ROUTED1(WebChannelIPCTransportHost_SendMessage, std::vector<char> /*
// Misc messages
// These are messages sent from the renderer to the browser process.
-#if BUILDFLAG(ENABLE_PEPPER_CDMS)
+#if BUILDFLAG(ENABLE_LIBRARY_CDMS)
// Returns whether any internal plugin supporting |mime_type| is registered and
// enabled. Does not determine whether the plugin can actually be instantiated
// (e.g. whether it has all its dependencies).
diff --git a/src/core/config/linux.pri b/src/core/config/linux.pri
index 6f7b27f10..cdb723b79 100644
--- a/src/core/config/linux.pri
+++ b/src/core/config/linux.pri
@@ -8,9 +8,7 @@ gn_args += \
use_gio=false \
use_gnome_keyring=false \
use_kerberos=false \
- linux_use_bundled_binutils=false \
- use_nss_certs=true \
- use_openssl_certs=false
+ linux_use_bundled_binutils=false
gcc:!clang: greaterThan(QT_GCC_MAJOR_VERSION, 5): gn_args += no_delete_null_pointer_checks=true
@@ -95,7 +93,6 @@ host_build {
gn_args += host_cpu=\"$$GN_HOST_CPU\"
# Don't bother trying to use system libraries in this case
gn_args += use_glib=false
- gn_args += use_system_libffi=false
} else {
gn_args += custom_toolchain=\"$$QTWEBENGINE_OUT_ROOT/src/toolchain:target\"
gn_args += host_toolchain=\"$$QTWEBENGINE_OUT_ROOT/src/toolchain:host\"
@@ -136,8 +133,6 @@ host_build {
} else {
gn_args += use_alsa=false
}
- packagesExist(libffi): gn_args += use_system_libffi=true
- else: gn_args += use_system_libffi=false
!packagesExist(libpci): gn_args += use_libpci=false
!packagesExist(xscrnsaver): gn_args += use_xscrnsaver=false
diff --git a/src/core/content_browser_client_qt.cpp b/src/core/content_browser_client_qt.cpp
index 5689a4fb8..446764f19 100644
--- a/src/core/content_browser_client_qt.cpp
+++ b/src/core/content_browser_client_qt.cpp
@@ -50,6 +50,7 @@
#endif
#endif
#include "content/browser/renderer_host/render_view_host_delegate.h"
+#include "content/common/url_schemes.h"
#include "content/public/browser/browser_main_parts.h"
#include "content/public/browser/child_process_security_policy.h"
#include "content/public/browser/client_certificate_delegate.h"
@@ -72,7 +73,7 @@
#include "net/ssl/client_cert_identity.h"
#include "services/service_manager/public/cpp/bind_source_info.h"
#include "services/service_manager/public/cpp/binder_registry.h"
-#include "third_party/WebKit/public/platform/modules/sensitive_input_visibility/sensitive_input_visibility_service.mojom.h"
+#include "third_party/WebKit/public/platform/modules/insecure_input/insecure_input_service.mojom.h"
#include "ui/base/ui_base_switches.h"
#include "ui/display/screen.h"
#include "ui/gl/gl_context.h"
@@ -358,6 +359,14 @@ public:
{
return nullptr;
}
+ const gl::ExtensionSet& GetExtensions() override
+ {
+ static const gl::ExtensionSet s_emptySet;
+ return s_emptySet;
+ }
+ void ResetExtensions() override
+ {
+ }
private:
void *m_handle;
@@ -380,7 +389,7 @@ void ShareGroupQtQuick::AboutToAddFirstContext()
if (!shareContext) {
qFatal("QWebEngine: OpenGL resource sharing is not set up in QtQuick. Please make sure to call QtWebEngine::initialize() in your main() function.");
}
- m_shareContextQtQuick = make_scoped_refptr(new QtShareGLContext(shareContext));
+ m_shareContextQtQuick = new QtShareGLContext(shareContext);
#endif
}
@@ -413,7 +422,7 @@ void ContentBrowserClientQt::RenderProcessWillLaunch(content::RenderProcessHost*
const int id = host->GetID();
content::ChildProcessSecurityPolicy::GetInstance()->GrantScheme(id, url::kFileScheme);
static_cast<BrowserContextQt*>(host->GetBrowserContext())->m_adapter->userResourceController()->renderProcessStartedWithHost(host);
-#if BUILDFLAG(ENABLE_PEPPER_CDMS)
+#if BUILDFLAG(ENABLE_LIBRARY_CDMS)
host->AddFilter(new BrowserMessageFilterQt(id));
#endif
#if defined(Q_OS_MACOS) && BUILDFLAG(ENABLE_SPELLCHECK) && BUILDFLAG(USE_BROWSER_SPELLCHECKER)
@@ -464,18 +473,17 @@ void ContentBrowserClientQt::GetQuotaSettings(content::BrowserContext* context,
}
void ContentBrowserClientQt::AllowCertificateError(content::WebContents *webContents,
- int cert_error,
- const net::SSLInfo& ssl_info,
- const GURL& request_url,
- content::ResourceType resource_type,
- bool overridable,
- bool strict_enforcement,
- bool expired_previous_decision,
- const base::Callback<void(content::CertificateRequestResultType)>& callback)
+ int cert_error,
+ const net::SSLInfo &ssl_info,
+ const GURL &request_url,
+ content::ResourceType resource_type,
+ bool strict_enforcement,
+ bool expired_previous_decision,
+ const base::Callback<void(content::CertificateRequestResultType)> &callback)
{
WebContentsDelegateQt* contentsDelegate = static_cast<WebContentsDelegateQt*>(webContents->GetDelegate());
- QSharedPointer<CertificateErrorController> errorController(new CertificateErrorController(new CertificateErrorControllerPrivate(cert_error, ssl_info, request_url, resource_type, overridable, strict_enforcement, callback)));
+ QSharedPointer<CertificateErrorController> errorController(new CertificateErrorController(new CertificateErrorControllerPrivate(cert_error, ssl_info, request_url, resource_type, strict_enforcement, strict_enforcement, callback)));
contentsDelegate->allowCertificateError(errorController);
}
@@ -506,13 +514,19 @@ void ContentBrowserClientQt::AppendExtraCommandLineSwitches(base::CommandLine* c
command_line->AppendSwitchASCII(switches::kLang, GetApplicationLocale());
}
+void ContentBrowserClientQt::GetAdditionalWebUISchemes(std::vector<std::string>* additional_schemes)
+{
+ additional_schemes->push_back(content::kChromeDevToolsScheme);
+}
+
void ContentBrowserClientQt::GetAdditionalViewSourceSchemes(std::vector<std::string>* additional_schemes)
{
+ GetAdditionalWebUISchemes(additional_schemes);
additional_schemes->push_back(kQrcSchemeQt);
}
#if defined(Q_OS_LINUX)
-void ContentBrowserClientQt::GetAdditionalMappedFilesForChildProcess(const base::CommandLine& command_line, int child_process_id, content::FileDescriptorInfo* mappings)
+void ContentBrowserClientQt::GetAdditionalMappedFilesForChildProcess(const base::CommandLine& command_line, int child_process_id, content::PosixFileDescriptorInfo* mappings)
{
const std::string &locale = GetApplicationLocale();
const base::FilePath &locale_file_path = ui::ResourceBundle::GetSharedInstance().GetLocaleFilePath(locale, true);
@@ -542,7 +556,7 @@ content::DevToolsManagerDelegate* ContentBrowserClientQt::GetDevToolsManagerDele
// This is a really complicated way of doing absolutely nothing, but Mojo demands it:
class ServiceDriver
- : public blink::mojom::SensitiveInputVisibilityService
+ : public blink::mojom::InsecureInputService
, public content::WebContentsUserData<ServiceDriver>
{
public:
@@ -561,38 +575,38 @@ public:
return nullptr;
return FromWebContents(web_contents);
}
- static void BindSensitiveInputVisibilityService(blink::mojom::SensitiveInputVisibilityServiceRequest request,
- content::RenderFrameHost* render_frame_host)
+ static void BindInsecureInputService(blink::mojom::InsecureInputServiceRequest request, content::RenderFrameHost *render_frame_host)
{
CreateForRenderFrameHost(render_frame_host);
ServiceDriver *driver = FromRenderFrameHost(render_frame_host);
if (driver)
- driver->BindSensitiveInputVisibilityServiceRequest(std::move(request));
+ driver->BindInsecureInputServiceRequest(std::move(request));
}
- void BindSensitiveInputVisibilityServiceRequest(blink::mojom::SensitiveInputVisibilityServiceRequest request)
+ void BindInsecureInputServiceRequest(blink::mojom::InsecureInputServiceRequest request)
{
- m_sensitiveInputVisibilityBindings.AddBinding(this, std::move(request));
+ m_insecureInputServiceBindings.AddBinding(this, std::move(request));
}
- // blink::mojom::SensitiveInputVisibility:
+ // blink::mojom::InsecureInputService:
void PasswordFieldVisibleInInsecureContext() override
{ }
void AllPasswordFieldsInInsecureContextInvisible() override
{ }
+ void DidEditFieldInInsecureContext() override
+ { }
private:
explicit ServiceDriver(content::WebContents* /*web_contents*/) { }
friend class content::WebContentsUserData<ServiceDriver>;
- mojo::BindingSet<blink::mojom::SensitiveInputVisibilityService> m_sensitiveInputVisibilityBindings;
-
+ mojo::BindingSet<blink::mojom::InsecureInputService> m_insecureInputServiceBindings;
};
void ContentBrowserClientQt::InitFrameInterfaces()
{
m_frameInterfaces = base::MakeUnique<service_manager::BinderRegistry>();
m_frameInterfacesParameterized = base::MakeUnique<service_manager::BinderRegistryWithArgs<content::RenderFrameHost*>>();
- m_frameInterfacesParameterized->AddInterface(base::Bind(&ServiceDriver::BindSensitiveInputVisibilityService));
+ m_frameInterfacesParameterized->AddInterface(base::Bind(&ServiceDriver::BindInsecureInputService));
}
void ContentBrowserClientQt::BindInterfaceRequestFromFrame(content::RenderFrameHost* render_frame_host,
diff --git a/src/core/content_browser_client_qt.h b/src/core/content_browser_client_qt.h
index db5cbd191..094ad6549 100644
--- a/src/core/content_browser_client_qt.h
+++ b/src/core/content_browser_client_qt.h
@@ -95,15 +95,14 @@ public:
content::StoragePartition *partition,
storage::OptionalQuotaSettingsCallback callback) override;
void OverrideWebkitPrefs(content::RenderViewHost *, content::WebPreferences *) override;
- void AllowCertificateError(content::WebContents* web_contents,
- int cert_error,
- const net::SSLInfo& ssl_info,
- const GURL& request_url,
- content::ResourceType resource_type,
- bool overridable,
- bool strict_enforcement,
- bool expired_previous_decision,
- const base::Callback<void(content::CertificateRequestResultType)>& callback) override;
+ void AllowCertificateError(content::WebContents *web_contents,
+ int cert_error,
+ const net::SSLInfo &ssl_info,
+ const GURL &request_url,
+ content::ResourceType resource_type,
+ bool strict_enforcement,
+ bool expired_previous_decision,
+ const base::Callback<void(content::CertificateRequestResultType)> &callback) override;
void SelectClientCertificate(content::WebContents* web_contents,
net::SSLCertRequestInfo* cert_request_info,
net::ClientCertIdentityList client_certs,
@@ -114,6 +113,7 @@ public:
std::string GetAcceptLangs(content::BrowserContext* context) override;
void AppendExtraCommandLineSwitches(base::CommandLine* command_line, int child_process_id) override;
void GetAdditionalViewSourceSchemes(std::vector<std::string>* additional_schemes) override;
+ void GetAdditionalWebUISchemes(std::vector<std::string>* additional_schemes) override;
void BindInterfaceRequestFromFrame(content::RenderFrameHost* render_frame_host,
const std::string& interface_name,
@@ -153,7 +153,7 @@ public:
const net::CookieOptions& options) override;
#if defined(Q_OS_LINUX)
- void GetAdditionalMappedFilesForChildProcess(const base::CommandLine& command_line, int child_process_id, content::FileDescriptorInfo* mappings) override;
+ void GetAdditionalMappedFilesForChildProcess(const base::CommandLine& command_line, int child_process_id, content::PosixFileDescriptorInfo* mappings) override;
#endif
#if BUILDFLAG(ENABLE_PLUGINS)
diff --git a/src/core/content_client_qt.cpp b/src/core/content_client_qt.cpp
index a3a460cb4..66c63b1b8 100644
--- a/src/core/content_client_qt.cpp
+++ b/src/core/content_client_qt.cpp
@@ -202,7 +202,7 @@ void AddPepperFlashFromCommandLine(std::vector<content::PepperPluginInfo>* plugi
void AddPepperWidevine(std::vector<content::PepperPluginInfo>* plugins)
{
-#if defined(WIDEVINE_CDM_AVAILABLE) && BUILDFLAG(ENABLE_PEPPER_CDMS) && !defined(WIDEVINE_CDM_IS_COMPONENT)
+#if defined(WIDEVINE_CDM_AVAILABLE) && BUILDFLAG(ENABLE_LIBRARY_CDMS) && !defined(WIDEVINE_CDM_IS_COMPONENT)
QStringList pluginPaths;
const base::CommandLine::StringType widevine_argument = base::CommandLine::ForCurrentProcess()->GetSwitchValueNative(switches::kPpapiWidevinePath);
if (!widevine_argument.empty())
diff --git a/src/core/cookie_monster_delegate_qt.cpp b/src/core/cookie_monster_delegate_qt.cpp
index 58cd481dc..abc386204 100644
--- a/src/core/cookie_monster_delegate_qt.cpp
+++ b/src/core/cookie_monster_delegate_qt.cpp
@@ -86,6 +86,17 @@ CookieMonsterDelegateQt::~CookieMonsterDelegateQt()
}
+void CookieMonsterDelegateQt::AddStore(net::CookieStore *store)
+{
+ std::unique_ptr<net::CookieStore::CookieChangedSubscription> sub =
+ store->AddCallbackForAllChanges(
+ base::Bind(&CookieMonsterDelegateQt::OnCookieChanged,
+ // this object's destruction will deregister the subscription.
+ base::Unretained(this)));
+
+ m_subscriptions.push_back(std::move(sub));
+}
+
bool CookieMonsterDelegateQt::hasCookieMonster()
{
return m_cookieMonster;
@@ -184,9 +195,13 @@ void CookieMonsterDelegateQt::DeleteAllOnIOThread(net::CookieMonster::DeleteCall
void CookieMonsterDelegateQt::setCookieMonster(net::CookieMonster* monster)
{
- if (!monster && !m_cookieMonster)
+ if (monster == m_cookieMonster)
return;
+ m_subscriptions.clear();
+ if (monster)
+ AddStore(monster);
+
m_cookieMonster = monster;
if (!m_client)
@@ -227,11 +242,11 @@ bool CookieMonsterDelegateQt::canGetCookies(const QUrl &firstPartyUrl, const QUr
return m_client->d_func()->canAccessCookies(firstPartyUrl, url);
}
-void CookieMonsterDelegateQt::OnCookieChanged(const net::CanonicalCookie& cookie, bool removed, net::CookieStore::ChangeCause cause)
+void CookieMonsterDelegateQt::OnCookieChanged(const net::CanonicalCookie& cookie, net::CookieStore::ChangeCause cause)
{
if (!m_client)
return;
- m_client->d_func()->onCookieChanged(toQt(cookie), removed);
+ m_client->d_func()->onCookieChanged(toQt(cookie), cause != net::CookieStore::ChangeCause::INSERTED);
}
}
diff --git a/src/core/cookie_monster_delegate_qt.h b/src/core/cookie_monster_delegate_qt.h
index 941992a7b..8aceca9c9 100644
--- a/src/core/cookie_monster_delegate_qt.h
+++ b/src/core/cookie_monster_delegate_qt.h
@@ -64,9 +64,10 @@ namespace QtWebEngineCore {
static const char* const kCookieableSchemes[] =
{ "http", "https", "qrc", "ws", "wss" };
-class QWEBENGINE_EXPORT CookieMonsterDelegateQt: public net::CookieMonsterDelegate {
+class QWEBENGINE_EXPORT CookieMonsterDelegateQt : public base::RefCountedThreadSafe<CookieMonsterDelegateQt> {
QPointer<QWebEngineCookieStore> m_client;
net::CookieMonster *m_cookieMonster;
+ std::vector<std::unique_ptr<net::CookieStore::CookieChangedSubscription>> m_subscriptions;
public:
CookieMonsterDelegateQt();
~CookieMonsterDelegateQt();
@@ -84,7 +85,9 @@ public:
bool canSetCookie(const QUrl &firstPartyUrl, const QByteArray &cookieLine, const QUrl &url);
bool canGetCookies(const QUrl &firstPartyUrl, const QUrl &url);
- void OnCookieChanged(const net::CanonicalCookie& cookie, bool removed, net::CookieStore::ChangeCause cause) override;
+
+ void AddStore(net::CookieStore *store);
+ void OnCookieChanged(const net::CanonicalCookie &cookie, net::CookieStore::ChangeCause cause);
private:
void GetAllCookiesOnIOThread(net::CookieMonster::GetCookieListCallback callback);
diff --git a/src/core/core_project.pro b/src/core/core_project.pro
index c046ce1ff..2d2bef60d 100644
--- a/src/core/core_project.pro
+++ b/src/core/core_project.pro
@@ -11,6 +11,7 @@ linking_pri = $$OUT_PWD/$$getConfigDir()/$${TARGET}.pri
CHROMIUM_SRC_DIR = $$QTWEBENGINE_ROOT/$$getChromiumSrcDir()
INCLUDEPATH += $$CHROMIUM_SRC_DIR \
+ $$CHROMIUM_SRC_DIR/third_party/WebKit/Source \
$$OUT_PWD/$$getConfigDir()/gen
SOURCES += $$NINJA_SOURCES
diff --git a/src/core/delegated_frame_node.cpp b/src/core/delegated_frame_node.cpp
index de39300c9..149bd3b5e 100644
--- a/src/core/delegated_frame_node.cpp
+++ b/src/core/delegated_frame_node.cpp
@@ -58,19 +58,19 @@
#include "base/message_loop/message_loop.h"
#include "base/threading/thread_task_runner_handle.h"
#include "cc/base/math_util.h"
-#include "cc/output/bsp_tree.h"
-#include "cc/output/compositor_frame.h"
-#include "cc/output/compositor_frame_metadata.h"
-#include "cc/quads/debug_border_draw_quad.h"
-#include "cc/quads/draw_quad.h"
-#include "cc/quads/render_pass_draw_quad.h"
-#include "cc/quads/solid_color_draw_quad.h"
-#include "cc/quads/stream_video_draw_quad.h"
-#include "cc/quads/texture_draw_quad.h"
-#include "cc/quads/tile_draw_quad.h"
-#include "cc/quads/yuv_video_draw_quad.h"
-#include "cc/resources/returned_resource.h"
-#include "cc/resources/transferable_resource.h"
+#include "components/viz/common/quads/compositor_frame.h"
+#include "components/viz/common/quads/compositor_frame_metadata.h"
+#include "components/viz/common/quads/debug_border_draw_quad.h"
+#include "components/viz/common/quads/draw_quad.h"
+#include "components/viz/common/quads/render_pass_draw_quad.h"
+#include "components/viz/common/quads/solid_color_draw_quad.h"
+#include "components/viz/common/quads/stream_video_draw_quad.h"
+#include "components/viz/common/quads/texture_draw_quad.h"
+#include "components/viz/common/quads/tile_draw_quad.h"
+#include "components/viz/common/quads/yuv_video_draw_quad.h"
+#include "components/viz/common/resources/returned_resource.h"
+#include "components/viz/common/resources/transferable_resource.h"
+#include "components/viz/service/display/bsp_tree.h"
#include "components/viz/service/display_embedder/server_shared_bitmap_manager.h"
#include "gpu/command_buffer/service/mailbox_manager.h"
#include "ui/gl/gl_context.h"
@@ -151,17 +151,17 @@ private:
#endif // QT_NO_OPENGL
class ResourceHolder {
public:
- ResourceHolder(const cc::TransferableResource &resource);
+ ResourceHolder(const viz::TransferableResource &resource);
QSharedPointer<QSGTexture> initTexture(bool quadIsAllOpaque, RenderWidgetHostViewQtDelegate *apiDelegate = 0);
QSGTexture *texture() const { return m_texture.data(); }
- cc::TransferableResource &transferableResource() { return m_resource; }
- cc::ReturnedResource returnResource();
+ viz::TransferableResource &transferableResource() { return m_resource; }
+ viz::ReturnedResource returnResource();
void incImportCount() { ++m_importCount; }
bool needsToFetch() const { return !m_resource.is_software && m_texture && !m_texture.data()->textureId(); }
private:
QWeakPointer<QSGTexture> m_texture;
- cc::TransferableResource m_resource;
+ viz::TransferableResource m_resource;
int m_importCount;
};
@@ -449,7 +449,7 @@ static QSGNode *buildRenderPassChain(QSGNode *chainParent)
return zCompressNode;
}
-static QSGNode *buildLayerChain(QSGNode *chainParent, const cc::SharedQuadState *layerState)
+static QSGNode *buildLayerChain(QSGNode *chainParent, const viz::SharedQuadState *layerState)
{
QSGNode *layerChain = chainParent;
if (layerState->is_clipped) {
@@ -634,7 +634,7 @@ void MailboxTexture::fetchTexture(gpu::gles2::MailboxManager *mailboxManager)
}
#endif //QT_NO_OPENGL
-ResourceHolder::ResourceHolder(const cc::TransferableResource &resource)
+ResourceHolder::ResourceHolder(const viz::TransferableResource &resource)
: m_resource(resource)
, m_importCount(1)
{
@@ -671,9 +671,9 @@ QSharedPointer<QSGTexture> ResourceHolder::initTexture(bool quadNeedsBlending, R
return texture;
}
-cc::ReturnedResource ResourceHolder::returnResource()
+viz::ReturnedResource ResourceHolder::returnResource()
{
- cc::ReturnedResource returned;
+ viz::ReturnedResource returned;
// The ResourceProvider ensures that the resource isn't used by the parent compositor's GL
// context in the GPU process by inserting a sync point to be waited for by the child
// compositor's GL context. We don't need this since we are triggering the delegated frame
@@ -751,22 +751,22 @@ void DelegatedFrameNode::preprocess()
}
}
-static YUVVideoMaterial::ColorSpace toQt(cc::YUVVideoDrawQuad::ColorSpace color_space)
+static YUVVideoMaterial::ColorSpace toQt(viz::YUVVideoDrawQuad::ColorSpace color_space)
{
switch (color_space) {
- case cc::YUVVideoDrawQuad::REC_601:
+ case viz::YUVVideoDrawQuad::REC_601:
return YUVVideoMaterial::REC_601;
- case cc::YUVVideoDrawQuad::REC_709:
+ case viz::YUVVideoDrawQuad::REC_709:
return YUVVideoMaterial::REC_709;
- case cc::YUVVideoDrawQuad::JPEG:
+ case viz::YUVVideoDrawQuad::JPEG:
return YUVVideoMaterial::JPEG;
}
Q_UNREACHABLE();
return YUVVideoMaterial::REC_601;
}
-static bool areSharedQuadStatesEqual(const cc::SharedQuadState *layerState,
- const cc::SharedQuadState *prevLayerState)
+static bool areSharedQuadStatesEqual(const viz::SharedQuadState *layerState,
+ const viz::SharedQuadState *prevLayerState)
{
if (layerState->is_clipped != prevLayerState->is_clipped
|| layerState->clip_rect != prevLayerState->clip_rect)
@@ -779,8 +779,8 @@ static bool areSharedQuadStatesEqual(const cc::SharedQuadState *layerState,
// Compares if the frame data that we got from the Chromium Compositor is
// *structurally* equivalent to the one of the previous frame.
// If it is, we will just reuse and update the old nodes where necessary.
-static bool areRenderPassStructuresEqual(cc::CompositorFrame *frameData,
- cc::CompositorFrame *previousFrameData)
+static bool areRenderPassStructuresEqual(viz::CompositorFrame *frameData,
+ viz::CompositorFrame *previousFrameData)
{
if (!previousFrameData)
return false;
@@ -789,8 +789,8 @@ static bool areRenderPassStructuresEqual(cc::CompositorFrame *frameData,
return false;
for (unsigned i = 0; i < frameData->render_pass_list.size(); ++i) {
- cc::RenderPass *newPass = frameData->render_pass_list.at(i).get();
- cc::RenderPass *prevPass = previousFrameData->render_pass_list.at(i).get();
+ viz::RenderPass *newPass = frameData->render_pass_list.at(i).get();
+ viz::RenderPass *prevPass = previousFrameData->render_pass_list.at(i).get();
if (newPass->id != prevPass->id)
return false;
@@ -798,22 +798,22 @@ static bool areRenderPassStructuresEqual(cc::CompositorFrame *frameData,
if (newPass->quad_list.size() != prevPass->quad_list.size())
return false;
- cc::QuadList::ConstBackToFrontIterator it = newPass->quad_list.BackToFrontBegin();
- cc::QuadList::ConstBackToFrontIterator end = newPass->quad_list.BackToFrontEnd();
- cc::QuadList::ConstBackToFrontIterator prevIt = prevPass->quad_list.BackToFrontBegin();
- cc::QuadList::ConstBackToFrontIterator prevEnd = prevPass->quad_list.BackToFrontEnd();
+ viz::QuadList::ConstBackToFrontIterator it = newPass->quad_list.BackToFrontBegin();
+ viz::QuadList::ConstBackToFrontIterator end = newPass->quad_list.BackToFrontEnd();
+ viz::QuadList::ConstBackToFrontIterator prevIt = prevPass->quad_list.BackToFrontBegin();
+ viz::QuadList::ConstBackToFrontIterator prevEnd = prevPass->quad_list.BackToFrontEnd();
for (; it != end && prevIt != prevEnd; ++it, ++prevIt) {
- const cc::DrawQuad *quad = *it;
- const cc::DrawQuad *prevQuad = *prevIt;
+ const viz::DrawQuad *quad = *it;
+ const viz::DrawQuad *prevQuad = *prevIt;
if (!areSharedQuadStatesEqual(quad->shared_quad_state, prevQuad->shared_quad_state))
return false;
if (quad->material != prevQuad->material)
return false;
#ifndef QT_NO_OPENGL
- if (quad->material == cc::DrawQuad::YUV_VIDEO_CONTENT)
+ if (quad->material == viz::DrawQuad::YUV_VIDEO_CONTENT)
return false;
#ifdef GL_OES_EGL_image_external
- if (quad->material == cc::DrawQuad::STREAM_VIDEO_CONTENT)
+ if (quad->material == viz::DrawQuad::STREAM_VIDEO_CONTENT)
return false;
#endif // GL_OES_EGL_image_external
#endif // QT_NO_OPENGL
@@ -824,11 +824,11 @@ static bool areRenderPassStructuresEqual(cc::CompositorFrame *frameData,
}
void DelegatedFrameNode::commit(ChromiumCompositorData *chromiumCompositorData,
- std::vector<cc::ReturnedResource> *resourcesToRelease,
+ std::vector<viz::ReturnedResource> *resourcesToRelease,
RenderWidgetHostViewQtDelegate *apiDelegate)
{
m_chromiumCompositorData = chromiumCompositorData;
- cc::CompositorFrame* frameData = &m_chromiumCompositorData->frameData;
+ viz::CompositorFrame* frameData = &m_chromiumCompositorData->frameData;
if (frameData->render_pass_list.empty())
return;
@@ -849,7 +849,7 @@ void DelegatedFrameNode::commit(ChromiumCompositorData *chromiumCompositorData,
// candidates to be picked up by quads, it's then our responsibility to return unused resources
// to the producing child compositor.
for (unsigned i = 0; i < frameData->resource_list.size(); ++i) {
- const cc::TransferableResource &res = frameData->resource_list.at(i);
+ const viz::TransferableResource &res = frameData->resource_list.at(i);
if (QSharedPointer<ResourceHolder> resource = resourceCandidates.value(res.id))
resource->incImportCount();
else
@@ -873,7 +873,7 @@ void DelegatedFrameNode::commit(ChromiumCompositorData *chromiumCompositorData,
m_sceneGraphNodes.empty() ||
viewportSize != m_previousViewportSize;
- m_chromiumCompositorData->previousFrameData = cc::CompositorFrame();
+ m_chromiumCompositorData->previousFrameData = viz::CompositorFrame();
SGObjects previousSGObjects;
QVector<QSharedPointer<QSGTexture> > textureStrongRefs;
if (buildNewTree) {
@@ -897,11 +897,11 @@ void DelegatedFrameNode::commit(ChromiumCompositorData *chromiumCompositorData,
// parent, with the last one in the list being the root RenderPass, the one
// that we displayed to the user.
// All RenderPasses except the last one are rendered to an FBO.
- cc::RenderPass *rootRenderPass = frameData->render_pass_list.back().get();
+ viz::RenderPass *rootRenderPass = frameData->render_pass_list.back().get();
gfx::Rect viewportRect(toGfx(viewportSize));
for (unsigned i = 0; i < frameData->render_pass_list.size(); ++i) {
- cc::RenderPass *pass = frameData->render_pass_list.at(i).get();
+ viz::RenderPass *pass = frameData->render_pass_list.at(i).get();
QSGNode *renderPassParent = 0;
gfx::Rect scissorRect;
@@ -944,16 +944,16 @@ void DelegatedFrameNode::commit(ChromiumCompositorData *chromiumCompositorData,
if (buildNewTree)
renderPassChain = buildRenderPassChain(renderPassParent);
- std::deque<std::unique_ptr<cc::DrawPolygon>> polygonQueue;
+ base::circular_deque<std::unique_ptr<viz::DrawPolygon>> polygonQueue;
int nextPolygonId = 0;
int currentSortingContextId = 0;
- const cc::SharedQuadState *currentLayerState = nullptr;
+ const viz::SharedQuadState *currentLayerState = nullptr;
QSGNode *currentLayerChain = nullptr;
const auto quadListBegin = pass->quad_list.BackToFrontBegin();
const auto quadListEnd = pass->quad_list.BackToFrontEnd();
for (auto it = quadListBegin; it != quadListEnd; ++it) {
- const cc::DrawQuad *quad = *it;
- const cc::SharedQuadState *quadState = quad->shared_quad_state;
+ const viz::DrawQuad *quad = *it;
+ const viz::SharedQuadState *quadState = quad->shared_quad_state;
gfx::Rect targetRect =
cc::MathUtil::MapEnclosingClippedRect(quadState->quad_to_target_transform,
@@ -973,8 +973,8 @@ void DelegatedFrameNode::commit(ChromiumCompositorData *chromiumCompositorData,
}
if (currentSortingContextId != 0) {
- std::unique_ptr<cc::DrawPolygon> polygon(
- new cc::DrawPolygon(
+ std::unique_ptr<viz::DrawPolygon> polygon(
+ new viz::DrawPolygon(
quad,
gfx::RectF(quad->visible_rect),
quadState->quad_to_target_transform,
@@ -1008,7 +1008,7 @@ void DelegatedFrameNode::commit(ChromiumCompositorData *chromiumCompositorData,
}
void DelegatedFrameNode::flushPolygons(
- std::deque<std::unique_ptr<cc::DrawPolygon>> *polygonQueue,
+ base::circular_deque<std::unique_ptr<viz::DrawPolygon>> *polygonQueue,
QSGNode *renderPassChain,
DelegatedNodeTreeHandler *nodeHandler,
QHash<unsigned, QSharedPointer<ResourceHolder> > &resourceCandidates,
@@ -1017,9 +1017,9 @@ void DelegatedFrameNode::flushPolygons(
if (polygonQueue->empty())
return;
- const auto actionHandler = [&](cc::DrawPolygon *polygon) {
- const cc::DrawQuad *quad = polygon->original_ref();
- const cc::SharedQuadState *quadState = quad->shared_quad_state;
+ const auto actionHandler = [&](viz::DrawPolygon *polygon) {
+ const viz::DrawQuad *quad = polygon->original_ref();
+ const viz::SharedQuadState *quadState = quad->shared_quad_state;
QSGNode *currentLayerChain = nullptr;
if (renderPassChain)
@@ -1034,17 +1034,17 @@ void DelegatedFrameNode::flushPolygons(
nodeHandler, resourceCandidates, apiDelegate);
};
- cc::BspTree(polygonQueue).TraverseWithActionHandler(&actionHandler);
+ viz::BspTree(polygonQueue).TraverseWithActionHandler(&actionHandler);
}
void DelegatedFrameNode::handlePolygon(
- const cc::DrawPolygon *polygon,
+ const viz::DrawPolygon *polygon,
QSGNode *currentLayerChain,
DelegatedNodeTreeHandler *nodeHandler,
QHash<unsigned, QSharedPointer<ResourceHolder> > &resourceCandidates,
RenderWidgetHostViewQtDelegate *apiDelegate)
{
- const cc::DrawQuad *quad = polygon->original_ref();
+ const viz::DrawQuad *quad = polygon->original_ref();
if (!polygon->is_split()) {
handleQuad(quad, currentLayerChain,
@@ -1059,7 +1059,7 @@ void DelegatedFrameNode::handlePolygon(
}
void DelegatedFrameNode::handleClippedQuad(
- const cc::DrawQuad *quad,
+ const viz::DrawQuad *quad,
const gfx::QuadF &clipRegion,
QSGNode *currentLayerChain,
DelegatedNodeTreeHandler *nodeHandler,
@@ -1085,15 +1085,15 @@ void DelegatedFrameNode::handleClippedQuad(
}
void DelegatedFrameNode::handleQuad(
- const cc::DrawQuad *quad,
+ const viz::DrawQuad *quad,
QSGNode *currentLayerChain,
DelegatedNodeTreeHandler *nodeHandler,
QHash<unsigned, QSharedPointer<ResourceHolder> > &resourceCandidates,
RenderWidgetHostViewQtDelegate *apiDelegate)
{
switch (quad->material) {
- case cc::DrawQuad::RENDER_PASS: {
- const cc::RenderPassDrawQuad *renderPassQuad = cc::RenderPassDrawQuad::MaterialCast(quad);
+ case viz::DrawQuad::RENDER_PASS: {
+ const viz::RenderPassDrawQuad *renderPassQuad = viz::RenderPassDrawQuad::MaterialCast(quad);
QSGTexture *layer =
findRenderPassLayer(renderPassQuad->render_pass_id, m_sgObjects.renderPassLayers).data();
@@ -1101,8 +1101,8 @@ void DelegatedFrameNode::handleQuad(
nodeHandler->setupRenderPassNode(layer, toQt(quad->rect), currentLayerChain);
break;
}
- case cc::DrawQuad::TEXTURE_CONTENT: {
- const cc::TextureDrawQuad *tquad = cc::TextureDrawQuad::MaterialCast(quad);
+ case viz::DrawQuad::TEXTURE_CONTENT: {
+ const viz::TextureDrawQuad *tquad = viz::TextureDrawQuad::MaterialCast(quad);
ResourceHolder *resource = findAndHoldResource(tquad->resource_id(), resourceCandidates);
QSGTexture *texture =
initAndHoldTexture(resource, quad->ShouldDrawWithBlending(), apiDelegate);
@@ -1121,8 +1121,8 @@ void DelegatedFrameNode::handleQuad(
currentLayerChain);
break;
}
- case cc::DrawQuad::SOLID_COLOR: {
- const cc::SolidColorDrawQuad *scquad = cc::SolidColorDrawQuad::MaterialCast(quad);
+ case viz::DrawQuad::SOLID_COLOR: {
+ const viz::SolidColorDrawQuad *scquad = viz::SolidColorDrawQuad::MaterialCast(quad);
// Qt only supports MSAA and this flag shouldn't be needed.
// If we ever want to use QSGRectangleNode::setAntialiasing for this we should
// try to see if we can do something similar for tile quads first.
@@ -1131,8 +1131,8 @@ void DelegatedFrameNode::handleQuad(
break;
#ifndef QT_NO_OPENGL
}
- case cc::DrawQuad::DEBUG_BORDER: {
- const cc::DebugBorderDrawQuad *dbquad = cc::DebugBorderDrawQuad::MaterialCast(quad);
+ case viz::DrawQuad::DEBUG_BORDER: {
+ const viz::DebugBorderDrawQuad *dbquad = viz::DebugBorderDrawQuad::MaterialCast(quad);
QSGGeometry *geometry = new QSGGeometry(QSGGeometry::defaultAttributes_Point2D(), 4);
geometry->setDrawingMode(GL_LINE_LOOP);
@@ -1154,8 +1154,8 @@ void DelegatedFrameNode::handleQuad(
break;
#endif
}
- case cc::DrawQuad::TILED_CONTENT: {
- const cc::TileDrawQuad *tquad = cc::TileDrawQuad::MaterialCast(quad);
+ case viz::DrawQuad::TILED_CONTENT: {
+ const viz::TileDrawQuad *tquad = viz::TileDrawQuad::MaterialCast(quad);
ResourceHolder *resource = findAndHoldResource(tquad->resource_id(), resourceCandidates);
nodeHandler->setupTiledContentNode(
initAndHoldTexture(resource, quad->ShouldDrawWithBlending(), apiDelegate),
@@ -1166,8 +1166,8 @@ void DelegatedFrameNode::handleQuad(
break;
#ifndef QT_NO_OPENGL
}
- case cc::DrawQuad::YUV_VIDEO_CONTENT: {
- const cc::YUVVideoDrawQuad *vquad = cc::YUVVideoDrawQuad::MaterialCast(quad);
+ case viz::DrawQuad::YUV_VIDEO_CONTENT: {
+ const viz::YUVVideoDrawQuad *vquad = viz::YUVVideoDrawQuad::MaterialCast(quad);
ResourceHolder *yResource =
findAndHoldResource(vquad->y_plane_resource_id(), resourceCandidates);
ResourceHolder *uResource =
@@ -1192,8 +1192,8 @@ void DelegatedFrameNode::handleQuad(
break;
#ifdef GL_OES_EGL_image_external
}
- case cc::DrawQuad::STREAM_VIDEO_CONTENT: {
- const cc::StreamVideoDrawQuad *squad = cc::StreamVideoDrawQuad::MaterialCast(quad);
+ case viz::DrawQuad::STREAM_VIDEO_CONTENT: {
+ const viz::StreamVideoDrawQuad *squad = viz::StreamVideoDrawQuad::MaterialCast(quad);
ResourceHolder *resource = findAndHoldResource(squad->resource_id(), resourceCandidates);
MailboxTexture *texture = static_cast<MailboxTexture *>(
initAndHoldTexture(resource, quad->ShouldDrawWithBlending()));
@@ -1206,7 +1206,7 @@ void DelegatedFrameNode::handleQuad(
#endif // GL_OES_EGL_image_external
#endif // QT_NO_OPENGL
}
- case cc::DrawQuad::SURFACE_CONTENT:
+ case viz::DrawQuad::SURFACE_CONTENT:
Q_UNREACHABLE();
default:
qWarning("Unimplemented quad material: %d", quad->material);
@@ -1223,13 +1223,13 @@ ResourceHolder *DelegatedFrameNode::findAndHoldResource(unsigned resourceId, QHa
return resource.data();
}
-void DelegatedFrameNode::holdResources(const cc::DrawQuad *quad, QHash<unsigned, QSharedPointer<ResourceHolder> > &candidates)
+void DelegatedFrameNode::holdResources(const viz::DrawQuad *quad, QHash<unsigned, QSharedPointer<ResourceHolder> > &candidates)
{
for (auto resource : quad->resources)
findAndHoldResource(resource, candidates);
}
-void DelegatedFrameNode::holdResources(const cc::RenderPass *pass, QHash<unsigned, QSharedPointer<ResourceHolder> > &candidates)
+void DelegatedFrameNode::holdResources(const viz::RenderPass *pass, QHash<unsigned, QSharedPointer<ResourceHolder> > &candidates)
{
for (const auto &quad : pass->quad_list)
holdResources(quad, candidates);
diff --git a/src/core/delegated_frame_node.h b/src/core/delegated_frame_node.h
index 4bddf4a62..5d967841d 100644
--- a/src/core/delegated_frame_node.h
+++ b/src/core/delegated_frame_node.h
@@ -40,9 +40,10 @@
#ifndef DELEGATED_FRAME_NODE_H
#define DELEGATED_FRAME_NODE_H
-#include "cc/output/compositor_frame.h"
-#include "cc/quads/render_pass.h"
-#include "cc/resources/transferable_resource.h"
+#include "base/containers/circular_deque.h"
+#include "components/viz/common/quads/compositor_frame.h"
+#include "components/viz/common/quads/render_pass.h"
+#include "components/viz/common/resources/transferable_resource.h"
#include "gpu/command_buffer/service/sync_point_manager.h"
#include "ui/gl/gl_fence.h"
#include <QMutex>
@@ -59,16 +60,16 @@ QT_BEGIN_NAMESPACE
class QSGLayer;
QT_END_NAMESPACE
-namespace cc {
+namespace gfx {
+class QuadF;
+}
+
+namespace viz {
class DelegatedFrameData;
class DrawQuad;
class DrawPolygon;
}
-namespace gfx {
-class QuadF;
-}
-
namespace QtWebEngineCore {
class DelegatedNodeTreeHandler;
@@ -81,8 +82,8 @@ class ChromiumCompositorData : public QSharedData {
public:
ChromiumCompositorData() : frameDevicePixelRatio(1) { }
QHash<unsigned, QSharedPointer<ResourceHolder> > resourceHolders;
- cc::CompositorFrame frameData;
- cc::CompositorFrame previousFrameData;
+ viz::CompositorFrame frameData;
+ viz::CompositorFrame previousFrameData;
qreal frameDevicePixelRatio;
};
@@ -91,30 +92,29 @@ public:
DelegatedFrameNode();
~DelegatedFrameNode();
void preprocess();
- void commit(ChromiumCompositorData *chromiumCompositorData, std::vector<cc::ReturnedResource> *resourcesToRelease, RenderWidgetHostViewQtDelegate *apiDelegate);
+ void commit(ChromiumCompositorData *chromiumCompositorData, std::vector<viz::ReturnedResource> *resourcesToRelease, RenderWidgetHostViewQtDelegate *apiDelegate);
private:
- void flushPolygons(
- std::deque<std::unique_ptr<cc::DrawPolygon>> *polygonQueue,
+ void flushPolygons(base::circular_deque<std::unique_ptr<viz::DrawPolygon> > *polygonQueue,
QSGNode *renderPassChain,
DelegatedNodeTreeHandler *nodeHandler,
QHash<unsigned, QSharedPointer<ResourceHolder> > &resourceCandidates,
RenderWidgetHostViewQtDelegate *apiDelegate);
void handlePolygon(
- const cc::DrawPolygon *polygon,
+ const viz::DrawPolygon *polygon,
QSGNode *currentLayerChain,
DelegatedNodeTreeHandler *nodeHandler,
QHash<unsigned, QSharedPointer<ResourceHolder> > &resourceCandidates,
RenderWidgetHostViewQtDelegate *apiDelegate);
void handleClippedQuad(
- const cc::DrawQuad *quad,
+ const viz::DrawQuad *quad,
const gfx::QuadF &clipRegion,
QSGNode *currentLayerChain,
DelegatedNodeTreeHandler *nodeHandler,
QHash<unsigned, QSharedPointer<ResourceHolder> > &resourceCandidates,
RenderWidgetHostViewQtDelegate *apiDelegate);
void handleQuad(
- const cc::DrawQuad *quad,
+ const viz::DrawQuad *quad,
QSGNode *currentLayerChain,
DelegatedNodeTreeHandler *nodeHandler,
QHash<unsigned, QSharedPointer<ResourceHolder> > &resourceCandidates,
@@ -128,8 +128,8 @@ private:
static void unlockQt(DelegatedFrameNode *frameNode);
ResourceHolder *findAndHoldResource(unsigned resourceId, QHash<unsigned, QSharedPointer<ResourceHolder> > &candidates);
- void holdResources(const cc::DrawQuad *quad, QHash<unsigned, QSharedPointer<ResourceHolder> > &candidates);
- void holdResources(const cc::RenderPass *pass, QHash<unsigned, QSharedPointer<ResourceHolder> > &candidates);
+ void holdResources(const viz::DrawQuad *quad, QHash<unsigned, QSharedPointer<ResourceHolder> > &candidates);
+ void holdResources(const viz::RenderPass *pass, QHash<unsigned, QSharedPointer<ResourceHolder> > &candidates);
QSGTexture *initAndHoldTexture(ResourceHolder *resource, bool quadIsAllOpaque, RenderWidgetHostViewQtDelegate *apiDelegate = 0);
QExplicitlySharedDataPointer<ChromiumCompositorData> m_chromiumCompositorData;
diff --git a/src/core/devtools_frontend_qt.cpp b/src/core/devtools_frontend_qt.cpp
index 7330090e7..f715eefbf 100644
--- a/src/core/devtools_frontend_qt.cpp
+++ b/src/core/devtools_frontend_qt.cpp
@@ -123,9 +123,9 @@ int ResponseWriter::Write(net::IOBuffer *buffer, int num_bytes, const net::Compl
content::BrowserThread::PostTask(
content::BrowserThread::UI, FROM_HERE,
- base::Bind(&DevToolsFrontendQt::CallClientFunction, shell_devtools_,
- "DevToolsAPI.streamWrite", base::Owned(id),
- base::Owned(chunkValue), nullptr));
+ base::BindOnce(&DevToolsFrontendQt::CallClientFunction,
+ shell_devtools_, "DevToolsAPI.streamWrite",
+ base::Owned(id), base::Owned(chunkValue), nullptr));
return num_bytes;
}
@@ -259,6 +259,8 @@ void DevToolsFrontendQt::DocumentAvailableInMainFrame()
scoped_refptr<content::DevToolsAgentHost> agent_host =
content::DevToolsAgentHost::GetOrCreateFor(m_inspectedContents);
if (agent_host != m_agentHost) {
+ if (m_agentHost)
+ m_agentHost->DetachClient(this);
m_agentHost = agent_host;
m_agentHost->AttachClient(this);
if (m_inspect_element_at_x != -1) {
@@ -274,8 +276,10 @@ void DevToolsFrontendQt::WebContentsDestroyed()
if (m_inspectedContents)
static_cast<WebContentsDelegateQt *>(m_inspectedContents->GetDelegate())->webContentsAdapter()->devToolsFrontendDestroyed(this);
- if (m_agentHost)
+ if (m_agentHost) {
m_agentHost->DetachClient(this);
+ m_agentHost = nullptr;
+ }
delete this;
}
@@ -327,8 +331,6 @@ void DevToolsFrontendQt::HandleMessageFromDevToolsFrontend(const std::string &me
dict->GetList("params", &params);
if (method == "dispatchProtocolMessage" && params && params->GetSize() == 1) {
- if (!m_agentHost || !m_agentHost->IsAttached())
- return;
std::string protocol_message;
if (!params->GetString(0, &protocol_message))
return;
@@ -386,7 +388,7 @@ void DevToolsFrontendQt::HandleMessageFromDevToolsFrontend(const std::string &me
fetcher->Start();
return;
} else if (method == "getPreferences") {
- m_preferences = *m_prefStore->GetValues();
+ m_preferences = std::move(*m_prefStore->GetValues());
SendMessageAck(request_id, &m_preferences);
return;
} else if (method == "setPreference") {
diff --git a/src/core/devtools_manager_delegate_qt.cpp b/src/core/devtools_manager_delegate_qt.cpp
index 8ea3c2fb7..305e32278 100644
--- a/src/core/devtools_manager_delegate_qt.cpp
+++ b/src/core/devtools_manager_delegate_qt.cpp
@@ -159,8 +159,7 @@ void DevToolsServerQt::start()
m_isStarted = true;
DevToolsAgentHost::StartRemoteDebuggingServer(
std::move(socketFactory), std::string(),
- base::FilePath(), base::FilePath(),
- std::string(), std::string());
+ base::FilePath(), base::FilePath());
}
void DevToolsServerQt::stop()
diff --git a/src/core/gl_surface_qt.cpp b/src/core/gl_surface_qt.cpp
index f731b0231..e9491eaba 100644
--- a/src/core/gl_surface_qt.cpp
+++ b/src/core/gl_surface_qt.cpp
@@ -102,20 +102,24 @@ public:
explicit GLSurfaceQtEGL(const gfx::Size& size);
static bool InitializeOneOff();
+ static bool InitializeExtensionSettingsOneOff();
bool Initialize(GLSurfaceFormat format) override;
void Destroy() override;
void* GetHandle() override;
- bool Resize(const gfx::Size& size, float scale_factor, bool has_alpha) override;
+ bool Resize(const gfx::Size& size, float scale_factor, ColorSpace color_space, bool has_alpha) override;
protected:
~GLSurfaceQtEGL();
private:
EGLSurface m_surfaceBuffer;
+ static bool s_initialized;
DISALLOW_COPY_AND_ASSIGN(GLSurfaceQtEGL);
};
+bool GLSurfaceQtEGL::s_initialized = false;
+
// The following comment is cited from chromium/ui/gl/gl_surface_egl.cc:
// SurfacelessEGL is used as Offscreen surface when platform supports
// KHR_surfaceless_context and GL_OES_surfaceless_context. This would avoid the
@@ -128,7 +132,7 @@ public:
bool Initialize(GLSurfaceFormat format) override;
void Destroy() override;
bool IsSurfaceless() const override;
- bool Resize(const gfx::Size& size, float scale_factor, bool has_alpha) override;
+ bool Resize(const gfx::Size& size, float scale_factor, ColorSpace color_space, bool has_alpha) override;
EGLSurface GetHandle() override;
void* GetShareHandle() override;
@@ -136,7 +140,6 @@ private:
DISALLOW_COPY_AND_ASSIGN(GLSurfacelessQtEGL);
};
-
GLSurfaceQt::~GLSurfaceQt()
{
}
@@ -152,6 +155,7 @@ public:
explicit GLSurfaceQtGLX(const gfx::Size& size);
static bool InitializeOneOff();
+ static bool InitializeExtensionSettingsOneOff();
bool Initialize(GLSurfaceFormat format) override;
void Destroy() override;
@@ -161,6 +165,7 @@ protected:
~GLSurfaceQtGLX();
private:
+ static bool s_initialized;
XID m_surfaceBuffer;
DISALLOW_COPY_AND_ASSIGN(GLSurfaceQtGLX);
};
@@ -170,6 +175,9 @@ GLSurfaceQtGLX::~GLSurfaceQtGLX()
Destroy();
}
+
+bool GLSurfaceQtGLX::s_initialized = false;
+
bool GLSurfaceGLX::IsCreateContextSupported()
{
return ExtensionsContain(g_extensions, "GLX_ARB_create_context");
@@ -205,6 +213,23 @@ bool GLSurfaceGLX::IsOMLSyncControlSupported()
return false; // ExtensionsContain(g_extensions, "GLX_OML_sync_control");
}
+bool GLSurfaceQtGLX::InitializeExtensionSettingsOneOff()
+{
+ if (!s_initialized)
+ return false;
+
+ Display* display = static_cast<Display*>(g_display);
+ g_extensions = glXQueryExtensionsString(display, 0);
+ g_driver_glx.InitializeExtensionBindings();
+
+ return true;
+}
+
+bool GLSurfaceGLX::InitializeExtensionSettingsOneOff()
+{
+ return GLSurfaceQtGLX::InitializeExtensionSettingsOneOff();
+}
+
bool GLSurfaceGLX::HasGLXExtension(const char *name)
{
return ExtensionsContain(g_extensions, name);
@@ -222,8 +247,7 @@ const char* GLSurfaceGLX::GetGLXExtensions()
bool GLSurfaceQtGLX::InitializeOneOff()
{
- static bool initialized = false;
- if (initialized)
+ if (s_initialized)
return true;
XInitThreads();
@@ -252,8 +276,7 @@ bool GLSurfaceQtGLX::InitializeOneOff()
return false;
}
- g_extensions = glXQueryExtensionsString(display, 0);
- initialized = true;
+ s_initialized = true;
return true;
}
@@ -374,8 +397,7 @@ GLSurfaceQt::GLSurfaceQt()
bool GLSurfaceQtEGL::InitializeOneOff()
{
- static bool initialized = false;
- if (initialized)
+ if (s_initialized)
return true;
g_display = GLContextHelper::getEGLDisplay();
@@ -390,31 +412,12 @@ bool GLSurfaceQtEGL::InitializeOneOff()
return false;
}
- g_extensions = eglQueryString(g_display, EGL_EXTENSIONS);
if (!eglInitialize(g_display, NULL, NULL)) {
LOG(ERROR) << "eglInitialize failed with error " << GetLastEGLErrorString();
return false;
}
- g_egl_surfaceless_context_supported = ExtensionsContain(g_extensions, "EGL_KHR_surfaceless_context");
- if (g_egl_surfaceless_context_supported) {
- scoped_refptr<GLSurface> surface = new GLSurfacelessQtEGL(gfx::Size(1, 1));
- gl::GLContextAttribs attribs;
- scoped_refptr<GLContext> context = init::CreateGLContext(
- NULL, surface.get(), attribs);
-
- if (!context->MakeCurrent(surface.get()))
- g_egl_surfaceless_context_supported = false;
-
- // Ensure context supports GL_OES_surfaceless_context.
- if (g_egl_surfaceless_context_supported) {
- g_egl_surfaceless_context_supported = context->HasExtension(
- "GL_OES_surfaceless_context");
- context->ReleaseCurrent(surface.get());
- }
- }
-
- initialized = true;
+ s_initialized = true;
return true;
}
@@ -443,10 +446,57 @@ bool GLSurfaceEGL::IsEGLContextPrioritySupported()
return false;
}
+bool GLSurfaceEGL::IsRobustResourceInitSupported()
+{
+ return false;
+}
+
+bool GLSurfaceEGL::IsDisplayTextureShareGroupSupported()
+{
+ return false;
+}
+
+bool GLSurfaceEGL::IsCreateContextClientArraysSupported()
+{
+ return false;
+}
+
void GLSurfaceEGL::ShutdownOneOff()
{
}
+bool GLSurfaceQtEGL::InitializeExtensionSettingsOneOff()
+{
+ if (!s_initialized)
+ return false;
+
+ g_extensions = eglQueryString(g_display, EGL_EXTENSIONS);
+ g_egl_surfaceless_context_supported = ExtensionsContain(g_extensions, "EGL_KHR_surfaceless_context");
+ if (g_egl_surfaceless_context_supported) {
+ scoped_refptr<GLSurface> surface = new GLSurfacelessQtEGL(gfx::Size(1, 1));
+ gl::GLContextAttribs attribs;
+ scoped_refptr<GLContext> context = init::CreateGLContext(
+ NULL, surface.get(), attribs);
+
+ if (!context->MakeCurrent(surface.get()))
+ g_egl_surfaceless_context_supported = false;
+
+ // Ensure context supports GL_OES_surfaceless_context.
+ if (g_egl_surfaceless_context_supported) {
+ g_egl_surfaceless_context_supported = context->HasExtension(
+ "GL_OES_surfaceless_context");
+ context->ReleaseCurrent(surface.get());
+ }
+ }
+
+ return true;
+}
+
+bool GLSurfaceEGL::InitializeExtensionSettingsOneOff()
+{
+ return GLSurfaceQtEGL::InitializeExtensionSettingsOneOff();
+}
+
const char* GLSurfaceEGL::GetEGLExtensions()
{
return g_extensions;
@@ -546,7 +596,7 @@ GLSurfaceFormat GLSurfaceQt::GetFormat()
}
-bool GLSurfaceQtEGL::Resize(const gfx::Size& size, float scale_factor, bool has_alpha)
+bool GLSurfaceQtEGL::Resize(const gfx::Size& size, float scale_factor, ColorSpace /*color_space*/, bool has_alpha)
{
if (size == m_size)
return true;
@@ -606,7 +656,7 @@ bool GLSurfacelessQtEGL::IsSurfaceless() const
return true;
}
-bool GLSurfacelessQtEGL::Resize(const gfx::Size& size, float scale_factor, bool has_alpha)
+bool GLSurfacelessQtEGL::Resize(const gfx::Size& size, float scale_factor, ColorSpace color_space, bool has_alpha)
{
m_size = size;
return true;
@@ -676,7 +726,7 @@ CreateOffscreenGLSurfaceWithFormat(const gfx::Size& size, GLSurfaceFormat format
if (surface->Initialize(format))
return surface;
}
- // no break
+ Q_FALLTHROUGH();
#endif
}
case kGLImplementationEGLGLES2: {
diff --git a/src/core/javascript_dialog_controller.cpp b/src/core/javascript_dialog_controller.cpp
index 5b695b6cf..86f5b9795 100644
--- a/src/core/javascript_dialog_controller.cpp
+++ b/src/core/javascript_dialog_controller.cpp
@@ -40,7 +40,7 @@
#include "javascript_dialog_controller.h"
#include "javascript_dialog_controller_p.h"
-#include"javascript_dialog_manager_qt.h"
+#include "javascript_dialog_manager_qt.h"
#include "type_conversion.h"
namespace QtWebEngineCore {
@@ -51,18 +51,18 @@ void JavaScriptDialogControllerPrivate::dialogFinished(bool accepted, const base
// but hold a shared pointer so the dialog does not get deleted prematurely when running in-process.
QSharedPointer<JavaScriptDialogController> dialog = JavaScriptDialogManagerQt::GetInstance()->takeDialogForContents(contents);
- callback.Run(accepted, promptValue);
+ std::move(callback).Run(accepted, promptValue);
}
JavaScriptDialogControllerPrivate::JavaScriptDialogControllerPrivate(WebContentsAdapterClient::JavascriptDialogType t, const QString &msg, const QString &prompt
, const QString &title, const QUrl &securityOrigin
- , const content::JavaScriptDialogManager::DialogClosedCallback &cb, content::WebContents *c)
+ , content::JavaScriptDialogManager::DialogClosedCallback &&cb, content::WebContents *c)
: type(t)
, message(msg)
, defaultPrompt(prompt)
, securityOrigin(securityOrigin)
, title(title)
- , callback(cb)
+ , callback(std::move(cb))
, contents(c)
{
}
diff --git a/src/core/javascript_dialog_controller_p.h b/src/core/javascript_dialog_controller_p.h
index 45c5a9fdd..ab7b09268 100644
--- a/src/core/javascript_dialog_controller_p.h
+++ b/src/core/javascript_dialog_controller_p.h
@@ -51,8 +51,11 @@
// We mean it.
//
+#include "base/callback.h"
#include "content/public/browser/javascript_dialog_manager.h"
+
#include "web_contents_adapter_client.h"
+
#include <QString>
namespace content {
@@ -67,7 +70,7 @@ public:
void dialogFinished(bool accepted, const base::string16 &promptValue);
JavaScriptDialogControllerPrivate(WebContentsAdapterClient::JavascriptDialogType, const QString &message, const QString &prompt
, const QString& title, const QUrl &securityOrigin
- , const content::JavaScriptDialogManager::DialogClosedCallback &, content::WebContents *);
+ , content::JavaScriptDialogManager::DialogClosedCallback &&, content::WebContents *);
WebContentsAdapterClient::JavascriptDialogType type;
QString message;
diff --git a/src/core/javascript_dialog_manager_qt.cpp b/src/core/javascript_dialog_manager_qt.cpp
index a1a8604a4..1e6327545 100644
--- a/src/core/javascript_dialog_manager_qt.cpp
+++ b/src/core/javascript_dialog_manager_qt.cpp
@@ -58,7 +58,7 @@ JavaScriptDialogManagerQt *JavaScriptDialogManagerQt::GetInstance()
return base::Singleton<JavaScriptDialogManagerQt>::get();
}
-void JavaScriptDialogManagerQt::RunJavaScriptDialog(content::WebContents *webContents, const GURL &originUrl, content::JavaScriptDialogType dialog_type, const base::string16 &messageText, const base::string16 &defaultPromptText, const content::JavaScriptDialogManager::DialogClosedCallback &callback, bool *didSuppressMessage)
+void JavaScriptDialogManagerQt::RunJavaScriptDialog(content::WebContents *webContents, const GURL &originUrl, content::JavaScriptDialogType dialog_type, const base::string16 &messageText, const base::string16 &defaultPromptText, content::JavaScriptDialogManager::DialogClosedCallback callback, bool *didSuppressMessage)
{
WebContentsAdapterClient *client = WebContentsViewQt::from(static_cast<content::WebContentsImpl*>(webContents)->GetView())->client();
if (!client) {
@@ -68,13 +68,13 @@ void JavaScriptDialogManagerQt::RunJavaScriptDialog(content::WebContents *webCon
}
WebContentsAdapterClient::JavascriptDialogType dialogType = static_cast<WebContentsAdapterClient::JavascriptDialogType>(dialog_type);
- runDialogForContents(webContents, dialogType, toQt(messageText).toHtmlEscaped(), toQt(defaultPromptText).toHtmlEscaped(), toQt(originUrl.GetOrigin()), callback);
+ runDialogForContents(webContents, dialogType, toQt(messageText).toHtmlEscaped(), toQt(defaultPromptText).toHtmlEscaped(), toQt(originUrl.GetOrigin()), std::move(callback));
}
void JavaScriptDialogManagerQt::RunBeforeUnloadDialog(content::WebContents *webContents, bool isReload,
- const content::JavaScriptDialogManager::DialogClosedCallback &callback) {
+ content::JavaScriptDialogManager::DialogClosedCallback callback) {
Q_UNUSED(isReload);
- runDialogForContents(webContents, WebContentsAdapterClient::UnloadDialog, QString(), QString(), QUrl(), callback);
+ runDialogForContents(webContents, WebContentsAdapterClient::UnloadDialog, QString(), QString(), QUrl(), std::move(callback));
}
bool JavaScriptDialogManagerQt::HandleJavaScriptDialog(content::WebContents *contents, bool accept, const base::string16 *promptOverride)
@@ -89,13 +89,13 @@ bool JavaScriptDialogManagerQt::HandleJavaScriptDialog(content::WebContents *con
void JavaScriptDialogManagerQt::runDialogForContents(content::WebContents *webContents, WebContentsAdapterClient::JavascriptDialogType type
, const QString &messageText, const QString &defaultPrompt, const QUrl &origin
- , const content::JavaScriptDialogManager::DialogClosedCallback &callback, const QString &title)
+ , content::JavaScriptDialogManager::DialogClosedCallback &&callback, const QString &title)
{
WebContentsAdapterClient *client = WebContentsViewQt::from(static_cast<content::WebContentsImpl*>(webContents)->GetView())->client();
if (!client)
return;
- JavaScriptDialogControllerPrivate *dialogData = new JavaScriptDialogControllerPrivate(type, messageText, defaultPrompt, title, origin, callback, webContents);
+ JavaScriptDialogControllerPrivate *dialogData = new JavaScriptDialogControllerPrivate(type, messageText, defaultPrompt, title, origin, std::move(callback), webContents);
QSharedPointer<JavaScriptDialogController> dialog(new JavaScriptDialogController(dialogData));
// We shouldn't get new dialogs for a given WebContents until we gave back a result.
diff --git a/src/core/javascript_dialog_manager_qt.h b/src/core/javascript_dialog_manager_qt.h
index 291f027a9..2856b30f0 100644
--- a/src/core/javascript_dialog_manager_qt.h
+++ b/src/core/javascript_dialog_manager_qt.h
@@ -39,6 +39,7 @@
#ifndef JAVASCRIPT_DIALOG_MANAGER_QT_H
#define JAVASCRIPT_DIALOG_MANAGER_QT_H
+#include "base/callback.h"
#include "content/public/browser/javascript_dialog_manager.h"
#include "web_contents_adapter_client.h"
@@ -61,11 +62,10 @@ public:
void RunJavaScriptDialog(content::WebContents *, const GURL &, content::JavaScriptDialogType dialog_type,
const base::string16 &messageText, const base::string16 &defaultPromptText,
- const content::JavaScriptDialogManager::DialogClosedCallback &callback,
+ DialogClosedCallback callback,
bool *didSuppressMessage) override;
-
void RunBeforeUnloadDialog(content::WebContents *, bool isReload,
- const content::JavaScriptDialogManager::DialogClosedCallback &callback) override;
+ content::JavaScriptDialogManager::DialogClosedCallback callback) override;
bool HandleJavaScriptDialog(content::WebContents *, bool accept, const base::string16 *promptOverride) override;
void CancelDialogs(content::WebContents *contents, bool /*reset_state*/) override
{
@@ -73,7 +73,7 @@ public:
}
void runDialogForContents(content::WebContents *, WebContentsAdapterClient::JavascriptDialogType, const QString &messageText, const QString &defaultPrompt
- , const QUrl &,const content::JavaScriptDialogManager::DialogClosedCallback &callback, const QString &title = QString());
+ , const QUrl &, DialogClosedCallback &&callback, const QString &title = QString());
QSharedPointer<JavaScriptDialogController> takeDialogForContents(content::WebContents *);
private:
diff --git a/src/core/native_web_keyboard_event_qt.cpp b/src/core/native_web_keyboard_event_qt.cpp
index 9eb613e25..b2e857aaf 100644
--- a/src/core/native_web_keyboard_event_qt.cpp
+++ b/src/core/native_web_keyboard_event_qt.cpp
@@ -66,6 +66,12 @@ using blink::WebKeyboardEvent;
namespace content {
+NativeWebKeyboardEvent::NativeWebKeyboardEvent(blink::WebKeyboardEvent const&, gfx::NativeView)
+ : os_event(0)
+ , skip_in_browser(false)
+{
+}
+
NativeWebKeyboardEvent::NativeWebKeyboardEvent(blink::WebInputEvent::Type, int, base::TimeTicks)
: os_event(0)
, skip_in_browser(false)
diff --git a/src/core/network_delegate_qt.cpp b/src/core/network_delegate_qt.cpp
index f82d47fa1..0a7d1f2b4 100644
--- a/src/core/network_delegate_qt.cpp
+++ b/src/core/network_delegate_qt.cpp
@@ -120,7 +120,7 @@ int NetworkDelegateQt::OnBeforeURLRequest(net::URLRequest *request, const net::C
QWebEngineUrlRequestInfoPrivate *infoPrivate = new QWebEngineUrlRequestInfoPrivate(toQt(resourceType),
toQt(navigationType),
qUrl,
- toQt(request->first_party_for_cookies()),
+ toQt(request->site_for_cookies()),
QByteArray::fromStdString(request->method()));
QWebEngineUrlRequestInfo requestInfo(infoPrivate);
interceptor->interceptRequest(requestInfo);
@@ -144,10 +144,9 @@ int NetworkDelegateQt::OnBeforeURLRequest(net::URLRequest *request, const net::C
if (!resourceInfo)
return net::OK;
- int renderProcessId;
- int renderFrameId;
+ int frameTreeNodeId = resourceInfo->GetFrameTreeNodeId();
// Only intercept MAIN_FRAME and SUB_FRAME with an associated render frame.
- if (!content::IsResourceTypeFrame(resourceType) || !resourceInfo->GetRenderFrameForRequest(request, &renderProcessId, &renderFrameId))
+ if (!content::IsResourceTypeFrame(resourceType) || frameTreeNodeId == -1)
return net::OK;
// Track active requests since |callback| and |new_url| are valid
@@ -157,9 +156,7 @@ int NetworkDelegateQt::OnBeforeURLRequest(net::URLRequest *request, const net::C
RequestParams params = {
qUrl,
resourceInfo->IsMainFrame(),
- navigationType,
- renderProcessId,
- renderFrameId
+ navigationType
};
content::BrowserThread::PostTask(
@@ -169,6 +166,7 @@ int NetworkDelegateQt::OnBeforeURLRequest(net::URLRequest *request, const net::C
base::Unretained(this),
request,
params,
+ frameTreeNodeId,
callback)
);
@@ -181,6 +179,10 @@ void NetworkDelegateQt::OnURLRequestDestroyed(net::URLRequest* request)
m_activeRequests.remove(request);
}
+void NetworkDelegateQt::OnCompleted(net::URLRequest */*request*/, bool /*started*/, int /*net_error*/)
+{
+}
+
void NetworkDelegateQt::CompleteURLRequestOnIOThread(net::URLRequest *request,
int navigationRequestAction,
const net::CompletionCallback &callback)
@@ -209,15 +211,14 @@ void NetworkDelegateQt::CompleteURLRequestOnIOThread(net::URLRequest *request,
void NetworkDelegateQt::NotifyNavigationRequestedOnUIThread(net::URLRequest *request,
RequestParams params,
+ int frameTreeNodeId,
const net::CompletionCallback &callback)
{
Q_ASSERT(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
int navigationRequestAction = WebContentsAdapterClient::AcceptRequest;
- content::RenderFrameHost *rfh = content::RenderFrameHost::FromID(params.renderProcessId, params.renderFrameId);
-
- if (rfh) {
- content::WebContents *webContents = content::WebContents::FromRenderViewHost(rfh->GetRenderViewHost());
+ content::WebContents *webContents = content::WebContents::FromFrameTreeNodeId(frameTreeNodeId);
+ if (webContents) {
WebContentsAdapterClient *client = WebContentsViewQt::from(static_cast<content::WebContentsImpl*>(webContents)->GetView())->client();
client->navigationRequested(params.navigationType, params.url, navigationRequestAction, params.isMainFrameRequest);
}
@@ -238,12 +239,17 @@ bool NetworkDelegateQt::OnCanSetCookie(const net::URLRequest& request,
const std::string& cookie_line,
net::CookieOptions*)
{
- return canSetCookies(request.first_party_for_cookies(), request.url(), cookie_line);
+ return canSetCookies(request.site_for_cookies(), request.url(), cookie_line);
}
bool NetworkDelegateQt::OnCanGetCookies(const net::URLRequest& request, const net::CookieList&)
{
- return canGetCookies(request.first_party_for_cookies(), request.url());
+ return canGetCookies(request.site_for_cookies(), request.url());
+}
+
+bool NetworkDelegateQt::OnCanEnablePrivacyMode(const GURL &url, const GURL &site_for_cookies) const
+{
+ return !canGetCookies(site_for_cookies, url);
}
bool NetworkDelegateQt::canSetCookies(const GURL &first_party, const GURL &url, const std::string &cookie_line) const
@@ -293,10 +299,6 @@ void NetworkDelegateQt::OnNetworkBytesSent(net::URLRequest*, int64_t)
{
}
-void NetworkDelegateQt::OnCompleted(net::URLRequest*, bool)
-{
-}
-
void NetworkDelegateQt::OnPACScriptError(int, const base::string16&)
{
}
@@ -311,11 +313,6 @@ bool NetworkDelegateQt::OnCanAccessFile(const net::URLRequest&, const base::File
return true;
}
-bool NetworkDelegateQt::OnCanEnablePrivacyMode(const GURL&, const GURL&) const
-{
- return false;
-}
-
bool NetworkDelegateQt::OnAreExperimentalCookieFeaturesEnabled() const
{
return false;
diff --git a/src/core/network_delegate_qt.h b/src/core/network_delegate_qt.h
index 452d1dd77..44cf96d5b 100644
--- a/src/core/network_delegate_qt.h
+++ b/src/core/network_delegate_qt.h
@@ -46,6 +46,10 @@
#include <QUrl>
#include <QSet>
+namespace content {
+class WebContents;
+}
+
namespace QtWebEngineCore {
class URLRequestContextGetterQt;
@@ -60,12 +64,11 @@ public:
QUrl url;
bool isMainFrameRequest;
int navigationType;
- int renderProcessId;
- int renderFrameId;
};
void NotifyNavigationRequestedOnUIThread(net::URLRequest *request,
RequestParams params,
+ int frameTreeNodeId,
const net::CompletionCallback &callback);
void CompleteURLRequestOnIOThread(net::URLRequest *request,
@@ -77,15 +80,15 @@ public:
void OnURLRequestDestroyed(net::URLRequest* request) override;
bool OnCanSetCookie(const net::URLRequest&, const std::string&, net::CookieOptions*) override;
int OnBeforeStartTransaction(net::URLRequest *request, const net::CompletionCallback &callback, net::HttpRequestHeaders *headers) override;
- virtual void OnBeforeSendHeaders(net::URLRequest* request, const net::ProxyInfo& proxy_info,
- const net::ProxyRetryInfoMap& proxy_retry_info, net::HttpRequestHeaders* headers) override;
+ void OnBeforeSendHeaders(net::URLRequest* request, const net::ProxyInfo& proxy_info,
+ const net::ProxyRetryInfoMap& proxy_retry_info, net::HttpRequestHeaders* headers) override;
void OnStartTransaction(net::URLRequest *request, const net::HttpRequestHeaders &headers) override;
int OnHeadersReceived(net::URLRequest*, const net::CompletionCallback&, const net::HttpResponseHeaders*, scoped_refptr<net::HttpResponseHeaders>*, GURL*) override;
void OnBeforeRedirect(net::URLRequest*, const GURL&) override;
void OnResponseStarted(net::URLRequest*) override;
void OnNetworkBytesReceived(net::URLRequest*, int64_t) override;
void OnNetworkBytesSent(net::URLRequest *, int64_t) override;
- void OnCompleted(net::URLRequest*, bool) override;
+ void OnCompleted(net::URLRequest *request, bool started, int net_error) override;
void OnPACScriptError(int, const base::string16&) override;
net::NetworkDelegate::AuthRequiredResponse OnAuthRequired(net::URLRequest*, const net::AuthChallengeInfo&, const AuthCallback&, net::AuthCredentials*) override;
bool OnCanGetCookies(const net::URLRequest&, const net::CookieList&) override;
@@ -96,10 +99,8 @@ public:
bool OnCanQueueReportingReport(const url::Origin& origin) const override;
bool OnCanSendReportingReport(const url::Origin& origin) const override;
- virtual bool OnCanSetReportingClient(const url::Origin& origin,
- const GURL& endpoint) const override;
- virtual bool OnCanUseReportingClient(const url::Origin& origin,
- const GURL& endpoint) const override;
+ bool OnCanSetReportingClient(const url::Origin& origin, const GURL& endpoint) const override;
+ bool OnCanUseReportingClient(const url::Origin& origin, const GURL& endpoint) const override;
bool canSetCookies(const GURL &first_party, const GURL &url, const std::string &cookie_line) const;
bool canGetCookies(const GURL &first_party, const GURL &url) const;
diff --git a/src/core/ozone_platform_qt.cpp b/src/core/ozone_platform_qt.cpp
index e165239bd..cf44fa456 100644
--- a/src/core/ozone_platform_qt.cpp
+++ b/src/core/ozone_platform_qt.cpp
@@ -53,7 +53,6 @@
#include "ui/ozone/public/cursor_factory_ozone.h"
#include "ui/ozone/public/gpu_platform_support_host.h"
#include "ui/ozone/public/input_controller.h"
-#include "ui/ozone/public/system_input_injector.h"
#include "ui/platform_window/platform_window.h"
#include "ui/platform_window/platform_window_delegate.h"
diff --git a/src/core/permission_manager_qt.cpp b/src/core/permission_manager_qt.cpp
index 5328166d1..95d01dd07 100644
--- a/src/core/permission_manager_qt.cpp
+++ b/src/core/permission_manager_qt.cpp
@@ -67,6 +67,8 @@ BrowserContextAdapter::PermissionType toQt(content::PermissionType type)
case content::PermissionType::MIDI:
case content::PermissionType::DURABLE_STORAGE:
case content::PermissionType::BACKGROUND_SYNC:
+ case content::PermissionType::SENSORS:
+ case content::PermissionType::ACCESSIBILITY_EVENTS:
case content::PermissionType::NUM:
break;
}
diff --git a/src/core/print_view_manager_base_qt.cpp b/src/core/print_view_manager_base_qt.cpp
index cbd8ea03a..abae38160 100644
--- a/src/core/print_view_manager_base_qt.cpp
+++ b/src/core/print_view_manager_base_qt.cpp
@@ -105,24 +105,6 @@ void PrintViewManagerBaseQt::NavigationStopped()
TerminatePrintJob(true);
}
- // Terminates or cancels the print job if one was pending.
-void PrintViewManagerBaseQt::RenderProcessGone(base::TerminationStatus status)
-{
- PrintManager::RenderProcessGone(status);
- ReleasePrinterQuery();
-
- if (!m_printJob.get())
- return;
-
- scoped_refptr<printing::PrintedDocument> document(m_printJob->document());
- if (document.get()) {
- // If IsComplete() returns false, the document isn't completely rendered.
- // Since our renderer is gone, there's nothing to do, cancel it. Otherwise,
- // the print job may finish without problem.
- TerminatePrintJob(!document->IsComplete());
- }
-}
-
base::string16 PrintViewManagerBaseQt::RenderSourceName()
{
return toString16(QLatin1String(""));
@@ -171,7 +153,7 @@ void PrintViewManagerBaseQt::OnDidPrintPage(
}
}
- std::unique_ptr<printing::PdfMetafileSkia> metafile(new printing::PdfMetafileSkia(printing::PDF_SKIA_DOCUMENT_TYPE));
+ std::unique_ptr<printing::PdfMetafileSkia> metafile(new printing::PdfMetafileSkia(printing::SkiaDocumentType::PDF));
if (metafile_must_be_valid) {
if (!metafile->InitFromData(shared_buf->memory(), params.data_size)) {
NOTREACHED() << "Invalid metafile header";
@@ -210,6 +192,28 @@ void PrintViewManagerBaseQt::OnShowInvalidPrinterSettingsError()
void PrintViewManagerBaseQt::DidStartLoading()
{
+ UpdatePrintingEnabled();
+}
+
+void PrintViewManagerBaseQt::RenderFrameDeleted(content::RenderFrameHost *render_frame_host)
+{
+ // Terminates or cancels the print job if one was pending.
+ if (render_frame_host != web_contents()->GetMainFrame())
+ return;
+
+ PrintManager::PrintingRenderFrameDeleted();
+ ReleasePrinterQuery();
+
+ if (!m_printJob.get())
+ return;
+
+ scoped_refptr<printing::PrintedDocument> document(m_printJob->document());
+ if (document.get()) {
+ // If IsComplete() returns false, the document isn't completely rendered.
+ // Since our renderer is gone, there's nothing to do, cancel it. Otherwise,
+ // the print job may finish without problem.
+ TerminatePrintJob(!document->IsComplete());
+ }
}
bool PrintViewManagerBaseQt::OnMessageReceived(const IPC::Message& message, content::RenderFrameHost* render_frame_host)
@@ -217,8 +221,7 @@ bool PrintViewManagerBaseQt::OnMessageReceived(const IPC::Message& message, cont
bool handled = true;
IPC_BEGIN_MESSAGE_MAP(PrintViewManagerBaseQt, message)
IPC_MESSAGE_HANDLER(PrintHostMsg_DidPrintPage, OnDidPrintPage)
- IPC_MESSAGE_HANDLER(PrintHostMsg_ShowInvalidPrinterSettingsError,
- OnShowInvalidPrinterSettingsError);
+ IPC_MESSAGE_HANDLER(PrintHostMsg_ShowInvalidPrinterSettingsError, OnShowInvalidPrinterSettingsError);
IPC_MESSAGE_UNHANDLED(handled = false)
IPC_END_MESSAGE_MAP()
return handled || PrintManager::OnMessageReceived(message, render_frame_host);
@@ -328,7 +331,7 @@ void PrintViewManagerBaseQt::ShouldQuitFromInnerMessageLoop()
m_isInsideInnerMessageLoop) {
// We are in a message loop created by RenderAllMissingPagesNow. Quit from
// it.
- base::MessageLoop::current()->QuitWhenIdle();
+ base::MessageLoop::current()->QuitWhenIdleClosure();
m_isInsideInnerMessageLoop = false;
}
}
@@ -337,7 +340,7 @@ bool PrintViewManagerBaseQt::CreateNewPrintJob(printing::PrintJobWorkerOwner* jo
{
DCHECK(!m_isInsideInnerMessageLoop);
- // Disconnect the current print_job_.
+ // Disconnect the current |m_printJob|.
DisconnectFromCurrentPrintJob();
// We can't print if there is no renderer.
@@ -354,7 +357,7 @@ bool PrintViewManagerBaseQt::CreateNewPrintJob(printing::PrintJobWorkerOwner* jo
return false;
m_printJob = new printing::PrintJob();
- m_printJob->Initialize(job, this, number_pages_);
+ m_printJob->Initialize(job, RenderSourceName(), number_pages_);
m_registrar.Add(this, chrome::NOTIFICATION_PRINT_JOB_EVENT,
content::Source<printing::PrintJob>(m_printJob.get()));
m_didPrintingSucceed = false;
@@ -383,13 +386,6 @@ void PrintViewManagerBaseQt::DisconnectFromCurrentPrintJob()
#endif
}
-void PrintViewManagerBaseQt::PrintingDone(bool success)
-{
- if (!m_printJob.get())
- return;
- Send(new PrintMsg_PrintingDone(routing_id(), success));
-}
-
void PrintViewManagerBaseQt::TerminatePrintJob(bool cancel)
{
if (!m_printJob.get())
@@ -413,16 +409,18 @@ void PrintViewManagerBaseQt::TerminatePrintJob(bool cancel)
void PrintViewManagerBaseQt::ReleasePrintJob()
{
+ content::RenderFrameHost *rfh = web_contents() ? web_contents()->GetMainFrame() : nullptr;
+
if (!m_printJob.get())
return;
- PrintingDone(m_didPrintingSucceed);
+ if (rfh)
+ rfh->Send(new PrintMsg_PrintingDone(rfh->GetRoutingID(), m_didPrintingSucceed));
m_registrar.Remove(this, chrome::NOTIFICATION_PRINT_JOB_EVENT,
content::Source<printing::PrintJob>(m_printJob.get()));
- m_printJob->DisconnectSource();
// Don't close the worker thread.
- m_printJob = NULL;
+ m_printJob = nullptr;
}
@@ -440,15 +438,15 @@ bool PrintViewManagerBaseQt::RunInnerMessageLoop() {
// memory-bound.
static const int kPrinterSettingsTimeout = 60000;
base::OneShotTimer quit_timer;
+ base::RunLoop runLoop;
quit_timer.Start(FROM_HERE,
base::TimeDelta::FromMilliseconds(kPrinterSettingsTimeout),
- base::MessageLoop::current(), &base::MessageLoop::QuitWhenIdle);
+ runLoop.QuitWhenIdleClosure());
m_isInsideInnerMessageLoop = true;
// Need to enable recursive task.
{
- base::RunLoop runLoop;
m_quitClosure = runLoop.QuitClosure();
base::MessageLoop* loop = base::MessageLoop::current();
base::MessageLoop::ScopedNestableTaskAllower allowNested(loop);
@@ -514,7 +512,7 @@ void PrintViewManagerBaseQt::ReleasePrinterQuery()
return;
content::BrowserThread::PostTask(
content::BrowserThread::IO, FROM_HERE,
- base::Bind(&printing::PrinterQuery::StopWorker, printerQuery.get()));
+ base::BindOnce(&printing::PrinterQuery::StopWorker, printerQuery.get()));
}
// Originally from print_preview_message_handler.cc:
@@ -525,8 +523,7 @@ void PrintViewManagerBaseQt::StopWorker(int documentCookie) {
m_printerQueriesQueue->PopPrinterQuery(documentCookie);
if (printer_query.get()) {
content::BrowserThread::PostTask(content::BrowserThread::IO, FROM_HERE,
- base::Bind(&printing::PrinterQuery::StopWorker,
- printer_query));
+ base::BindOnce(&printing::PrinterQuery::StopWorker, printer_query));
}
}
diff --git a/src/core/print_view_manager_base_qt.h b/src/core/print_view_manager_base_qt.h
index 4e4c8bde2..c55e970e5 100644
--- a/src/core/print_view_manager_base_qt.h
+++ b/src/core/print_view_manager_base_qt.h
@@ -50,11 +50,11 @@
#include "components/printing/browser/print_manager.h"
#include "content/public/browser/notification_observer.h"
#include "content/public/browser/notification_registrar.h"
-#include "printing/printed_pages_source.h"
struct PrintHostMsg_DidPrintPage_Params;
namespace content {
+class RenderFrameHost;
class RenderViewHost;
}
@@ -70,7 +70,6 @@ namespace QtWebEngineCore {
class PrintViewManagerBaseQt
: public content::NotificationObserver
, public printing::PrintManager
- , public printing::PrintedPagesSource
{
public:
~PrintViewManagerBaseQt() override;
@@ -78,8 +77,7 @@ public:
// Whether printing is enabled or not.
void UpdatePrintingEnabled();
- // PrintedPagesSource implementation.
- base::string16 RenderSourceName() override;
+ virtual base::string16 RenderSourceName();
protected:
explicit PrintViewManagerBaseQt(content::WebContents*);
@@ -88,10 +86,8 @@ protected:
// Cancels the print job.
void NavigationStopped() override;
- // Terminates or cancels the print job if one was pending.
- void RenderProcessGone(base::TerminationStatus status) override;
-
// content::WebContentsObserver implementation.
+ void RenderFrameDeleted(content::RenderFrameHost* render_frame_host) override;
bool OnMessageReceived(const IPC::Message& message,
content::RenderFrameHost* render_frame_host) override;
@@ -132,7 +128,6 @@ protected:
bool RunInnerMessageLoop();
void TerminatePrintJob(bool cancel);
- void PrintingDone(bool success);
void DisconnectFromCurrentPrintJob();
bool CreateNewPrintJob(printing::PrintJobWorkerOwner* job);
diff --git a/src/core/print_view_manager_qt.cpp b/src/core/print_view_manager_qt.cpp
index b8df5a131..5198985d7 100644
--- a/src/core/print_view_manager_qt.cpp
+++ b/src/core/print_view_manager_qt.cpp
@@ -105,7 +105,7 @@ static void SavePdfFile(scoped_refptr<base::RefCountedBytes> data,
DCHECK_CURRENTLY_ON(content::BrowserThread::FILE);
DCHECK_GT(data->size(), 0U);
- printing::PdfMetafileSkia metafile(printing::PDF_SKIA_DOCUMENT_TYPE);
+ printing::PdfMetafileSkia metafile(printing::SkiaDocumentType::PDF);
metafile.InitFromData(static_cast<const void*>(data->front()), data->size());
base::File file(path,
@@ -249,8 +249,8 @@ bool PrintViewManagerQt::PrintToPDFInternal(const QPageLayout &pageLayout, bool
, web_contents()->GetRenderViewHost()->GetWebkitPreferences().should_print_backgrounds);
m_printSettings->SetInteger(printing::kSettingColor,
printInColor ? printing::COLOR : printing::GRAYSCALE);
- return Send(new PrintMsg_InitiatePrintPreview(
- web_contents()->GetMainFrame()->GetRoutingID(), false));
+ return web_contents()->GetMainFrame()->Send(
+ new PrintMsg_InitiatePrintPreview(web_contents()->GetMainFrame()->GetRoutingID(), false));
}
#endif // BUILDFLAG(ENABLE_BASIC_PRINTING)
@@ -273,10 +273,8 @@ bool PrintViewManagerQt::OnMessageReceived(const IPC::Message& message, content:
bool handled = true;
IPC_BEGIN_MESSAGE_MAP(PrintViewManagerQt, message)
IPC_MESSAGE_HANDLER(PrintHostMsg_DidShowPrintDialog, OnDidShowPrintDialog)
- IPC_MESSAGE_HANDLER(PrintHostMsg_RequestPrintPreview,
- OnRequestPrintPreview)
- IPC_MESSAGE_HANDLER(PrintHostMsg_MetafileReadyForPrinting,
- OnMetafileReadyForPrinting);
+ IPC_MESSAGE_HANDLER(PrintHostMsg_RequestPrintPreview, OnRequestPrintPreview)
+ IPC_MESSAGE_HANDLER(PrintHostMsg_MetafileReadyForPrinting, OnMetafileReadyForPrinting);
IPC_MESSAGE_UNHANDLED(handled = false)
IPC_END_MESSAGE_MAP()
return handled || PrintManager::OnMessageReceived(message, render_frame_host);
@@ -293,10 +291,11 @@ void PrintViewManagerQt::resetPdfState()
// IPC handlers
void PrintViewManagerQt::OnRequestPrintPreview(
- const PrintHostMsg_RequestPrintPreview_Params& params)
+ const PrintHostMsg_RequestPrintPreview_Params &/*params*/)
{
- Send(new PrintMsg_PrintPreview(
- web_contents()->GetMainFrame()->GetRoutingID(), *m_printSettings));
+ auto *rfh = web_contents()->GetMainFrame();
+ rfh->Send(new PrintMsg_PrintPreview(rfh->GetRoutingID(), *m_printSettings));
+ rfh->Send(new PrintMsg_ClosePrintPreviewDialog(rfh->GetRoutingID()));
}
void PrintViewManagerQt::OnMetafileReadyForPrinting(
diff --git a/src/core/print_view_manager_qt.h b/src/core/print_view_manager_qt.h
index 994fc1121..2eceaa588 100644
--- a/src/core/print_view_manager_qt.h
+++ b/src/core/print_view_manager_qt.h
@@ -55,7 +55,6 @@
#include "content/public/browser/notification_registrar.h"
#include "content/public/browser/web_contents_user_data.h"
#include "printing/features/features.h"
-#include "printing/printed_pages_source.h"
struct PrintHostMsg_RequestPrintPreview_Params;
struct PrintHostMsg_DidPreviewDocument_Params;
@@ -97,7 +96,6 @@ public:
const PrintToPDFCallback &callback);
#endif // ENABLE_BASIC_PRINTING
- // PrintedPagesSource implementation.
base::string16 RenderSourceName() override;
protected:
diff --git a/src/core/qtwebengine.gni b/src/core/qtwebengine.gni
index a86e93f5b..eeaf6c15f 100644
--- a/src/core/qtwebengine.gni
+++ b/src/core/qtwebengine.gni
@@ -7,6 +7,7 @@ chromium_version = exec_script("//build/util/version.py", [ "-f", rebase_path("/
include_dirs = [
"//skia/config",
+ "//third_party",
"//third_party/skia/include/core"
]
@@ -41,7 +42,7 @@ if (enable_widevine) {
}
if (enable_webrtc) {
- deps += [ "//third_party/webrtc/base:base" ]
+ deps += [ "//third_party/webrtc_overrides" ]
}
if (is_linux && !is_desktop_linux) {
diff --git a/src/core/qtwebengine_resources.gni b/src/core/qtwebengine_resources.gni
index 6bff6a9a4..bc86eee7b 100644
--- a/src/core/qtwebengine_resources.gni
+++ b/src/core/qtwebengine_resources.gni
@@ -44,11 +44,11 @@ repack("qtwebengine_repack_resources_100") {
"$root_gen_dir/components/components_resources_100_percent.pak",
"$root_gen_dir/content/app/resources/content_resources_100_percent.pak",
"$root_gen_dir/chrome/renderer_resources_100_percent.pak",
- "$root_gen_dir/blink/public/resources/blink_image_resources_100_percent.pak",
+ "$root_gen_dir/blink/public/resources/blink_scaled_resources_100_percent.pak",
]
output = "$root_out_dir/qtwebengine_resources_100p.pak"
deps = [
- "//third_party/WebKit/public:image_resources_grit",
+ "//third_party/WebKit/public:scaled_resources_100_percent",
"//chrome/renderer:resources_grit",
"//components/resources:components_scaled_resources_grit",
"//content/app/resources:resources_grit",
@@ -62,11 +62,11 @@ repack("qtwebengine_repack_resources_200") {
"$root_gen_dir/components/components_resources_200_percent.pak",
"$root_gen_dir/content/app/resources/content_resources_200_percent.pak",
"$root_gen_dir/chrome/renderer_resources_200_percent.pak",
- "$root_gen_dir/blink/public/resources/blink_image_resources_200_percent.pak",
+ "$root_gen_dir/blink/public/resources/blink_scaled_resources_200_percent.pak",
]
output = "$root_out_dir/qtwebengine_resources_200p.pak"
deps = [
- "//third_party/WebKit/public:image_resources_grit",
+ "//third_party/WebKit/public:scaled_resources_200_percent",
"//chrome/renderer:resources_grit",
"//components/resources:components_scaled_resources_grit",
"//content/app/resources:resources_grit",
diff --git a/src/core/qtwebengine_sources.gni b/src/core/qtwebengine_sources.gni
index a21193ecd..6d17838a6 100644
--- a/src/core/qtwebengine_sources.gni
+++ b/src/core/qtwebengine_sources.gni
@@ -35,15 +35,19 @@ source_set("qtwebengine_spellcheck_sources") {
source_set("qtwebengine_sources") {
include_dirs = [
"//skia/config",
+ "//third_party/boringssl/src/include",
"//third_party/skia/include/core"
]
deps = [
+ "//components/nacl/common:features",
"//extensions/features:features",
]
sources = [
"//chrome/browser/media/webrtc/desktop_media_list.h",
"//chrome/browser/media/webrtc/desktop_streams_registry.cc",
"//chrome/browser/media/webrtc/desktop_streams_registry.h",
+ "//chrome/browser/net/chrome_mojo_proxy_resolver_factory.cc",
+ "//chrome/browser/net/chrome_mojo_proxy_resolver_factory.h",
"//chrome/browser/profiles/profile.cc",
"//chrome/browser/profiles/profile.h",
"//chrome/browser/ui/webui/devtools_ui.cc",
@@ -64,8 +68,6 @@ source_set("qtwebengine_sources") {
"//chrome/common/pref_names.h",
"//chrome/common/url_constants.cc",
"//chrome/common/url_constants.h",
- "//components/prefs/in_memory_pref_store.cc",
- "//components/prefs/in_memory_pref_store.h",
"//extensions/common/constants.cc",
"//extensions/common/constants.h",
"//extensions/common/url_pattern.cc",
diff --git a/src/core/render_view_observer_host_qt.cpp b/src/core/render_view_observer_host_qt.cpp
index 643eba007..c097e102d 100644
--- a/src/core/render_view_observer_host_qt.cpp
+++ b/src/core/render_view_observer_host_qt.cpp
@@ -40,7 +40,9 @@
#include "render_view_observer_host_qt.h"
#include "common/qt_messages.h"
+#include "content/public/browser/render_view_host.h"
#include "content/public/browser/web_contents.h"
+
#include "render_widget_host_view_qt.h"
#include "type_conversion.h"
#include "web_contents_adapter_client.h"
@@ -55,12 +57,16 @@ RenderViewObserverHostQt::RenderViewObserverHostQt(content::WebContents *webCont
void RenderViewObserverHostQt::fetchDocumentMarkup(quint64 requestId)
{
- Send(new RenderViewObserverQt_FetchDocumentMarkup(routing_id(), requestId));
+ web_contents()->GetRenderViewHost()->Send(
+ new RenderViewObserverQt_FetchDocumentMarkup(
+ web_contents()->GetRenderViewHost()->GetRoutingID(), requestId));
}
void RenderViewObserverHostQt::fetchDocumentInnerText(quint64 requestId)
{
- Send(new RenderViewObserverQt_FetchDocumentInnerText(routing_id(), requestId));
+ web_contents()->GetRenderViewHost()->Send(
+ new RenderViewObserverQt_FetchDocumentInnerText(
+ web_contents()->GetRenderViewHost()->GetRoutingID(), requestId));
}
bool RenderViewObserverHostQt::OnMessageReceived(const IPC::Message& message)
diff --git a/src/core/render_widget_host_view_qt.cpp b/src/core/render_widget_host_view_qt.cpp
index f0cd9c088..8986a3495 100644
--- a/src/core/render_widget_host_view_qt.cpp
+++ b/src/core/render_widget_host_view_qt.cpp
@@ -52,7 +52,7 @@
#include "web_event_factory.h"
#include "base/command_line.h"
-#include "cc/output/direct_renderer.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"
@@ -67,7 +67,6 @@
#include "third_party/skia/include/core/SkColor.h"
#include "third_party/WebKit/public/platform/WebColor.h"
#include "third_party/WebKit/public/platform/WebCursorInfo.h"
-#include "third_party/WebKit/public/web/WebCompositionUnderline.h"
#include "ui/base/clipboard/scoped_clipboard_writer.h"
#include "ui/events/blink/blink_event_util.h"
#include "ui/events/event.h"
@@ -342,8 +341,8 @@ RenderWidgetHostViewQt::RenderWidgetHostViewQt(content::RenderWidgetHost* widget
, m_wheelAckPending(false)
{
auto* task_runner = base::ThreadTaskRunnerHandle::Get().get();
- m_beginFrameSource.reset(new cc::DelayBasedBeginFrameSource(
- base::MakeUnique<cc::DelayBasedTimeSource>(task_runner)));
+ m_beginFrameSource.reset(new viz::DelayBasedBeginFrameSource(
+ base::MakeUnique<viz::DelayBasedTimeSource>(task_runner)));
m_host->SetView(this);
#ifndef QT_NO_ACCESSIBILITY
@@ -353,6 +352,7 @@ RenderWidgetHostViewQt::RenderWidgetHostViewQt(content::RenderWidgetHost* widget
content::BrowserAccessibilityStateImpl::GetInstance()->EnableAccessibility();
}
#endif // QT_NO_ACCESSIBILITY
+
if (GetTextInputManager())
GetTextInputManager()->AddObserver(this);
@@ -724,7 +724,7 @@ bool RenderWidgetHostViewQt::HasAcceleratedSurface(const gfx::Size&)
return false;
}
-void RenderWidgetHostViewQt::DidCreateNewRendererCompositorFrameSink(cc::mojom::CompositorFrameSinkClient *frameSink)
+void RenderWidgetHostViewQt::DidCreateNewRendererCompositorFrameSink(viz::mojom::CompositorFrameSinkClient *frameSink)
{
// Accumulated resources belong to the old RendererCompositorFrameSink and
// should not be returned.
@@ -732,7 +732,7 @@ void RenderWidgetHostViewQt::DidCreateNewRendererCompositorFrameSink(cc::mojom::
m_rendererCompositorFrameSink = frameSink;
}
-void RenderWidgetHostViewQt::SubmitCompositorFrame(const viz::LocalSurfaceId &local_surface_id, cc::CompositorFrame frame)
+void RenderWidgetHostViewQt::SubmitCompositorFrame(const viz::LocalSurfaceId &local_surface_id, viz::CompositorFrame frame)
{
bool scrollOffsetChanged = (m_lastScrollOffset != frame.metadata.root_scroll_offset);
bool contentsSizeChanged = (m_lastContentsSize != frame.metadata.root_layer_size);
@@ -1138,7 +1138,7 @@ void RenderWidgetHostViewQt::ProcessAckedTouchEvent(const content::TouchEventWit
void RenderWidgetHostViewQt::sendDelegatedFrameAck()
{
m_beginFrameSource->DidFinishFrame(this);
- std::vector<cc::ReturnedResource> resources;
+ std::vector<viz::ReturnedResource> resources;
m_resourcesToRelease.swap(resources);
if (m_rendererCompositorFrameSink)
m_rendererCompositorFrameSink->DidReceiveCompositorFrameAck(resources);
@@ -1211,7 +1211,7 @@ void RenderWidgetHostViewQt::handleKeyEvent(QKeyEvent *ev)
if (ev->type() == QEvent::KeyRelease) {
m_receivedEmptyImeText = false;
m_host->ImeSetComposition(toString16(ev->text()),
- std::vector<ui::CompositionUnderline>(),
+ std::vector<ui::ImeTextSpan>(),
gfx::Range::InvalidRange(),
gfx::Range::InvalidRange().start(),
gfx::Range::InvalidRange().end());
@@ -1262,7 +1262,7 @@ void RenderWidgetHostViewQt::handleInputMethodEvent(QInputMethodEvent *ev)
gfx::Range selectionRange = gfx::Range::InvalidRange();
const QList<QInputMethodEvent::Attribute> &attributes = ev->attributes();
- std::vector<ui::CompositionUnderline> underlines;
+ std::vector<ui::ImeTextSpan> underlines;
bool hasSelection = false;
for (const auto &attribute : attributes) {
@@ -1287,7 +1287,7 @@ void RenderWidgetHostViewQt::handleInputMethodEvent(QInputMethodEvent *ev)
if (format.underlineStyle() != QTextCharFormat::NoUnderline)
underlineColor = format.underlineColor();
- underlines.push_back(ui::CompositionUnderline(start, end, toSk(underlineColor), /*thick*/ false, SK_ColorTRANSPARENT));
+ underlines.push_back(ui::ImeTextSpan(ui::ImeTextSpan::Type::kComposition, start, end, toSk(underlineColor), /*thick*/ false, SK_ColorTRANSPARENT));
break;
}
case QInputMethodEvent::Cursor:
@@ -1672,7 +1672,7 @@ void RenderWidgetHostViewQt::updateNeedsBeginFramesInternal()
m_addedFrameObserver = m_needsBeginFrames;
}
-bool RenderWidgetHostViewQt::OnBeginFrameDerivedImpl(const cc::BeginFrameArgs& args)
+bool RenderWidgetHostViewQt::OnBeginFrameDerivedImpl(const viz::BeginFrameArgs& args)
{
m_beginFrameSource->OnUpdateVSyncParameters(args.frame_time, args.interval);
if (m_rendererCompositorFrameSink)
diff --git a/src/core/render_widget_host_view_qt.h b/src/core/render_widget_host_view_qt.h
index 1ac32456a..548142c84 100644
--- a/src/core/render_widget_host_view_qt.h
+++ b/src/core/render_widget_host_view_qt.h
@@ -43,8 +43,8 @@
#include "render_widget_host_view_qt_delegate.h"
#include "base/memory/weak_ptr.h"
-#include "cc/scheduler/begin_frame_source.h"
-#include "cc/resources/transferable_resource.h"
+#include "components/viz/common/frame_sinks/begin_frame_source.h"
+#include "components/viz/common/resources/transferable_resource.h"
#include "content/browser/accessibility/browser_accessibility_manager.h"
#include "content/browser/renderer_host/render_widget_host_view_base.h"
#include "content/browser/renderer_host/text_input_manager.h"
@@ -102,7 +102,7 @@ class RenderWidgetHostViewQt
, public ui::GestureProviderClient
, public RenderWidgetHostViewQtDelegateClient
, public base::SupportsWeakPtr<RenderWidgetHostViewQt>
- , public cc::BeginFrameObserverBase
+ , public viz::BeginFrameObserverBase
#ifndef QT_NO_ACCESSIBILITY
, public QAccessible::ActivationObserver
#endif // QT_NO_ACCESSIBILITY
@@ -151,8 +151,8 @@ public:
void Destroy() override;
void SetTooltipText(const base::string16 &tooltip_text) override;
bool HasAcceleratedSurface(const gfx::Size&) override;
- void DidCreateNewRendererCompositorFrameSink(cc::mojom::CompositorFrameSinkClient* renderer_compositor_frame_sink) override;
- void SubmitCompositorFrame(const viz::LocalSurfaceId&, cc::CompositorFrame) override;
+ void DidCreateNewRendererCompositorFrameSink(viz::mojom::CompositorFrameSinkClient* renderer_compositor_frame_sink) override;
+ void SubmitCompositorFrame(const viz::LocalSurfaceId&, viz::CompositorFrame) override;
void WheelEventAck(const blink::WebMouseWheelEvent &event, content::InputEventAckState ack_result) override;
void GetScreenInfo(content::ScreenInfo* results);
@@ -180,7 +180,7 @@ public:
void OnTextSelectionChanged(content::TextInputManager *text_input_manager, RenderWidgetHostViewBase *updated_view) override;
// cc::BeginFrameObserverBase implementation.
- bool OnBeginFrameDerivedImpl(const cc::BeginFrameArgs& args) override;
+ bool OnBeginFrameDerivedImpl(const viz::BeginFrameArgs& args) override;
void OnBeginFrameSourcePausedChanged(bool paused) override;
void handleMouseEvent(QMouseEvent*);
@@ -243,14 +243,14 @@ private:
std::unique_ptr<RenderWidgetHostViewQtDelegate> m_delegate;
QExplicitlySharedDataPointer<ChromiumCompositorData> m_chromiumCompositorData;
- std::vector<cc::ReturnedResource> m_resourcesToRelease;
+ std::vector<viz::ReturnedResource> m_resourcesToRelease;
bool m_needsDelegatedFrameAck;
LoadVisuallyCommittedState m_loadVisuallyCommittedState;
QMetaObject::Connection m_adapterClientDestroyedConnection;
WebContentsAdapterClient *m_adapterClient;
MultipleMouseClickHelper m_clickHelper;
- cc::mojom::CompositorFrameSinkClient *m_rendererCompositorFrameSink;
+ viz::mojom::CompositorFrameSinkClient *m_rendererCompositorFrameSink;
bool m_imeInProgress;
bool m_receivedEmptyImeText;
@@ -258,7 +258,7 @@ private:
bool m_initPending;
- std::unique_ptr<cc::SyntheticBeginFrameSource> m_beginFrameSource;
+ std::unique_ptr<viz::SyntheticBeginFrameSource> m_beginFrameSource;
bool m_needsBeginFrames;
bool m_addedFrameObserver;
diff --git a/src/core/renderer/content_renderer_client_qt.cpp b/src/core/renderer/content_renderer_client_qt.cpp
index 5980d7b84..a77bcf785 100644
--- a/src/core/renderer/content_renderer_client_qt.cpp
+++ b/src/core/renderer/content_renderer_client_qt.cpp
@@ -49,10 +49,11 @@
#include "components/spellcheck/renderer/spellcheck_provider.h"
#endif
#include "components/cdm/renderer/widevine_key_system_properties.h"
+#include "components/error_page/common/error.h"
#include "components/error_page/common/error_page_params.h"
#include "components/error_page/common/localized_error.h"
#if BUILDFLAG(ENABLE_BASIC_PRINTING)
-#include "components/printing/renderer/print_web_view_helper.h"
+#include "components/printing/renderer/print_render_frame_helper.h"
#endif // if BUILDFLAG(ENABLE_BASIC_PRINTING)
#include "components/visitedlink/renderer/visitedlink_slave.h"
#include "components/web_cache/renderer/web_cache_impl.h"
@@ -136,7 +137,7 @@ void ContentRendererClientQt::RenderFrameCreated(content::RenderFrame* render_fr
new SpellCheckProvider(render_frame, m_spellCheck.data());
#endif
#if BUILDFLAG(ENABLE_BASIC_PRINTING)
- new printing::PrintWebViewHelper(
+ new printing::PrintRenderFrameHelper(
render_frame,
base::WrapUnique(new PrintWebViewHelperDelegateQt()));
#endif // BUILDFLAG(ENABLE_BASIC_PRINTING)
@@ -166,14 +167,13 @@ void ContentRendererClientQt::RunScriptsAtDocumentEnd(content::RenderFrame* rend
UserResourceController::instance()->RunScriptsAtDocumentEnd(render_frame);
}
-bool ContentRendererClientQt::HasErrorPage(int httpStatusCode, std::string *errorDomain)
+bool ContentRendererClientQt::HasErrorPage(int httpStatusCode)
{
// Use an internal error page, if we have one for the status code.
- if (!error_page::LocalizedError::HasStrings(error_page::LocalizedError::kHttpErrorDomain, httpStatusCode)) {
+ if (!error_page::LocalizedError::HasStrings(error_page::Error::kHttpErrorDomain, httpStatusCode)) {
return false;
}
- *errorDomain = error_page::LocalizedError::kHttpErrorDomain;
return true;
}
@@ -182,6 +182,20 @@ bool ContentRendererClientQt::ShouldSuppressErrorPage(content::RenderFrame *fram
return !(frame->GetWebkitPreferences().enable_error_page);
}
+std::string domain2String(blink::WebURLError::Domain domain)
+{
+ switch (domain) {
+ case blink::WebURLError::Domain::kEmpty:
+ return "(null)";
+ case blink::WebURLError::Domain::kNet:
+ return "net";
+ case blink::WebURLError::Domain::kTest:
+ return "testing";
+ }
+ Q_UNREACHABLE();
+ return std::string();
+}
+
// To tap into the chromium localized strings. Ripped from the chrome layer (highly simplified).
void ContentRendererClientQt::GetNavigationErrorStrings(content::RenderFrame* renderFrame, const blink::WebURLRequest &failedRequest, const blink::WebURLError &error, std::string *errorHtml, base::string16 *errorDescription)
{
@@ -196,12 +210,12 @@ void ContentRendererClientQt::GetNavigationErrorStrings(content::RenderFrame* re
// TODO(elproxy): We could potentially get better diagnostics here by first calling
// NetErrorHelper::GetErrorStringsForDnsProbe, but that one is harder to untangle.
- error_page::LocalizedError::GetStrings(error.reason, error.domain.Utf8(), error.unreachable_url, isPost
- , error.stale_copy_in_cache && !isPost, false, false, locale
- , std::unique_ptr<error_page::ErrorPageParams>(), &errorStrings);
+ error_page::LocalizedError::GetStrings(
+ error.reason, domain2String(error.domain), error.unreachable_url, isPost,
+ error.stale_copy_in_cache, false, false,
+ locale, std::unique_ptr<error_page::ErrorPageParams>(), &errorStrings);
resourceId = IDR_NET_ERROR_HTML;
-
const base::StringPiece template_html(ui::ResourceBundle::GetSharedInstance().GetRawDataResource(resourceId));
if (template_html.empty())
NOTREACHED() << "unable to load template. ID: " << resourceId;
@@ -210,7 +224,7 @@ void ContentRendererClientQt::GetNavigationErrorStrings(content::RenderFrame* re
}
if (errorDescription)
- *errorDescription = error_page::LocalizedError::GetErrorDetails(error.domain.Utf8(), error.reason, isPost);
+ *errorDescription = error_page::LocalizedError::GetErrorDetails(domain2String(error.domain), error.reason, isPost);
}
unsigned long long ContentRendererClientQt::VisitedLinkHash(const char *canonicalUrl, size_t length)
@@ -228,7 +242,7 @@ bool ContentRendererClientQt::IsLinkVisited(unsigned long long linkHash)
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE.Chromium file.
-#if BUILDFLAG(ENABLE_PEPPER_CDMS)
+#if BUILDFLAG(ENABLE_LIBRARY_CDMS)
static const char kExternalClearKeyPepperType[] = "application/x-ppapi-clearkey-cdm";
static bool IsPepperCdmAvailable(const std::string& pepper_type,
@@ -410,7 +424,7 @@ static void AddPepperBasedWidevine(std::vector<std::unique_ptr<media::KeySystemP
void ContentRendererClientQt::AddSupportedKeySystems(std::vector<std::unique_ptr<media::KeySystemProperties>> *key_systems)
{
-#if BUILDFLAG(ENABLE_PEPPER_CDMS)
+#if BUILDFLAG(ENABLE_LIBRARY_CDMS)
AddExternalClearKey(key_systems);
#if defined(WIDEVINE_CDM_AVAILABLE)
diff --git a/src/core/renderer/content_renderer_client_qt.h b/src/core/renderer/content_renderer_client_qt.h
index 45ad2e872..18cf129c2 100644
--- a/src/core/renderer/content_renderer_client_qt.h
+++ b/src/core/renderer/content_renderer_client_qt.h
@@ -66,7 +66,7 @@ public:
void RenderViewCreated(content::RenderView *render_view) override;
void RenderFrameCreated(content::RenderFrame* render_frame) override;
bool ShouldSuppressErrorPage(content::RenderFrame *, const GURL &) override;
- bool HasErrorPage(int httpStatusCode, std::string *errorDomain) override;
+ bool HasErrorPage(int http_status_code) override;
void GetNavigationErrorStrings(content::RenderFrame* renderFrame, const blink::WebURLRequest& failedRequest,
const blink::WebURLError& error, std::string* errorHtml, base::string16* errorDescription) override;
diff --git a/src/core/renderer/print_web_view_helper_delegate_qt.h b/src/core/renderer/print_web_view_helper_delegate_qt.h
index 68e515d4d..e3020922f 100644
--- a/src/core/renderer/print_web_view_helper_delegate_qt.h
+++ b/src/core/renderer/print_web_view_helper_delegate_qt.h
@@ -44,7 +44,7 @@
#ifndef PRINT_WEB_VIEW_HELPER_DELEGATE_QT_H
#define PRINT_WEB_VIEW_HELPER_DELEGATE_QT_H
-#include "components/printing/renderer/print_web_view_helper.h"
+#include "components/printing/renderer/print_render_frame_helper.h"
namespace content {
class RenderView;
@@ -52,7 +52,7 @@ class RenderView;
namespace QtWebEngineCore {
-class PrintWebViewHelperDelegateQt : public printing::PrintWebViewHelper::Delegate
+class PrintWebViewHelperDelegateQt : public printing::PrintRenderFrameHelper::Delegate
{
public:
~PrintWebViewHelperDelegateQt() override;
diff --git a/src/core/renderer/user_resource_controller.cpp b/src/core/renderer/user_resource_controller.cpp
index f85879053..eed520876 100644
--- a/src/core/renderer/user_resource_controller.cpp
+++ b/src/core/renderer/user_resource_controller.cpp
@@ -58,6 +58,8 @@
#include "type_conversion.h"
#include "user_script.h"
+#include <QRegularExpression>
+
Q_GLOBAL_STATIC(UserResourceController, qt_webengine_userResourceController)
static content::RenderView * const globalScriptsIndex = 0;
@@ -65,6 +67,28 @@ static content::RenderView * const globalScriptsIndex = 0;
// Scripts meant to run after the load event will be run 500ms after DOMContentLoaded if the load event doesn't come within that delay.
static const int afterLoadTimeout = 500;
+static bool regexMatchesURL(const std::string &pat, const GURL &url) {
+ QRegularExpression qre(QtWebEngineCore::toQt(pat));
+ qre.setPatternOptions(QRegularExpression::CaseInsensitiveOption);
+ if (!qre.isValid())
+ return false;
+ return qre.match(QtWebEngineCore::toQt(url.spec())).hasMatch();
+}
+
+static bool includeRuleMatchesURL(const std::string &pat, const GURL &url)
+{
+ // Match patterns for greasemonkey's @include and @exclude rules which can
+ // be either strings with wildcards or regular expressions.
+ if (pat.front() == '/' && pat.back() == '/') {
+ std::string re(++pat.cbegin(), --pat.cend());
+ if (regexMatchesURL(re, url))
+ return true;
+ } else if (base::MatchPattern(url.spec(), pat)) {
+ return true;
+ }
+ return false;
+}
+
static bool scriptMatchesURL(const UserScriptData &scriptData, const GURL &url) {
// Logic taken from Chromium (extensions/common/user_script.cc)
bool matchFound;
@@ -82,7 +106,7 @@ static bool scriptMatchesURL(const UserScriptData &scriptData, const GURL &url)
if (!scriptData.globs.empty()) {
matchFound = false;
for (auto it = scriptData.globs.begin(), end = scriptData.globs.end(); it != end; ++it) {
- if (base::MatchPattern(url.spec(), *it))
+ if (includeRuleMatchesURL(*it, url))
matchFound = true;
}
if (!matchFound)
@@ -91,7 +115,7 @@ static bool scriptMatchesURL(const UserScriptData &scriptData, const GURL &url)
if (!scriptData.excludeGlobs.empty()) {
for (auto it = scriptData.excludeGlobs.begin(), end = scriptData.excludeGlobs.end(); it != end; ++it) {
- if (base::MatchPattern(url.spec(), *it))
+ if (includeRuleMatchesURL(*it, url))
return false;
}
}
@@ -110,7 +134,7 @@ private:
// RenderFrameObserver implementation.
void DidFinishDocumentLoad() override;
void DidFinishLoad() override;
- void DidStartProvisionalLoad(blink::WebDataSource* data_source) override;
+ void DidStartProvisionalLoad(blink::WebDocumentLoader *document_loader) override;
void FrameDetached() override;
void OnDestruct() override;
bool OnMessageReceived(const IPC::Message& message) override;
@@ -217,9 +241,9 @@ void UserResourceController::RenderFrameObserverHelper::DidFinishLoad()
m_weakPtrFactory.GetWeakPtr(), UserScriptData::AfterLoad, frame));
}
-void UserResourceController::RenderFrameObserverHelper::DidStartProvisionalLoad(blink::WebDataSource *data_source)
+void UserResourceController::RenderFrameObserverHelper::DidStartProvisionalLoad(blink::WebDocumentLoader *document_loader)
{
- Q_UNUSED(data_source);
+ Q_UNUSED(document_loader);
blink::WebLocalFrame *frame = render_frame()->GetWebFrame();
m_pendingFrames.remove(frame);
}
diff --git a/src/core/renderer_host/user_resource_controller_host.cpp b/src/core/renderer_host/user_resource_controller_host.cpp
index 2799d5d85..a9071df8f 100644
--- a/src/core/renderer_host/user_resource_controller_host.cpp
+++ b/src/core/renderer_host/user_resource_controller_host.cpp
@@ -142,9 +142,10 @@ void UserResourceControllerHost::addUserScript(const UserScript &script, WebCont
m_perContentsScripts.insert(contents, currentScripts);
}
}
- contents->Send(new RenderFrameObserverHelper_AddScript(contents->GetRenderViewHost()->
- GetMainFrame()->GetRoutingID(),
- script.data()));
+ contents->GetRenderViewHost()->Send(
+ new RenderFrameObserverHelper_AddScript(
+ contents->GetRenderViewHost()->GetMainFrame()->GetRoutingID(),
+ script.data()));
}
}
@@ -180,9 +181,10 @@ bool UserResourceControllerHost::removeUserScript(const UserScript &script, WebC
QList<UserScript>::iterator it = std::find(list.begin(), list.end(), script);
if (it == list.end())
return false;
- contents->Send(new RenderFrameObserverHelper_RemoveScript(contents->
- GetMainFrame()->GetRoutingID(),
- (*it).data()));
+ contents->GetRenderViewHost()->Send(
+ new RenderFrameObserverHelper_RemoveScript(
+ contents->GetMainFrame()->GetRoutingID(),
+ (*it).data()));
list.erase(it);
}
return true;
@@ -198,8 +200,8 @@ void UserResourceControllerHost::clearAllScripts(WebContentsAdapter *adapter)
} else {
content::WebContents *contents = adapter->webContents();
m_perContentsScripts.remove(contents);
- contents->Send(new RenderFrameObserverHelper_ClearScripts(contents->
- GetMainFrame()->GetRoutingID()));
+ contents->GetRenderViewHost()->Send(
+ new RenderFrameObserverHelper_ClearScripts(contents->GetMainFrame()->GetRoutingID()));
}
}
diff --git a/src/core/renderer_host/web_channel_ipc_transport_host.cpp b/src/core/renderer_host/web_channel_ipc_transport_host.cpp
index c47b255b7..b624d7e45 100644
--- a/src/core/renderer_host/web_channel_ipc_transport_host.cpp
+++ b/src/core/renderer_host/web_channel_ipc_transport_host.cpp
@@ -41,6 +41,7 @@
#include "base/strings/string16.h"
#include "content/public/browser/render_view_host.h"
+#include "content/public/browser/web_contents.h"
#include "common/qt_messages.h"
#include "type_conversion.h"
@@ -55,7 +56,10 @@ WebChannelIPCTransportHost::WebChannelIPCTransportHost(content::WebContents *con
, content::WebContentsObserver(contents)
, m_worldId(worldId)
{
- Send(new WebChannelIPCTransport_Install(routing_id(), m_worldId));
+ contents->GetRenderViewHost()->Send(
+ new WebChannelIPCTransport_Install(
+ contents->GetRenderViewHost()->GetRoutingID(),
+ m_worldId));
}
WebChannelIPCTransportHost::~WebChannelIPCTransportHost()
@@ -78,9 +82,15 @@ void WebChannelIPCTransportHost::setWorldId(uint worldId)
{
if (worldId == m_worldId)
return;
- Send(new WebChannelIPCTransport_Uninstall(routing_id(), m_worldId));
+ web_contents()->GetRenderViewHost()->Send(
+ new WebChannelIPCTransport_Uninstall(
+ web_contents()->GetRenderViewHost()->GetRoutingID(),
+ m_worldId));
m_worldId = worldId;
- Send(new WebChannelIPCTransport_Install(routing_id(), m_worldId));
+ web_contents()->GetRenderViewHost()->Send(
+ new WebChannelIPCTransport_Install(
+ web_contents()->GetRenderViewHost()->GetRoutingID(),
+ m_worldId));
}
void WebChannelIPCTransportHost::sendMessage(const QJsonObject &message)
@@ -88,7 +98,11 @@ void WebChannelIPCTransportHost::sendMessage(const QJsonObject &message)
QJsonDocument doc(message);
int size = 0;
const char *rawData = doc.rawData(&size);
- Send(new WebChannelIPCTransport_Message(routing_id(), std::vector<char>(rawData, rawData + size), m_worldId));
+ web_contents()->GetRenderViewHost()->Send(
+ new WebChannelIPCTransport_Message(
+ web_contents()->GetRenderViewHost()->GetRoutingID(),
+ std::vector<char>(rawData, rawData + size),
+ m_worldId));
}
void WebChannelIPCTransportHost::onWebChannelMessage(const std::vector<char> &message)
diff --git a/src/core/url_request_context_getter_qt.cpp b/src/core/url_request_context_getter_qt.cpp
index 22d626e96..fd0f24735 100644
--- a/src/core/url_request_context_getter_qt.cpp
+++ b/src/core/url_request_context_getter_qt.cpp
@@ -42,8 +42,10 @@
#include "base/command_line.h"
#include "base/memory/ptr_util.h"
#include "base/strings/string_util.h"
-#include "base/threading/worker_pool.h"
+#include "base/task_scheduler/post_task.h"
#include "base/threading/sequenced_worker_pool.h"
+#include "chrome/browser/net/chrome_mojo_proxy_resolver_factory.h"
+#include "content/network/proxy_service_mojo.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/cookie_store_factory.h"
#include "content/public/common/content_features.h"
@@ -66,8 +68,6 @@
#include "net/proxy/dhcp_proxy_script_fetcher_factory.h"
#include "net/proxy/proxy_script_fetcher_impl.h"
#include "net/proxy/proxy_service.h"
-#include "net/proxy/proxy_service_v8.h"
-#include "net/proxy/proxy_resolver_v8.h"
#include "net/ssl/channel_id_service.h"
#include "net/ssl/default_channel_id_store.h"
#include "net/ssl/ssl_config_service_defaults.h"
@@ -224,12 +224,15 @@ void URLRequestContextGetterQt::generateStorage()
// We must stop all requests before deleting their backends.
if (m_storage) {
+ m_cookieDelegate->setCookieMonster(0);
+ m_storage->set_cookie_store(0);
cancelAllUrlRequests();
// we need to get rid of dangling pointer due to coming storage deletion
m_urlRequestContext->set_http_transaction_factory(0);
m_httpNetworkSession.reset();
}
+
m_storage.reset(new net::URLRequestContextStorage(m_urlRequestContext.get()));
net::ProxyConfigService *proxyConfigService = m_proxyConfigService.fetchAndStoreAcquire(0);
@@ -248,12 +251,13 @@ void URLRequestContextGetterQt::generateStorage()
if (!m_dhcpProxyScriptFetcherFactory)
m_dhcpProxyScriptFetcherFactory.reset(new net::DhcpProxyScriptFetcherFactory);
- m_storage->set_proxy_service(net::CreateProxyServiceUsingV8ProxyResolver(
+ m_storage->set_proxy_service(content::CreateProxyServiceUsingMojoFactory(
+ ChromeMojoProxyResolverFactory::GetInstance(),
std::unique_ptr<net::ProxyConfigService>(proxyConfigService),
new net::ProxyScriptFetcherImpl(m_urlRequestContext.get()),
m_dhcpProxyScriptFetcherFactory->Create(m_urlRequestContext.get()),
host_resolver.get(),
- NULL /* NetLog */,
+ nullptr /* NetLog */,
m_networkDelegate.get()));
m_storage->set_ssl_config_service(new net::SSLConfigServiceDefaults);
@@ -303,8 +307,8 @@ void URLRequestContextGetterQt::generateCookieStore()
if (!m_channelIdPath.isEmpty() && m_persistentCookiesPolicy != BrowserContextAdapter::NoPersistentCookies) {
channel_id_db = new net::SQLiteChannelIDStore(
toFilePath(m_channelIdPath),
- BrowserThread::GetBlockingPool()->GetSequencedTaskRunner(
- BrowserThread::GetBlockingPool()->GetSequenceToken()));
+ base::CreateSequencedTaskRunnerWithTraits(
+ {base::MayBlock(), base::TaskPriority::BACKGROUND}));
}
m_storage->set_channel_id_service(
@@ -312,47 +316,44 @@ void URLRequestContextGetterQt::generateCookieStore()
new net::DefaultChannelIDStore(channel_id_db.get()))));
// Unset it first to get a chance to destroy and flush the old cookie store before opening a new on possibly the same file.
- m_storage->set_cookie_store(0);
m_cookieDelegate->setCookieMonster(0);
+ m_storage->set_cookie_store(0);
std::unique_ptr<net::CookieStore> cookieStore;
switch (m_persistentCookiesPolicy) {
case BrowserContextAdapter::NoPersistentCookies:
- cookieStore =
- content::CreateCookieStore(content::CookieStoreConfig(
+ cookieStore = content::CreateCookieStore(
+ content::CookieStoreConfig(
base::FilePath(),
content::CookieStoreConfig::EPHEMERAL_SESSION_COOKIES,
- NULL,
- m_cookieDelegate.get())
- );
+ nullptr)
+ );
break;
case BrowserContextAdapter::AllowPersistentCookies:
- cookieStore =
- content::CreateCookieStore(content::CookieStoreConfig(
+ cookieStore = content::CreateCookieStore(
+ content::CookieStoreConfig(
toFilePath(m_cookiesPath),
content::CookieStoreConfig::PERSISTANT_SESSION_COOKIES,
- NULL,
- m_cookieDelegate.get())
+ nullptr)
);
break;
case BrowserContextAdapter::ForcePersistentCookies:
- cookieStore =
- content::CreateCookieStore(content::CookieStoreConfig(
+ cookieStore = content::CreateCookieStore(
+ content::CookieStoreConfig(
toFilePath(m_cookiesPath),
content::CookieStoreConfig::RESTORED_SESSION_COOKIES,
- NULL,
- m_cookieDelegate.get())
+ nullptr)
);
break;
}
net::CookieMonster * const cookieMonster = static_cast<net::CookieMonster*>(cookieStore.get());
cookieStore->SetChannelIDServiceID(m_urlRequestContext->channel_id_service()->GetUniqueID());
+ m_cookieDelegate->setCookieMonster(cookieMonster);
m_storage->set_cookie_store(std::move(cookieStore));
const std::vector<std::string> cookieableSchemes(kCookieableSchemes, kCookieableSchemes + arraysize(kCookieableSchemes));
cookieMonster->SetCookieableSchemes(cookieableSchemes);
- m_cookieDelegate->setCookieMonster(cookieMonster);
if (!m_updateAllStorage && m_updateHttpCache) {
// HttpCache needs to be regenerated when we generate a new channel id service
@@ -509,8 +510,7 @@ void URLRequestContextGetterQt::generateHttpCache()
net::MEMORY_CACHE,
net::CACHE_BACKEND_DEFAULT,
base::FilePath(),
- m_httpCacheMaxSize,
- BrowserThread::GetTaskRunnerForThread(BrowserThread::CACHE)
+ m_httpCacheMaxSize
);
break;
case BrowserContextAdapter::DiskHttpCache:
@@ -519,8 +519,7 @@ void URLRequestContextGetterQt::generateHttpCache()
net::DISK_CACHE,
net::CACHE_BACKEND_DEFAULT,
toFilePath(m_httpCachePath),
- m_httpCacheMaxSize,
- BrowserThread::GetTaskRunnerForThread(BrowserThread::CACHE)
+ m_httpCacheMaxSize
);
break;
case BrowserContextAdapter::NoCache:
@@ -559,9 +558,11 @@ void URLRequestContextGetterQt::generateJobFactory()
m_protocolHandlers.clear();
jobFactory->SetProtocolHandler(url::kDataScheme, std::unique_ptr<net::URLRequestJobFactory::ProtocolHandler>(new net::DataProtocolHandler()));
- jobFactory->SetProtocolHandler(url::kFileScheme, std::unique_ptr<net::URLRequestJobFactory::ProtocolHandler>(new net::FileProtocolHandler(
- content::BrowserThread::GetBlockingPool()->GetTaskRunnerWithShutdownBehavior(
- base::SequencedWorkerPool::SKIP_ON_SHUTDOWN))));
+ jobFactory->SetProtocolHandler(url::kFileScheme,
+ std::make_unique<net::FileProtocolHandler>(
+ base::CreateTaskRunnerWithTraits({base::MayBlock(),
+ base::TaskPriority::BACKGROUND,
+ base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN})));
jobFactory->SetProtocolHandler(kQrcSchemeQt, std::unique_ptr<net::URLRequestJobFactory::ProtocolHandler>(new QrcProtocolHandlerQt()));
jobFactory->SetProtocolHandler(url::kFtpScheme,
net::FtpProtocolHandler::Create(m_urlRequestContext->host_resolver()));
diff --git a/src/core/user_script.cpp b/src/core/user_script.cpp
index b33dd6a7d..9b9d66d55 100644
--- a/src/core/user_script.cpp
+++ b/src/core/user_script.cpp
@@ -244,13 +244,20 @@ void UserScript::parseMetadataHeader()
if (GetDeclarationValue(line, kNameDeclaration, &value)) {
setName(toQt(value));
} else if (GetDeclarationValue(line, kIncludeDeclaration, &value)) {
- // We escape some characters that MatchPattern() considers special.
- base::ReplaceSubstringsAfterOffset(&value, 0, "\\", "\\\\");
- base::ReplaceSubstringsAfterOffset(&value, 0, "?", "\\?");
+ if (value.front() != '/' || value.back() != '/') {
+ // The greasemonkey spec only allows for wildcards (*), so
+ // escape the additional things which MatchPattern allows.
+ base::ReplaceSubstringsAfterOffset(&value, 0, "\\", "\\\\");
+ base::ReplaceSubstringsAfterOffset(&value, 0, "?", "\\?");
+ }
scriptData->globs.push_back(value);
} else if (GetDeclarationValue(line, kExcludeDeclaration, &value)) {
- base::ReplaceSubstringsAfterOffset(&value, 0, "\\", "\\\\");
- base::ReplaceSubstringsAfterOffset(&value, 0, "?", "\\?");
+ if (value.front() != '/' || value.back() != '/') {
+ // The greasemonkey spec only allows for wildcards (*), so
+ // escape the additional things which MatchPattern allows.
+ base::ReplaceSubstringsAfterOffset(&value, 0, "\\", "\\\\");
+ base::ReplaceSubstringsAfterOffset(&value, 0, "?", "\\?");
+ }
scriptData->excludeGlobs.push_back(value);
} else if (GetDeclarationValue(line, kMatchDeclaration, &value)) {
if (URLPattern::PARSE_SUCCESS == urlPatternParser.Parse(value))
diff --git a/src/core/web_contents_adapter.cpp b/src/core/web_contents_adapter.cpp
index 668e791c1..f87cc115b 100644
--- a/src/core/web_contents_adapter.cpp
+++ b/src/core/web_contents_adapter.cpp
@@ -389,7 +389,7 @@ QSharedPointer<WebContentsAdapter> WebContentsAdapter::createFromSerializedNavig
// Set up the file access rights for the selected navigation entry.
// TODO(joth): This is duplicated from chrome/.../session_restore.cc and
// should be shared e.g. in NavigationController. http://crbug.com/68222
- const int id = newWebContents->GetRenderProcessHost()->GetID();
+ const int id = newWebContents->GetMainFrame()->GetProcess()->GetID();
const content::PageState& pageState = controller.GetActiveEntry()->GetPageState();
const std::vector<base::FilePath>& filePaths = pageState.GetReferencedFiles();
for (std::vector<base::FilePath>::const_iterator file = filePaths.begin(); file != filePaths.end(); ++file)
@@ -478,7 +478,7 @@ void WebContentsAdapter::initialize(WebContentsAdapterClient *adapterClient)
content::RenderViewHost *rvh = d->webContents->GetRenderViewHost();
Q_ASSERT(rvh);
if (!rvh->IsRenderViewLive())
- static_cast<content::WebContentsImpl*>(d->webContents.get())->CreateRenderViewForRenderManager(rvh, MSG_ROUTING_NONE, MSG_ROUTING_NONE, content::FrameReplicationState());
+ static_cast<content::WebContentsImpl*>(d->webContents.get())->CreateRenderViewForRenderManager(rvh, MSG_ROUTING_NONE, MSG_ROUTING_NONE, base::UnguessableToken::Create(), content::FrameReplicationState());
}
void WebContentsAdapter::reattachRWHV()
@@ -707,7 +707,9 @@ QString WebContentsAdapter::pageTitle() const
QString WebContentsAdapter::selectedText() const
{
Q_D(const WebContentsAdapter);
- return toQt(d->webContents->GetRenderWidgetHostView()->GetSelectedText());
+ if (auto *rwhv = d->webContents->GetRenderWidgetHostView())
+ return toQt(rwhv->GetSelectedText());
+ return QString();
}
void WebContentsAdapter::undo()
@@ -853,7 +855,7 @@ void WebContentsAdapter::setZoomFactor(qreal factor)
content::HostZoomMap *zoomMap = content::HostZoomMap::GetForWebContents(d->webContents.get());
if (zoomMap) {
- int render_process_id = d->webContents->GetRenderProcessHost()->GetID();
+ int render_process_id = d->webContents->GetMainFrame()->GetProcess()->GetID();
int render_view_id = d->webContents->GetRenderViewHost()->GetRoutingID();
zoomMap->SetTemporaryZoomLevel(render_process_id, render_view_id, zoomLevel);
}
@@ -884,6 +886,8 @@ QAccessibleInterface *WebContentsAdapter::browserAccessible()
content::RenderViewHost *rvh = d->webContents->GetRenderViewHost();
Q_ASSERT(rvh);
content::BrowserAccessibilityManager *manager = static_cast<content::RenderFrameHostImpl*>(rvh->GetMainFrame())->GetOrCreateBrowserAccessibilityManager();
+ if (!manager) // FIXME!
+ return nullptr;
content::BrowserAccessibility *acc = manager->GetRoot();
content::BrowserAccessibilityQt *accQt = static_cast<content::BrowserAccessibilityQt*>(acc);
return accQt;
diff --git a/src/core/web_contents_delegate_qt.cpp b/src/core/web_contents_delegate_qt.cpp
index 7b765d99b..5364afa94 100644
--- a/src/core/web_contents_delegate_qt.cpp
+++ b/src/core/web_contents_delegate_qt.cpp
@@ -219,16 +219,6 @@ void WebContentsDelegateQt::DidStartNavigation(content::NavigationHandle *naviga
if (!navigation_handle->IsInMainFrame())
return;
- // Suppress extra loadStarted signal for data URL with specified base URL.
- if (navigation_handle->GetURL().SchemeIs(url::kDataScheme)) {
- content::NavigationEntry *pending_entry = navigation_handle->GetWebContents()->GetController().GetPendingEntry();
-
- if (pending_entry && !pending_entry->GetBaseURLForDataURL().is_empty() &&
- navigation_handle->GetURL() == pending_entry->GetURL()) {
- return;
- }
- }
-
// Error-pages are not reported as separate started navigations.
Q_ASSERT(!navigation_handle->IsErrorPage());
@@ -295,9 +285,8 @@ void WebContentsDelegateQt::didFailLoad(const QUrl &url, int errorCode, const QS
EmitLoadFinished(false /* success */ , url, false /* isErrorPage */, errorCode, errorDescription);
}
-void WebContentsDelegateQt::DidFailLoad(content::RenderFrameHost* render_frame_host, const GURL& validated_url, int error_code, const base::string16& error_description, bool was_ignored_by_handler)
+void WebContentsDelegateQt::DidFailLoad(content::RenderFrameHost* render_frame_host, const GURL& validated_url, int error_code, const base::string16& error_description)
{
- Q_UNUSED(was_ignored_by_handler);
if (render_frame_host->GetParent())
return;
@@ -460,7 +449,7 @@ void WebContentsDelegateQt::UpdateTargetURL(content::WebContents* source, const
void WebContentsDelegateQt::WasShown()
{
- web_cache::WebCacheManager::GetInstance()->ObserveActivity(web_contents()->GetRenderProcessHost()->GetID());
+ web_cache::WebCacheManager::GetInstance()->ObserveActivity(web_contents()->GetMainFrame()->GetProcess()->GetID());
}
void WebContentsDelegateQt::DidFirstVisuallyNonEmptyPaint()
diff --git a/src/core/web_contents_delegate_qt.h b/src/core/web_contents_delegate_qt.h
index c056d36ab..7e21e4b55 100644
--- a/src/core/web_contents_delegate_qt.h
+++ b/src/core/web_contents_delegate_qt.h
@@ -133,8 +133,7 @@ public:
void RenderFrameDeleted(content::RenderFrameHost *render_frame_host) override;
void DidStartNavigation(content::NavigationHandle *navigation_handle) override;
void DidFinishNavigation(content::NavigationHandle *navigation_handle) override;
- void DidFailLoad(content::RenderFrameHost *render_frame_host, const GURL &validated_url,
- int error_code, const base::string16 &error_description, bool was_ignored_by_handler) override;
+ void DidFailLoad(content::RenderFrameHost* render_frame_host, const GURL& validated_url, int error_code, const base::string16& error_description) override;
void DidFinishLoad(content::RenderFrameHost *render_frame_host, const GURL &validated_url) override;
void BeforeUnloadFired(const base::TimeTicks& proceed_time) override;
void DidUpdateFaviconURL(const std::vector<content::FaviconURL> &candidates) override;
diff --git a/src/core/web_engine_context.cpp b/src/core/web_engine_context.cpp
index 84f6ce738..a10aef115 100644
--- a/src/core/web_engine_context.cpp
+++ b/src/core/web_engine_context.cpp
@@ -377,6 +377,8 @@ WebEngineContext::WebEngineContext()
// upstream Chromium commit ba52f56207a4b9d70b34880fbff2352e71a06422.
parsedCommandLine->AppendSwitchASCII(switches::kEnableFeatures,
features::kAllowContentInitiatedDataUrlNavigations.name);
+ // If the renderer renders the validation messages, we no longer get the callbacks we have in the API.
+ parsedCommandLine->AppendSwitchASCII(switches::kDisableBlinkFeatures, "ValidationBubbleInRenderer");
if (useEmbeddedSwitches) {
parsedCommandLine->AppendSwitchASCII(switches::kEnableFeatures, features::kOverlayScrollbar.name);
@@ -388,8 +390,10 @@ WebEngineContext::WebEngineContext()
parsedCommandLine->AppendSwitch(switches::kDisableGpuShaderDiskCache);
parsedCommandLine->AppendSwitch(switches::kDisable2dCanvasAntialiasing);
parsedCommandLine->AppendSwitch(cc::switches::kDisableCompositedAntialiasing);
- parsedCommandLine->AppendSwitchASCII(switches::kProfilerTiming, switches::kProfilerTimingDisabledValue);
}
+ base::FeatureList::InitializeInstance(
+ parsedCommandLine->GetSwitchValueASCII(switches::kEnableFeatures),
+ parsedCommandLine->GetSwitchValueASCII(switches::kDisableFeatures));
GLContextHelper::initialize();
@@ -464,8 +468,9 @@ WebEngineContext::WebEngineContext()
}
}
- if (qt_gl_global_share_context()->format().profile() == QSurfaceFormat::CompatibilityProfile)
- parsedCommandLine->AppendSwitch(switches::kCreateDefaultGLContext);
+// FIXME:
+// if (qt_gl_global_share_context()->format().profile() == QSurfaceFormat::CompatibilityProfile)
+// parsedCommandLine->AppendSwitch(switches::kCreateDefaultGLContext);
} else {
qWarning("WebEngineContext used before QtWebEngine::initialize() or OpenGL context creation failed.");
}
diff --git a/src/core/web_engine_settings.cpp b/src/core/web_engine_settings.cpp
index b2b89c78d..d16c2bd15 100644
--- a/src/core/web_engine_settings.cpp
+++ b/src/core/web_engine_settings.cpp
@@ -278,7 +278,7 @@ void WebEngineSettings::initDefaults()
bool smoothScrolling = commandLine->HasSwitch(switches::kEnableSmoothScrolling);
bool webGL = content::GpuProcessHost::gpu_enabled() &&
!commandLine->HasSwitch(switches::kDisable3DAPIs) &&
- !commandLine->HasSwitch(switches::kDisableExperimentalWebGL);
+ !commandLine->HasSwitch(switches::kDisableWebGL);
bool accelerated2dCanvas = content::GpuProcessHost::gpu_enabled() &&
!commandLine->HasSwitch(switches::kDisableAccelerated2dCanvas);
bool allowRunningInsecureContent = commandLine->HasSwitch(switches::kAllowRunningInsecureContent);
@@ -379,7 +379,7 @@ void WebEngineSettings::applySettingsToWebPreferences(content::WebPreferences *p
prefs->plugins_enabled = testAttribute(PluginsEnabled);
prefs->fullscreen_supported = testAttribute(FullScreenSupportEnabled);
prefs->accelerated_2d_canvas_enabled = testAttribute(Accelerated2dCanvasEnabled);
- prefs->experimental_webgl_enabled = testAttribute(WebGLEnabled);
+ prefs->webgl1_enabled = prefs->webgl2_enabled = testAttribute(WebGLEnabled);
prefs->should_print_backgrounds = testAttribute(PrintElementBackgrounds);
prefs->allow_running_insecure_content = testAttribute(AllowRunningInsecureContent);
prefs->allow_geolocation_on_insecure_origins = testAttribute(AllowGeolocationOnInsecureOrigins);
diff --git a/src/core/yuv_video_node.cpp b/src/core/yuv_video_node.cpp
index 9e69130f2..81afa5674 100644
--- a/src/core/yuv_video_node.cpp
+++ b/src/core/yuv_video_node.cpp
@@ -66,7 +66,7 @@ public:
protected:
const char *vertexShader() const override {
- // Keep in sync with cc::VertexShaderPosTexYUVStretchOffset
+ // Keep in sync with logic in VertexShader in components/viz/service/display/shader.cc
const char *shader =
"attribute highp vec4 a_position;\n"
"attribute mediump vec2 a_texCoord;\n"
@@ -86,7 +86,7 @@ protected:
}
const char *fragmentShader() const override {
- // Keep in sync with cc::FragmentShaderYUVVideo
+ // Keep in sync with logic in FragmentShader in components/viz/service/display/shader.cc
static const char *shader =
"varying mediump vec2 v_yaTexCoord;\n"
"varying mediump vec2 v_uvTexCoord;\n"
diff --git a/src/tools/qwebengine_convert_dict/qwebengine_convert_dict.pro b/src/tools/qwebengine_convert_dict/qwebengine_convert_dict.pro
index 55b78c696..47b7d4ff7 100644
--- a/src/tools/qwebengine_convert_dict/qwebengine_convert_dict.pro
+++ b/src/tools/qwebengine_convert_dict/qwebengine_convert_dict.pro
@@ -36,7 +36,8 @@ win32: QMAKE_CXXFLAGS_WARN_ON = -wd4577
win32: DEFINES += NOMINMAX
CHROMIUM_SRC_DIR = $$QTWEBENGINE_ROOT/$$getChromiumSrcDir()
-INCLUDEPATH += $$CHROMIUM_SRC_DIR
+INCLUDEPATH += $$CHROMIUM_SRC_DIR \
+ $$OUT_PWD/../../core/$$getConfigDir()/gen
SOURCES += \
main.cpp
diff --git a/src/webengine/api/qquickwebengineview.cpp b/src/webengine/api/qquickwebengineview.cpp
index 3a63b8708..1a979df00 100644
--- a/src/webengine/api/qquickwebengineview.cpp
+++ b/src/webengine/api/qquickwebengineview.cpp
@@ -383,8 +383,14 @@ void QQuickWebEngineViewPrivate::loadStarted(const QUrl &provisionalUrl, bool is
isLoading = true;
m_history->reset();
m_certificateErrorControllers.clear();
- QQuickWebEngineLoadRequest loadRequest(provisionalUrl, QQuickWebEngineView::LoadStartedStatus);
- Q_EMIT q->loadingChanged(&loadRequest);
+
+ QPointer<QQuickWebEngineView> pq(q);
+ QTimer::singleShot(0, [=]()
+ {
+ QQuickWebEngineLoadRequest loadRequest(provisionalUrl, QQuickWebEngineView::LoadStartedStatus);
+ if (pq)
+ pq->loadingChanged(&loadRequest);
+ });
}
void QQuickWebEngineViewPrivate::loadCommitted()
diff --git a/tests/auto/core/qwebengineurlrequestinterceptor/tst_qwebengineurlrequestinterceptor.cpp b/tests/auto/core/qwebengineurlrequestinterceptor/tst_qwebengineurlrequestinterceptor.cpp
index 926c3e042..50a3e6ff6 100644
--- a/tests/auto/core/qwebengineurlrequestinterceptor/tst_qwebengineurlrequestinterceptor.cpp
+++ b/tests/auto/core/qwebengineurlrequestinterceptor/tst_qwebengineurlrequestinterceptor.cpp
@@ -88,6 +88,9 @@ public:
void interceptRequest(QWebEngineUrlRequestInfo &info) override
{
+ // Since 63 we also intercept some unrelated blob requests..
+ if (info.requestUrl().scheme() == QLatin1String("blob"))
+ return;
info.block(info.requestMethod() != QByteArrayLiteral("GET"));
if (shouldIntercept && info.requestUrl().toString().endsWith(QLatin1String("__placeholder__")))
info.redirect(QUrl("qrc:///resources/content.html"));
@@ -152,6 +155,9 @@ public:
void interceptRequest(QWebEngineUrlRequestInfo &info) override
{
+ // Since 63 we also intercept the original data requests
+ if (info.requestUrl().scheme() == QLatin1String("data"))
+ return;
if (info.resourceType() == QWebEngineUrlRequestInfo::ResourceTypeFavicon)
return;
diff --git a/tests/auto/quick/qmltests/data/TestWebEngineView.qml b/tests/auto/quick/qmltests/data/TestWebEngineView.qml
index cadad4e27..f5e83c5d2 100644
--- a/tests/auto/quick/qmltests/data/TestWebEngineView.qml
+++ b/tests/auto/quick/qmltests/data/TestWebEngineView.qml
@@ -35,26 +35,27 @@ WebEngineView {
property bool windowCloseRequestedSignalEmitted: false
settings.focusOnNavigationEnabled: true
- function waitForLoadSucceeded() {
- var success = _waitFor(function() { return loadStatus == WebEngineView.LoadSucceededStatus })
+ function waitForLoadSucceeded(timeout) {
+ var success = _waitFor(function() { return loadStatus == WebEngineView.LoadSucceededStatus }, timeout)
loadStatus = null
return success
}
- function waitForLoadFailed() {
- var failure = _waitFor(function() { return loadStatus == WebEngineView.LoadFailedStatus })
+ function waitForLoadFailed(timeout) {
+ var failure = _waitFor(function() { return loadStatus == WebEngineView.LoadFailedStatus }, timeout)
loadStatus = null
return failure
}
- function waitForLoadStopped() {
- var stop = _waitFor(function() { return loadStatus == WebEngineView.LoadStoppedStatus })
+ function waitForLoadStopped(timeout) {
+ var stop = _waitFor(function() { return loadStatus == WebEngineView.LoadStoppedStatus }, timeout)
loadStatus = null
return stop
}
function waitForWindowCloseRequested() {
return _waitFor(function() { return windowCloseRequestedSignalEmitted; });
}
- function _waitFor(predicate) {
- var timeout = 12000
+ function _waitFor(predicate, timeout) {
+ if (timeout === undefined)
+ timeout = 12000;
var i = 0
while (i < timeout && !predicate()) {
testResult.wait(50)
diff --git a/tests/auto/quick/qmltests/data/script-with-metadata.js b/tests/auto/quick/qmltests/data/script-with-metadata.js
index 4dcf50f55..de2e3974c 100644
--- a/tests/auto/quick/qmltests/data/script-with-metadata.js
+++ b/tests/auto/quick/qmltests/data/script-with-metadata.js
@@ -2,8 +2,10 @@
// @name Test script
// @homepageURL http://www.qt.io/
// @description Test script with metadata block
-// @include *test*.html
+// @include *data/test*.html
+// @include /favicon.html?$/
// @exclude *test2.html
+// @exclude /test[-]iframe/
// @run-at document-end
// ==/UserScript==
diff --git a/tests/auto/quick/qmltests/data/tst_favicon.qml b/tests/auto/quick/qmltests/data/tst_favicon.qml
index 1159f3194..6f8adeb67 100644
--- a/tests/auto/quick/qmltests/data/tst_favicon.qml
+++ b/tests/auto/quick/qmltests/data/tst_favicon.qml
@@ -179,7 +179,7 @@ TestWebEngineView {
compare(iconChangedSpy.count, 0)
- var url = Qt.resolvedUrl("invalid://url")
+ var url = Qt.resolvedUrl("http://url.invalid")
webEngineView.url = url
verify(webEngineView.waitForLoadFailed())
verify(webEngineView.testSupport.waitForErrorPageLoadSucceeded())
@@ -195,7 +195,7 @@ TestWebEngineView {
compare(iconChangedSpy.count, 0)
- var url = Qt.resolvedUrl("invalid://url")
+ var url = Qt.resolvedUrl("http://url.invalid")
webEngineView.url = url
verify(webEngineView.waitForLoadFailed())
diff --git a/tests/auto/quick/qmltests/data/tst_loadFail.qml b/tests/auto/quick/qmltests/data/tst_loadFail.qml
index 47f4a2862..7b51009a1 100644
--- a/tests/auto/quick/qmltests/data/tst_loadFail.qml
+++ b/tests/auto/quick/qmltests/data/tst_loadFail.qml
@@ -128,14 +128,14 @@ TestWebEngineView {
loadRequest = loadRequestArray[2]
compare(loadRequest.status, WebEngineView.LoadStartedStatus)
compare(loadRequest.errorDomain, WebEngineView.NoErrorDomain)
- compare(loadRequest.url, "data:text/html,chromewebdata")
+ compare(loadRequest.url, "chrome-error://chromewebdata/")
verify(loadRequest.isErrorPage)
// Loading of the error page must be successful
loadRequest = loadRequestArray[3]
compare(loadRequest.status, WebEngineView.LoadSucceededStatus)
compare(loadRequest.errorDomain, WebEngineView.NoErrorDomain)
- compare(loadRequest.url, "data:text/html,chromewebdata")
+ compare(loadRequest.url, "chrome-error://chromewebdata/")
verify(loadRequest.isErrorPage)
compare(webEngineView.url, unavailableUrl)
diff --git a/tests/auto/quick/qmltests/data/tst_loadUrl.qml b/tests/auto/quick/qmltests/data/tst_loadUrl.qml
index 80d7a18b3..37ba4da43 100644
--- a/tests/auto/quick/qmltests/data/tst_loadUrl.qml
+++ b/tests/auto/quick/qmltests/data/tst_loadUrl.qml
@@ -209,7 +209,7 @@ TestWebEngineView {
var bogusSite = "http://www.somesitethatdoesnotexist.abc/";
var handleLoadFailed = function(loadRequest) {
- if (loadRequest.status == WebEngineView.LoadFailedStatus) {
+ if (loadRequest.status === WebEngineView.LoadFailedStatus) {
// loadHtml constructs data URL
webEngineView.loadHtml("load failed", bogusSite);
compare(loadRequest.url, bogusSite);
@@ -231,7 +231,7 @@ TestWebEngineView {
loadRequest = loadRequestArray[2];
compare(loadRequest.status, WebEngineView.LoadStartedStatus);
compare(loadRequest.activeUrl, aboutBlank);
- compare(loadRequest.url, bogusSite)
+ compare(loadRequest.url, "data:text/html;charset=UTF-8,load failed")
loadRequest = loadRequestArray[3];
compare(loadRequest.status, WebEngineView.LoadSucceededStatus);
compare(loadRequest.activeUrl, bogusSite);
@@ -262,7 +262,7 @@ TestWebEngineView {
var loadRequest = null;
var handleLoadStarted = function(loadRequest) {
- if (loadRequest.status == WebEngineView.LoadStartedStatus)
+ if (loadRequest.status === WebEngineView.LoadStartedStatus)
webEngineView.stop();
}
webEngineView.loadingChanged.connect(handleLoadStarted);
diff --git a/tests/auto/quick/qmltests/data/tst_userScripts.qml b/tests/auto/quick/qmltests/data/tst_userScripts.qml
index e9a4eba99..d7c7d5983 100644
--- a/tests/auto/quick/qmltests/data/tst_userScripts.qml
+++ b/tests/auto/quick/qmltests/data/tst_userScripts.qml
@@ -170,7 +170,7 @@ Item {
webEngineView.userScripts = [ scriptWithMetadata ];
- // @include *test*.html
+ // @include *data/test*.html
webEngineView.url = Qt.resolvedUrl("test1.html");
webEngineView.waitForLoadSucceeded();
tryCompare(webEngineView, "title", "New title");
@@ -179,6 +179,16 @@ Item {
webEngineView.url = Qt.resolvedUrl("test2.html");
webEngineView.waitForLoadSucceeded();
tryCompare(webEngineView, "title", "Test page with huge link area");
+
+ // @include /favicon.html?$/
+ webEngineView.url = Qt.resolvedUrl("favicon.html");
+ webEngineView.waitForLoadSucceeded();
+ tryCompare(webEngineView, "title", "New title");
+
+ // @exclude /test[-]iframe/
+ webEngineView.url = Qt.resolvedUrl("test-iframe.html");
+ webEngineView.waitForLoadSucceeded();
+ tryCompare(webEngineView, "title", "Test page with huge link area and iframe");
}
function test_profileWideScript() {
diff --git a/tests/auto/quick/qmltests/data/tst_viewSource.qml b/tests/auto/quick/qmltests/data/tst_viewSource.qml
index 576035ef2..a9cf11f34 100644
--- a/tests/auto/quick/qmltests/data/tst_viewSource.qml
+++ b/tests/auto/quick/qmltests/data/tst_viewSource.qml
@@ -64,7 +64,7 @@ TestWebEngineView {
function init() {
webEngineView.url = Qt.resolvedUrl("test1.html");
- verify(webEngineView.waitForLoadSucceeded());
+ verify(webEngineView.waitForLoadSucceeded(20000));
newViewRequestedSpy.clear();
titleChangedSpy.clear();
@@ -113,9 +113,9 @@ TestWebEngineView {
webEngineView.url = row.userInputUrl;
if (row.loadSucceed) {
- verify(webEngineView.waitForLoadSucceeded());
+ verify(webEngineView.waitForLoadSucceeded(15000));
} else {
- verify(webEngineView.waitForLoadFailed());
+ verify(webEngineView.waitForLoadFailed(15000));
}
tryVerify(function() { return titleChangedSpy.count == 1; });
diff --git a/tests/auto/widgets/qwebenginedownloads/tst_qwebenginedownloads.cpp b/tests/auto/widgets/qwebenginedownloads/tst_qwebenginedownloads.cpp
index 3ce697faf..992254206 100644
--- a/tests/auto/widgets/qwebenginedownloads/tst_qwebenginedownloads.cpp
+++ b/tests/auto/widgets/qwebenginedownloads/tst_qwebenginedownloads.cpp
@@ -622,6 +622,8 @@ void tst_QWebEngineDownloads::downloadViaSetUrl()
auto indexFavRR = waitForFaviconRequest(&server);
QVERIFY(indexFavRR);
+ indexRR.reset();
+ indexFavRR.reset();
QTRY_COMPARE(loadSpy.count(), 1);
QTRY_COMPARE(urlSpy.count(), 1);
@@ -642,16 +644,20 @@ void tst_QWebEngineDownloads::downloadViaSetUrl()
auto fileRR = waitForRequest(&server);
QVERIFY(fileRR);
+ QCOMPARE(fileRR->requestMethod(), QByteArrayLiteral("GET"));
+ QCOMPARE(fileRR->requestPath(), QByteArrayLiteral("/file"));
fileRR->setResponseHeader(QByteArrayLiteral("content-disposition"), QByteArrayLiteral("attachment"));
fileRR->setResponseBody(QByteArrayLiteral("redacted"));
fileRR->sendResponse();
- auto fileFavRR = waitForFaviconRequest(&server);
- QVERIFY(fileFavRR);
+// Since 63 we no longer get favicon requests here:
+// auto fileFavRR = waitForFaviconRequest(&server);
+// QVERIFY(fileFavRR);
QTRY_COMPARE(loadSpy.count(), 1);
QTRY_COMPARE(urlSpy.count(), 2);
QTRY_COMPARE(downloadUrls.count(), 1);
+ fileRR.reset();
QCOMPARE(loadSpy.takeFirst().value(0).toBool(), false);
QCOMPARE(urlSpy.takeFirst().value(0).toUrl(), fileUrl);
QCOMPARE(urlSpy.takeFirst().value(0).toUrl(), indexUrl);
diff --git a/tests/auto/widgets/qwebenginefaviconmanager/tst_qwebenginefaviconmanager.cpp b/tests/auto/widgets/qwebenginefaviconmanager/tst_qwebenginefaviconmanager.cpp
index 6ae4c41e6..da041ee59 100644
--- a/tests/auto/widgets/qwebenginefaviconmanager/tst_qwebenginefaviconmanager.cpp
+++ b/tests/auto/widgets/qwebenginefaviconmanager/tst_qwebenginefaviconmanager.cpp
@@ -236,10 +236,10 @@ void tst_QWebEngineFaviconManager::errorPageEnabled()
QSignalSpy iconUrlChangedSpy(m_page, SIGNAL(iconUrlChanged(QUrl)));
QSignalSpy iconChangedSpy(m_page, SIGNAL(iconChanged(QIcon)));
- QUrl url("invalid://url");
+ QUrl url("http://url.invalid");
m_page->load(url);
- QTRY_COMPARE(loadFinishedSpy.count(), 2);
+ QTRY_COMPARE_WITH_TIMEOUT(loadFinishedSpy.count(), 1, 14000);
QCOMPARE(iconUrlChangedSpy.count(), 0);
QCOMPARE(iconChangedSpy.count(), 0);
@@ -255,10 +255,10 @@ void tst_QWebEngineFaviconManager::errorPageDisabled()
QSignalSpy iconUrlChangedSpy(m_page, SIGNAL(iconUrlChanged(QUrl)));
QSignalSpy iconChangedSpy(m_page, SIGNAL(iconChanged(QIcon)));
- QUrl url("invalid://url");
+ QUrl url("http://url.invalid");
m_page->load(url);
- QTRY_COMPARE(loadFinishedSpy.count(), 1);
+ QTRY_COMPARE_WITH_TIMEOUT(loadFinishedSpy.count(), 1, 12000);
QCOMPARE(iconUrlChangedSpy.count(), 0);
QCOMPARE(iconChangedSpy.count(), 0);
diff --git a/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp b/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp
index 7d6921368..23c66058e 100644
--- a/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp
+++ b/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp
@@ -294,43 +294,41 @@ void tst_QWebEnginePage::cleanupTestCase()
class NavigationRequestOverride : public QWebEnginePage
{
public:
- NavigationRequestOverride(QWebEngineView* parent, bool initialValue) : QWebEnginePage(parent), m_acceptNavigationRequest(initialValue) {}
+ NavigationRequestOverride(QWebEngineProfile* profile, bool initialValue) : QWebEnginePage(profile, nullptr), m_acceptNavigationRequest(initialValue) {}
bool m_acceptNavigationRequest;
protected:
virtual bool acceptNavigationRequest(const QUrl &url, NavigationType type, bool isMainFrame)
{
Q_UNUSED(url);
- Q_UNUSED(type);
Q_UNUSED(isMainFrame);
-
- return m_acceptNavigationRequest;
+ if (type == QWebEnginePage::NavigationTypeFormSubmitted)
+ return m_acceptNavigationRequest;
+ return true;
}
};
void tst_QWebEnginePage::acceptNavigationRequest()
{
- QWebEngineView view;
- QSignalSpy loadSpy(&view, SIGNAL(loadFinished(bool)));
+ QWebEngineProfile profile;
+ NavigationRequestOverride page(&profile, false);
- NavigationRequestOverride* newPage = new NavigationRequestOverride(&view, false);
- view.setPage(newPage);
+ QSignalSpy loadSpy(&page, SIGNAL(loadFinished(bool)));
- // acceptNavigationRequest and QWebEngineUrlRequestInterceptor::interceptRequest are not called
- // for data: urls, which means the test is broken, aka setting
- // newPage->m_acceptNavigationRequest to false does nothing to stop the page from loading.
- // See QTBUG-50922 comments.
- view.setHtml(QString("<html><body><form name='tstform' action='data:text/html,foo'method='get'>"
+ page.setHtml(QString("<html><body><form name='tstform' action='data:text/html,foo'method='get'>"
"<input type='text'><input type='submit'></form></body></html>"), QUrl());
QTRY_COMPARE(loadSpy.count(), 1);
- evaluateJavaScriptSync(view.page(), "tstform.submit();");
-
- newPage->m_acceptNavigationRequest = true;
- evaluateJavaScriptSync(view.page(), "tstform.submit();");
+ evaluateJavaScriptSync(&page, "tstform.submit();");
QTRY_COMPARE(loadSpy.count(), 2);
- QCOMPARE(toPlainTextSync(view.page()), QString("foo?"));
+ // Content hasn't changed so the form submit will still work
+ page.m_acceptNavigationRequest = true;
+ evaluateJavaScriptSync(&page, "tstform.submit();");
+ QTRY_COMPARE(loadSpy.count(), 3);
+
+ // Now the content has changed
+ QCOMPARE(toPlainTextSync(&page), QString("foo?"));
}
class JSTestPage : public QWebEnginePage
@@ -1936,7 +1934,7 @@ void tst_QWebEnginePage::userAgentNewlineStripping()
// The user agent will be updated after a page load.
page.load(QUrl("about:blank"));
- QCOMPARE(evaluateJavaScriptSync(&page, "navigator.userAgent").toString(), QStringLiteral("My User Agent X-New-Http-Header: Oh Noes!"));
+ QTRY_COMPARE(evaluateJavaScriptSync(&page, "navigator.userAgent").toString(), QStringLiteral("My User Agent X-New-Http-Header: Oh Noes!"));
}
void tst_QWebEnginePage::crashTests_LazyInitializationOfMainFrame()
@@ -3405,7 +3403,7 @@ void tst_QWebEnginePage::setHtmlWithImageResource()
QSignalSpy spy(&page, SIGNAL(loadFinished(bool)));
page.setHtml(html, QUrl("file:///path/to/file"));
- QTRY_COMPARE(spy.count(), 1);
+ QTRY_COMPARE_WITH_TIMEOUT(spy.count(), 1, 12000);
QCOMPARE(evaluateJavaScriptSync(&page, "document.images.length").toInt(), 1);
QCOMPARE(evaluateJavaScriptSync(&page, "document.images[0].width").toInt(), 128);
@@ -4044,7 +4042,6 @@ void tst_QWebEnginePage::setUrlHistory()
void tst_QWebEnginePage::setUrlUsingStateObject()
{
- const QUrl aboutBlank("about:blank");
QUrl url;
QSignalSpy urlChangedSpy(m_page, SIGNAL(urlChanged(QUrl)));
int expectedUrlChangeCount = 0;
@@ -4053,12 +4050,10 @@ void tst_QWebEnginePage::setUrlUsingStateObject()
url = QUrl("qrc:/resources/test1.html");
m_page->setUrl(url);
- QSignalSpy spyFinished(m_page, &QWebEnginePage::loadFinished);
- QVERIFY(spyFinished.wait());
expectedUrlChangeCount++;
- QCOMPARE(urlChangedSpy.count(), expectedUrlChangeCount);
+ QTRY_COMPARE(urlChangedSpy.count(), expectedUrlChangeCount);
QCOMPARE(m_page->url(), url);
- QCOMPARE(m_page->history()->count(), 1);
+ QTRY_COMPARE(m_page->history()->count(), 1);
evaluateJavaScriptSync(m_page, "window.history.pushState(null, 'push', 'navigate/to/here')");
expectedUrlChangeCount++;
@@ -4076,9 +4071,8 @@ void tst_QWebEnginePage::setUrlUsingStateObject()
QVERIFY(m_page->history()->canGoBack());
evaluateJavaScriptSync(m_page, "window.history.back()");
- QTest::qWait(100);
expectedUrlChangeCount++;
- QCOMPARE(urlChangedSpy.count(), expectedUrlChangeCount);
+ QTRY_COMPARE(urlChangedSpy.count(), expectedUrlChangeCount);
QCOMPARE(m_page->url(), QUrl("qrc:/resources/test1.html"));
QVERIFY(m_page->history()->canGoForward());
QVERIFY(!m_page->history()->canGoBack());
@@ -4339,8 +4333,8 @@ void tst_QWebEnginePage::toPlainTextLoadFinishedRace()
QTRY_VERIFY(spy.count() == 1);
QCOMPARE(toPlainTextSync(page.data()), QString("foobarbaz"));
- page->load(QUrl("fail:unknown/scheme"));
- QTRY_VERIFY(spy.count() == 2);
+ page->load(QUrl("http://fail.invalid/"));
+ QTRY_COMPARE_WITH_TIMEOUT(spy.count(), 2, 12000);
QString s = toPlainTextSync(page.data());
QVERIFY(s.contains("foobarbaz") == !enableErrorPage);
diff --git a/tests/auto/widgets/qwebengineschemes/tst_qwebengineschemes.cpp b/tests/auto/widgets/qwebengineschemes/tst_qwebengineschemes.cpp
index cacfc1a3c..9381b3930 100644
--- a/tests/auto/widgets/qwebengineschemes/tst_qwebengineschemes.cpp
+++ b/tests/auto/widgets/qwebengineschemes/tst_qwebengineschemes.cpp
@@ -49,8 +49,10 @@ public:
{
}
int acceptNavigationRequestCalls = 0;
- bool acceptNavigationRequest(const QUrl &/*url*/, NavigationType /*type*/, bool /*isMainFrame*/) override
+ bool acceptNavigationRequest(const QUrl &/*url*/, NavigationType type, bool /*isMainFrame*/) override
{
+ if (type == QWebEnginePage::NavigationTypeTyped)
+ return true;
this->acceptNavigationRequestCalls++;
return false;
}
@@ -60,13 +62,14 @@ void tst_QWebEngineSchemes::unknownUrlSchemePolicy()
{
QWebEngineView view;
AcceptNavigationRequestHandler page;
+ QSignalSpy loadFinishedSpy(&page, &QWebEnginePage::loadFinished);
view.setPage(&page);
view.resize(400, 40);
view.show();
QVERIFY(QTest::qWaitForWindowExposed(&view));
QWebEngineSettings *settings = view.page()->profile()->settings();
+ settings->setAttribute(QWebEngineSettings::ErrorPageEnabled, false);
settings->setAttribute(QWebEngineSettings::FocusOnNavigationEnabled, true);
- QSignalSpy loadFinishedSpy(&view, &QWebEngineView::loadFinished);
QWebEngineSettings::UnknownUrlSchemePolicy policies[6] = {QWebEngineSettings::DisallowUnknownUrlSchemes,
QWebEngineSettings::DisallowUnknownUrlSchemes,
@@ -91,7 +94,7 @@ void tst_QWebEngineSchemes::unknownUrlSchemePolicy()
} else { // navigation request coming from user interaction
shouldAccept = (2 <= i); // all cases except DisallowUnknownUrlSchemes
view.setHtml("<html><body><a id='nonexlink' href='nonexistentscheme://somewhere'>nonexistentscheme://somewhere</a></body></html>");
- QTRY_COMPARE_WITH_TIMEOUT(loadFinishedSpy.size(), 1, 30000);
+ QTRY_COMPARE_WITH_TIMEOUT(loadFinishedSpy.size(), 1, 15000);
// focus and trigger the link
view.page()->runJavaScript("document.getElementById('nonexlink').focus();", [&view](const QVariant &result) {
Q_UNUSED(result);
@@ -101,7 +104,7 @@ void tst_QWebEngineSchemes::unknownUrlSchemePolicy()
}
bool errorPageEnabled = settings->testAttribute(QWebEngineSettings::ErrorPageEnabled);
- QTRY_COMPARE_WITH_TIMEOUT(loadFinishedSpy.size(), 2 + (errorPageEnabled ? 1 : 0), 30000);
+ QTRY_COMPARE_WITH_TIMEOUT(loadFinishedSpy.size(), 2 + (errorPageEnabled ? 1 : 0), 15000);
QCOMPARE(page.acceptNavigationRequestCalls, shouldAccept ? 1 : 0);
}
}
diff --git a/tools/scripts/take_snapshot.py b/tools/scripts/take_snapshot.py
index 4abc23009..69e22d5a6 100755
--- a/tools/scripts/take_snapshot.py
+++ b/tools/scripts/take_snapshot.py
@@ -92,6 +92,7 @@ def isInChromiumBlacklist(file_path):
not 'third_party/chromevox' in file_path and
not 'media/webrtc/desktop_media_list.h' in file_path and
not 'media/webrtc/desktop_streams_registry.' in file_path and
+ not 'browser/net/chrome_mojo_proxy_resolver_factory.' in file_path and
not '/browser/devtools/' in file_path and
not '/browser/ui/webui/' in file_path and
not 'common/chrome_constants.' in file_path and
@@ -143,6 +144,7 @@ def isInChromiumBlacklist(file_path):
or file_path.startswith('native_client')
or file_path.startswith('net/android/java')
or (file_path.startswith('net/data/') and '_unittest/' in file_path)
+ or file_path.startswith('net/data/fuzzer_data/')
or file_path.startswith('remoting')
or file_path.startswith('rlz')
or file_path.startswith('testing/android')
@@ -160,10 +162,11 @@ def isInChromiumBlacklist(file_path):
or file_path.startswith('third_party/ashmem')
or file_path.startswith('third_party/binutils')
or file_path.startswith('third_party/bison')
- or (file_path.startswith('third_party/cacheinvalidation') and
- not file_path.endswith('isolate'))
+ or file_path.startswith('third_party/breakpad')
or file_path.startswith('third_party/boringssl/crypto_test_data.cc')
or file_path.startswith('third_party/boringssl/src/fuzz')
+ or (file_path.startswith('third_party/cacheinvalidation') and
+ not file_path.endswith('isolate'))
or file_path.startswith('third_party/catapult')
or file_path.startswith('third_party/chromite')
or file_path.startswith('third_party/cld_2')
@@ -221,6 +224,7 @@ def isInChromiumBlacklist(file_path):
or file_path.startswith('third_party/trace-viewer')
or file_path.startswith('third_party/undoview')
or file_path.startswith('third_party/webgl')
+ or file_path.startswith('third_party/webrtc/resources/')
or file_path.startswith('tools/android')
or file_path.startswith('tools/luci_go')
or file_path.startswith('tools/metrics')
diff --git a/tools/scripts/version_resolver.py b/tools/scripts/version_resolver.py
index 4ca5d7aac..7a22765ef 100644
--- a/tools/scripts/version_resolver.py
+++ b/tools/scripts/version_resolver.py
@@ -38,8 +38,8 @@ import json
import urllib2
import git_submodule as GitSubmodule
-chromium_version = '61.0.3163.140'
-chromium_branch = '3163'
+chromium_version = '63.0.3239.117'
+chromium_branch = '3239'
ninja_version = 'v1.8.2'
json_url = 'http://omahaproxy.appspot.com/all.json'