From c0419ae89fbc4fbdc58aef5b8b01ab0b45f8ff98 Mon Sep 17 00:00:00 2001
From: Allan Sandfeld Jensen <allan.jensen@qt.io>
Date: Thu, 23 Aug 2018 18:26:28 +0200
Subject: [PATCH] Adaptations for Chromium 68
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Together-with: Tamas Zakor<ztamas@inf.u-szeged.hu>
Change-Id: I805246b6f01cb151fff48588744408c676d87c14
Reviewed-by: Michael Brüning <michael.bruning@qt.io>
---
 src/core/browser_accessibility_qt.cpp         | 11 ++---
 src/core/build_config_qt.h                    |  6 +--
 src/core/chromium_gpu_helper.cpp              |  5 +--
 src/core/chromium_gpu_helper.h                |  6 ++-
 src/core/client_cert_select_controller.cpp    |  2 +-
 src/core/common/qt_messages.h                 |  3 --
 src/core/content_browser_client_qt.cpp        | 23 ++++++----
 src/core/content_browser_client_qt.h          |  4 +-
 src/core/content_client_qt.cpp                | 14 +++++--
 src/core/content_main_delegate_qt.cpp         |  5 ++-
 src/core/delegated_frame_node.cpp             |  4 +-
 src/core/login_delegate_qt.cpp                |  4 +-
 src/core/login_delegate_qt.h                  |  5 ++-
 src/core/ozone/platform_window_qt.h           |  1 +
 .../printing/pdfium_document_wrapper_qt.cpp   | 12 +++---
 .../printing/print_view_manager_base_qt.cpp   |  5 +--
 .../printing/print_view_manager_base_qt.h     |  2 +-
 src/core/printing/print_view_manager_qt.cpp   |  5 +--
 src/core/profile_io_data_qt.cpp               | 10 +++--
 src/core/qtwebengine_sources.gni              |  2 -
 src/core/render_widget_host_view_qt.cpp       | 42 ++++++-------------
 src/core/render_widget_host_view_qt.h         |  8 ++--
 .../renderer/content_renderer_client_qt.cpp   | 10 +++--
 src/core/renderer/render_view_observer_qt.cpp |  6 ---
 src/core/renderer/render_view_observer_qt.h   |  1 -
 .../renderer/user_resource_controller.cpp     |  2 +-
 src/core/resource_bundle_qt.cpp               |  3 +-
 src/core/web_contents_adapter.cpp             | 34 +++++++++++----
 src/core/web_contents_adapter.h               |  4 +-
 src/core/web_contents_delegate_qt.cpp         | 10 ++---
 src/core/web_contents_delegate_qt.h           |  6 +--
 src/core/web_engine_context.cpp               |  4 +-
 src/core/web_event_factory.cpp                | 21 ++++------
 src/tools/qwebengine_convert_dict/main.cpp    |  2 +-
 tools/scripts/take_snapshot.py                |  5 ++-
 tools/scripts/version_resolver.py             |  4 +-
 36 files changed, 147 insertions(+), 144 deletions(-)

diff --git a/src/core/browser_accessibility_qt.cpp b/src/core/browser_accessibility_qt.cpp
index 5ec84affb..c7bf9510d 100644
--- a/src/core/browser_accessibility_qt.cpp
+++ b/src/core/browser_accessibility_qt.cpp
@@ -382,6 +382,8 @@ QAccessible::Role BrowserAccessibilityQt::role() const
         return QAccessible::StaticText;
     case ax::mojom::Role::kScrollBar:
         return QAccessible::ScrollBar;
+    case ax::mojom::Role::kScrollView:
+        return QAccessible::NoRole; // FIXME
     case ax::mojom::Role::kSearch:
         return QAccessible::Section;
     case ax::mojom::Role::kSearchBox:
@@ -392,8 +394,6 @@ QAccessible::Role BrowserAccessibilityQt::role() const
         return QAccessible::NoRole; // FIXME
     case ax::mojom::Role::kSpinButton:
         return QAccessible::SpinBox;
-    case ax::mojom::Role::kSpinButtonPart:
-        return QAccessible::NoRole; // FIXME
     case ax::mojom::Role::kSplitter:
         return QAccessible::Splitter;
     case ax::mojom::Role::kStaticText:
@@ -456,7 +456,7 @@ QAccessible::State BrowserAccessibilityQt::state() const
         state.expanded = true;
     if (HasState(ax::mojom::State::kFocusable))
         state.focusable = true;
-    if (HasState(ax::mojom::State::kHaspopup))
+    if (HasState(ax::mojom::State::kHasPopup))
         state.hasPopup = true;
     if (HasState(ax::mojom::State::kHorizontal))
     {} // FIXME
@@ -711,10 +711,7 @@ QAccessibleInterface *BrowserAccessibilityQt::cellAt(int row, int column) const
     if (row < 0 || row >= rows || column < 0 || column >= columns)
       return 0;
 
