diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2018-10-17 17:51:50 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2019-01-28 19:03:32 +0000 |
commit | e63b35763907304089d961bc3e284178d36c69a3 (patch) | |
tree | e3fe946240ddfe6b29ce5b72dd16a1db6855f4f1 | |
parent | 5e66cbc85a350616070a318f917cb181313c4afa (diff) |
Adaptations for Chromium 70
Change-Id: I8bb77784dbc8a0b9debd96a4c49421bd34e6a0df
Reviewed-by: Michael Brüning <michael.bruning@qt.io>
Reviewed-by: Peter Varga <pvarga@inf.u-szeged.hu>
Reviewed-by: Jüri Valdmann <juri.valdmann@qt.io>
42 files changed, 196 insertions, 160 deletions
diff --git a/src/core/browser_accessibility_qt.cpp b/src/core/browser_accessibility_qt.cpp index a672ccc06..c906071f2 100644 --- a/src/core/browser_accessibility_qt.cpp +++ b/src/core/browser_accessibility_qt.cpp @@ -61,6 +61,11 @@ const BrowserAccessibilityQt *ToBrowserAccessibilityQt(const BrowserAccessibilit return static_cast<const BrowserAccessibilityQt *>(obj); } +QAccessibleInterface *toQAccessibleInterface(BrowserAccessibility *obj) +{ + return static_cast<BrowserAccessibilityQt *>(obj); +} + BrowserAccessibilityQt::BrowserAccessibilityQt() { QAccessible::registerAccessibleInterface(this); @@ -356,6 +361,8 @@ QAccessible::Role BrowserAccessibilityQt::role() const return QAccessible::EditableText; case ax::mojom::Role::kInputTime: return QAccessible::SpinBox; + case ax::mojom::Role::kKeyboard: + return QAccessible::NoRole; // FIXME case ax::mojom::Role::kLabelText: return QAccessible::StaticText; case ax::mojom::Role::kLayoutTable: diff --git a/src/core/browser_accessibility_qt.h b/src/core/browser_accessibility_qt.h index 345ee9862..decfc1e9d 100644 --- a/src/core/browser_accessibility_qt.h +++ b/src/core/browser_accessibility_qt.h @@ -146,6 +146,7 @@ public: }; const BrowserAccessibilityQt *ToBrowserAccessibilityQt(const BrowserAccessibility *obj); +QAccessibleInterface *toQAccessibleInterface(BrowserAccessibility *acc); } // namespace content diff --git a/src/core/client_cert_select_controller.cpp b/src/core/client_cert_select_controller.cpp index 580dae826..2ff598445 100644 --- a/src/core/client_cert_select_controller.cpp +++ b/src/core/client_cert_select_controller.cpp @@ -76,7 +76,7 @@ ClientCertSelectController::~ClientCertSelectController() void ClientCertSelectController::selectNone() { if (m_selected) { - qWarning() << "ClientCertSelectController::selectNone() certificate already selected"; + LOG(WARNING) << "ClientCertSelectController::selectNone() certificate already selected"; return; } m_selected = true; @@ -86,7 +86,7 @@ void ClientCertSelectController::selectNone() void ClientCertSelectController::select(int index) { if (m_selected) { - qWarning() << "ClientCertSelectController::select() certificate already selected"; + LOG(WARNING) << "ClientCertSelectController::select() certificate already selected"; return; } for (auto &certInfo : m_clientCerts) { @@ -103,13 +103,13 @@ void ClientCertSelectController::select(int index) if (certInfo->certificate()->GetPEMEncodedChain(&pem_encoded)) --index; } - qWarning() << "ClientCertSelectController::select() index out of range:" << index; + LOG(WARNING) << "ClientCertSelectController::select() index out of range:" << index; } void ClientCertSelectController::select(const QSslCertificate &certificate) { if (m_selected) { - qWarning() << "ClientCertSelectController::select() certificate already selected"; + LOG(WARNING) << "ClientCertSelectController::select() certificate already selected"; return; } QByteArray derCertificate = certificate.toDer(); @@ -126,8 +126,8 @@ void ClientCertSelectController::select(const QSslCertificate &certificate) return; } } - qWarning() << "ClientCertSelectController::select() - selected client certificate not recognized." - << " Selected certificate needs to be one of the offered"; + LOG(WARNING) << "ClientCertSelectController::select() - selected client certificate not recognized." + << " Selected certificate needs to be one of the offered"; } QVector<QSslCertificate> ClientCertSelectController::certificates() const diff --git a/src/core/color_chooser_controller.cpp b/src/core/color_chooser_controller.cpp index 26d675908..361ff93ba 100644 --- a/src/core/color_chooser_controller.cpp +++ b/src/core/color_chooser_controller.cpp @@ -43,6 +43,9 @@ #include "color_chooser_controller_p.h" #include "type_conversion.h" +#include <QColor> +#include <QVariant> + namespace QtWebEngineCore { ColorChooserControllerPrivate::ColorChooserControllerPrivate(content::WebContents *content, const QColor &color) diff --git a/src/core/color_chooser_controller.h b/src/core/color_chooser_controller.h index 4c1b81a9a..e5daa09a8 100644 --- a/src/core/color_chooser_controller.h +++ b/src/core/color_chooser_controller.h @@ -55,6 +55,9 @@ #include <QObject> +QT_FORWARD_DECLARE_CLASS(QColor) +QT_FORWARD_DECLARE_CLASS(QVariant) + namespace QtWebEngineCore { class ColorChooserControllerPrivate; diff --git a/src/core/compositor/chromium_gpu_helper.cpp b/src/core/compositor/chromium_gpu_helper.cpp index 2164f434f..71d0f3687 100644 --- a/src/core/compositor/chromium_gpu_helper.cpp +++ b/src/core/compositor/chromium_gpu_helper.cpp @@ -43,6 +43,11 @@ #include "chromium_gpu_helper.h" +// Some headers include the namespace ws, and can not coexist with +// Qt headers that include QTextStream, which includes most QSG headers +// via QMatrix4x4. +#include "content/browser/renderer_host/render_widget_host_impl.h" + // Including gpu/command_buffer headers before content/gpu headers makes sure that // guards are defined to prevent duplicate definition errors with forward declared // GL typedefs cascading through content header includes. @@ -78,6 +83,11 @@ unsigned int service_id(gpu::TextureBase *tex) return tex->service_id(); } +void ProgressFlingIfNeeded(content::RenderWidgetHost *host, const base::TimeTicks ¤t_time) +{ + content::RenderWidgetHostImpl::From(host)->ProgressFlingIfNeeded(current_time); +} + #ifdef Q_OS_QNX EGLStreamData eglstream_connect_consumer(gpu::Texture *tex) { diff --git a/src/core/compositor/chromium_gpu_helper.h b/src/core/compositor/chromium_gpu_helper.h index c2799204b..4086d12ab 100644 --- a/src/core/compositor/chromium_gpu_helper.h +++ b/src/core/compositor/chromium_gpu_helper.h @@ -46,6 +46,11 @@ namespace base { class SingleThreadTaskRunner; +class TimeTicks; +} + +namespace content { +class RenderWidgetHost; } namespace gpu { @@ -65,6 +70,8 @@ gpu::MailboxManager *mailbox_manager(); gpu::TextureBase* ConsumeTexture(gpu::MailboxManager *mailboxManager, unsigned target, const gpu::Mailbox& mailbox); unsigned int service_id(gpu::TextureBase *tex); +void ProgressFlingIfNeeded(content::RenderWidgetHost *host, const base::TimeTicks ¤t_time); + #ifdef Q_OS_QNX typedef void* EGLDisplay; typedef void* EGLStreamKHR; diff --git a/src/core/compositor/compositor.cpp b/src/core/compositor/compositor.cpp index 77a973748..258fb47b4 100644 --- a/src/core/compositor/compositor.cpp +++ b/src/core/compositor/compositor.cpp @@ -41,7 +41,6 @@ #include "compositor_resource_tracker.h" #include "delegated_frame_node.h" -#include "render_widget_host_view_qt.h" #include "components/viz/common/resources/returned_resource.h" #include "content/public/browser/browser_thread.h" @@ -49,9 +48,9 @@ namespace QtWebEngineCore { -Compositor::Compositor(RenderWidgetHostViewQt *hostView) +Compositor::Compositor(content::RenderWidgetHost *host) : m_resourceTracker(new CompositorResourceTracker) - , m_view(hostView) + , m_host(host) { DCHECK_CURRENTLY_ON(content::BrowserThread::UI); @@ -171,7 +170,7 @@ bool Compositor::OnBeginFrameDerivedImpl(const viz::BeginFrameArgs &args) { DCHECK_CURRENTLY_ON(content::BrowserThread::UI); - m_view->OnBeginFrame(args.frame_time); + ProgressFlingIfNeeded(m_host, args.frame_time); m_beginFrameSource->OnUpdateVSyncParameters(args.frame_time, args.interval); if (m_frameSinkClient) m_frameSinkClient->OnBeginFrame(args); diff --git a/src/core/compositor/compositor.h b/src/core/compositor/compositor.h index b025f901d..5efe419cc 100644 --- a/src/core/compositor/compositor.h +++ b/src/core/compositor/compositor.h @@ -54,6 +54,9 @@ QT_BEGIN_NAMESPACE class QSGNode; QT_END_NAMESPACE +namespace content { +class RenderWidgetHost; +} namespace viz { struct ReturnedResource; namespace mojom { @@ -64,7 +67,6 @@ class CompositorFrameSinkClient; namespace QtWebEngineCore { class CompositorResourceTracker; -class RenderWidgetHostViewQt; class RenderWidgetHostViewQtDelegate; // Receives viz::CompositorFrames from child compositors and provides QSGNodes @@ -88,7 +90,7 @@ class RenderWidgetHostViewQtDelegate; class Compositor final : private viz::BeginFrameObserverBase { public: - explicit Compositor(RenderWidgetHostViewQt *hostView); + explicit Compositor(content::RenderWidgetHost *host); ~Compositor() override; void setFrameSinkClient(viz::mojom::CompositorFrameSinkClient *frameSinkClient); @@ -110,7 +112,7 @@ private: viz::CompositorFrame m_pendingFrame; base::OnceClosure m_submitCallback; std::unique_ptr<CompositorResourceTracker> m_resourceTracker; - RenderWidgetHostViewQt *m_view; + content::RenderWidgetHost *m_host; std::unique_ptr<viz::SyntheticBeginFrameSource> m_beginFrameSource; viz::mojom::CompositorFrameSinkClient *m_frameSinkClient = nullptr; bool m_updatePaintNodeShouldCommit = false; diff --git a/src/core/compositor/delegated_frame_node.cpp b/src/core/compositor/delegated_frame_node.cpp index 49e3577de..a4fcf8daf 100644 --- a/src/core/compositor/delegated_frame_node.cpp +++ b/src/core/compositor/delegated_frame_node.cpp @@ -411,7 +411,9 @@ static QSGNode *buildLayerChain(QSGNode *chainParent, const viz::SharedQuadState } if (!layerState->quad_to_target_transform.IsIdentity()) { QSGTransformNode *transformNode = new QSGTransformNode; - transformNode->setMatrix(toQt(layerState->quad_to_target_transform.matrix())); + QMatrix4x4 qMatrix; + convertToQt(layerState->quad_to_target_transform.matrix(), qMatrix); + transformNode->setMatrix(qMatrix); layerChain->appendChildNode(transformNode); layerChain = transformNode; } diff --git a/src/core/compositor/delegated_frame_node.h b/src/core/compositor/delegated_frame_node.h index a39ae864b..34e4ba029 100644 --- a/src/core/compositor/delegated_frame_node.h +++ b/src/core/compositor/delegated_frame_node.h @@ -43,9 +43,10 @@ #include "base/containers/circular_deque.h" #include "components/viz/common/quads/compositor_frame.h" #include "components/viz/common/quads/render_pass.h" -#include <QSGNode> -#include <QSharedPointer> + +#include <QtCore/QSharedPointer> #include <QtGui/QOffscreenSurface> +#include <QtQuick/QSGTransformNode> #include "chromium_gpu_helper.h" #include "render_widget_host_view_qt_delegate.h" diff --git a/src/core/content_browser_client_qt.cpp b/src/core/content_browser_client_qt.cpp index b5b2ca0fd..3fbea5a9f 100644 --- a/src/core/content_browser_client_qt.cpp +++ b/src/core/content_browser_client_qt.cpp @@ -650,7 +650,7 @@ bool ContentBrowserClientQt::AllowServiceWorker(const GURL &scope, // We control worker access to FS and indexed-db using cookie permissions, this is mirroring Chromium's logic. void ContentBrowserClientQt::AllowWorkerFileSystem(const GURL &url, content::ResourceContext *context, - const std::vector<std::pair<int, int> > &/*render_frames*/, + const std::vector<content::GlobalFrameRoutingId> &/*render_frames*/, base::Callback<void(bool)> callback) { DCHECK_CURRENTLY_ON(content::BrowserThread::IO); @@ -661,7 +661,7 @@ void ContentBrowserClientQt::AllowWorkerFileSystem(const GURL &url, bool ContentBrowserClientQt::AllowWorkerIndexedDB(const GURL &url, const base::string16 &/*name*/, content::ResourceContext *context, - const std::vector<std::pair<int, int> > &/*render_frames*/) + const std::vector<content::GlobalFrameRoutingId> &/*render_frames*/) { DCHECK_CURRENTLY_ON(content::BrowserThread::IO); NetworkDelegateQt *networkDelegate = static_cast<NetworkDelegateQt *>(context->GetRequestContext()->network_delegate()); @@ -716,9 +716,9 @@ scoped_refptr<content::LoginDelegate> ContentBrowserClientQt::CreateLoginDelegat bool first_auth_attempt, LoginAuthRequiredCallback auth_required_callback) { - return base::MakeRefCounted<LoginDelegateQt>(authInfo, web_contents_getter, url, first_auth_attempt, std::move(auth_required_callback)); + auto loginDelegate = base::MakeRefCounted<LoginDelegateQt>(authInfo, web_contents_getter, url, first_auth_attempt, std::move(auth_required_callback)); + loginDelegate->triggerDialog(); + return loginDelegate; } } // namespace QtWebEngineCore - -DEFINE_WEB_CONTENTS_USER_DATA_KEY(QtWebEngineCore::ServiceDriver); diff --git a/src/core/content_browser_client_qt.h b/src/core/content_browser_client_qt.h index b2761b311..4a192818b 100644 --- a/src/core/content_browser_client_qt.h +++ b/src/core/content_browser_client_qt.h @@ -161,13 +161,13 @@ public: void AllowWorkerFileSystem(const GURL &url, content::ResourceContext *context, - const std::vector<std::pair<int, int> > &render_frames, + const std::vector<content::GlobalFrameRoutingId> &render_frames, base::Callback<void(bool)> callback) override; bool AllowWorkerIndexedDB(const GURL &url, const base::string16 &name, content::ResourceContext *context, - const std::vector<std::pair<int, int> > &render_frames) override; + const std::vector<content::GlobalFrameRoutingId> &render_frames) override; #if QT_CONFIG(webengine_geolocation) std::unique_ptr<device::LocationProvider> OverrideSystemLocationProvider() override; diff --git a/src/core/devtools_frontend_qt.cpp b/src/core/devtools_frontend_qt.cpp index bd9e0ebe7..7a6635f17 100644 --- a/src/core/devtools_frontend_qt.cpp +++ b/src/core/devtools_frontend_qt.cpp @@ -109,9 +109,9 @@ public: ~ResponseWriter() override; // URLFetcherResponseWriter overrides: - int Initialize(const net::CompletionCallback &callback) override; - int Write(net::IOBuffer *buffer, int num_bytes, const net::CompletionCallback &callback) override; - int Finish(int net_error, const net::CompletionCallback &callback) override; + int Initialize(net::CompletionOnceCallback callback) override; + int Write(net::IOBuffer *buffer, int num_bytes, net::CompletionOnceCallback callback) override; + int Finish(int net_error, net::CompletionOnceCallback callback) override; private: base::WeakPtr<DevToolsFrontendQt> shell_devtools_; @@ -126,12 +126,12 @@ ResponseWriter::ResponseWriter(base::WeakPtr<DevToolsFrontendQt> shell_devtools, ResponseWriter::~ResponseWriter() {} -int ResponseWriter::Initialize(const net::CompletionCallback& callback) +int ResponseWriter::Initialize(net::CompletionOnceCallback callback) { return net::OK; } -int ResponseWriter::Write(net::IOBuffer *buffer, int num_bytes, const net::CompletionCallback &callback) +int ResponseWriter::Write(net::IOBuffer *buffer, int num_bytes, net::CompletionOnceCallback callback) { std::string chunk = std::string(buffer->data(), num_bytes); if (!base::IsStringUTF8(chunk)) @@ -148,7 +148,7 @@ int ResponseWriter::Write(net::IOBuffer *buffer, int num_bytes, const net::Compl return num_bytes; } -int ResponseWriter::Finish(int net_error, const net::CompletionCallback &callback) +int ResponseWriter::Finish(int net_error, net::CompletionOnceCallback callback) { return net::OK; } diff --git a/src/core/locked_ptr.h b/src/core/locked_ptr.h index 73495435b..46d89819b 100644 --- a/src/core/locked_ptr.h +++ b/src/core/locked_ptr.h @@ -172,6 +172,8 @@ public: T *operator->() const { return get(); } explicit operator bool() const { return get(); } + bool MaybeValid() const { return m_core; } + static LockedPtr create(T *value) { return new LockedPtrCore(reinterpret_cast<uintptr_t>(value)); diff --git a/src/core/login_delegate_qt.cpp b/src/core/login_delegate_qt.cpp index 9659b354a..31824ca71 100644 --- a/src/core/login_delegate_qt.cpp +++ b/src/core/login_delegate_qt.cpp @@ -43,7 +43,9 @@ #include "login_delegate_qt.h" +#include "base/task/post_task.h" #include "content/browser/web_contents/web_contents_impl.h" +#include "content/public/browser/browser_task_traits.h" #include "content/public/browser/browser_thread.h" #include "content/public/browser/render_view_host.h" #include "content/public/browser/resource_dispatcher_host.h" @@ -66,14 +68,9 @@ LoginDelegateQt::LoginDelegateQt( : m_authInfo(authInfo) , m_url(url) , m_auth_required_callback(std::move(auth_required_callback)) + , m_webContentsGetter(web_contents_getter) { Q_ASSERT(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO)); - - content::BrowserThread::PostTask( - content::BrowserThread::UI, FROM_HERE, - base::Bind(&LoginDelegateQt::triggerDialog, - this, - web_contents_getter)); } LoginDelegateQt::~LoginDelegateQt() @@ -81,6 +78,13 @@ LoginDelegateQt::~LoginDelegateQt() Q_ASSERT(m_dialogController.isNull()); } +void LoginDelegateQt::triggerDialog() +{ + base::PostTaskWithTraits( + FROM_HERE, { content::BrowserThread::UI }, + base::BindOnce(&LoginDelegateQt::triggerDialogOnUI, this)); +} + void LoginDelegateQt::OnRequestCancelled() { destroy(); @@ -107,11 +111,11 @@ bool LoginDelegateQt::isProxy() const return m_authInfo->is_proxy; } -void LoginDelegateQt::triggerDialog(const content::ResourceRequestInfo::WebContentsGetter &webContentsGetter) +void LoginDelegateQt::triggerDialogOnUI() { Q_ASSERT(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); content::WebContentsImpl *webContents = - static_cast<content::WebContentsImpl *>(webContentsGetter.Run()); + static_cast<content::WebContentsImpl *>(m_webContentsGetter.Run()); if (!webContents) return; WebContentsAdapterClient *client = WebContentsViewQt::from(webContents->GetView())->client(); diff --git a/src/core/login_delegate_qt.h b/src/core/login_delegate_qt.h index 9ce5df843..ccd1f7322 100644 --- a/src/core/login_delegate_qt.h +++ b/src/core/login_delegate_qt.h @@ -66,6 +66,8 @@ public: ~LoginDelegateQt(); + void triggerDialog(); + // LoginDelegate implementation void OnRequestCancelled() override; @@ -77,13 +79,14 @@ public: void sendAuthToRequester(bool success, const QString &user, const QString &password); private: - void triggerDialog(const content::ResourceRequestInfo::WebContentsGetter &); + void triggerDialogOnUI(); void destroy(); scoped_refptr<net::AuthChallengeInfo> m_authInfo; GURL m_url; LoginAuthRequiredCallback m_auth_required_callback; + content::ResourceRequestInfo::WebContentsGetter m_webContentsGetter; // This member is used to keep authentication dialog controller alive until // authorization is sent or cancelled. diff --git a/src/core/media_capture_devices_dispatcher.cpp b/src/core/media_capture_devices_dispatcher.cpp index 2bac62084..4dd933753 100644 --- a/src/core/media_capture_devices_dispatcher.cpp +++ b/src/core/media_capture_devices_dispatcher.cpp @@ -49,10 +49,10 @@ #include "web_engine_settings.h" #include "base/strings/utf_string_conversions.h" -#include "chrome/browser/media/webrtc/desktop_streams_registry.h" #include "content/browser/web_contents/web_contents_impl.h" #include "content/public/browser/browser_thread.h" #include "content/public/browser/desktop_media_id.h" +#include "content/public/browser/desktop_streams_registry.h" #include "content/public/browser/media_capture_devices.h" #include "content/public/browser/notification_service.h" #include "content/public/browser/notification_source.h" @@ -95,16 +95,16 @@ void getDevicesForDesktopCapture(content::MediaStreamDevices *devices, content:: DCHECK_CURRENTLY_ON(BrowserThread::UI); // Add selected desktop source to the list. - devices->push_back(content::MediaStreamDevice(content::MEDIA_DESKTOP_VIDEO_CAPTURE, mediaId.ToString(), "Screen")); + devices->push_back(content::MediaStreamDevice(content::MEDIA_GUM_DESKTOP_VIDEO_CAPTURE, mediaId.ToString(), "Screen")); if (captureAudio) { if (mediaId.type == content::DesktopMediaID::TYPE_WEB_CONTENTS) { devices->push_back( - content::MediaStreamDevice(content::MEDIA_DESKTOP_AUDIO_CAPTURE, + content::MediaStreamDevice(content::MEDIA_GUM_DESKTOP_AUDIO_CAPTURE, mediaId.ToString(), "Tab audio")); } else { // Use the special loopback device ID for system audio capture. devices->push_back(content::MediaStreamDevice( - content::MEDIA_DESKTOP_AUDIO_CAPTURE, + content::MEDIA_GUM_DESKTOP_AUDIO_CAPTURE, media::AudioDeviceDescription::kLoopbackInputDeviceId, "System Audio")); } @@ -157,12 +157,12 @@ WebContentsAdapterClient::MediaRequestFlags mediaRequestFlagsForRequest(const co if (request.audio_type == content::MEDIA_DEVICE_AUDIO_CAPTURE) requestFlags |= WebContentsAdapterClient::MediaAudioCapture; - else if (request.audio_type == content::MEDIA_DESKTOP_AUDIO_CAPTURE) + else if (request.audio_type == content::MEDIA_GUM_DESKTOP_AUDIO_CAPTURE) requestFlags |= WebContentsAdapterClient::MediaDesktopAudioCapture; if (request.video_type == content::MEDIA_DEVICE_VIDEO_CAPTURE) requestFlags |= WebContentsAdapterClient::MediaVideoCapture; - else if (request.video_type == content::MEDIA_DESKTOP_VIDEO_CAPTURE) + else if (request.video_type == content::MEDIA_GUM_DESKTOP_VIDEO_CAPTURE) requestFlags |= WebContentsAdapterClient::MediaDesktopVideoCapture; return requestFlags; @@ -275,12 +275,12 @@ void MediaCaptureDevicesDispatcher::processMediaAccessRequest(WebContentsAdapter DCHECK_CURRENTLY_ON(BrowserThread::UI); // Let's not support tab capture for now. - if (request.video_type == content::MEDIA_TAB_VIDEO_CAPTURE || request.audio_type == content::MEDIA_TAB_AUDIO_CAPTURE) { + if (request.video_type == content::MEDIA_GUM_TAB_VIDEO_CAPTURE || request.audio_type == content::MEDIA_GUM_TAB_AUDIO_CAPTURE) { std::move(callback).Run(content::MediaStreamDevices(), content::MEDIA_DEVICE_NOT_SUPPORTED, std::unique_ptr<content::MediaStreamUI>()); return; } - if (request.video_type == content::MEDIA_DESKTOP_VIDEO_CAPTURE || request.audio_type == content::MEDIA_DESKTOP_AUDIO_CAPTURE) { + if (request.video_type == content::MEDIA_GUM_DESKTOP_VIDEO_CAPTURE || request.audio_type == content::MEDIA_GUM_DESKTOP_AUDIO_CAPTURE) { const bool screenCaptureEnabled = adapterClient->webEngineSettings()->testAttribute(WebEngineSettings::ScreenCaptureEnabled); const bool originIsSecure = content::IsOriginSecure(request.security_origin); @@ -305,7 +305,7 @@ void MediaCaptureDevicesDispatcher::processDesktopCaptureAccessRequest(content:: { content::MediaStreamDevices devices; - if (request.video_type != content::MEDIA_DESKTOP_VIDEO_CAPTURE || request.requested_video_device_id.empty()) { + if (request.video_type != content::MEDIA_GUM_DESKTOP_VIDEO_CAPTURE || request.requested_video_device_id.empty()) { std::move(callback).Run(devices, content::MEDIA_DEVICE_INVALID_STATE, std::unique_ptr<content::MediaStreamUI>()); return; } @@ -319,10 +319,10 @@ void MediaCaptureDevicesDispatcher::processDesktopCaptureAccessRequest(content:: // The extension name that the stream is registered with. std::string originalExtensionName; // Resolve DesktopMediaID for the specified device id. - mediaId = getDesktopStreamsRegistry()->RequestMediaForStreamId( + mediaId = content::DesktopStreamsRegistry::GetInstance()->RequestMediaForStreamId( request.requested_video_device_id, main_frame->GetProcess()->GetID(), main_frame->GetRoutingID(), request.security_origin, - &originalExtensionName); + &originalExtensionName, content::kRegistryStreamTypeDesktop); } // Received invalid device id. @@ -332,7 +332,7 @@ void MediaCaptureDevicesDispatcher::processDesktopCaptureAccessRequest(content:: } // Audio is only supported for screen capture streams. - bool capture_audio = (mediaId.type == content::DesktopMediaID::TYPE_SCREEN && request.audio_type == content::MEDIA_DESKTOP_AUDIO_CAPTURE); + bool capture_audio = (mediaId.type == content::DesktopMediaID::TYPE_SCREEN && request.audio_type == content::MEDIA_GUM_DESKTOP_AUDIO_CAPTURE); getDevicesForDesktopCapture(&devices, mediaId, capture_audio); @@ -390,13 +390,6 @@ void MediaCaptureDevicesDispatcher::getDefaultDevices(const std::string &audioDe } } -DesktopStreamsRegistry *MediaCaptureDevicesDispatcher::getDesktopStreamsRegistry() -{ - if (!m_desktopStreamsRegistry) - m_desktopStreamsRegistry.reset(new DesktopStreamsRegistry()); - return m_desktopStreamsRegistry.get(); -} - void MediaCaptureDevicesDispatcher::OnMediaRequestStateChanged(int render_process_id, int render_frame_id, int page_request_id, const GURL &security_origin, content::MediaStreamType stream_type, content::MediaRequestState state) { DCHECK_CURRENTLY_ON(BrowserThread::IO); diff --git a/src/core/media_capture_devices_dispatcher.h b/src/core/media_capture_devices_dispatcher.h index 0e5aa38be..cc6e60ede 100644 --- a/src/core/media_capture_devices_dispatcher.h +++ b/src/core/media_capture_devices_dispatcher.h @@ -57,8 +57,6 @@ #include "content/public/browser/web_contents_delegate.h" #include "content/public/common/media_stream_request.h" -class DesktopStreamsRegistry; - namespace QtWebEngineCore { // This singleton is used to receive updates about media events from the content @@ -94,8 +92,6 @@ private: content::MediaStreamType /*stream_type*/, bool /*is_secure*/) override {} - DesktopStreamsRegistry *getDesktopStreamsRegistry(); - friend struct base::DefaultSingletonTraits<MediaCaptureDevicesDispatcher>; typedef base::RepeatingCallback<void(const content::MediaStreamDevices &devices, @@ -129,8 +125,6 @@ private: RequestsQueues m_pendingRequests; - std::unique_ptr<DesktopStreamsRegistry> m_desktopStreamsRegistry; - content::NotificationRegistrar m_notificationsRegistrar; DISALLOW_COPY_AND_ASSIGN(MediaCaptureDevicesDispatcher); diff --git a/src/core/net/proxy_config_service_qt.h b/src/core/net/proxy_config_service_qt.h index dcd303894..961927b89 100644 --- a/src/core/net/proxy_config_service_qt.h +++ b/src/core/net/proxy_config_service_qt.h @@ -76,7 +76,7 @@ private: void RegisterObserver(); std::unique_ptr<net::ProxyConfigService> m_baseService; - base::ObserverList<net::ProxyConfigService::Observer, true> m_observers; + base::ObserverList<net::ProxyConfigService::Observer, true>::Unchecked m_observers; // Keep the last state around. bool m_usesSystemConfiguration; diff --git a/src/core/net/webui_controller_factory_qt.cpp b/src/core/net/webui_controller_factory_qt.cpp index 918500b58..ec36e70d9 100644 --- a/src/core/net/webui_controller_factory_qt.cpp +++ b/src/core/net/webui_controller_factory_qt.cpp @@ -48,6 +48,7 @@ #include "base/location.h" #include "base/threading/thread_task_runner_handle.h" #include "build/build_config.h" +#include "chrome/browser/accessibility/accessibility_ui.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/ui/webui/devtools_ui.h" #include "chrome/browser/ui/webui/quota_internals/quota_internals_ui.h" @@ -136,6 +137,8 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI *web_ui, Profile *profile, co // return nullptr; return &NewWebUI<DevToolsUI>; } + if (url.host() == chrome::kChromeUIAccessibilityHost) + return &NewWebUI<AccessibilityUI>; // if (url.host_piece() == chrome::kChromeUIUserActionsHost) // return &NewWebUI<UserActionsUI>; diff --git a/src/core/ozone/ozone_platform_qt.cpp b/src/core/ozone/ozone_platform_qt.cpp index 905e8f403..1115f3fac 100644 --- a/src/core/ozone/ozone_platform_qt.cpp +++ b/src/core/ozone/ozone_platform_qt.cpp @@ -43,6 +43,7 @@ #include "ozone/surface_factory_qt.h" #include "ozone/platform_window_qt.h" #include "ui/display/types/native_display_delegate.h" +#include "ui/events/system_input_injector.h" #include "ui/ozone/common/stub_client_native_pixmap_factory.h" #include "ui/ozone/common/stub_overlay_manager.h" #include "ui/ozone/public/cursor_factory_ozone.h" diff --git a/src/core/ozone/platform_window_qt.h b/src/core/ozone/platform_window_qt.h index b712b706a..bb2fc714b 100644 --- a/src/core/ozone/platform_window_qt.h +++ b/src/core/ozone/platform_window_qt.h @@ -75,6 +75,9 @@ public: void MoveCursorTo(const gfx::Point&) override { } void ConfineCursorToBounds(const gfx::Rect&) override { } PlatformImeController* GetPlatformImeController() override { return nullptr; } + void SetRestoredBoundsInPixels(const gfx::Rect& bounds) override { } + gfx::Rect GetRestoredBoundsInPixels() const override { return gfx::Rect(); } + // PlatformEventDispatcher: bool CanDispatchEvent(const PlatformEvent& event) override; uint32_t DispatchEvent(const PlatformEvent& event) override; diff --git a/src/core/permission_manager_qt.cpp b/src/core/permission_manager_qt.cpp index 2fa42bf10..895fe89e6 100644 --- a/src/core/permission_manager_qt.cpp +++ b/src/core/permission_manager_qt.cpp @@ -261,8 +261,8 @@ void PermissionManagerQt::ResetPermission( int PermissionManagerQt::SubscribePermissionStatusChange( content::PermissionType permission, + content::RenderFrameHost * /* render_frame_host */, const GURL& requesting_origin, - const GURL& /*embedding_origin*/, const base::Callback<void(blink::mojom::PermissionStatus)>& callback) { int subscriber_id = ++m_subscriberIdCount; @@ -278,7 +278,7 @@ int PermissionManagerQt::SubscribePermissionStatusChange( void PermissionManagerQt::UnsubscribePermissionStatusChange(int subscription_id) { if (!m_subscribers.remove(subscription_id)) - qWarning() << "PermissionManagerQt::UnsubscribePermissionStatusChange called on unknown subscription id" << subscription_id; + LOG(WARNING) << "PermissionManagerQt::UnsubscribePermissionStatusChange called on unknown subscription id" << subscription_id; } } // namespace QtWebEngineCore diff --git a/src/core/permission_manager_qt.h b/src/core/permission_manager_qt.h index b3bd3dc7a..89eb6cf85 100644 --- a/src/core/permission_manager_qt.h +++ b/src/core/permission_manager_qt.h @@ -92,8 +92,8 @@ public: int SubscribePermissionStatusChange( content::PermissionType permission, + content::RenderFrameHost* render_frame_host, const GURL& requesting_origin, - const GURL& embedding_origin, const base::Callback<void(blink::mojom::PermissionStatus)>& callback) override; void UnsubscribePermissionStatusChange(int subscription_id) override; diff --git a/src/core/printing/print_view_manager_base_qt.cpp b/src/core/printing/print_view_manager_base_qt.cpp index 0e7239ef8..625ec3a49 100644 --- a/src/core/printing/print_view_manager_base_qt.cpp +++ b/src/core/printing/print_view_manager_base_qt.cpp @@ -64,7 +64,7 @@ #include "content/public/browser/render_view_host.h" #include "content/public/browser/notification_service.h" #include "content/public/browser/notification_types.h" -#include "printing/pdf_metafile_skia.h" +#include "printing/metafile_skia.h" #include "printing/print_job_constants.h" #include "printing/printed_document.h" @@ -123,8 +123,8 @@ void PrintViewManagerBaseQt::PrintDocument(printing::PrintedDocument *document, const gfx::Rect &content_area, const gfx::Point &offsets) { - std::unique_ptr<printing::PdfMetafileSkia> metafile = - std::make_unique<printing::PdfMetafileSkia>(); + std::unique_ptr<printing::MetafileSkia> metafile = + std::make_unique<printing::MetafileSkia>(); CHECK(metafile->InitFromData(print_data->front(), print_data->size())); // Update the rendered document. It will send notifications to the listener. diff --git a/src/core/printing/print_view_manager_qt.cpp b/src/core/printing/print_view_manager_qt.cpp index b9b491e41..61be7f0f6 100644 --- a/src/core/printing/print_view_manager_qt.cpp +++ b/src/core/printing/print_view_manager_qt.cpp @@ -53,7 +53,7 @@ #include "base/values.h" #include "base/memory/ref_counted_memory.h" -#include "base/task_scheduler/post_task.h" +#include "base/task/post_task.h" #include "chrome/browser/printing/print_job_manager.h" #include "chrome/browser/printing/printer_query.h" #include "components/printing/common/print_messages.h" @@ -62,12 +62,10 @@ #include "content/public/browser/browser_thread.h" #include "content/public/browser/render_frame_host.h" #include "content/public/common/web_preferences.h" -#include "printing/pdf_metafile_skia.h" +#include "printing/metafile_skia.h" #include "printing/print_job_constants.h" #include "printing/units.h" -DEFINE_WEB_CONTENTS_USER_DATA_KEY(QtWebEngineCore::PrintViewManagerQt); - namespace { static const qreal kMicronsToMillimeter = 1000.0f; @@ -108,7 +106,7 @@ static void SavePdfFile(scoped_refptr<base::RefCountedBytes> data, base::AssertBlockingAllowed(); DCHECK_GT(data->size(), 0U); - printing::PdfMetafileSkia metafile; + printing::MetafileSkia metafile; metafile.InitFromData(static_cast<const void*>(data->front()), data->size()); base::File file(path, diff --git a/src/core/profile_io_data_qt.cpp b/src/core/profile_io_data_qt.cpp index 89d690e9e..ef9c67b78 100644 --- a/src/core/profile_io_data_qt.cpp +++ b/src/core/profile_io_data_qt.cpp @@ -39,7 +39,7 @@ #include "profile_io_data_qt.h" -#include "base/task_scheduler/post_task.h" +#include "base/task/post_task.h" #include "components/certificate_transparency/ct_known_logs.h" #include "components/network_session_configurator/common/network_features.h" #include "content/public/browser/browser_thread.h" @@ -161,7 +161,6 @@ static net::HttpNetworkSession::Params generateNetworkSessionParams(bool ignoreC { net::HttpNetworkSession::Params network_session_params; network_session_params.ignore_certificate_errors = ignoreCertificateErrors; - network_session_params.enable_token_binding = base::FeatureList::IsEnabled(features::kTokenBinding); network_session_params.enable_channel_id = base::FeatureList::IsEnabled(features::kChannelID); return network_session_params; } @@ -274,26 +273,6 @@ void ProfileIODataQt::generateAllStorage() m_updateAllStorage = false; } -class SSLConfigServiceQt : public net::SSLConfigService { -public: - SSLConfigServiceQt() - { - // Enable revocation checking: - m_defaultConfig.rev_checking_enabled = true; - // Mirroring Android WebView (we have no beef with Symantec, and our users might use them): - m_defaultConfig.symantec_enforcement_disabled = true; - } - ~SSLConfigServiceQt() override = default; - - void GetSSLConfig(net::SSLConfig* config) override - { - *config = m_defaultConfig; - } - -private: - net::SSLConfig m_defaultConfig; -}; - void ProfileIODataQt::generateStorage() { Q_ASSERT(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO)); @@ -315,7 +294,15 @@ void ProfileIODataQt::generateStorage() net::ProxyConfigService *proxyConfigService = m_proxyConfigService.fetchAndStoreAcquire(0); Q_ASSERT(proxyConfigService); - m_storage->set_cert_verifier(net::CertVerifier::CreateDefault()); + std::unique_ptr<net::CertVerifier> cert_verifier = net::CertVerifier::CreateDefault(); + net::CertVerifier::Config config; + // Enable revocation checking: + config.enable_rev_checking = true; + // Mirroring Android WebView (we have no beef with Symantec, and our users might use them): + config.disable_symantec_enforcement = true; + cert_verifier->SetConfig(config); + + m_storage->set_cert_verifier(std::move(cert_verifier)); std::unique_ptr<net::MultiLogCTVerifier> ct_verifier(new net::MultiLogCTVerifier()); // FIXME: // ct_verifier->AddLogs(net::ct::CreateLogVerifiersForKnownLogs()); @@ -339,7 +326,7 @@ void ProfileIODataQt::generateStorage() nullptr /* NetLog */, m_networkDelegate.get())); - m_storage->set_ssl_config_service(std::make_unique<SSLConfigServiceQt>()); + m_storage->set_ssl_config_service(std::make_unique<net::SSLConfigServiceDefaults>()); m_storage->set_transport_security_state(std::make_unique<net::TransportSecurityState>()); if (!m_dataPath.isEmpty()) { @@ -386,7 +373,7 @@ void ProfileIODataQt::generateCookieStore() channel_id_db = new net::SQLiteChannelIDStore( toFilePath(m_channelIdPath), base::CreateSequencedTaskRunnerWithTraits( - {base::MayBlock(), base::TaskPriority::BACKGROUND})); + {base::MayBlock(), base::TaskPriority::BEST_EFFORT})); } m_storage->set_channel_id_service( @@ -406,8 +393,8 @@ void ProfileIODataQt::generateCookieStore() base::FilePath(), false, false, - nullptr) - ); + nullptr), + nullptr); break; case ProfileAdapter::AllowPersistentCookies: cookieStore = content::CreateCookieStore( @@ -415,8 +402,8 @@ void ProfileIODataQt::generateCookieStore() toFilePath(m_cookiesPath), false, true, - nullptr) - ); + nullptr), + nullptr); break; case ProfileAdapter::ForcePersistentCookies: cookieStore = content::CreateCookieStore( @@ -424,8 +411,8 @@ void ProfileIODataQt::generateCookieStore() toFilePath(m_cookiesPath), true, true, - nullptr) - ); + nullptr), + nullptr); break; } @@ -533,7 +520,7 @@ void ProfileIODataQt::generateJobFactory() std::unique_ptr<net::URLRequestJobFactory::ProtocolHandler>( new net::DataProtocolHandler())); scoped_refptr<base::TaskRunner> taskRunner(base::CreateTaskRunnerWithTraits({base::MayBlock(), - base::TaskPriority::BACKGROUND, + base::TaskPriority::BEST_EFFORT, base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN})); jobFactory->SetProtocolHandler(url::kFileScheme, std::make_unique<net::FileProtocolHandler>(taskRunner)); diff --git a/src/core/profile_qt.cpp b/src/core/profile_qt.cpp index df05d891e..e4698c677 100644 --- a/src/core/profile_qt.cpp +++ b/src/core/profile_qt.cpp @@ -87,6 +87,8 @@ ProfileQt::ProfileQt(ProfileAdapter *profileAdapter) registry->RegisterBooleanPref(spellcheck::prefs::kSpellCheckEnable, false); registry->RegisterBooleanPref(spellcheck::prefs::kSpellCheckUseSpellingService, false); #endif // QT_CONFIG(webengine_spellchecker) + registry->RegisterBooleanPref(prefs::kShowInternalAccessibilityTree, false); + m_prefService = factory.Create(registry); user_prefs::UserPrefs::Set(this, m_prefService.get()); @@ -123,6 +125,11 @@ base::FilePath ProfileQt::GetPath() const return toFilePath(m_profileAdapter->dataPath()); } +base::FilePath ProfileQt::GetCachePath() const +{ + return toFilePath(m_profileAdapter->cachePath()); +} + bool ProfileQt::IsOffTheRecord() const { return m_profileAdapter->isOffTheRecord(); @@ -229,8 +236,8 @@ net::URLRequestContextGetter *ProfileQt::CreateRequestContextForStoragePartition void ProfileQt::FailedToLoadDictionary(const std::string &language) { Q_ASSERT(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); - qWarning() << "Could not load dictionary for:" << toQt(language) << endl - << "Make sure that correct bdic file is in:" << toQt(WebEngineLibraryInfo::getPath(base::DIR_APP_DICTIONARIES).value()); + LOG(WARNING) << "Could not load dictionary for:" << language; + LOG(INFO) << "Make sure that correct bdic file is in:" << WebEngineLibraryInfo::getPath(base::DIR_APP_DICTIONARIES); } void ProfileQt::setSpellCheckLanguages(const QStringList &languages) diff --git a/src/core/profile_qt.h b/src/core/profile_qt.h index 00119c053..8641646b1 100644 --- a/src/core/profile_qt.h +++ b/src/core/profile_qt.h @@ -68,6 +68,7 @@ public: // BrowserContext implementation: base::FilePath GetPath() const override; + base::FilePath GetCachePath() const override; bool IsOffTheRecord() const override; net::URLRequestContextGetter *CreateMediaRequestContext() override; diff --git a/src/core/qtwebengine.gni b/src/core/qtwebengine.gni index 57dfbec40..e4b165c6d 100644 --- a/src/core/qtwebengine.gni +++ b/src/core/qtwebengine.gni @@ -27,15 +27,12 @@ deps = [ "//components/web_cache/renderer", "//components/spellcheck:buildflags", "//content/public/app:browser", - "//content/public/browser", - "//content/public/common", - "//content/public/renderer", + "//content", "//media:media_buildflags", "//net:net_with_v8", "//services/proxy_resolver:lib", "//skia", "//third_party/blink/public:blink", - "//third_party/mesa:mesa_headers", "//ui/accessibility", "//qtwebengine/browser:interfaces", ":qtwebengine_sources", diff --git a/src/core/qtwebengine_sources.gni b/src/core/qtwebengine_sources.gni index b1361e727..aa9d12480 100644 --- a/src/core/qtwebengine_sources.gni +++ b/src/core/qtwebengine_sources.gni @@ -47,15 +47,13 @@ source_set("qtwebengine_sources") { "//third_party/blink/public/mojom:mojom_platform", ] sources = [ - "//chrome/common/custom_handlers/protocol_handler.cc", - "//chrome/common/custom_handlers/protocol_handler.h", + "//chrome/browser/accessibility/accessibility_ui.cc", + "//chrome/browser/accessibility/accessibility_ui.h", "//chrome/browser/custom_handlers/protocol_handler_registry.cc", "//chrome/browser/custom_handlers/protocol_handler_registry.h", "//chrome/browser/custom_handlers/protocol_handler_registry_factory.cc", "//chrome/browser/custom_handlers/protocol_handler_registry_factory.h", "//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", @@ -72,6 +70,8 @@ source_set("qtwebengine_sources") { "//chrome/browser/ui/webui/quota_internals/quota_internals_ui.h", "//chrome/browser/ui/webui/task_scheduler_internals/task_scheduler_internals_ui.cc", "//chrome/browser/ui/webui/task_scheduler_internals/task_scheduler_internals_ui.h", + "//chrome/common/custom_handlers/protocol_handler.cc", + "//chrome/common/custom_handlers/protocol_handler.h", "//chrome/common/chrome_switches.cc", "//chrome/common/chrome_switches.h", "//chrome/common/pref_names.cc", @@ -109,11 +109,6 @@ source_set("qtwebengine_sources") { "//chrome/renderer/pepper/pepper_shared_memory_message_filter.cc", "//chrome/renderer/pepper/pepper_shared_memory_message_filter.h", ] - - deps += [ - # Need to depend on //content/ppapi_plugin, which is private, thus depending on parent. - "//content", - ] } if (enable_basic_printing || enable_print_preview) { diff --git a/src/core/render_widget_host_view_qt.cpp b/src/core/render_widget_host_view_qt.cpp index 61b1e2a09..3c7a63bb6 100644 --- a/src/core/render_widget_host_view_qt.cpp +++ b/src/core/render_widget_host_view_qt.cpp @@ -82,7 +82,6 @@ #include <QFocusEvent> #include <QGuiApplication> #include <QInputMethodEvent> -#include <QLoggingCategory> #include <QTextFormat> #include <QKeyEvent> #include <QMouseEvent> @@ -223,6 +222,8 @@ public: float GetPressure(size_t pointer_index) const override { return touchPoints.at(pointer_index).pressure(); } float GetTiltX(size_t pointer_index) const override { return 0; } float GetTiltY(size_t pointer_index) const override { return 0; } + float GetTwist(size_t) const override { return 0; } + float GetTangentialPressure(size_t) const override { return 0; } base::TimeTicks GetEventTime() const override { return eventTime; } size_t GetHistorySize() const override { return 0; } @@ -248,7 +249,7 @@ RenderWidgetHostViewQt::RenderWidgetHostViewQt(content::RenderWidgetHost *widget , m_gestureProvider(QtGestureProviderConfig(), this) , m_sendMotionActionDown(false) , m_touchMotionStarted(false) - , m_compositor(new Compositor(this)) + , m_compositor(new Compositor(widget)) , m_loadVisuallyCommittedState(NotCommitted) , m_adapterClient(0) , m_imeInProgress(false) @@ -657,9 +658,9 @@ void RenderWidgetHostViewQt::DidCreateNewRendererCompositorFrameSink(viz::mojom: void RenderWidgetHostViewQt::SubmitCompositorFrame(const viz::LocalSurfaceId &local_surface_id, viz::CompositorFrame frame, base::Optional<viz::HitTestRegionList>) { bool scrollOffsetChanged = (m_lastScrollOffset != frame.metadata.root_scroll_offset); - bool contentsSizeChanged = (m_lastContentsSize != frame.metadata.root_layer_size); + bool contentsSizeChanged = (m_lastContentsSize != frame.metadata.scrollable_viewport_size); m_lastScrollOffset = frame.metadata.root_scroll_offset; - m_lastContentsSize = frame.metadata.root_layer_size; + m_lastContentsSize = frame.metadata.scrollable_viewport_size; // Force to process swap messages uint32_t frame_token = frame.metadata.frame_token; @@ -1426,9 +1427,6 @@ void RenderWidgetHostViewQt::handleGestureEvent(QNativeGestureEvent *ev) } #endif -Q_DECLARE_LOGGING_CATEGORY(QWEBENGINE_TOUCH_HANDLING); -Q_LOGGING_CATEGORY(QWEBENGINE_TOUCH_HANDLING, "qt.webengine.touch"); - void RenderWidgetHostViewQt::handleTouchEvent(QTouchEvent *ev) { // On macOS instead of handling touch events, we use the OS provided QNativeGestureEvents. @@ -1436,7 +1434,7 @@ void RenderWidgetHostViewQt::handleTouchEvent(QTouchEvent *ev) if (ev->spontaneous()) { return; } else { - qCWarning(QWEBENGINE_TOUCH_HANDLING) + VLOG(1) << "Sending simulated touch events to Chromium does not work properly on macOS. " "Consider using QNativeGestureEvents or QMouseEvents."; } @@ -1621,11 +1619,6 @@ void RenderWidgetHostViewQt::SetNeedsBeginFrames(bool needs_begin_frames) m_compositor->setNeedsBeginFrames(needs_begin_frames); } -void RenderWidgetHostViewQt::OnBeginFrame(base::TimeTicks frame_time) -{ - host()->ProgressFlingIfNeeded(frame_time); -} - content::RenderFrameHost *RenderWidgetHostViewQt::getFocusedFrameHost() { content::RenderViewHostImpl *viewHost = content::RenderViewHostImpl::From(host()); @@ -1687,4 +1680,9 @@ uint32_t RenderWidgetHostViewQt::GetCaptureSequenceNumber() const return m_latestCaptureSequenceNumber; } +void RenderWidgetHostViewQt::ResetFallbackToFirstNavigationSurface() +{ + Q_UNIMPLEMENTED(); +} + } // namespace QtWebEngineCore diff --git a/src/core/render_widget_host_view_qt.h b/src/core/render_widget_host_view_qt.h index 3d51731d2..caafba430 100644 --- a/src/core/render_widget_host_view_qt.h +++ b/src/core/render_widget_host_view_qt.h @@ -108,7 +108,6 @@ public: RenderWidgetHostViewQtDelegate *delegate() { return m_delegate.get(); } void setDelegate(RenderWidgetHostViewQtDelegate *delegate); void setAdapterClient(WebContentsAdapterClient *adapterClient); - void OnBeginFrame(base::TimeTicks frame_time); void InitAsChild(gfx::NativeView) override; void InitAsPopup(content::RenderWidgetHostView*, const gfx::Rect&) override; @@ -159,6 +158,7 @@ public: void TakeFallbackContentFrom(content::RenderWidgetHostView *view) override; void EnsureSurfaceSynchronizedForLayoutTest() override; uint32_t GetCaptureSequenceNumber() const override; + void ResetFallbackToFirstNavigationSurface() override; // Overridden from ui::GestureProviderClient. void OnGestureEvent(const ui::GestureEventData& gesture) override; diff --git a/src/core/renderer/content_renderer_client_qt.cpp b/src/core/renderer/content_renderer_client_qt.cpp index 403448b91..35fc47eb0 100644 --- a/src/core/renderer/content_renderer_client_qt.cpp +++ b/src/core/renderer/content_renderer_client_qt.cpp @@ -137,7 +137,7 @@ void ContentRendererClientQt::RenderThreadStarted() // Allow XMLHttpRequests from qrc to file. blink::WebURL qrc(blink::KURL("qrc:")); blink::WebString file(blink::WebString::FromASCII("file")); - blink::WebSecurityPolicy::AddOriginAccessWhitelistEntry(qrc, file, blink::WebString(), true); + blink::WebSecurityPolicy::AddOriginAccessAllowListEntry(qrc, file, blink::WebString(), true); } void ContentRendererClientQt::RenderViewCreated(content::RenderView* render_view) @@ -230,6 +230,7 @@ void ContentRendererClientQt::GetNavigationErrorStringsInternal(content::RenderF error_page::LocalizedError::GetStrings( error.reason(), error.domain(), error.url(), isPost, error.stale_copy_in_cache(), false, false, + error_page::LocalizedError::OfflineContentOnNetErrorFeatureState::kDisabled, locale, std::unique_ptr<error_page::ErrorPageParams>(), &errorStrings); resourceId = IDR_NET_ERROR_HTML; diff --git a/src/core/type_conversion.cpp b/src/core/type_conversion.cpp index d35426ac3..16960f8a0 100644 --- a/src/core/type_conversion.cpp +++ b/src/core/type_conversion.cpp @@ -42,7 +42,9 @@ #include <content/public/common/favicon_url.h> #include <ui/events/event_constants.h> #include <ui/gfx/image/image_skia.h> + #include <QtCore/qcoreapplication.h> +#include <QtGui/qmatrix4x4.h> namespace QtWebEngineCore { @@ -243,4 +245,15 @@ FaviconInfo toFaviconInfo(const content::FaviconURL &favicon_url) return info; } +void convertToQt(const SkMatrix44 &m, QMatrix4x4 &c) +{ + QMatrix4x4 qtMatrix( + m.get(0, 0), m.get(0, 1), m.get(0, 2), m.get(0, 3), + m.get(1, 0), m.get(1, 1), m.get(1, 2), m.get(1, 3), + m.get(2, 0), m.get(2, 1), m.get(2, 2), m.get(2, 3), + m.get(3, 0), m.get(3, 1), m.get(3, 2), m.get(3, 3)); + qtMatrix.optimize(); + c = qtMatrix; +} + } // namespace QtWebEngineCore diff --git a/src/core/type_conversion.h b/src/core/type_conversion.h index afc3c3336..96b4ecadc 100644 --- a/src/core/type_conversion.h +++ b/src/core/type_conversion.h @@ -45,7 +45,6 @@ #include <QDir> #include <QIcon> #include <QImage> -#include <QMatrix4x4> #include <QNetworkCookie> #include <QRect> #include <QString> @@ -64,6 +63,8 @@ #include "ui/gfx/geometry/rect_f.h" #include "url/gurl.h" +QT_FORWARD_DECLARE_CLASS(QMatrix4x4) + namespace content { struct FaviconURL; } @@ -198,16 +199,7 @@ SkBitmap toSkBitmap(const QImage &image); QIcon toQIcon(const std::vector<SkBitmap> &bitmaps); -inline QMatrix4x4 toQt(const SkMatrix44 &m) -{ - QMatrix4x4 qtMatrix( - m.get(0, 0), m.get(0, 1), m.get(0, 2), m.get(0, 3), - m.get(1, 0), m.get(1, 1), m.get(1, 2), m.get(1, 3), - m.get(2, 0), m.get(2, 1), m.get(2, 2), m.get(2, 3), - m.get(3, 0), m.get(3, 1), m.get(3, 2), m.get(3, 3)); - qtMatrix.optimize(); - return qtMatrix; -} +void convertToQt(const SkMatrix44 &m, QMatrix4x4 &c); inline QDateTime toQt(base::Time time) { diff --git a/src/core/web_contents_adapter.cpp b/src/core/web_contents_adapter.cpp index 0c29b3525..3cf9c0be9 100644 --- a/src/core/web_contents_adapter.cpp +++ b/src/core/web_contents_adapter.cpp @@ -43,15 +43,14 @@ #include "web_contents_adapter.h" -#include "browser_accessibility_qt.h" -#include "profile_adapter_client.h" -#include "profile_adapter.h" #include "devtools_frontend_qt.h" #include "download_manager_delegate_qt.h" #include "media_capture_devices_dispatcher.h" #if QT_CONFIG(webengine_printing_and_pdf) #include "printing/print_view_manager_qt.h" #endif +#include "profile_adapter_client.h" +#include "profile_adapter.h" #include "profile_qt.h" #include "qwebenginecallback_p.h" #include "render_view_observer_host_qt.h" @@ -105,10 +104,14 @@ #include <QtCore/qelapsedtimer.h> #include <QtCore/qmimedata.h> #include <QtCore/qtemporarydir.h> -#include <QtGui/qaccessible.h> #include <QtGui/qdrag.h> #include <QtGui/qpixmap.h> +// Can't include headers as qaccessible.h conflicts with Chromium headers. +namespace content { +extern QAccessibleInterface *toQAccessibleInterface(BrowserAccessibility *acc); +} + namespace QtWebEngineCore { #define CHECK_INITIALIZED(return_value) \ @@ -117,7 +120,7 @@ namespace QtWebEngineCore { #define CHECK_VALID_RENDER_WIDGET_HOST_VIEW(render_view_host) \ if (!render_view_host->IsRenderViewLive() && render_view_host->GetWidget()->GetView()) { \ - qWarning("Ignore navigation due to terminated render process with invalid RenderWidgetHostView."); \ + LOG(WARNING) << "Ignore navigation due to terminated render process with invalid RenderWidgetHostView."; \ return; \ } @@ -190,7 +193,7 @@ static QVariant fromJSValue(const base::Value *result) } case base::Value::Type::BINARY: { - QByteArray data(result->GetBlob().data(), result->GetBlob().size()); + QByteArray data(reinterpret_cast<const char *>(result->GetBlob().data()), result->GetBlob().size()); ret.setValue(data); break; } @@ -932,8 +935,8 @@ QAccessibleInterface *WebContentsAdapter::browserAccessible() if (!manager) // FIXME! return nullptr; content::BrowserAccessibility *acc = manager->GetRoot(); - content::BrowserAccessibilityQt *accQt = static_cast<content::BrowserAccessibilityQt*>(acc); - return accQt; + + return content::toQAccessibleInterface(acc); } #endif // QT_NO_ACCESSIBILITY diff --git a/src/core/web_engine_context.cpp b/src/core/web_engine_context.cpp index 1ad18b3ea..f0aef72ee 100644 --- a/src/core/web_engine_context.cpp +++ b/src/core/web_engine_context.cpp @@ -46,6 +46,7 @@ #include "base/files/file_path.h" #include "base/message_loop/message_loop.h" #include "base/run_loop.h" +#include "base/task/post_task.h" #include "base/threading/thread_restrictions.h" #include "cc/base/switches.h" #if QT_CONFIG(webengine_printing_and_pdf) @@ -53,10 +54,12 @@ #endif #include "components/viz/common/features.h" #include "components/web_cache/browser/web_cache_manager.h" +#include "content/browser/browser_thread_impl.h" #include "content/browser/devtools/devtools_http_handler.h" #include "content/public/app/content_main.h" #include "content/public/app/content_main_runner.h" #include "content/public/browser/browser_main_runner.h" +#include "content/public/browser/browser_task_traits.h" #include "content/public/browser/plugin_service.h" #include "content/public/browser/render_frame_host.h" #include "content/public/browser/render_process_host.h" @@ -355,6 +358,7 @@ WebEngineContext::WebEngineContext() void WebEngineContext::initialize() { base::TaskScheduler::Create("Browser"); + content::BrowserThreadImpl::CreateTaskExecutor(); m_contentRunner.reset(content::ContentMainRunner::Create()); m_browserRunner.reset(content::BrowserMainRunner::Create()); #ifdef Q_OS_LINUX @@ -467,8 +471,6 @@ void WebEngineContext::initialize() appendToFeatureSwitch(parsedCommandLine, switches::kDisableFeatures, features::kEnableSurfaceSynchronization.name); // The video-capture service is not functioning at this moment (since 69) appendToFeatureSwitch(parsedCommandLine, switches::kDisableFeatures, features::kMojoVideoCapture.name); - // We do not yet support the internal video capture API. - appendToFeatureSwitch(parsedCommandLine, switches::kDisableFeatures, features::kUseVideoCaptureApiForDevToolsSnapshots.name); if (useEmbeddedSwitches) { // embedded switches are based on the switches for Android, see content/browser/android/content_startup_flags.cc diff --git a/src/core/web_engine_library_info.cpp b/src/core/web_engine_library_info.cpp index 3899ced25..12ffd91e6 100644 --- a/src/core/web_engine_library_info.cpp +++ b/src/core/web_engine_library_info.cpp @@ -54,6 +54,7 @@ #include <QDir> #include <QFileInfo> #include <QLibraryInfo> +#include <QLocale> #include <QStandardPaths> #include <QString> diff --git a/tools/scripts/take_snapshot.py b/tools/scripts/take_snapshot.py index 4bf4381cb..38915f2e5 100755 --- a/tools/scripts/take_snapshot.py +++ b/tools/scripts/take_snapshot.py @@ -72,6 +72,7 @@ def isInChromiumBlacklist(file_path): not file_path.endswith('perftimer.h') and not file_path.endswith('test-torque.tq') and not 'ozone' in file_path and + not 'clang_coverage' in file_path and not 'fontconfig_util_linux' in file_path and not 'core/mojo/test/' in file_path and not file_path.startswith('extensions/browser/')) @@ -98,6 +99,7 @@ def isInChromiumBlacklist(file_path): 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/accessibility/' in file_path and not '/browser/custom_handlers/' in file_path and not '/browser/devtools/' in file_path and not '/browser/ui/webui/' in file_path and @@ -342,6 +344,7 @@ def exportChromium(): files = listFilesInCurrentRepository() # Add LASTCHANGE files which are not tracked by git. files.append('build/util/LASTCHANGE') + files.append('build/util/LASTCHANGE.committime') files.append('skia/ext/skia_commit_hash.h') files.append('gpu/config/gpu_lists_version.h') print 'copying files to ' + third_party_chromium diff --git a/tools/scripts/version_resolver.py b/tools/scripts/version_resolver.py index 27062fbcf..824c9412b 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 = '69.0.3497.113' -chromium_branch = '3497' +chromium_version = '70.0.3538.78' +chromium_branch = '3538' ninja_version = 'v1.8.2' json_url = 'http://omahaproxy.appspot.com/all.json' |