diff options
42 files changed, 307 insertions, 272 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/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 1c96ac538..8441fdad5 100644 --- a/src/core/browser_accessibility_qt.cpp +++ b/src/core/browser_accessibility_qt.cpp @@ -462,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)) @@ -479,6 +477,8 @@ 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)) 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/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 7a53e28c7..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" @@ -388,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 } @@ -472,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); } @@ -514,8 +514,14 @@ 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); } diff --git a/src/core/content_browser_client_qt.h b/src/core/content_browser_client_qt.h index 736519036..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, 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 8d400882d..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 "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" @@ -751,14 +751,14 @@ 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(); @@ -779,8 +779,8 @@ static bool areSharedQuadStatesEqual(const viz::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 @@ -828,7 +828,7 @@ void DelegatedFrameNode::commit(ChromiumCompositorData *chromiumCompositorData, RenderWidgetHostViewQtDelegate *apiDelegate) { m_chromiumCompositorData = chromiumCompositorData; - cc::CompositorFrame* frameData = &m_chromiumCompositorData->frameData; + viz::CompositorFrame* frameData = &m_chromiumCompositorData->frameData; if (frameData->render_pass_list.empty()) return; @@ -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,7 +944,7 @@ 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 viz::SharedQuadState *currentLayerState = nullptr; @@ -952,7 +952,7 @@ void DelegatedFrameNode::commit(ChromiumCompositorData *chromiumCompositorData, 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 viz::DrawQuad *quad = *it; const viz::SharedQuadState *quadState = quad->shared_quad_state; gfx::Rect targetRect = @@ -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,8 +1017,8 @@ void DelegatedFrameNode::flushPolygons( if (polygonQueue->empty()) return; - const auto actionHandler = [&](cc::DrawPolygon *polygon) { - const cc::DrawQuad *quad = polygon->original_ref(); + const auto actionHandler = [&](viz::DrawPolygon *polygon) { + const viz::DrawQuad *quad = polygon->original_ref(); const viz::SharedQuadState *quadState = quad->shared_quad_state; QSGNode *currentLayerChain = nullptr; @@ -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 21670e40f..5d967841d 100644 --- a/src/core/delegated_frame_node.h +++ b/src/core/delegated_frame_node.h @@ -40,8 +40,9 @@ #ifndef DELEGATED_FRAME_NODE_H #define DELEGATED_FRAME_NODE_H -#include "cc/output/compositor_frame.h" -#include "cc/quads/render_pass.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" @@ -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; }; @@ -94,27 +95,26 @@ public: 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", ¶ms); 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/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 968b3df3f..0a7d1f2b4 100644 --- a/src/core/network_delegate_qt.cpp +++ b/src/core/network_delegate_qt.cpp @@ -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); } @@ -246,6 +247,11 @@ bool NetworkDelegateQt::OnCanGetCookies(const net::URLRequest& request, const ne 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 { Q_ASSERT(m_requestContextGetter); @@ -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/print_view_manager_base_qt.cpp b/src/core/print_view_manager_base_qt.cpp index 5edf9e9a5..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("")); @@ -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); @@ -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; } @@ -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 2e10a6f7d..5198985d7 100644 --- a/src/core/print_view_manager_qt.cpp +++ b/src/core/print_view_manager_qt.cpp @@ -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_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 de9ee63ab..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" @@ -732,7 +732,7 @@ void RenderWidgetHostViewQt::DidCreateNewRendererCompositorFrameSink(viz::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); diff --git a/src/core/render_widget_host_view_qt.h b/src/core/render_widget_host_view_qt.h index 16b0aa573..548142c84 100644 --- a/src/core/render_widget_host_view_qt.h +++ b/src/core/render_widget_host_view_qt.h @@ -152,7 +152,7 @@ public: void SetTooltipText(const base::string16 &tooltip_text) override; bool HasAcceleratedSurface(const gfx::Size&) override; void DidCreateNewRendererCompositorFrameSink(viz::mojom::CompositorFrameSinkClient* renderer_compositor_frame_sink) override; - void SubmitCompositorFrame(const viz::LocalSurfaceId&, cc::CompositorFrame) 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); 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 aeeb328dc..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( @@ -554,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/web_contents_adapter.cpp b/src/core/web_contents_adapter.cpp index 286856c71..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); } diff --git a/src/core/web_contents_delegate_qt.cpp b/src/core/web_contents_delegate_qt.cpp index 51ea7eda3..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()); @@ -459,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_engine_context.cpp b/src/core/web_engine_context.cpp index 64e608b1f..e98dcd961 100644 --- a/src/core/web_engine_context.cpp +++ b/src/core/web_engine_context.cpp @@ -390,7 +390,6 @@ WebEngineContext::WebEngineContext() parsedCommandLine->AppendSwitch(switches::kDisableGpuShaderDiskCache); parsedCommandLine->AppendSwitch(switches::kDisable2dCanvasAntialiasing); parsedCommandLine->AppendSwitch(cc::switches::kDisableCompositedAntialiasing); - parsedCommandLine->AppendSwitchASCII(switches::kProfilerTiming, switches::kProfilerTimingDisabledValue); } GLContextHelper::initialize(); diff --git a/src/core/web_engine_settings.cpp b/src/core/web_engine_settings.cpp index f438091c6..2a789ef91 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); @@ -378,7 +378,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 2c30627ad..f49b2c6bb 100644 --- a/src/webengine/api/qquickwebengineview.cpp +++ b/src/webengine/api/qquickwebengineview.cpp @@ -487,8 +487,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/widgets/qwebenginefaviconmanager/tst_qwebenginefaviconmanager.cpp b/tests/auto/widgets/qwebenginefaviconmanager/tst_qwebenginefaviconmanager.cpp index 0f7d590c2..83c590967 100644 --- a/tests/auto/widgets/qwebenginefaviconmanager/tst_qwebenginefaviconmanager.cpp +++ b/tests/auto/widgets/qwebenginefaviconmanager/tst_qwebenginefaviconmanager.cpp @@ -258,7 +258,7 @@ void tst_QWebEngineFaviconManager::errorPageDisabled() 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/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 597682fda..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 = '62.0.3202.101' -chromium_branch = '3202' +chromium_version = '63.0.3239.117' +chromium_branch = '3239' ninja_version = 'v1.8.2' json_url = 'http://omahaproxy.appspot.com/all.json' |