-    const std::vector<int32_t>& cell_ids = GetIntListAttribute(ax::mojom::IntListAttribute::kCellIds);
-    DCHECK_EQ(columns * rows, static_cast<int>(cell_ids.size()));
-
-    int cell_id = cell_ids[row * columns + column];
+    int cell_id = GetCellId(row, column);
     BrowserAccessibility* cell = manager()->GetFromID(cell_id);
     if (cell) {
       QAccessibleInterface *iface = static_cast<BrowserAccessibilityQt*>(cell);
diff --git a/src/core/build_config_qt.h b/src/core/build_config_qt.h
index aac1dafcb..9c7a77d65 100644
--- a/src/core/build_config_qt.h
+++ b/src/core/build_config_qt.h
@@ -51,12 +51,12 @@
 
 // This is just config sanity check
 #if QT_CONFIG(webengine_printing_and_pdf)
-#if !BUILDFLAG(ENABLE_BASIC_PRINTING) || !BUILDFLAG(ENABLE_PRINT_PREVIEW)
+#if !BUILDFLAG(ENABLE_PRINTING) || !BUILDFLAG(ENABLE_PRINT_PREVIEW)
 #error Config sanity check for webengine_printing_and_pdf failed
 #endif
 #else
-#if BUILDFLAG(ENABLE_BASIC_PRINTING) || BUILDFLAG(ENABLE_PRINT_PREVIEW)
-#error Config sanity check for ENABLE_BASIC_PRINTING, ENABLE_PRINT_PREVIEW failed
+#if BUILDFLAG(ENABLE_PRINTING) || BUILDFLAG(ENABLE_PRINT_PREVIEW)
+#error Config sanity check for ENABLE_PRINTING, ENABLE_PRINT_PREVIEW failed
 #endif
 #endif
 
diff --git a/src/core/chromium_gpu_helper.cpp b/src/core/chromium_gpu_helper.cpp
index 547fbc45c..92a8b13ed 100644
--- a/src/core/chromium_gpu_helper.cpp
+++ b/src/core/chromium_gpu_helper.cpp
@@ -57,10 +57,9 @@
 #include "content/common/gpu/stream_texture_qnx.h"
 #endif
 
-// FIXME: Try using content::GpuChildThread::current()
-base::MessageLoop *gpu_message_loop()
+scoped_refptr<base::SingleThreadTaskRunner> gpu_task_runner()
 {
-    return content::GpuChildThread::instance()->message_loop();
+    return content::GpuChildThread::instance()->main_thread_runner();
 }
 
 gpu::SyncPointManager *sync_point_manager()
diff --git a/src/core/chromium_gpu_helper.h b/src/core/chromium_gpu_helper.h
index be4380085..21b764997 100644
--- a/src/core/chromium_gpu_helper.h
+++ b/src/core/chromium_gpu_helper.h
@@ -42,8 +42,10 @@
 
 #include <QtGlobal> // We need this for the Q_OS_QNX define.
 
+#include "base/memory/scoped_refptr.h"
+
 namespace base {
-class MessageLoop;
+class SingleThreadTaskRunner;
 }
 
 namespace gpu {
@@ -58,7 +60,7 @@ class TextureBase;
 // From the outside, types from incompatible headers referenced in these
 // functions should only be forward-declared and considered as opaque types.
 
-base::MessageLoop *gpu_message_loop();
+scoped_refptr<base::SingleThreadTaskRunner> gpu_task_runner();
 gpu::SyncPointManager *sync_point_manager();
 gpu::MailboxManager *mailbox_manager();
 
diff --git a/src/core/client_cert_select_controller.cpp b/src/core/client_cert_select_controller.cpp
index 16d23454f..1362322f7 100644
--- a/src/core/client_cert_select_controller.cpp
+++ b/src/core/client_cert_select_controller.cpp
@@ -94,7 +94,7 @@ void ClientCertSelectController::select(const QSslCertificate &certificate)
             net::X509Certificate::CreateFromBytes(derCertificate.constData(), derCertificate.length());
     for (auto &certInfo : m_clientCerts) {
         scoped_refptr<net::X509Certificate> cert = certInfo->certificate();
-        if (cert->Equals(selectedCert.get())) {
+        if (cert->EqualsExcludingChain(selectedCert.get())) {
             m_selected = true;
             net::ClientCertIdentity::SelfOwningAcquirePrivateKey(
                         std::move(certInfo),
diff --git a/src/core/common/qt_messages.h b/src/core/common/qt_messages.h
index 71e1deef0..987d6442b 100644
--- a/src/core/common/qt_messages.h
+++ b/src/core/common/qt_messages.h
@@ -36,9 +36,6 @@ IPC_MESSAGE_ROUTED1(RenderViewObserverQt_FetchDocumentMarkup,
 IPC_MESSAGE_ROUTED1(RenderViewObserverQt_FetchDocumentInnerText,
                     uint64_t /* requestId */)
 
-IPC_MESSAGE_ROUTED1(RenderViewObserverQt_SetBackgroundColor,
-                    uint32_t /* color */)
-
 // User scripts messages
 IPC_MESSAGE_ROUTED1(RenderFrameObserverHelper_AddScript,
                     UserScriptData /* script */)
diff --git a/src/core/content_browser_client_qt.cpp b/src/core/content_browser_client_qt.cpp
index 393b0aee1..5b6959a45 100644
--- a/src/core/content_browser_client_qt.cpp
+++ b/src/core/content_browser_client_qt.cpp
@@ -78,6 +78,7 @@
 #include "net/ssl/client_cert_identity.h"
 #include "services/service_manager/public/cpp/connector.h"
 #include "services/service_manager/public/cpp/service.h"
+#include "services/service_manager/sandbox/switches.h"
 #include "third_party/blink/public/platform/modules/insecure_input/insecure_input_service.mojom.h"
 #include "ui/base/resource/resource_bundle.h"
 #include "ui/base/ui_base_switches.h"
@@ -181,9 +182,7 @@ class MessagePumpForUIQt : public QObject,
 {
 public:
     MessagePumpForUIQt()
-        // Usually this gets passed through Run, but since we have
-        // our own event loop, attach it explicitly ourselves.
-        : m_delegate(base::MessageLoopForUI::current())
+        : m_delegate(nullptr)
         , m_explicitLoop(0)
         , m_timerId(0)
     {
@@ -191,7 +190,10 @@ public:
 
     void Run(Delegate *delegate) override
     {
-        Q_ASSERT(delegate == m_delegate);
+        if (!m_delegate)
+            m_delegate = delegate;
+        else
+            Q_ASSERT(delegate == m_delegate);
         // This is used only when MessagePumpForUIQt is used outside of the GUI thread.
         QEventLoop loop;
         m_explicitLoop = &loop;
@@ -207,11 +209,15 @@ public:
 
     void ScheduleWork() override
     {
+        if (!m_delegate)
+            m_delegate = base::MessageLoopForUI::current();
         QCoreApplication::postEvent(this, new QEvent(QEvent::User));
     }
 
     void ScheduleDelayedWork(const base::TimeTicks &delayed_work_time) override
     {
+        if (!m_delegate)
+            m_delegate = base::MessageLoopForUI::current();
         if (delayed_work_time.is_null()) {
             killTimer(m_timerId);
             m_timerId = 0;
@@ -353,7 +359,6 @@ public:
     bool MakeCurrent(gl::GLSurface *) override { Q_UNREACHABLE(); return false; }
     void ReleaseCurrent(gl::GLSurface *) override { Q_UNREACHABLE(); }
     bool IsCurrent(gl::GLSurface *) override { Q_UNREACHABLE(); return false; }
-    void OnSetSwapInterval(int) override { Q_UNREACHABLE(); }
     scoped_refptr<gl::GPUTimingClient> CreateGPUTimingClient() override
     {
         return nullptr;
@@ -579,7 +584,7 @@ void ContentBrowserClientQt::AppendExtraCommandLineSwitches(base::CommandLine* c
     url::CustomScheme::SaveSchemes(command_line);
 
     std::string processType = command_line->GetSwitchValueASCII(switches::kProcessType);
-    if (processType == switches::kZygoteProcess)
+    if (processType == service_manager::switches::kZygoteProcess)
         command_line->AppendSwitchASCII(switches::kLang, GetApplicationLocale());
 }
 
@@ -683,7 +688,7 @@ void ContentBrowserClientQt::BindInterfaceRequestFromFrame(content::RenderFrameH
         m_frameInterfaces->TryBindInterface(interface_name, &interface_pipe);
 }
 
-void ContentBrowserClientQt::RegisterInProcessServices(StaticServiceMap* services)
+void ContentBrowserClientQt::RegisterInProcessServices(StaticServiceMap* services, content::ServiceManagerConnection* connection)
 {
     service_manager::EmbeddedServiceInfo info;
     info.factory = ServiceQt::GetInstance()->CreateServiceQtFactory();
@@ -903,9 +908,9 @@ scoped_refptr<content::LoginDelegate> ContentBrowserClientQt::CreateLoginDelegat
         bool /*is_main_frame*/,
         const GURL &url,
         bool first_auth_attempt,
-        const base::Callback<void(const base::Optional<net::AuthCredentials>&)>&auth_required_callback)
+        LoginAuthRequiredCallback auth_required_callback)
 {
-    return base::MakeRefCounted<LoginDelegateQt>(authInfo, web_contents_getter, url, first_auth_attempt, auth_required_callback);
+    return base::MakeRefCounted<LoginDelegateQt>(authInfo, web_contents_getter, url, first_auth_attempt, std::move(auth_required_callback));
 }
 
 } // namespace QtWebEngineCore
diff --git a/src/core/content_browser_client_qt.h b/src/core/content_browser_client_qt.h
index 842cf513d..1da7ce26c 100644
--- a/src/core/content_browser_client_qt.h
+++ b/src/core/content_browser_client_qt.h
@@ -117,7 +117,7 @@ public:
     void BindInterfaceRequestFromFrame(content::RenderFrameHost* render_frame_host,
                                        const std::string& interface_name,
                                        mojo::ScopedMessagePipeHandle interface_pipe) override;
-    void RegisterInProcessServices(StaticServiceMap* services) override;
+    void RegisterInProcessServices(StaticServiceMap* services, content::ServiceManagerConnection* connection) override;
     std::vector<ServiceManifestInfo> GetExtraServiceManifests() override;
     std::unique_ptr<base::Value> GetServiceManifestOverlay(base::StringPiece name) override;
     bool CanCreateWindow(
@@ -185,7 +185,7 @@ public:
             bool is_main_frame,
             const GURL &url,
             bool first_auth_attempt,
-            const base::Callback<void(const base::Optional<net::AuthCredentials>&)>&auth_required_callback) override;
+            LoginAuthRequiredCallback auth_required_callback) override;
     bool HandleExternalProtocol(
             const GURL &url,
             content::ResourceRequestInfo::WebContentsGetter web_contents_getter,
diff --git a/src/core/content_client_qt.cpp b/src/core/content_client_qt.cpp
index fe0ea6a0d..a2b8c4da3 100644
--- a/src/core/content_client_qt.cpp
+++ b/src/core/content_client_qt.cpp
@@ -251,7 +251,8 @@ namespace QtWebEngineCore {
 #if defined(WIDEVINE_CDM_AVAILABLE_NOT_COMPONENT)
 static bool IsWidevineAvailable(base::FilePath *cdm_path,
                                 std::vector<media::VideoCodec> *codecs_supported,
-                                bool *supports_persistent_license)
+                                bool *supports_persistent_license,
+                                base::flat_set<media::EncryptionMode>* modes_supported)
 {
     QStringList pluginPaths;
     const base::CommandLine::StringType widevine_argument = base::CommandLine::ForCurrentProcess()->GetSwitchValueNative(switches::kCdmWidevinePath);
@@ -307,6 +308,8 @@ static bool IsWidevineAvailable(base::FilePath *cdm_path,
 
             *supports_persistent_license = false;
 
+            modes_supported->insert(media::EncryptionMode::kCenc);
+
             return true;
         }
     }
@@ -324,12 +327,15 @@ void ContentClientQt::AddContentDecryptionModules(std::vector<content::CdmInfo>
         base::FilePath cdm_path;
         std::vector<media::VideoCodec> video_codecs_supported;
         bool supports_persistent_license = false;
+        base::flat_set<media::EncryptionMode> encryption_modes_supported;
         if (IsWidevineAvailable(&cdm_path, &video_codecs_supported,
-                                &supports_persistent_license)) {
+                                &supports_persistent_license,
+                                &encryption_modes_supported)) {
             const base::Version version;
             cdms->push_back(content::CdmInfo(kWidevineCdmDisplayName, kWidevineCdmGuid, version, cdm_path,
                                              kWidevineCdmFileSystemId, video_codecs_supported,
-                                             supports_persistent_license, kWidevineKeySystem, false));
+                                             supports_persistent_license, encryption_modes_supported,
+                                             kWidevineKeySystem, false));
         }
 #endif  // defined(WIDEVINE_CDM_AVAILABLE_NOT_COMPONENT)
 
@@ -355,12 +361,14 @@ void ContentClientQt::AddContentDecryptionModules(std::vector<content::CdmInfo>
             cdms->push_back(content::CdmInfo(media::kClearKeyCdmDisplayName, media::kClearKeyCdmDifferentGuid,
                                              base::Version("0.1.0.0"), clear_key_cdm_path,
                                              media::kClearKeyCdmFileSystemId, {}, supports_persistent_license,
+                                             {media::EncryptionMode::kCenc, media::EncryptionMode::kCbcs},
                                              kExternalClearKeyDifferentGuidTestKeySystem, false));
 
             // Supported codecs are hard-coded in ExternalClearKeyProperties.
             cdms->push_back(content::CdmInfo(media::kClearKeyCdmDisplayName, media::kClearKeyCdmGuid,
                                              base::Version("0.1.0.0"), clear_key_cdm_path,
                                              media::kClearKeyCdmFileSystemId, {}, supports_persistent_license,
+                                             {media::EncryptionMode::kCenc, media::EncryptionMode::kCbcs},
                                              kExternalClearKeyKeySystem, true));
         }
 #endif  // BUILDFLAG(ENABLE_LIBRARY_CDMS)
diff --git a/src/core/content_main_delegate_qt.cpp b/src/core/content_main_delegate_qt.cpp
index 3989170a0..d9ddf3f49 100644
--- a/src/core/content_main_delegate_qt.cpp
+++ b/src/core/content_main_delegate_qt.cpp
@@ -53,6 +53,7 @@
 #include <ui/base/webui/jstemplate_builder.h>
 #include "net/grit/net_resources.h"
 #include "net/base/net_module.h"
+#include "services/service_manager/sandbox/switches.h"
 #include "url/url_util_qt.h"
 
 #include "content_client_qt.h"
@@ -171,7 +172,7 @@ content::ContentRendererClient *ContentMainDelegateQt::CreateContentRendererClie
 #if defined(OS_LINUX)
     base::CommandLine *parsedCommandLine = base::CommandLine::ForCurrentProcess();
     std::string process_type = parsedCommandLine->GetSwitchValueASCII(switches::kProcessType);
-    bool no_sandbox = parsedCommandLine->HasSwitch(switches::kNoSandbox);
+    bool no_sandbox = parsedCommandLine->HasSwitch(service_manager::switches::kNoSandbox);
 
     // Reload locale if the renderer process is sandboxed
     if (process_type == switches::kRendererProcess && !no_sandbox) {
@@ -196,7 +197,7 @@ static void SafeOverridePathImpl(const char *keyName, int key, const base::FileP
         return;
 
     // Do not create directories for overridden paths.
-    if (PathService::OverrideAndCreateIfNeeded(key, path, false, false))
+    if (base::PathService::OverrideAndCreateIfNeeded(key, path, false, false))
         return;
 
     qWarning("Path override failed for key %s and path '%s'", keyName, path.value().c_str());
diff --git a/src/core/delegated_frame_node.cpp b/src/core/delegated_frame_node.cpp
index a3afc2002..2c0824815 100644
--- a/src/core/delegated_frame_node.cpp
+++ b/src/core/delegated_frame_node.cpp
@@ -1260,7 +1260,7 @@ void DelegatedFrameNode::fetchAndSyncMailboxes(QList<MailboxTexture *> &mailboxe
         mailboxesToPull.reserve(mailboxesToFetch.size());
 
         gpu::SyncPointManager *syncPointManager = sync_point_manager();
-        base::MessageLoop *gpuMessageLoop = gpu_message_loop();
+        scoped_refptr<base::SingleThreadTaskRunner> gpuTaskRunner = gpu_task_runner();
         Q_ASSERT(m_numPendingSyncPoints == 0);
         m_numPendingSyncPoints = mailboxesToFetch.count();
         for (MailboxTexture *mailboxTexture : qAsConst(mailboxesToFetch)) {
@@ -1271,7 +1271,7 @@ void DelegatedFrameNode::fetchAndSyncMailboxes(QList<MailboxTexture *> &mailboxe
         }
         if (!mailboxesToPull.isEmpty()) {
             auto task = base::BindOnce(&DelegatedFrameNode::pullTextures, this, std::move(mailboxesToPull));
-            gpuMessageLoop->task_runner()->PostTask(FROM_HERE, std::move(task));
+            gpuTaskRunner->PostTask(FROM_HERE, std::move(task));
         }
 
         m_mailboxesFetchedWaitCond.wait(&m_mutex);
diff --git a/src/core/login_delegate_qt.cpp b/src/core/login_delegate_qt.cpp
index 34245971f..6dd2aa5ed 100644
--- a/src/core/login_delegate_qt.cpp
+++ b/src/core/login_delegate_qt.cpp
@@ -61,10 +61,10 @@ LoginDelegateQt::LoginDelegateQt(
         content::ResourceRequestInfo::WebContentsGetter web_contents_getter,
         GURL url,
         bool first_auth_attempt,
-        const base::Callback<void(const base::Optional<net::AuthCredentials>&)> &auth_required_callback)
+        LoginAuthRequiredCallback auth_required_callback)
     : m_authInfo(authInfo)
     , m_url(url)
-    , m_auth_required_callback(auth_required_callback)
+    , m_auth_required_callback(std::move(auth_required_callback))
 {
     Q_ASSERT(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO));
 
diff --git a/src/core/login_delegate_qt.h b/src/core/login_delegate_qt.h
index 83ddc4322..9ce5df843 100644
--- a/src/core/login_delegate_qt.h
+++ b/src/core/login_delegate_qt.h
@@ -40,6 +40,7 @@
 #ifndef LOGIN_DELEGATE_QT_H
 #define LOGIN_DELEGATE_QT_H
 
+#include "content/public/browser/content_browser_client.h"
 #include "content/public/browser/login_delegate.h"
 #include "content/public/browser/resource_request_info.h"
 #include "url/gurl.h"
@@ -61,7 +62,7 @@ public:
                     content::ResourceRequestInfo::WebContentsGetter web_contents_getter,
                     GURL url,
                     bool first_auth_attempt,
-                    const base::Callback<void(const base::Optional<net::AuthCredentials>&)> &auth_required_callback);
+                    LoginAuthRequiredCallback auth_required_callback);
 
     ~LoginDelegateQt();
 
@@ -82,7 +83,7 @@ private:
     scoped_refptr<net::AuthChallengeInfo> m_authInfo;
 
     GURL m_url;
-    base::Callback<void(const base::Optional<net::AuthCredentials>&)> m_auth_required_callback;
+    LoginAuthRequiredCallback m_auth_required_callback;
 
     // This member is used to keep authentication dialog controller alive until
     // authorization is sent or cancelled.
diff --git a/src/core/ozone/platform_window_qt.h b/src/core/ozone/platform_window_qt.h
index 030a53c87..b712b706a 100644
--- a/src/core/ozone/platform_window_qt.h
+++ b/src/core/ozone/platform_window_qt.h
@@ -70,6 +70,7 @@ public:
     void Maximize() override { }
     void Minimize() override { }
     void Restore() override { }
+    PlatformWindowState GetPlatformWindowState() const override { return PLATFORM_WINDOW_STATE_UNKNOWN; }
     void SetCursor(PlatformCursor) override { }
     void MoveCursorTo(const gfx::Point&) override { }
     void ConfineCursorToBounds(const gfx::Rect&) override { }
diff --git a/src/core/printing/pdfium_document_wrapper_qt.cpp b/src/core/printing/pdfium_document_wrapper_qt.cpp
index 47c207a8a..a18258d0e 100644
--- a/src/core/printing/pdfium_document_wrapper_qt.cpp
+++ b/src/core/printing/pdfium_document_wrapper_qt.cpp
@@ -50,7 +50,7 @@ int PdfiumDocumentWrapperQt::m_libraryUsers = 0;
 
 class QWEBENGINECORE_PRIVATE_EXPORT PdfiumPageWrapperQt {
 public:
-    PdfiumPageWrapperQt(void *data, int pageIndex, int targetWidth, int targetHeight)
+    PdfiumPageWrapperQt(FPDF_DOCUMENT data, int pageIndex, int targetWidth, int targetHeight)
         : m_pageData(FPDF_LoadPage(data, pageIndex))
         , m_width(FPDF_GetPageWidth(m_pageData))
         , m_height(FPDF_GetPageHeight(m_pageData))
@@ -106,7 +106,7 @@ private:
     }
 
 private:
-    void *m_pageData;
+    FPDF_PAGE m_pageData;
     int m_width;
     int m_height;
     int m_index;
@@ -124,8 +124,8 @@ PdfiumDocumentWrapperQt::PdfiumDocumentWrapperQt(const void *pdfData, size_t siz
     if (m_libraryUsers++ == 0)
         FPDF_InitLibrary();
 
-    m_documentHandle = FPDF_LoadMemDocument(pdfData, static_cast<int>(size), password);
-    m_pageCount = FPDF_GetPageCount(m_documentHandle);
+    m_documentHandle = (void *)FPDF_LoadMemDocument(pdfData, static_cast<int>(size), password);
+    m_pageCount = FPDF_GetPageCount((FPDF_DOCUMENT)m_documentHandle);
 }
 
 QImage PdfiumDocumentWrapperQt::pageAsQImage(size_t index)
@@ -140,14 +140,14 @@ QImage PdfiumDocumentWrapperQt::pageAsQImage(size_t index)
         return QImage();
     }
 
-    PdfiumPageWrapperQt pageWrapper(m_documentHandle, index,
+    PdfiumPageWrapperQt pageWrapper((FPDF_DOCUMENT)m_documentHandle, index,
                                     m_imageSize.width(), m_imageSize.height());
     return pageWrapper.image();
 }
 
 PdfiumDocumentWrapperQt::~PdfiumDocumentWrapperQt()
 {
-    FPDF_CloseDocument(m_documentHandle);
+    FPDF_CloseDocument((FPDF_DOCUMENT)m_documentHandle);
     if (--m_libraryUsers == 0)
         FPDF_DestroyLibrary();
 }
diff --git a/src/core/printing/print_view_manager_base_qt.cpp b/src/core/printing/print_view_manager_base_qt.cpp
index 6c67adbc7..0e7239ef8 100644
--- a/src/core/printing/print_view_manager_base_qt.cpp
+++ b/src/core/printing/print_view_manager_base_qt.cpp
@@ -343,7 +343,7 @@ void PrintViewManagerBaseQt::ShouldQuitFromInnerMessageLoop()
     }
 }
 
-bool PrintViewManagerBaseQt::CreateNewPrintJob(printing::PrintJobWorkerOwner* job)
+bool PrintViewManagerBaseQt::CreateNewPrintJob(printing::PrinterQuery *job)
 {
     DCHECK(!m_isInsideInnerMessageLoop);
 
@@ -455,8 +455,7 @@ bool PrintViewManagerBaseQt::RunInnerMessageLoop() {
 
   // Need to enable recursive task.
   {
-      base::MessageLoop::ScopedNestableTaskAllower allow(
-             base::MessageLoop::current());
+      base::MessageLoop::ScopedNestableTaskAllower allow;
       run_loop.Run();
   }
 
diff --git a/src/core/printing/print_view_manager_base_qt.h b/src/core/printing/print_view_manager_base_qt.h
index eb4302fe8..3ade02f0d 100644
--- a/src/core/printing/print_view_manager_base_qt.h
+++ b/src/core/printing/print_view_manager_base_qt.h
@@ -147,7 +147,7 @@ protected:
     void TerminatePrintJob(bool cancel);
     void DisconnectFromCurrentPrintJob();
 
-    bool CreateNewPrintJob(printing::PrintJobWorkerOwner* job);
+    bool CreateNewPrintJob(printing::PrinterQuery *job);
     void ReleasePrintJob();
     void ReleasePrinterQuery();
 
diff --git a/src/core/printing/print_view_manager_qt.cpp b/src/core/printing/print_view_manager_qt.cpp
index 508042e48..1619c1001 100644
--- a/src/core/printing/print_view_manager_qt.cpp
+++ b/src/core/printing/print_view_manager_qt.cpp
@@ -132,16 +132,13 @@ static base::DictionaryValue *createPrintSettings()
     printSettings->SetBoolean(printing::kSettingPrintWithPrivet, false);
     printSettings->SetBoolean(printing::kSettingPrintWithExtension, false);
 
-    printSettings->SetBoolean(printing::kSettingGenerateDraftData, false);
-    printSettings->SetBoolean(printing::kSettingPreviewModifiable, false);
-
     printSettings->SetInteger(printing::kSettingDpiHorizontal, printing::kPointsPerInch);
     printSettings->SetInteger(printing::kSettingDpiVertical, printing::kPointsPerInch);
 
     printSettings->SetInteger(printing::kSettingDuplexMode, printing::SIMPLEX);
     printSettings->SetInteger(printing::kSettingCopies, 1);
     printSettings->SetBoolean(printing::kSettingCollate, false);
-    printSettings->SetBoolean(printing::kSettingGenerateDraftData, false);
+//    printSettings->SetBoolean(printing::kSettingGenerateDraftData, false);
     printSettings->SetBoolean(printing::kSettingPreviewModifiable, false);
 
     printSettings->SetBoolean(printing::kSettingShouldPrintSelectionOnly, false);
diff --git a/src/core/profile_io_data_qt.cpp b/src/core/profile_io_data_qt.cpp
index 0bc28ba46..d51ff2bb1 100644
--- a/src/core/profile_io_data_qt.cpp
+++ b/src/core/profile_io_data_qt.cpp
@@ -40,6 +40,7 @@
 #include "profile_io_data_qt.h"
 
 #include "base/task_scheduler/post_task.h"
+#include "components/certificate_transparency/ct_known_logs.h"
 #include "content/public/browser/browser_thread.h"
 #include "content/public/browser/browsing_data_remover.h"
 #include "content/public/browser/cookie_store_factory.h"
@@ -47,8 +48,8 @@
 #include "chrome/browser/custom_handlers/protocol_handler_registry_factory.h"
 #include "chrome/browser/net/chrome_mojo_proxy_resolver_factory.h"
 #include "net/cert/cert_verifier.h"
-#include "net/cert/ct_known_logs.h"
 #include "net/cert/ct_log_verifier.h"
+#include "net/cert/ct_policy_enforcer.h"
 #include "net/cert/multi_log_ct_verifier.h"
 #include "net/extras/sqlite/sqlite_channel_id_store.h"
 #include "net/http/http_auth_handler_factory.h"
@@ -268,9 +269,10 @@ void ProfileIODataQt::generateStorage()
 
     m_storage->set_cert_verifier(net::CertVerifier::CreateDefault());
     std::unique_ptr<net::MultiLogCTVerifier> ct_verifier(new net::MultiLogCTVerifier());
-    ct_verifier->AddLogs(net::ct::CreateLogVerifiersForKnownLogs());
+//    FIXME:
+//    ct_verifier->AddLogs(net::ct::CreateLogVerifiersForKnownLogs());
     m_storage->set_cert_transparency_verifier(std::move(ct_verifier));
-    m_storage->set_ct_policy_enforcer(base::WrapUnique(new net::CTPolicyEnforcer));
+    m_storage->set_ct_policy_enforcer(base::WrapUnique(new net::DefaultCTPolicyEnforcer()));
 
     std::unique_ptr<net::HostResolver> host_resolver(net::HostResolver::CreateDefaultResolver(NULL));
 
@@ -282,7 +284,7 @@ void ProfileIODataQt::generateStorage()
     m_storage->set_proxy_resolution_service(network::CreateProxyResolutionServiceUsingMojoFactory(
                                                 std::move(m_proxyResolverFactory),
                                                 std::unique_ptr<net::ProxyConfigService>(proxyConfigService),
-                                                std::make_unique<net::PacFileFetcherImpl>(m_urlRequestContext.get()),
+                                                net::PacFileFetcherImpl::Create(m_urlRequestContext.get()),
                                                 m_dhcpPacFileFetcherFactory->Create(m_urlRequestContext.get()),
                                                 host_resolver.get(),
                                                 nullptr /* NetLog */,
diff --git a/src/core/qtwebengine_sources.gni b/src/core/qtwebengine_sources.gni
index be73cb81f..d8aaa17b2 100644
--- a/src/core/qtwebengine_sources.gni
+++ b/src/core/qtwebengine_sources.gni
@@ -124,8 +124,6 @@ source_set("qtwebengine_sources") {
       "//chrome/browser/printing/print_job_manager.h",
       "//chrome/browser/printing/print_job_worker.cc",
       "//chrome/browser/printing/print_job_worker.h",
-      "//chrome/browser/printing/print_job_worker_owner.cc",
-      "//chrome/browser/printing/print_job_worker_owner.h",
     ]
     deps += [
       "//printing/buildflags:buildflags",
diff --git a/src/core/render_widget_host_view_qt.cpp b/src/core/render_widget_host_view_qt.cpp
index a3c5b06d1..15881674c 100644
--- a/src/core/render_widget_host_view_qt.cpp
+++ b/src/core/render_widget_host_view_qt.cpp
@@ -66,7 +66,6 @@
 #include "content/public/browser/browser_thread.h"
 #include "content/public/common/content_switches.h"
 #include "third_party/skia/include/core/SkColor.h"
-#include "third_party/blink/public/platform/web_color.h"
 #include "third_party/blink/public/platform/web_cursor_info.h"
 #include "ui/base/clipboard/scoped_clipboard_writer.h"
 #include "ui/base/resource/resource_bundle.h"
@@ -118,14 +117,11 @@ enum ImStateFlags {
 static inline ui::LatencyInfo CreateLatencyInfo(const blink::WebInputEvent& event) {
   ui::LatencyInfo latency_info;
   // The latency number should only be added if the timestamp is valid.
-  if (event.TimeStampSeconds()) {
-    const int64_t time_micros = static_cast<int64_t>(
-        event.TimeStampSeconds() * base::Time::kMicrosecondsPerSecond);
+  if (!event.TimeStamp().is_null()) {
     latency_info.AddLatencyNumberWithTimestamp(
         ui::INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT,
         0,
-        0,
-        base::TimeTicks() + base::TimeDelta::FromMicroseconds(time_micros),
+        event.TimeStamp(),
         1);
   }
   return latency_info;
@@ -330,7 +326,6 @@ RenderWidgetHostViewQt::RenderWidgetHostViewQt(content::RenderWidgetHost *widget
     , m_imeInProgress(false)
     , m_receivedEmptyImeEvent(false)
     , m_initPending(false)
-    , m_backgroundColor(SK_ColorWHITE)
     , m_imState(0)
     , m_anchorPositionWithinSelection(-1)
     , m_cursorPositionWithinSelection(-1)
@@ -419,11 +414,6 @@ void RenderWidgetHostViewQt::SetBounds(const gfx::Rect& screenRect)
     SetSize(screenRect.size());
 }
 
-gfx::Vector2d RenderWidgetHostViewQt::GetOffsetFromRootSurface()
-{
-    return gfx::Vector2d();
-}
-
 gfx::Size RenderWidgetHostViewQt::GetCompositorViewportPixelSize() const
 {
     if (!m_delegate || !m_delegate->window() || !m_delegate->window()->screen())
@@ -506,21 +496,12 @@ gfx::Rect RenderWidgetHostViewQt::GetViewBounds() const
     return gfx::BoundingRect(p1, p2);
 }
 
-SkColor RenderWidgetHostViewQt::background_color() const
+void RenderWidgetHostViewQt::UpdateBackgroundColor()
 {
-    return m_backgroundColor;
-}
-
-void RenderWidgetHostViewQt::SetBackgroundColor(SkColor color)
-{
-    if (m_backgroundColor == color)
-        return;
-    m_backgroundColor = color;
-    // Set the background of the compositor if necessary
-    m_delegate->setClearColor(toQt(color));
-    // Set the background of the blink::FrameView
-    host()->SetBackgroundOpaque(SkColorGetA(color) == SK_AlphaOPAQUE);
-    host()->Send(new RenderViewObserverQt_SetBackgroundColor(host()->GetRoutingID(), color));
+    auto color = GetBackgroundColor();
+    if (color) {
+        m_delegate->setClearColor(toQt(*color));
+    }
 }
 
 // Return value indicates whether the mouse is locked successfully or not.
@@ -746,13 +727,12 @@ void RenderWidgetHostViewQt::DidCreateNewRendererCompositorFrameSink(viz::mojom:
     m_compositor->setFrameSinkClient(frameSink);
 }
 
-void RenderWidgetHostViewQt::SubmitCompositorFrame(const viz::LocalSurfaceId &local_surface_id, viz::CompositorFrame frame, viz::mojom::HitTestRegionListPtr)
+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);
     m_lastScrollOffset = frame.metadata.root_scroll_offset;
     m_lastContentsSize = frame.metadata.root_layer_size;
-    m_backgroundColor = frame.metadata.root_background_color;
     if (m_localSurfaceId != local_surface_id) {
         m_localSurfaceId = local_surface_id;
         // FIXME: update frame_size and device_scale_factor?
@@ -966,7 +946,7 @@ QSGNode *RenderWidgetHostViewQt::updatePaintNode(QSGNode *oldNode)
 
 void RenderWidgetHostViewQt::notifyResize()
 {
-    host()->WasResized();
+    host()->SynchronizeVisualProperties();
     host()->SendScreenRects();
 }
 
@@ -1711,7 +1691,9 @@ void RenderWidgetHostViewQt::TakeFallbackContentFrom(content::RenderWidgetHostVi
 {
     DCHECK(!static_cast<RenderWidgetHostViewBase*>(view)->IsRenderWidgetHostViewChildFrame());
     DCHECK(!static_cast<RenderWidgetHostViewBase*>(view)->IsRenderWidgetHostViewGuest());
-    SetBackgroundColor(view->background_color());
+    base::Optional<SkColor> color = view->GetBackgroundColor();
+    if (color)
+        SetBackgroundColor(*color);
 }
 
 } // namespace QtWebEngineCore
diff --git a/src/core/render_widget_host_view_qt.h b/src/core/render_widget_host_view_qt.h
index 909b3bd84..26fd16631 100644
--- a/src/core/render_widget_host_view_qt.h
+++ b/src/core/render_widget_host_view_qt.h
@@ -116,7 +116,6 @@ public:
     void InitAsFullscreen(content::RenderWidgetHostView*) override;
     void SetSize(const gfx::Size& size) override;
     void SetBounds(const gfx::Rect&) override;
-    gfx::Vector2d GetOffsetFromRootSurface() override;
     gfx::Size GetCompositorViewportPixelSize() const override;
     gfx::NativeView GetNativeView() const override;
     gfx::NativeViewAccessible GetNativeViewAccessible() override;
@@ -127,8 +126,7 @@ public:
     void Hide() override;
     bool IsShowing() override;
     gfx::Rect GetViewBounds() const override;
-    SkColor background_color() const override;
-    void SetBackgroundColor(SkColor color) override;
+    void UpdateBackgroundColor() override;
     bool LockMouse() override;
     void UnlockMouse() override;
     void UpdateCursor(const content::WebCursor&) override;
@@ -141,7 +139,7 @@ public:
     void SetTooltipText(const base::string16 &tooltip_text) override;
     void DisplayTooltipText(const base::string16& tooltip_text) override;
     void DidCreateNewRendererCompositorFrameSink(viz::mojom::CompositorFrameSinkClient* renderer_compositor_frame_sink) override;
-    void SubmitCompositorFrame(const viz::LocalSurfaceId&, viz::CompositorFrame, viz::mojom::HitTestRegionListPtr) override;
+    void SubmitCompositorFrame(const viz::LocalSurfaceId&, viz::CompositorFrame, base::Optional<viz::HitTestRegionList>) override;
     void WheelEventAck(const blink::WebMouseWheelEvent &event, content::InputEventAckState ack_result) override;
 
     void GetScreenInfo(content::ScreenInfo* results) const override;
@@ -152,6 +150,7 @@ public:
     void SetWantsAnimateOnlyBeginFrames() override;
     viz::SurfaceId GetCurrentSurfaceId() const override;
     void TakeFallbackContentFrom(content::RenderWidgetHostView *view) override;
+    void EnsureSurfaceSynchronizedForLayoutTest() override { QT_NOT_USED }
 
     // Overridden from ui::GestureProviderClient.
     void OnGestureEvent(const ui::GestureEventData& gesture) override;
@@ -243,7 +242,6 @@ private:
 
     gfx::Vector2dF m_lastScrollOffset;
     gfx::SizeF m_lastContentsSize;
-    SkColor m_backgroundColor;
     viz::LocalSurfaceId m_localSurfaceId;
 
     uint m_imState;
diff --git a/src/core/renderer/content_renderer_client_qt.cpp b/src/core/renderer/content_renderer_client_qt.cpp
index e9f404cb1..0466bfeb4 100644
--- a/src/core/renderer/content_renderer_client_qt.cpp
+++ b/src/core/renderer/content_renderer_client_qt.cpp
@@ -311,9 +311,11 @@ static void AddExternalClearKey(std::vector<std::unique_ptr<media::KeySystemProp
 
     std::vector<media::VideoCodec> supported_video_codecs;
     bool supports_persistent_license;
+    std::vector<media::EncryptionMode> supported_encryption_schemes;
     if (!content::IsKeySystemSupported(kExternalClearKeyKeySystem,
                                        &supported_video_codecs,
-                                       &supports_persistent_license)) {
+                                       &supports_persistent_license,
+                                       &supported_encryption_schemes)) {
         return;
     }
 
@@ -373,9 +375,11 @@ static void AddWidevine(std::vector<std::unique_ptr<media::KeySystemProperties>>
 {
     std::vector<media::VideoCodec> supported_video_codecs;
     bool supports_persistent_license = false;
+    std::vector<media::EncryptionMode> supported_encryption_schemes;
     if (!content::IsKeySystemSupported(kWidevineKeySystem,
                                        &supported_video_codecs,
-                                       &supports_persistent_license)) {
+                                       &supports_persistent_license,
+                                       &supported_encryption_schemes)) {
         DVLOG(1) << "Widevine CDM is not currently available.";
         return;
     }
@@ -417,7 +421,7 @@ static void AddWidevine(std::vector<std::unique_ptr<media::KeySystemProperties>>
     using Robustness = cdm::WidevineKeySystemProperties::Robustness;
 
     concrete_key_systems->emplace_back(new cdm::WidevineKeySystemProperties(
-                                           supported_codecs,
+                                           supported_encryption_schemes, supported_codecs,
                                            Robustness::SW_SECURE_CRYPTO,          // Maximum audio robustness.
                                            Robustness::SW_SECURE_DECODE,          // Maximum video robustness.
                                            persistent_license_support,            // persistent-license.
diff --git a/src/core/renderer/render_view_observer_qt.cpp b/src/core/renderer/render_view_observer_qt.cpp
index d37b67ebc..07dadfd40 100644
--- a/src/core/renderer/render_view_observer_qt.cpp
+++ b/src/core/renderer/render_view_observer_qt.cpp
@@ -78,11 +78,6 @@ void RenderViewObserverQt::onFetchDocumentInnerText(quint64 requestId)
     Send(new RenderViewObserverHostQt_DidFetchDocumentInnerText(routing_id(), requestId, text.Utf16()));
 }
 
-void RenderViewObserverQt::onSetBackgroundColor(quint32 color)
-{
-    render_view()->GetWebFrameWidget()->SetBaseBackgroundColor(color);
-}
-
 void RenderViewObserverQt::OnDestruct()
 {
     delete this;
@@ -94,7 +89,6 @@ bool RenderViewObserverQt::OnMessageReceived(const IPC::Message& message)
     IPC_BEGIN_MESSAGE_MAP(RenderViewObserverQt, message)
         IPC_MESSAGE_HANDLER(RenderViewObserverQt_FetchDocumentMarkup, onFetchDocumentMarkup)
         IPC_MESSAGE_HANDLER(RenderViewObserverQt_FetchDocumentInnerText, onFetchDocumentInnerText)
-        IPC_MESSAGE_HANDLER(RenderViewObserverQt_SetBackgroundColor, onSetBackgroundColor)
         IPC_MESSAGE_UNHANDLED(handled = false)
     IPC_END_MESSAGE_MAP()
     return handled;
diff --git a/src/core/renderer/render_view_observer_qt.h b/src/core/renderer/render_view_observer_qt.h
index abb472f02..83c0cd265 100644
--- a/src/core/renderer/render_view_observer_qt.h
+++ b/src/core/renderer/render_view_observer_qt.h
@@ -55,7 +55,6 @@ public:
 private:
     void onFetchDocumentMarkup(quint64 requestId);
     void onFetchDocumentInnerText(quint64 requestId);
-    void onSetBackgroundColor(quint32 color);
 
     void OnDestruct() override;
 
diff --git a/src/core/renderer/user_resource_controller.cpp b/src/core/renderer/user_resource_controller.cpp
index b8cf8b077..920fda72e 100644
--- a/src/core/renderer/user_resource_controller.cpp
+++ b/src/core/renderer/user_resource_controller.cpp
@@ -209,7 +209,7 @@ void UserResourceController::runScripts(UserScriptData::InjectionPoint p, blink:
             continue;
         blink::WebScriptSource source(blink::WebString::FromUTF8(script.source), script.url);
         if (script.worldId)
-            frame->ExecuteScriptInIsolatedWorld(script.worldId, &source, /*numSources = */1);
+            frame->ExecuteScriptInIsolatedWorld(script.worldId, source);
         else
             frame->ExecuteScript(source);
     }
diff --git a/src/core/resource_bundle_qt.cpp b/src/core/resource_bundle_qt.cpp
index c37854ea6..428faa34e 100644
--- a/src/core/resource_bundle_qt.cpp
+++ b/src/core/resource_bundle_qt.cpp
@@ -40,6 +40,7 @@
 #include "base/command_line.h"
 #include "base/metrics/histogram_macros.h"
 #include "content/public/common/content_switches.h"
+#include "services/service_manager/sandbox/switches.h"
 #include "ui/base/l10n/l10n_util.h"
 #include "ui/base/resource/data_pack.h"
 #include "ui/base/resource/resource_bundle.h"
@@ -75,7 +76,7 @@ bool ResourceBundle::LocaleDataPakExists(const std::string& locale)
 #if defined(OS_LINUX)
     base::CommandLine *parsed_command_line = base::CommandLine::ForCurrentProcess();
     std::string process_type = parsed_command_line->GetSwitchValueASCII(switches::kProcessType);
-    bool no_sandbox = parsed_command_line->HasSwitch(switches::kNoSandbox);
+    bool no_sandbox = parsed_command_line->HasSwitch(service_manager::switches::kNoSandbox);
     if (process_type == switches::kRendererProcess && !no_sandbox) {
         // The Renderer Process is sandboxed thus only one locale is available in it.
         // The particular one is passed by the --lang command line option.
diff --git a/src/core/web_contents_adapter.cpp b/src/core/web_contents_adapter.cpp
index 2e3f3785a..8ea7187d4 100644
--- a/src/core/web_contents_adapter.cpp
+++ b/src/core/web_contents_adapter.cpp
@@ -222,7 +222,7 @@ static void callbackOnPdfSavingFinished(WebContentsAdapterClient *adapterClient,
 }
 #endif
 
-static content::WebContents *createBlankWebContents(WebContentsAdapterClient *adapterClient, content::BrowserContext *browserContext)
+static std::unique_ptr<content::WebContents> createBlankWebContents(WebContentsAdapterClient *adapterClient, content::BrowserContext *browserContext)
 {
     content::WebContents::CreateParams create_params(browserContext, NULL);
     create_params.routing_id = MSG_ROUTING_NONE;
@@ -323,7 +323,8 @@ static void deserializeNavigationHistory(QDataStream &input, int *currentIndex,
             false,
             // The extra headers are not sync'ed across sessions.
             std::string(),
-            browserContext);
+            browserContext,
+            nullptr);
 
         entry->SetTitle(toString16(title));
         entry->SetPageState(content::PageState::CreateFromEncodedData(std::string(pageState.data(), pageState.size())));
@@ -370,7 +371,7 @@ QSharedPointer<WebContentsAdapter> WebContentsAdapter::createFromSerializedNavig
         return QSharedPointer<WebContentsAdapter>();
 
     // Unlike WebCore, Chromium only supports Restoring to a new WebContents instance.
-    content::WebContents* newWebContents = createBlankWebContents(adapterClient, adapterClient->profileAdapter()->profile());
+    std::unique_ptr<content::WebContents> newWebContents = createBlankWebContents(adapterClient, adapterClient->profileAdapter()->profile());
     content::NavigationController &controller = newWebContents->GetController();
     controller.Restore(currentIndex, content::RestoreType::LAST_SESSION_EXITED_CLEANLY, &entries);
 
@@ -385,12 +386,29 @@ QSharedPointer<WebContentsAdapter> WebContentsAdapter::createFromSerializedNavig
             content::ChildProcessSecurityPolicy::GetInstance()->GrantReadFile(id, *file);
     }
 
-    return QSharedPointer<WebContentsAdapter>::create(newWebContents);
+    return QSharedPointer<WebContentsAdapter>::create(std::move(newWebContents));
 }
 
-WebContentsAdapter::WebContentsAdapter(content::WebContents *webContents)
+WebContentsAdapter::WebContentsAdapter()
   : m_profileAdapter(nullptr)
-  , m_webContents(webContents)
+  , m_webContents(nullptr)
+#if QT_CONFIG(webengine_webchannel)
+  , m_webChannel(nullptr)
+  , m_webChannelWorld(0)
+#endif
+  , m_adapterClient(nullptr)
+  , m_nextRequestId(CallbackDirectory::ReservedCallbackIdsEnd)
+  , m_lastFindRequestId(0)
+  , m_currentDropAction(blink::kWebDragOperationNone)
+  , m_devToolsFrontend(nullptr)
+{
+    // This has to be the first thing we create, and the last we destroy.
+    WebEngineContext::current();
+}
+
+WebContentsAdapter::WebContentsAdapter(std::unique_ptr<content::WebContents> webContents)
+  : m_profileAdapter(nullptr)
+  , m_webContents(std::move(webContents))
 #if QT_CONFIG(webengine_webchannel)
   , m_webChannel(nullptr)
   , m_webChannelWorld(0)
@@ -439,7 +457,7 @@ void WebContentsAdapter::initialize(content::SiteInstance *site)
         create_params.initial_size = gfx::Size(kTestWindowWidth, kTestWindowHeight);
         create_params.context = reinterpret_cast<gfx::NativeView>(m_adapterClient);
         create_params.initially_hidden = true;
-        m_webContents.reset(content::WebContents::Create(create_params));
+        m_webContents = content::WebContents::Create(create_params);
     }
 
     content::RendererPreferences* rendererPrefs = m_webContents->GetMutableRendererPrefs();
@@ -1375,7 +1393,7 @@ void WebContentsAdapter::startDragging(QObject *dragSource, const content::DropD
     }
 
     {
-        base::MessageLoop::ScopedNestableTaskAllower allow(base::MessageLoop::current());
+        base::MessageLoop::ScopedNestableTaskAllower allow;
         drag->exec(allowedActions);
     }
 
diff --git a/src/core/web_contents_adapter.h b/src/core/web_contents_adapter.h
index fcdac94b8..8e02a852b 100644
--- a/src/core/web_contents_adapter.h
+++ b/src/core/web_contents_adapter.h
@@ -94,8 +94,8 @@ class WebEngineContext;
 class QWEBENGINECORE_PRIVATE_EXPORT WebContentsAdapter : public QEnableSharedFromThis<WebContentsAdapter> {
 public:
     static QSharedPointer<WebContentsAdapter> createFromSerializedNavigationHistory(QDataStream &input, WebContentsAdapterClient *adapterClient);
-    // Takes ownership of the WebContents.
-    WebContentsAdapter(content::WebContents *webContents = 0);
+    WebContentsAdapter();
+    WebContentsAdapter(std::unique_ptr<content::WebContents> webContents);
     ~WebContentsAdapter();
 
     void setClient(WebContentsAdapterClient *adapterClient);
diff --git a/src/core/web_contents_delegate_qt.cpp b/src/core/web_contents_delegate_qt.cpp
index 36703c225..68755ae70 100644
--- a/src/core/web_contents_delegate_qt.cpp
+++ b/src/core/web_contents_delegate_qt.cpp
@@ -219,10 +219,10 @@ void WebContentsDelegateQt::NavigationStateChanged(content::WebContents* source,
     }
 }
 
-void WebContentsDelegateQt::AddNewContents(content::WebContents* source, content::WebContents* new_contents, WindowOpenDisposition disposition, const gfx::Rect& initial_pos, bool user_gesture, bool* was_blocked)
+void WebContentsDelegateQt::AddNewContents(content::WebContents* source, std::unique_ptr<content::WebContents> new_contents, WindowOpenDisposition disposition, const gfx::Rect& initial_pos, bool user_gesture, bool* was_blocked)
 {
     Q_UNUSED(source)
-    QSharedPointer<WebContentsAdapter> newAdapter = createWindow(new_contents, disposition, initial_pos, user_gesture);
+    QSharedPointer<WebContentsAdapter> newAdapter = createWindow(std::move(new_contents), disposition, initial_pos, user_gesture);
     if (newAdapter && !newAdapter->isInitialized())
         newAdapter->loadDefault();
     if (was_blocked)
@@ -419,7 +419,7 @@ content::JavaScriptDialogManager *WebContentsDelegateQt::GetJavaScriptDialogMana
     return JavaScriptDialogManagerQt::GetInstance();
 }
 
-void WebContentsDelegateQt::EnterFullscreenModeForTab(content::WebContents *web_contents, const GURL& origin)
+void WebContentsDelegateQt::EnterFullscreenModeForTab(content::WebContents *web_contents, const GURL& origin, const blink::WebFullscreenOptions &)
 {
     Q_UNUSED(web_contents);
     if (!m_viewClient->isFullScreenMode())
@@ -547,9 +547,9 @@ void WebContentsDelegateQt::overrideWebPreferences(content::WebContents *webCont
     m_viewClient->webEngineSettings()->overrideWebPreferences(webContents, webPreferences);
 }
 
-QWeakPointer<WebContentsAdapter> WebContentsDelegateQt::createWindow(content::WebContents *new_contents, WindowOpenDisposition disposition, const gfx::Rect& initial_pos, bool user_gesture)
+QWeakPointer<WebContentsAdapter> WebContentsDelegateQt::createWindow(std::unique_ptr<content::WebContents> new_contents, WindowOpenDisposition disposition, const gfx::Rect& initial_pos, bool user_gesture)
 {
-    QSharedPointer<WebContentsAdapter> newAdapter = QSharedPointer<WebContentsAdapter>::create(new_contents);
+    QSharedPointer<WebContentsAdapter> newAdapter = QSharedPointer<WebContentsAdapter>::create(std::move(new_contents));
 
     m_viewClient->adoptNewWindow(newAdapter, static_cast<WebContentsAdapterClient::WindowOpenDisposition>(disposition), user_gesture, toQt(initial_pos), m_initialTargetUrl);
 
diff --git a/src/core/web_contents_delegate_qt.h b/src/core/web_contents_delegate_qt.h
index a2bef7cc7..db327f768 100644
--- a/src/core/web_contents_delegate_qt.h
+++ b/src/core/web_contents_delegate_qt.h
@@ -103,7 +103,7 @@ public:
     // WebContentsDelegate overrides
     content::WebContents *OpenURLFromTab(content::WebContents *source, const content::OpenURLParams &params) override;
     void NavigationStateChanged(content::WebContents* source, content::InvalidateTypes changed_flags) override;
-    void AddNewContents(content::WebContents* source, content::WebContents* new_contents, WindowOpenDisposition disposition, const gfx::Rect& initial_pos, bool user_gesture, bool* was_blocked) override;
+    void AddNewContents(content::WebContents *source, std::unique_ptr<content::WebContents> new_contents, WindowOpenDisposition disposition, const gfx::Rect &initial_pos, bool user_gesture, bool *was_blocked) override;
     void CloseContents(content::WebContents *source) override;
     void LoadProgressChanged(content::WebContents* source, double progress) override;
     void HandleKeyboardEvent(content::WebContents *source, const content::NativeWebKeyboardEvent &event) override;
@@ -111,7 +111,7 @@ public:
     void WebContentsCreated(content::WebContents *source_contents, int opener_render_process_id, int opener_render_frame_id,
                             const std::string &frame_name, const GURL &target_url, content::WebContents *new_contents) override;
     content::JavaScriptDialogManager *GetJavaScriptDialogManager(content::WebContents *source) override;
-    void EnterFullscreenModeForTab(content::WebContents* web_contents, const GURL& origin) override;
+    void EnterFullscreenModeForTab(content::WebContents *web_contents, const GURL &origin, const blink::WebFullscreenOptions &) override;
     void ExitFullscreenModeForTab(content::WebContents*) override;
     bool IsFullscreenForTabOrPending(const content::WebContents* web_contents) const override;
     void RunFileChooser(content::RenderFrameHost* render_frame_host, const content::FileChooserParams& params) override;
@@ -155,7 +155,7 @@ public:
     WebContentsAdapterClient *adapterClient() const { return m_viewClient; }
 
 private:
-    QWeakPointer<WebContentsAdapter> createWindow(content::WebContents *new_contents, WindowOpenDisposition disposition, const gfx::Rect& initial_pos, bool user_gesture);
+    QWeakPointer<WebContentsAdapter> createWindow(std::unique_ptr<content::WebContents> new_contents, WindowOpenDisposition disposition, const gfx::Rect& initial_pos, bool user_gesture);
     void EmitLoadStarted(const QUrl &url, bool isErrorPage = false);
     void EmitLoadFinished(bool success, const QUrl &url, bool isErrorPage = false, int errorCode = 0, const QString &errorDescription = QString());
 
diff --git a/src/core/web_engine_context.cpp b/src/core/web_engine_context.cpp
index 410e13837..4b0a2f6cd 100644
--- a/src/core/web_engine_context.cpp
+++ b/src/core/web_engine_context.cpp
@@ -373,12 +373,12 @@ WebEngineContext::WebEngineContext()
     bool disable_sandbox = qEnvironmentVariableIsSet(kDisableSandboxEnv);
     if (!disable_sandbox) {
 #if defined(Q_OS_WIN)
-        parsedCommandLine->AppendSwitch(switches::kNoSandbox);
+        parsedCommandLine->AppendSwitch(service_manager::switches::kNoSandbox);
 #elif defined(Q_OS_LINUX)
         parsedCommandLine->AppendSwitch(service_manager::switches::kDisableSetuidSandbox);
 #endif
     } else {
-        parsedCommandLine->AppendSwitch(switches::kNoSandbox);
+        parsedCommandLine->AppendSwitch(service_manager::switches::kNoSandbox);
         qInfo() << "Sandboxing disabled by user.";
     }
 
diff --git a/src/core/web_event_factory.cpp b/src/core/web_event_factory.cpp
index 6358f6830..b97235ceb 100644
--- a/src/core/web_event_factory.cpp
+++ b/src/core/web_event_factory.cpp
@@ -1146,20 +1146,17 @@ static ui::DomKey domKeyForQtKey(int qtKey)
     }
 }
 
-static inline double currentTimeForEvent(const QEvent *event)
+static inline base::TimeTicks currentTimeForEvent(const QEvent *event)
 {
     Q_ASSERT(event);
 
     if (event->type() != QEvent::Leave) {
         const QInputEvent *inputEvent = static_cast<const QInputEvent *>(event);
         if (inputEvent->timestamp())
-            return static_cast<double>(inputEvent->timestamp()) / 1000;
+            return base::TimeTicks::FromInternalValue(inputEvent->timestamp() * 1000);
     }
 
-    static QElapsedTimer timer;
-    if (!timer.isValid())
-        timer.start();
-    return static_cast<double>(timer.elapsed()) / 1000;
+    return base::TimeTicks::Now();
 }
 
 template<class T>
@@ -1328,7 +1325,7 @@ WebMouseEvent WebEventFactory::toWebMouseEvent(QMouseEvent *ev, double dpiScale)
 WebMouseEvent WebEventFactory::toWebMouseEvent(QHoverEvent *ev, double dpiScale)
 {
     WebMouseEvent webKitEvent;
-    webKitEvent.SetTimeStampSeconds(currentTimeForEvent(ev));
+    webKitEvent.SetTimeStamp(currentTimeForEvent(ev));
     webKitEvent.SetModifiers(modifiersForEvent(ev));
     webKitEvent.SetType(webEventTypeForEvent(ev));
 
@@ -1366,7 +1363,7 @@ WebMouseEvent WebEventFactory::toWebMouseEvent(QEvent *ev)
     Q_ASSERT(ev->type() == QEvent::Leave || ev->type() == QEvent::HoverLeave);
 
     WebMouseEvent webKitEvent;
-    webKitEvent.SetTimeStampSeconds(currentTimeForEvent(ev));
+    webKitEvent.SetTimeStamp(currentTimeForEvent(ev));
     webKitEvent.SetType(WebInputEvent::kMouseLeave);
     return webKitEvent;
 }
@@ -1375,7 +1372,7 @@ WebMouseEvent WebEventFactory::toWebMouseEvent(QEvent *ev)
 WebGestureEvent WebEventFactory::toWebGestureEvent(QNativeGestureEvent *ev, double dpiScale)
 {
     WebGestureEvent webKitEvent;
-    webKitEvent.SetTimeStampSeconds(currentTimeForEvent(ev));
+    webKitEvent.SetTimeStamp(currentTimeForEvent(ev));
     webKitEvent.SetModifiers(modifiersForEvent(ev));
 
     webKitEvent.SetPositionInWidget(WebFloatPoint(ev->localPos().x() / dpiScale,
@@ -1446,7 +1443,7 @@ blink::WebMouseWheelEvent WebEventFactory::toWebWheelEvent(QWheelEvent *ev, doub
     WebMouseWheelEvent webEvent;
     webEvent.SetType(webEventTypeForEvent(ev));
     webEvent.SetModifiers(modifiersForEvent(ev));
-    webEvent.SetTimeStampSeconds(currentTimeForEvent(ev));
+    webEvent.SetTimeStamp(currentTimeForEvent(ev));
     webEvent.SetPositionInWidget(ev->x() / dpiScale, ev->y() / dpiScale);
     webEvent.SetPositionInScreen(ev->globalX(), ev->globalY());
 
@@ -1468,7 +1465,7 @@ bool WebEventFactory::coalesceWebWheelEvent(blink::WebMouseWheelEvent &webEvent,
     if (toBlinkPhase(ev->phase()) != webEvent.phase)
         return false;
 
-    webEvent.SetTimeStampSeconds(currentTimeForEvent(ev));
+    webEvent.SetTimeStamp(currentTimeForEvent(ev));
     webEvent.SetPositionInWidget(ev->x() / dpiScale, ev->y() / dpiScale);
     webEvent.SetPositionInScreen(ev->globalX(), ev->globalY());
 
@@ -1482,7 +1479,7 @@ bool WebEventFactory::coalesceWebWheelEvent(blink::WebMouseWheelEvent &webEvent,
 content::NativeWebKeyboardEvent WebEventFactory::toWebKeyboardEvent(QKeyEvent *ev)
 {
     content::NativeWebKeyboardEvent webKitEvent(reinterpret_cast<gfx::NativeEvent>(ev));
-    webKitEvent.SetTimeStampSeconds(currentTimeForEvent(ev));
+    webKitEvent.SetTimeStamp(currentTimeForEvent(ev));
     webKitEvent.SetModifiers(modifiersForEvent(ev));
     webKitEvent.SetType(webEventTypeForEvent(ev));
 
diff --git a/src/tools/qwebengine_convert_dict/main.cpp b/src/tools/qwebengine_convert_dict/main.cpp
index 2a82e5945..9d3888ad6 100644
--- a/src/tools/qwebengine_convert_dict/main.cpp
+++ b/src/tools/qwebengine_convert_dict/main.cpp
@@ -176,7 +176,7 @@ int main(int argc, char *argv[])
     }
 
     if (icuDataDirFound) {
-        PathService::Override(base::DIR_QT_LIBRARY_DATA, toFilePath(icuDataDir));
+        base::PathService::Override(base::DIR_QT_LIBRARY_DATA, toFilePath(icuDataDir));
     } else {
         QTextStream out(stdout);
         out << "Couldn't find ICU data directory. Please check that the following path exists: "
diff --git a/tools/scripts/take_snapshot.py b/tools/scripts/take_snapshot.py
index 6cb55e5c4..0373f391b 100755
--- a/tools/scripts/take_snapshot.py
+++ b/tools/scripts/take_snapshot.py
@@ -70,6 +70,7 @@ def isInChromiumBlacklist(file_path):
             not file_path.startswith('net/test/') and
             not file_path.endswith('mock_chrome_application_mac.h') and
             not file_path.endswith('perftimer.h') and
+            not file_path.endswith('test-torque.tq') and
             not 'ozone' in file_path and
             not 'core/mojo/test/' in file_path and
             not file_path.startswith('extensions/browser/'))
@@ -165,6 +166,7 @@ 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/blink/perf_tests/')
         or file_path.startswith('third_party/breakpad/src/processor/testdata/')
         or file_path.startswith('third_party/boringssl/crypto_test_data.cc')
         or file_path.startswith('third_party/boringssl/src/fuzz')
@@ -229,6 +231,8 @@ def isInChromiumBlacklist(file_path):
         or file_path.startswith('third_party/wayland/src')
         or file_path.startswith('third_party/webgl')
         or file_path.startswith('third_party/webrtc/resources/')
+        or file_path.startswith('third_party/webrtc/third_party/boringssl/crypto_test_data.cc')
+        or file_path.startswith('third_party/webrtc/third_party/boringssl/src/fuzz')
         or file_path.startswith('tools/android')
         or file_path.startswith('tools/luci_go')
         or file_path.startswith('tools/memory_inspector')
@@ -242,7 +246,6 @@ def isInChromiumBlacklist(file_path):
         or file_path.startswith('ui/events/ozone/chromeos')
         or file_path.startswith('ui/file_manager')
         or file_path.startswith('ui/gfx/chromeos')
-        or file_path.startswith('v8/third_party/antlr4')
 
         ):
             return True
diff --git a/tools/scripts/version_resolver.py b/tools/scripts/version_resolver.py
index 748205d51..22f2797ad 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 = '67.0.3396.76'
-chromium_branch = '3396'
+chromium_version = '68.0.3440.125'
+chromium_branch = '3440'
 ninja_version = 'v1.8.2'
 
 json_url = 'http://omahaproxy.appspot.com/all.json'
-- 
GitLab