diff --git a/src/3rdparty b/src/3rdparty
index 049134677a607781ab9508e7b769b2055d714543..9825ccadeb18c5bc2274dffdae56ce690649e628 160000
--- a/src/3rdparty
+++ b/src/3rdparty
@@ -1 +1 @@
-Subproject commit 049134677a607781ab9508e7b769b2055d714543
+Subproject commit 9825ccadeb18c5bc2274dffdae56ce690649e628
diff --git a/src/core/browser_context_qt.cpp b/src/core/browser_context_qt.cpp
index a6801e1d7c255b303351aa5ba728bd6e2f753791..8823e98975533c120ae5b5668c0c6ef5648b30ca 100644
--- a/src/core/browser_context_qt.cpp
+++ b/src/core/browser_context_qt.cpp
@@ -62,7 +62,7 @@
 #include "components/prefs/pref_service_factory.h"
 #include "components/prefs/pref_registry_simple.h"
 #include "components/user_prefs/user_prefs.h"
-#if defined(ENABLE_SPELLCHECK)
+#if BUILDFLAG(ENABLE_SPELLCHECK)
 #include "chrome/common/pref_names.h"
 #include "chrome/browser/spellchecker/spellcheck_service.h"
 #endif
@@ -205,7 +205,7 @@ net::URLRequestContextGetter *BrowserContextQt::CreateRequestContextForStoragePa
     return nullptr;
 }
 
-#if defined(ENABLE_SPELLCHECK)
+#if BUILDFLAG(ENABLE_SPELLCHECK)
 void BrowserContextQt::failedToLoadDictionary(const std::string &language)
 {
     Q_ASSERT(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
diff --git a/src/core/browser_context_qt.h b/src/core/browser_context_qt.h
index 96d3fa8611459b7175e0e00bb47654c20baade2f..8e46fea8c4a77bbd95327243f69c757140b24814 100644
--- a/src/core/browser_context_qt.h
+++ b/src/core/browser_context_qt.h
@@ -99,7 +99,7 @@ public:
 
     BrowserContextAdapter *adapter() { return m_adapter; }
 
-#if defined(ENABLE_SPELLCHECK)
+#if BUILDFLAG(ENABLE_SPELLCHECK)
     void failedToLoadDictionary(const std::string& language) override;
     void setSpellCheckLanguages(const QStringList &languages);
     QStringList spellCheckLanguages() const;
diff --git a/src/core/chromium_overrides.cpp b/src/core/chromium_overrides.cpp
index f60b9213b1a512d7f7c2f29af935d68beef983d5..9afa80757d52dbb9c8063f16a8afee1787fd2432 100644
--- a/src/core/chromium_overrides.cpp
+++ b/src/core/chromium_overrides.cpp
@@ -47,6 +47,8 @@
 #include "content/browser/renderer_host/pepper/pepper_truetype_font_list.h"
 #include "content/browser/renderer_host/render_widget_host_view_base.h"
 #include "content/common/font_list.h"
+#include "ui/base/dragdrop/os_exchange_data.h"
+#include "ui/base/dragdrop/os_exchange_data_provider_factory.h"
 
 #include <QGuiApplication>
 #include <QScreen>
@@ -159,6 +161,12 @@ void GetFontsInFamily_SlowBlocking(const std::string &, std::vector<ppapi::proxy
 
 #endif // defined(USE_AURA) || defined(USE_OZONE)
 
+std::unique_ptr<ui::OSExchangeData::Provider>
+ui::OSExchangeDataProviderFactory::CreateProvider() {
+    return nullptr;
+}
+
+
 #if defined(USE_OPENSSL_CERTS)
 namespace net {
 
diff --git a/src/core/content_browser_client_qt.cpp b/src/core/content_browser_client_qt.cpp
index f031da904b34b06fe602fc6229001ab3cabdf8ad..8dbfc8ab2eead6ede9365572a3d9cf4e0a1dba02 100644
--- a/src/core/content_browser_client_qt.cpp
+++ b/src/core/content_browser_client_qt.cpp
@@ -85,9 +85,10 @@
 #include "device/geolocation/location_provider.h"
 #endif
 #include "media_capture_devices_dispatcher.h"
-#if defined(ENABLE_BASIC_PRINTING)
+#include "printing/features/features.h"
+#if BUILDFLAG(ENABLE_BASIC_PRINTING)
 #include "printing_message_filter_qt.h"
-#endif // defined(ENABLE_BASIC_PRINTING)
+#endif // BUILDFLAG(ENABLE_BASIC_PRINTING)
 #include "qrc_protocol_handler_qt.h"
 #include "renderer_host/resource_dispatcher_host_delegate_qt.h"
 #include "renderer_host/user_resource_controller_host.h"
@@ -331,7 +332,7 @@ public:
     virtual bool WasAllocatedUsingRobustnessExtension() { return false; }
 
     // We don't care about the rest, this context shouldn't be used except for its handle.
-    virtual bool Initialize(gl::GLSurface *, gl::GpuPreference) Q_DECL_OVERRIDE { Q_UNREACHABLE(); return false; }
+    virtual bool Initialize(gl::GLSurface *, const gl::GLContextAttribs &) Q_DECL_OVERRIDE { Q_UNREACHABLE(); return false; }
     virtual bool MakeCurrent(gl::GLSurface *) Q_DECL_OVERRIDE { Q_UNREACHABLE(); return false; }
     virtual void ReleaseCurrent(gl::GLSurface *) Q_DECL_OVERRIDE { Q_UNREACHABLE(); }
     virtual bool IsCurrent(gl::GLSurface *) Q_DECL_OVERRIDE { Q_UNREACHABLE(); return false; }
@@ -415,9 +416,9 @@ void ContentBrowserClientQt::RenderProcessWillLaunch(content::RenderProcessHost*
 #if defined(Q_OS_MACOS) && defined(ENABLE_SPELLCHECK) && defined(USE_BROWSER_SPELLCHECKER)
   host->AddFilter(new SpellCheckMessageFilterPlatform(id));
 #endif
-#if defined(ENABLE_BASIC_PRINTING)
+#if BUILDFLAG(ENABLE_BASIC_PRINTING)
     host->AddFilter(new PrintingMessageFilterQt(host->GetID()));
-#endif // defined(ENABLE_BASIC_PRINTING)
+#endif // BUILDFLAG(ENABLE_BASIC_PRINTING)
 }
 
 void ContentBrowserClientQt::ResourceDispatcherHostCreated()
diff --git a/src/core/gl_context_qt.cpp b/src/core/gl_context_qt.cpp
index a1855b0602d8067e01cb8c123d7efce911384a1f..8f812a9cbafaca348cbfcd8b6cb066cfe413cec1 100644
--- a/src/core/gl_context_qt.cpp
+++ b/src/core/gl_context_qt.cpp
@@ -95,7 +95,9 @@ void GLContextHelper::destroy()
 
 bool GLContextHelper::initializeContextOnBrowserThread(gl::GLContext* context, gl::GLSurface* surface)
 {
-    return context->Initialize(surface, gl::PreferDiscreteGpu);
+    gl::GLContextAttribs attribs;
+    attribs.gpu_preference = gl::PreferDiscreteGpu;
+    return context->Initialize(surface, attribs);
 }
 
 bool GLContextHelper::initializeContext(gl::GLContext* context, gl::GLSurface* surface)
@@ -151,13 +153,15 @@ namespace gl {
 
 namespace init {
 
-scoped_refptr<GLContext> CreateGLContext(GLShareGroup* share_group, GLSurface* compatible_surface, GpuPreference gpu_preference)
+scoped_refptr<GLContext> CreateGLContext(GLShareGroup* share_group,
+                                         GLSurface* compatible_surface,
+                                         const GLContextAttribs& attribs)
 {
 #if defined(OS_WIN)
     scoped_refptr<GLContext> context;
     if (GetGLImplementation() == kGLImplementationDesktopGL) {
         context = new GLContextWGL(share_group);
-        if (!context->Initialize(compatible_surface, gpu_preference))
+        if (!context->Initialize(compatible_surface, attribs))
             return nullptr;
         return context;
     } else {
diff --git a/src/core/gl_surface_qt.cpp b/src/core/gl_surface_qt.cpp
index 64395d2193eca0dc06c7f3fb2ca0c7cc75b3c0b2..af2e1e5f6693050028982fcece59a65f9bd70103 100644
--- a/src/core/gl_surface_qt.cpp
+++ b/src/core/gl_surface_qt.cpp
@@ -386,8 +386,9 @@ bool GLSurfaceQtEGL::InitializeOneOff()
     g_egl_surfaceless_context_supported = ExtensionsContain(g_extensions, "EGL_KHR_surfaceless_context");
     if (g_egl_surfaceless_context_supported) {
         scoped_refptr<GLSurface> surface = new GLSurfacelessQtEGL(gfx::Size(1, 1));
+        gl::GLContextAttribs attribs;
         scoped_refptr<GLContext> context = init::CreateGLContext(
-            NULL, surface.get(), PreferIntegratedGpu);
+            NULL, surface.get(), attribs);
 
         if (!context->MakeCurrent(surface.get()))
             g_egl_surfaceless_context_supported = false;
@@ -414,6 +415,16 @@ bool GLSurfaceEGL::IsCreateContextRobustnessSupported()
     return false;
 }
 
+bool GLSurfaceEGL::IsCreateContextBindGeneratesResourceSupported()
+{
+    return false;
+}
+
+bool GLSurfaceEGL::IsCreateContextWebGLCompatabilitySupported()
+{
+    return false;
+}
+
 const char* GLSurfaceEGL::GetEGLExtensions()
 {
     return g_extensions;
@@ -677,7 +688,7 @@ std::string DriverEGL::GetPlatformExtensions()
 namespace gpu {
 class GpuCommandBufferStub;
 class GpuChannelManager;
-scoped_refptr<gl::GLSurface> ImageTransportSurface::CreateNativeSurface(GpuChannelManager*, GpuCommandBufferStub*,
+scoped_refptr<gl::GLSurface> ImageTransportSurface::CreateNativeSurface(base::WeakPtr<ImageTransportSurfaceDelegate>,
                                                                         SurfaceHandle, gl::GLSurface::Format)
 {
     QT_NOT_USED
diff --git a/src/core/javascript_dialog_manager_qt.h b/src/core/javascript_dialog_manager_qt.h
index 8ed86c994ed2ef1aae5d9114747700c215ca5d81..77a78cd542f9b65d16dcd9df76022ca2b4b4873c 100644
--- a/src/core/javascript_dialog_manager_qt.h
+++ b/src/core/javascript_dialog_manager_qt.h
@@ -68,8 +68,10 @@ public:
     virtual void RunBeforeUnloadDialog(content::WebContents *, bool isReload,
                                        const content::JavaScriptDialogManager::DialogClosedCallback &callback) Q_DECL_OVERRIDE;
     virtual bool HandleJavaScriptDialog(content::WebContents *, bool accept, const base::string16 *promptOverride) Q_DECL_OVERRIDE;
-    virtual void CancelActiveAndPendingDialogs(content::WebContents *contents) Q_DECL_OVERRIDE { takeDialogForContents(contents); }
-    virtual void ResetDialogState(content::WebContents *contents) Q_DECL_OVERRIDE { takeDialogForContents(contents); }
+    virtual void CancelDialogs(content::WebContents *contents, bool /*suppress_callbacks*/, bool /*reset_state*/) Q_DECL_OVERRIDE
+    {
+        takeDialogForContents(contents);
+    }
 
     void runDialogForContents(content::WebContents *, WebContentsAdapterClient::JavascriptDialogType, const QString &messageText, const QString &defaultPrompt
                               , const QUrl &,const content::JavaScriptDialogManager::DialogClosedCallback &callback, const QString &title = QString());
diff --git a/src/core/media_capture_devices_dispatcher.cpp b/src/core/media_capture_devices_dispatcher.cpp
index 031171bcc009cd9f3dbd39e8fad0b36ea69ba06b..b3c42aa08ba38feece4bafca5d3732dd3d42683a 100644
--- a/src/core/media_capture_devices_dispatcher.cpp
+++ b/src/core/media_capture_devices_dispatcher.cpp
@@ -177,7 +177,6 @@ void MediaCaptureDevicesDispatcher::handleMediaAccessPermissionResponse(content:
             break;
         case content::MEDIA_DEVICE_ACCESS:
         case content::MEDIA_GENERATE_STREAM:
-        case content::MEDIA_ENUMERATE_DEVICES:
             getDefaultDevices(request.requested_audio_device_id, request.requested_video_device_id,
                         microphoneRequested, webcamRequested, &devices);
             break;
diff --git a/src/core/ozone_platform_qt.cpp b/src/core/ozone_platform_qt.cpp
index 54626f0aab0ffc06f46ed5328b88d557dc18b581..9cdafa279ef2a906a141caa44940bd6ad73fdede 100644
--- a/src/core/ozone_platform_qt.cpp
+++ b/src/core/ozone_platform_qt.cpp
@@ -43,10 +43,10 @@
 
 #include "base/bind.h"
 #include "base/memory/ptr_util.h"
+#include "ui/display/types/native_display_delegate.h"
 #include "ui/events/ozone/events_ozone.h"
 #include "ui/events/platform/platform_event_dispatcher.h"
 #include "ui/events/platform/platform_event_source.h"
-#include "ui/ozone/common/native_display_delegate_ozone.h"
 #include "ui/ozone/common/stub_client_native_pixmap_factory.h"
 #include "ui/ozone/common/stub_overlay_manager.h"
 #include "ui/ozone/public/ozone_platform.h"
@@ -204,7 +204,8 @@ ui::OverlayManagerOzone* OzonePlatformQt::GetOverlayManager()
 
 std::unique_ptr<ui::NativeDisplayDelegate> OzonePlatformQt::CreateNativeDisplayDelegate()
 {
-    return base::WrapUnique(new NativeDisplayDelegateOzone());
+    NOTREACHED();
+    return nullptr;
 }
 
 void OzonePlatformQt::InitializeUI()
diff --git a/src/core/print_view_manager_base_qt.cpp b/src/core/print_view_manager_base_qt.cpp
index 63181e64046a727fa843e9ba4c12e3db640b3436..81e07707a3f9225b4e9ea172a3a1124505cbca50 100644
--- a/src/core/print_view_manager_base_qt.cpp
+++ b/src/core/print_view_manager_base_qt.cpp
@@ -55,6 +55,7 @@
 #include "chrome/browser/printing/printer_query.h"
 #include "components/printing/common/print_messages.h"
 #include "content/public/browser/browser_thread.h"
+#include "content/public/browser/render_frame_host.h"
 #include "content/public/browser/render_view_host.h"
 #include "content/public/browser/notification_service.h"
 #include "content/public/browser/notification_types.h"
@@ -71,6 +72,8 @@ PrintViewManagerBaseQt::PrintViewManagerBaseQt(content::WebContents *contents)
     , m_didPrintingSucceed(false)
     , m_printerQueriesQueue(WebEngineContext::current()->getPrintJobManager()->queue())
 {
+    // FIXME: Check if this needs to be executed async:
+    PrintViewManagerBaseQt::UpdatePrintingEnabled();
 }
 
 PrintViewManagerBaseQt::~PrintViewManagerBaseQt()
@@ -79,6 +82,17 @@ PrintViewManagerBaseQt::~PrintViewManagerBaseQt()
     DisconnectFromCurrentPrintJob();
 }
 
+void PrintViewManagerBaseQt::UpdatePrintingEnabled()
+{
+    bool enabled = false;
+#if BUILDFLAG(ENABLE_BASIC_PRINTING)
+    enabled = true;
+#endif
+    web_contents()->ForEachFrame(
+            base::Bind(&PrintViewManagerBaseQt::SendPrintingEnabled,
+                    base::Unretained(this), enabled));
+}
+
 void PrintViewManagerBaseQt::NavigationStopped()
 {
     // Cancel the current job, wait for the worker to finish.
@@ -192,7 +206,7 @@ void PrintViewManagerBaseQt::DidStartLoading()
 {
 }
 
-bool PrintViewManagerBaseQt::OnMessageReceived(const IPC::Message& message)
+bool PrintViewManagerBaseQt::OnMessageReceived(const IPC::Message& message, content::RenderFrameHost* render_frame_host)
 {
     bool handled = true;
     IPC_BEGIN_MESSAGE_MAP(PrintViewManagerBaseQt, message)
@@ -201,7 +215,7 @@ bool PrintViewManagerBaseQt::OnMessageReceived(const IPC::Message& message)
                           OnShowInvalidPrinterSettingsError);
       IPC_MESSAGE_UNHANDLED(handled = false)
     IPC_END_MESSAGE_MAP()
-    return handled || PrintManager::OnMessageReceived(message);
+    return handled || PrintManager::OnMessageReceived(message, render_frame_host);
 }
 
 void PrintViewManagerBaseQt::Observe(int type,
@@ -510,4 +524,9 @@ void PrintViewManagerBaseQt::StopWorker(int documentCookie) {
   }
 }
 
+void PrintViewManagerBaseQt::SendPrintingEnabled(bool enabled, content::RenderFrameHost* rfh)
+{
+    rfh->Send(new PrintMsg_SetPrintingEnabled(rfh->GetRoutingID(), enabled));
+}
+
 } // namespace QtWebEngineCore
diff --git a/src/core/print_view_manager_base_qt.h b/src/core/print_view_manager_base_qt.h
index 27dda5ef6e0192956b317525a036cf69f12b2a5a..65bdbe3f1bfac35be5c785802054717b1e088443 100644
--- a/src/core/print_view_manager_base_qt.h
+++ b/src/core/print_view_manager_base_qt.h
@@ -72,6 +72,9 @@ class PrintViewManagerBaseQt
 public:
     ~PrintViewManagerBaseQt() override;
 
+    // Whether printing is enabled or not.
+    void UpdatePrintingEnabled();
+
     // PrintedPagesSource implementation.
     base::string16 RenderSourceName() override;
 
@@ -86,7 +89,8 @@ protected:
     void RenderProcessGone(base::TerminationStatus status) override;
 
     // content::WebContentsObserver implementation.
-    bool OnMessageReceived(const IPC::Message& message) override;
+    bool OnMessageReceived(const IPC::Message& message,
+                           content::RenderFrameHost* render_frame_host) override;
 
     // IPC Message handlers.
     void OnDidPrintPage(const PrintHostMsg_DidPrintPage_Params& params);
@@ -133,6 +137,9 @@ protected:
     void ReleasePrinterQuery();
 
 private:
+    // Helper method for UpdatePrintingEnabled().
+    void SendPrintingEnabled(bool enabled, content::RenderFrameHost* rfh);
+
     content::NotificationRegistrar m_registrar;
     scoped_refptr<printing::PrintJob> m_printJob;
     // Closure for quitting nested message loop.
@@ -144,6 +151,7 @@ private:
     scoped_refptr<printing::PrintQueriesQueue> m_printerQueriesQueue;
     // content::WebContentsObserver implementation.
     void DidStartLoading() override;
+
     DISALLOW_COPY_AND_ASSIGN(PrintViewManagerBaseQt);
 };
 
diff --git a/src/core/print_view_manager_qt.cpp b/src/core/print_view_manager_qt.cpp
index 6006c3bad2698a37943b1a45ac7c0d8fd52367cf..8a43cc41971d1713044a61d96ffbfb38c655842c 100644
--- a/src/core/print_view_manager_qt.cpp
+++ b/src/core/print_view_manager_qt.cpp
@@ -53,6 +53,7 @@
 #include "components/printing/common/print_messages.h"
 #include "content/browser/renderer_host/render_view_host_impl.h"
 #include "content/public/browser/browser_thread.h"
+#include "content/public/browser/render_frame_host.h"
 #include "content/public/common/web_preferences.h"
 #include "printing/pdf_metafile_skia.h"
 #include "printing/print_job_constants.h"
@@ -137,6 +138,7 @@ static base::DictionaryValue *createPrintSettings()
     printSettings->SetBoolean(printing::kSettingShouldPrintSelectionOnly, false);
     printSettings->SetBoolean(printing::kSettingShouldPrintBackgrounds, true);
     printSettings->SetBoolean(printing::kSettingHeaderFooterEnabled, false);
+    printSettings->SetInteger(printing::kSettingScaleFactor, 100);
     printSettings->SetString(printing::kSettingDeviceName, "");
     printSettings->SetInteger(printing::kPreviewUIID, 12345678);
 
@@ -178,7 +180,7 @@ PrintViewManagerQt::~PrintViewManagerQt()
 {
 }
 
-#if defined(ENABLE_BASIC_PRINTING)
+#if BUILDFLAG(ENABLE_BASIC_PRINTING)
 void PrintViewManagerQt::PrintToPDFFileWithCallback(const QPageLayout &pageLayout,
                                                     bool printInColor, const QString &filePath,
                                                     const PrintToPDFFileCallback& callback)
@@ -238,10 +240,11 @@ 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(routing_id(), false));
+    return Send(new PrintMsg_InitiatePrintPreview(
+                    web_contents()->GetMainFrame()->GetRoutingID(), false));
 }
 
-#endif // defined(ENABLE_BASIC_PRINTING)
+#endif // BUILDFLAG(ENABLE_BASIC_PRINTING)
 
 // PrintedPagesSource implementation.
 base::string16 PrintViewManagerQt::RenderSourceName()
@@ -256,7 +259,7 @@ PrintViewManagerQt::PrintViewManagerQt(content::WebContents *contents)
 }
 
 // content::WebContentsObserver implementation.
-bool PrintViewManagerQt::OnMessageReceived(const IPC::Message& message)
+bool PrintViewManagerQt::OnMessageReceived(const IPC::Message& message, content::RenderFrameHost* render_frame_host)
 {
     bool handled = true;
     IPC_BEGIN_MESSAGE_MAP(PrintViewManagerQt, message)
@@ -267,7 +270,7 @@ bool PrintViewManagerQt::OnMessageReceived(const IPC::Message& message)
                                  OnMetafileReadyForPrinting);
       IPC_MESSAGE_UNHANDLED(handled = false)
     IPC_END_MESSAGE_MAP()
-    return handled || PrintManager::OnMessageReceived(message);
+    return handled || PrintManager::OnMessageReceived(message, render_frame_host);
 }
 
 void PrintViewManagerQt::resetPdfState()
@@ -283,7 +286,8 @@ void PrintViewManagerQt::resetPdfState()
 void PrintViewManagerQt::OnRequestPrintPreview(
     const PrintHostMsg_RequestPrintPreview_Params& params)
 {
-    Send(new PrintMsg_PrintPreview(routing_id(), *m_printSettings));
+    Send(new PrintMsg_PrintPreview(
+             web_contents()->GetMainFrame()->GetRoutingID(), *m_printSettings));
 }
 
 void PrintViewManagerQt::OnMetafileReadyForPrinting(
diff --git a/src/core/print_view_manager_qt.h b/src/core/print_view_manager_qt.h
index b2ba73b277a52e489f57498575544b91762ab0be..af19a89ef122d0f11db61ac1c893c88eed5295ca 100644
--- a/src/core/print_view_manager_qt.h
+++ b/src/core/print_view_manager_qt.h
@@ -51,6 +51,7 @@
 #include "content/public/browser/notification_observer.h"
 #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;
@@ -82,7 +83,7 @@ public:
     ~PrintViewManagerQt() override;
     typedef base::Callback<void(const std::vector<char> &result)> PrintToPDFCallback;
     typedef base::Callback<void(bool success)> PrintToPDFFileCallback;
-#if defined(ENABLE_BASIC_PRINTING)
+#if BUILDFLAG(ENABLE_BASIC_PRINTING)
     // Method to print a page to a Pdf document with page size \a pageSize in location \a filePath.
     void PrintToPDFFileWithCallback(const QPageLayout &pageLayout,
                                     bool printInColor,
@@ -107,16 +108,17 @@ protected:
     void RenderProcessGone(base::TerminationStatus status) override;
 
     // content::WebContentsObserver implementation.
-    bool OnMessageReceived(const IPC::Message& message) override;
+    bool OnMessageReceived(const IPC::Message& message,
+                           content::RenderFrameHost* render_frame_host) override;
 
     // IPC handlers
     void OnDidShowPrintDialog();
     void OnRequestPrintPreview(const PrintHostMsg_RequestPrintPreview_Params&);
     void OnMetafileReadyForPrinting(const PrintHostMsg_DidPreviewDocument_Params& params);
 
-#if defined(ENABLE_BASIC_PRINTING)
+#if BUILDFLAG(ENABLE_BASIC_PRINTING)
     bool PrintToPDFInternal(const QPageLayout &, bool printInColor);
-#endif //
+#endif // BUILDFLAG(ENABLE_BASIC_PRINTING)
 
     base::FilePath m_pdfOutputPath;
     PrintToPDFCallback m_pdfPrintCallback;
diff --git a/src/core/printing_message_filter_qt.cpp b/src/core/printing_message_filter_qt.cpp
index 49940d7ee3eb16357baf55dcc48bb638827908b0..3bcc94eff711e66a26cba33e370448e87abb49aa 100644
--- a/src/core/printing_message_filter_qt.cpp
+++ b/src/core/printing_message_filter_qt.cpp
@@ -76,7 +76,6 @@ void PrintingMessageFilterQt::OverrideThreadForMessage(
 bool PrintingMessageFilterQt::OnMessageReceived(const IPC::Message& message) {
   bool handled = true;
   IPC_BEGIN_MESSAGE_MAP(PrintingMessageFilterQt, message)
-    IPC_MESSAGE_HANDLER(PrintHostMsg_IsPrintingEnabled, OnIsPrintingEnabled)
     IPC_MESSAGE_HANDLER_DELAY_REPLY(PrintHostMsg_GetDefaultPrintSettings,
                                     OnGetDefaultPrintSettings)
     IPC_MESSAGE_HANDLER_DELAY_REPLY(PrintHostMsg_ScriptedPrint, OnScriptedPrint)
@@ -88,11 +87,6 @@ bool PrintingMessageFilterQt::OnMessageReceived(const IPC::Message& message) {
   return handled;
 }
 
-void PrintingMessageFilterQt::OnIsPrintingEnabled(bool* is_enabled) {
-  DCHECK_CURRENTLY_ON(BrowserThread::IO);
-  *is_enabled = true;
-}
-
 void PrintingMessageFilterQt::OnGetDefaultPrintSettings(IPC::Message* reply_msg) {
   DCHECK_CURRENTLY_ON(BrowserThread::IO);
   scoped_refptr<printing::PrinterQuery> printer_query;
diff --git a/src/core/printing_message_filter_qt.h b/src/core/printing_message_filter_qt.h
index 156a312508367cea68c933c95eb93173c64676f3..6a70937cdcd7eecffd6aa730c3583020d1446774 100644
--- a/src/core/printing_message_filter_qt.h
+++ b/src/core/printing_message_filter_qt.h
@@ -90,9 +90,6 @@ class PrintingMessageFilterQt : public content::BrowserMessageFilter {
   // to base::Bind.
   struct GetPrintSettingsForRenderViewParams;
 
-  // Checks if printing is enabled.
-  void OnIsPrintingEnabled(bool* is_enabled);
-
   // Get the default print setting.
   void OnGetDefaultPrintSettings(IPC::Message* reply_msg);
   void OnGetDefaultPrintSettingsReply(scoped_refptr<printing::PrinterQuery> printer_query,
diff --git a/src/core/proxy_config_service_qt.cpp b/src/core/proxy_config_service_qt.cpp
index a6ffb39ab94f36869f4243b74ada92f8ea05fff7..b7ed8362448a0e9ab35c661aeb695c937fa4e8ec 100644
--- a/src/core/proxy_config_service_qt.cpp
+++ b/src/core/proxy_config_service_qt.cpp
@@ -165,8 +165,8 @@ void ProxyConfigServiceQt::OnProxyConfigChanged(const net::ProxyConfig &config,
         availability = GetLatestProxyConfig(&actual_config);
         if (availability == CONFIG_PENDING)
             return;
-        FOR_EACH_OBSERVER(net::ProxyConfigService::Observer, m_observers,
-                          OnProxyConfigChanged(actual_config, availability));
+        for (net::ProxyConfigService::Observer &observer: m_observers)
+            observer.OnProxyConfigChanged(actual_config, availability);
     }
 }
 
diff --git a/src/core/qtwebengine.gni b/src/core/qtwebengine.gni
index 8fa01803887687bafcb705a7b3209871dee6411e..9afd6af3b244bf4c2eb2b8e00f773f124872e8ba 100644
--- a/src/core/qtwebengine.gni
+++ b/src/core/qtwebengine.gni
@@ -24,7 +24,6 @@ deps = [
   "//net:net_browser_services",
   "//skia",
   "//third_party/WebKit/public:blink",
-  "//third_party/widevine/cdm:version_h",
   "//ui/accessibility",
   "//third_party/mesa:mesa_headers",
   ":qtwebengine_sources",
diff --git a/src/core/qtwebengine_sources.gni b/src/core/qtwebengine_sources.gni
index 93a0feb72dcdf0b1c016efec604518c0f905ef92..9a559732d5ea3ac7a95158da893c400edc6a4a95 100644
--- a/src/core/qtwebengine_sources.gni
+++ b/src/core/qtwebengine_sources.gni
@@ -1,4 +1,6 @@
 import("//build/config/features.gni")
+import("//components/spellcheck/spellcheck_build_features.gni")
+import("//printing/features/features.gni")
 
 source_set("qtwebengine_spellcheck_sources") {
   sources = [
@@ -32,7 +34,9 @@ source_set("qtwebengine_sources") {
     "//skia/config",
     "//third_party/skia/include/core"
   ]
-  deps = []
+  deps = [
+      "//extensions/features:features",
+  ]
   sources = [
     "//chrome/browser/media/webrtc/desktop_media_list.h",
     "//chrome/browser/media/webrtc/desktop_streams_registry.cc",
@@ -87,6 +91,9 @@ source_set("qtwebengine_sources") {
       "//chrome/browser/printing/print_job_worker_owner.cc",
       "//chrome/browser/printing/print_job_worker_owner.h",
     ]
+    deps += [
+      "//printing/features:features",
+    ]
   }
 
   if (enable_pdf) {
diff --git a/src/core/renderer/content_renderer_client_qt.cpp b/src/core/renderer/content_renderer_client_qt.cpp
index ee6ffe420ed62a7efc5b83a5b036641b7b2c04ea..09d47380ff61f2c636605304873d6a6f896b0537 100644
--- a/src/core/renderer/content_renderer_client_qt.cpp
+++ b/src/core/renderer/content_renderer_client_qt.cpp
@@ -40,6 +40,7 @@
 #include "renderer/content_renderer_client_qt.h"
 
 #include "common/qt_messages.h"
+#include "printing/features/features.h"
 
 #include "base/strings/string_split.h"
 #include "base/strings/utf_string_conversions.h"
@@ -50,9 +51,9 @@
 #include "components/cdm/renderer/widevine_key_system_properties.h"
 #include "components/error_page/common/error_page_params.h"
 #include "components/error_page/common/localized_error.h"
-#if defined (ENABLE_BASIC_PRINTING)
+#if BUILDFLAG(ENABLE_BASIC_PRINTING)
 #include "components/printing/renderer/print_web_view_helper.h"
-#endif // if defined(ENABLE_BASIC_PRINTING)
+#endif // if BUILDFLAG(ENABLE_BASIC_PRINTING)
 #include "components/visitedlink/renderer/visitedlink_slave.h"
 #include "components/web_cache/renderer/web_cache_impl.h"
 #include "content/public/renderer/render_frame.h"
@@ -67,15 +68,15 @@
 #include "ui/base/webui/jstemplate_builder.h"
 #include "content/public/common/web_preferences.h"
 
-#include "renderer/web_channel_ipc_transport.h"
-#if defined (ENABLE_BASIC_PRINTING)
+#if BUILDFLAG(ENABLE_BASIC_PRINTING)
 #include "renderer/print_web_view_helper_delegate_qt.h"
-#endif // if defined(ENABLE_BASIC_PRINTING)
+#endif // if BUILDFLAG(ENABLE_BASIC_PRINTING)
 
 #include "renderer/render_frame_observer_qt.h"
 #include "renderer/render_view_observer_qt.h"
 #include "renderer/user_resource_controller.h"
-#include "services/shell/public/cpp/interface_registry.h"
+#include "renderer/web_channel_ipc_transport.h"
+#include "services/service_manager/public/cpp/interface_registry.h"
 
 #include "components/grit/components_resources.h"
 
@@ -123,16 +124,16 @@ void ContentRendererClientQt::RenderViewCreated(content::RenderView* render_view
     new SpellCheckProvider(render_view, m_spellCheck.data());
 #endif
 
-#if defined(ENABLE_BASIC_PRINTING)
-    new printing::PrintWebViewHelper(
-                render_view,
-                base::WrapUnique(new PrintWebViewHelperDelegateQt()));
-#endif // defined(ENABLE_BASIC_PRINTING)
 }
 
 void ContentRendererClientQt::RenderFrameCreated(content::RenderFrame* render_frame)
 {
     new QtWebEngineCore::RenderFrameObserverQt(render_frame);
+#if BUILDFLAG(ENABLE_BASIC_PRINTING)
+    new printing::PrintWebViewHelper(
+                render_frame,
+                base::WrapUnique(new PrintWebViewHelperDelegateQt()));
+#endif // BUILDFLAG(ENABLE_BASIC_PRINTING)
 }
 
 void ContentRendererClientQt::RunScriptsAtDocumentStart(content::RenderFrame* render_frame)
diff --git a/src/core/renderer/print_web_view_helper_delegate_qt.cpp b/src/core/renderer/print_web_view_helper_delegate_qt.cpp
index 872ab1c9a4aa6bf7e3915bad1c56bb29a72f67ce..c42972502339e6e6bc2052821265281572da6595 100644
--- a/src/core/renderer/print_web_view_helper_delegate_qt.cpp
+++ b/src/core/renderer/print_web_view_helper_delegate_qt.cpp
@@ -48,8 +48,7 @@ PrintWebViewHelperDelegateQt::~PrintWebViewHelperDelegateQt()
 
 }
 
-bool PrintWebViewHelperDelegateQt::CancelPrerender(content::RenderView* render_view,
-                                                   int routing_id)
+bool PrintWebViewHelperDelegateQt::CancelPrerender(content::RenderFrame *)
 {
     return true;
 }
diff --git a/src/core/renderer/print_web_view_helper_delegate_qt.h b/src/core/renderer/print_web_view_helper_delegate_qt.h
index a854242baee825aa02c5f7b0fc668d6b343a7ce2..514e5632da45fafdbf8eb9f48d07b90fc44ad1b8 100644
--- a/src/core/renderer/print_web_view_helper_delegate_qt.h
+++ b/src/core/renderer/print_web_view_helper_delegate_qt.h
@@ -43,6 +43,10 @@
 
 #include "components/printing/renderer/print_web_view_helper.h"
 
+namespace content {
+class RenderView;
+}
+
 namespace QtWebEngineCore {
 
 class PrintWebViewHelperDelegateQt : public printing::PrintWebViewHelper::Delegate
@@ -50,8 +54,7 @@ class PrintWebViewHelperDelegateQt : public printing::PrintWebViewHelper::Delega
 public:
     ~PrintWebViewHelperDelegateQt() override;
 
-    bool CancelPrerender(content::RenderView* render_view,
-                         int routing_id) override;
+    bool CancelPrerender(content::RenderFrame* render_frame) override;
 
     blink::WebElement GetPdfElement(blink::WebLocalFrame* frame) override;
 
diff --git a/src/core/renderer_host/resource_dispatcher_host_delegate_qt.cpp b/src/core/renderer_host/resource_dispatcher_host_delegate_qt.cpp
index 16a4e7265a2af9ceba1c244cf53811bb5243aedb..afc2ea8fa58981fcb82c91797fa29fec136d6f70 100644
--- a/src/core/renderer_host/resource_dispatcher_host_delegate_qt.cpp
+++ b/src/core/renderer_host/resource_dispatcher_host_delegate_qt.cpp
@@ -149,20 +149,23 @@ static void LaunchURL(const GURL& url, int render_process_id,
     contentsDelegate->launchExternalURL(toQt(url), page_transition, is_main_frame);
 }
 
-bool ResourceDispatcherHostDelegateQt::HandleExternalProtocol(const GURL& url, int child_id,
-                                                              const content::ResourceRequestInfo::WebContentsGetter& web_contents_getter,
-                                                              bool is_main_frame, ui::PageTransition page_transition, bool has_user_gesture,
-                                                              content::ResourceContext* /*resource_context*/)
+
+bool ResourceDispatcherHostDelegateQt::HandleExternalProtocol(const GURL& url, content::ResourceRequestInfo* info)
 {
     Q_ASSERT(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO));
     // We don't want to launch external applications unless it is based on a user action
-    if (!has_user_gesture)
+    if (!info->HasUserGesture())
         return false;
 
     content::BrowserThread::PostTask(
         content::BrowserThread::UI,
         FROM_HERE,
-        base::Bind(&LaunchURL, url, child_id, web_contents_getter, page_transition, is_main_frame));
+        base::Bind(&LaunchURL, url,
+                   info->GetChildID(),
+                   info->GetWebContentsGetterForRequest(),
+                   info->GetPageTransition(),
+                   info->IsMainFrame())
+    );
     return true;
 }
 
diff --git a/src/core/renderer_host/resource_dispatcher_host_delegate_qt.h b/src/core/renderer_host/resource_dispatcher_host_delegate_qt.h
index 6690f9a0fb569d95b408b738ab82768b66329454..604499e9fd605b7d174ca1d984a6f4e6a22d753a 100644
--- a/src/core/renderer_host/resource_dispatcher_host_delegate_qt.h
+++ b/src/core/renderer_host/resource_dispatcher_host_delegate_qt.h
@@ -89,10 +89,8 @@ private:
 
 class ResourceDispatcherHostDelegateQt : public content::ResourceDispatcherHostDelegate {
 public:
-    bool HandleExternalProtocol(const GURL& url, int child_id,
-                                const content::ResourceRequestInfo::WebContentsGetter& web_contents_getter,
-                                bool is_main_frame, ui::PageTransition page_transition, bool has_user_gesture,
-                                content::ResourceContext* resource_context) override;
+    bool HandleExternalProtocol(const GURL& url,
+                                content::ResourceRequestInfo* info) override;
 
     virtual content::ResourceDispatcherHostLoginDelegate* CreateLoginDelegate(net::AuthChallengeInfo *authInfo, net::URLRequest *request) Q_DECL_OVERRIDE;
 };
diff --git a/src/core/url_request_context_getter_qt.cpp b/src/core/url_request_context_getter_qt.cpp
index 635b7c2d00179188a6809ce06bad91c7253c2d7c..6422a0228bfe110046459e29266bd299f8d4a390 100644
--- a/src/core/url_request_context_getter_qt.cpp
+++ b/src/core/url_request_context_getter_qt.cpp
@@ -553,7 +553,7 @@ void URLRequestContextGetterQt::generateJobFactory()
             base::SequencedWorkerPool::SKIP_ON_SHUTDOWN))));
     jobFactory->SetProtocolHandler(kQrcSchemeQt, std::unique_ptr<net::URLRequestJobFactory::ProtocolHandler>(new QrcProtocolHandlerQt()));
     jobFactory->SetProtocolHandler(url::kFtpScheme,
-        std::unique_ptr<net::URLRequestJobFactory::ProtocolHandler>(new net::FtpProtocolHandler(new net::FtpNetworkLayer(m_urlRequestContext->host_resolver()))));
+            net::FtpProtocolHandler::Create(m_urlRequestContext->host_resolver()));
 
     m_installedCustomSchemes = m_customUrlSchemes;
     Q_FOREACH (const QByteArray &scheme, m_installedCustomSchemes) {
diff --git a/src/core/web_contents_adapter.cpp b/src/core/web_contents_adapter.cpp
index 7b07121436f80c6b8c1be4d4f959675b4683fbab..496bbb1841c42667aeae405bb9d74f22cb6d2da8 100644
--- a/src/core/web_contents_adapter.cpp
+++ b/src/core/web_contents_adapter.cpp
@@ -81,6 +81,7 @@
 #include "content/public/common/url_constants.h"
 #include "content/public/common/web_preferences.h"
 #include "third_party/WebKit/public/web/WebFindOptions.h"
+#include "printing/features/features.h"
 
 #include <QDir>
 #include <QGuiApplication>
@@ -184,7 +185,7 @@ static void callbackOnEvaluateJS(WebContentsAdapterClient *adapterClient, quint6
         adapterClient->didRunJavaScript(requestId, fromJSValue(result));
 }
 
-#if defined(ENABLE_BASIC_PRINTING)
+#if BUILDFLAG(ENABLE_BASIC_PRINTING)
 static void callbackOnPrintingFinished(WebContentsAdapterClient *adapterClient,
                                        int requestId,
                                        const std::vector<char>& result)
@@ -259,7 +260,6 @@ static void deserializeNavigationHistory(QDataStream &input, int *currentIndex,
     int count;
     input >> count >> *currentIndex;
 
-    int pageId = 0;
     entries->reserve(count);
     // Logic taken from SerializedNavigationEntry::ReadFromPickle and ToNavigationEntries.
     for (int i = 0; i < count; ++i) {
@@ -306,7 +306,6 @@ static void deserializeNavigationHistory(QDataStream &input, int *currentIndex,
 
         entry->SetTitle(toString16(title));
         entry->SetPageState(content::PageState::CreateFromEncodedData(std::string(pageState.data(), pageState.size())));
-        entry->SetPageID(pageId++);
         entry->SetHasPostData(hasPostData);
         entry->SetOriginalRequestURL(toGurl(originalRequestUrl));
         entry->SetIsOverridingUserAgent(isOverridingUserAgent);
@@ -432,9 +431,9 @@ void WebContentsAdapter::initialize(WebContentsAdapterClient *adapterClient)
     // This should only be necessary after having restored the history to a new WebContentsAdapter.
     d->webContents->GetController().LoadIfNecessary();
 
-#if defined(ENABLE_BASIC_PRINTING)
+#if BUILDFLAG(ENABLE_BASIC_PRINTING)
     PrintViewManagerQt::CreateForWebContents(webContents());
-#endif // defined(ENABLE_BASIC_PRINTING)
+#endif // BUILDFLAG(ENABLE_BASIC_PRINTING)
 
     // Create an instance of WebEngineVisitedLinksManager to catch the first
     // content::NOTIFICATION_RENDERER_PROCESS_CREATED event. This event will
@@ -1009,7 +1008,7 @@ void WebContentsAdapter::wasHidden()
 
 void WebContentsAdapter::printToPDF(const QPageLayout &pageLayout, const QString &filePath)
 {
-#if defined(ENABLE_BASIC_PRINTING)
+#if BUILDFLAG(ENABLE_BASIC_PRINTING)
     Q_D(WebContentsAdapter);
     PrintViewManagerQt::PrintToPDFFileCallback callback = base::Bind(&callbackOnPdfSavingFinished,
                                                                 d->adapterClient,
@@ -1018,13 +1017,13 @@ void WebContentsAdapter::printToPDF(const QPageLayout &pageLayout, const QString
                                                                                    true,
                                                                                    filePath,
                                                                                    callback);
-#endif // if defined(ENABLE_BASIC_PRINTING)
+#endif // if BUILDFLAG(ENABLE_BASIC_PRINTING)
 }
 
 quint64 WebContentsAdapter::printToPDFCallbackResult(const QPageLayout &pageLayout,
                                                      const bool colorMode)
 {
-#if defined(ENABLE_BASIC_PRINTING)
+#if BUILDFLAG(ENABLE_BASIC_PRINTING)
     Q_D(WebContentsAdapter);
     PrintViewManagerQt::PrintToPDFCallback callback = base::Bind(&callbackOnPrintingFinished,
                                                                  d->adapterClient,
@@ -1034,8 +1033,10 @@ quint64 WebContentsAdapter::printToPDFCallbackResult(const QPageLayout &pageLayo
                                                                                callback);
     return d->nextRequestId++;
 #else
+    Q_UNUSED(pageLayout);
+    Q_UNUSED(colorMode);
     return 0;
-#endif // if defined(ENABLE_BASIC_PRINTING)
+#endif // if BUILDFLAG(ENABLE_BASIC_PRINTING)
 }
 
 QPointF WebContentsAdapter::lastScrollOffset() const
@@ -1202,10 +1203,10 @@ void WebContentsAdapter::startDragging(QObject *dragSource, const content::DropD
         if (d->webContents) {
             content::RenderViewHost *rvh = d->webContents->GetRenderViewHost();
             if (rvh) {
-                rvh->DragSourceEndedAt(d->lastDragClientPos.x(), d->lastDragClientPos.y(),
-                                       d->lastDragScreenPos.x(), d->lastDragScreenPos.y(),
-                                       d->currentDropAction);
-                rvh->DragSourceSystemDragEnded();
+                rvh->GetWidget()->DragSourceEndedAt(gfx::Point(d->lastDragClientPos.x(), d->lastDragClientPos.y()),
+                                                    gfx::Point(d->lastDragScreenPos.x(), d->lastDragScreenPos.y()),
+                                                    d->currentDropAction);
+                rvh->GetWidget()->DragSourceSystemDragEnded();
             }
         }
         d->currentDropData.reset();
@@ -1241,10 +1242,10 @@ void WebContentsAdapter::enterDrag(QDragEnterEvent *e, const QPoint &screenPos)
     }
 
     content::RenderViewHost *rvh = d->webContents->GetRenderViewHost();
-    rvh->FilterDropData(d->currentDropData.get());
-    rvh->DragTargetDragEnter(*d->currentDropData, toGfx(e->pos()), toGfx(screenPos),
-                             toWeb(e->possibleActions()),
-                             flagsFromModifiers(e->keyboardModifiers()));
+    rvh->GetWidget()->FilterDropData(d->currentDropData.get());
+    rvh->GetWidget()->DragTargetDragEnter(*d->currentDropData, toGfx(e->pos()), toGfx(screenPos),
+                                          toWeb(e->possibleActions()),
+                                          flagsFromModifiers(e->keyboardModifiers()));
 }
 
 Qt::DropAction toQt(blink::WebDragOperation op)
@@ -1290,8 +1291,8 @@ Qt::DropAction WebContentsAdapter::updateDragPosition(QDragMoveEvent *e, const Q
     content::RenderViewHost *rvh = d->webContents->GetRenderViewHost();
     d->lastDragClientPos = toGfx(e->pos());
     d->lastDragScreenPos = toGfx(screenPos);
-    rvh->DragTargetDragOver(d->lastDragClientPos, d->lastDragScreenPos, toWeb(e->possibleActions()),
-                            toWeb(e->mouseButtons()) | toWeb(e->keyboardModifiers()));
+    rvh->GetWidget()->DragTargetDragOver(d->lastDragClientPos, d->lastDragScreenPos, toWeb(e->possibleActions()),
+                                         toWeb(e->mouseButtons()) | toWeb(e->keyboardModifiers()));
     waitForUpdateDragActionCalled();
     return toQt(d->currentDropAction);
 }
@@ -1329,10 +1330,10 @@ void WebContentsAdapter::endDragging(const QPoint &clientPos, const QPoint &scre
 {
     Q_D(WebContentsAdapter);
     content::RenderViewHost *rvh = d->webContents->GetRenderViewHost();
-    rvh->FilterDropData(d->currentDropData.get());
+    rvh->GetWidget()->FilterDropData(d->currentDropData.get());
     d->lastDragClientPos = toGfx(clientPos);
     d->lastDragScreenPos = toGfx(screenPos);
-    rvh->DragTargetDrop(*d->currentDropData, d->lastDragClientPos, d->lastDragScreenPos, 0);
+    rvh->GetWidget()->DragTargetDrop(*d->currentDropData, d->lastDragClientPos, d->lastDragScreenPos, 0);
     d->currentDropData.reset();
 }
 
@@ -1340,7 +1341,7 @@ void WebContentsAdapter::leaveDrag()
 {
     Q_D(WebContentsAdapter);
     content::RenderViewHost *rvh = d->webContents->GetRenderViewHost();
-    rvh->DragTargetDragLeave();
+    rvh->GetWidget()->DragTargetDragLeave();
     d->currentDropData.reset();
 }
 
diff --git a/src/core/web_contents_delegate_qt.cpp b/src/core/web_contents_delegate_qt.cpp
index cda234d6d05347e819b1d00dc261c11b1b9105e8..6c5b6396085942023d99e3498bf749ddbe69eb64 100644
--- a/src/core/web_contents_delegate_qt.cpp
+++ b/src/core/web_contents_delegate_qt.cpp
@@ -169,7 +169,7 @@ void WebContentsDelegateQt::AddNewContents(content::WebContents* source, content
 void WebContentsDelegateQt::CloseContents(content::WebContents *source)
 {
     m_viewClient->close();
-    GetJavaScriptDialogManager(source)->CancelActiveAndPendingDialogs(source);
+    GetJavaScriptDialogManager(source)->CancelDialogs(source, /* whatever?: */false, false);
 }
 
 void WebContentsDelegateQt::LoadProgressChanged(content::WebContents* source, double progress)
@@ -335,7 +335,7 @@ void WebContentsDelegateQt::RunFileChooser(content::RenderFrameHost *frameHost,
     });
 }
 
-bool WebContentsDelegateQt::AddMessageToConsole(content::WebContents *source, int32_t level, const base::string16 &message, int32_t line_no, const base::string16 &source_id)
+bool WebContentsDelegateQt::DidAddMessageToConsole(content::WebContents *source, int32_t level, const base::string16 &message, int32_t line_no, const base::string16 &source_id)
 {
     Q_UNUSED(source)
     m_viewClient->javaScriptConsoleMessage(mapToJavascriptConsoleMessageLevel(level), toQt(message), static_cast<int>(line_no), toQt(source_id));
diff --git a/src/core/web_contents_delegate_qt.h b/src/core/web_contents_delegate_qt.h
index 683b14ddf0667e7cbe15b4cbaa54b35cb36229b3..6aa34d2f42a5bd2d756d3b66d902e51af58ea055 100644
--- a/src/core/web_contents_delegate_qt.h
+++ b/src/core/web_contents_delegate_qt.h
@@ -109,7 +109,7 @@ public:
     virtual void ExitFullscreenModeForTab(content::WebContents*) Q_DECL_OVERRIDE;
     virtual bool IsFullscreenForTabOrPending(const content::WebContents* web_contents) const Q_DECL_OVERRIDE;
     virtual void RunFileChooser(content::RenderFrameHost* render_frame_host, const content::FileChooserParams& params) Q_DECL_OVERRIDE;
-    virtual bool AddMessageToConsole(content::WebContents* source, int32_t level, const base::string16& message, int32_t line_no, const base::string16& source_id) Q_DECL_OVERRIDE;
+    virtual bool DidAddMessageToConsole(content::WebContents* source, int32_t level, const base::string16& message, int32_t line_no, const base::string16& source_id) Q_DECL_OVERRIDE;
     virtual void FindReply(content::WebContents *source, int request_id, int number_of_matches, const gfx::Rect& selection_rect, int active_match_ordinal, bool final_update) Q_DECL_OVERRIDE;
     virtual void RequestMediaAccessPermission(content::WebContents* web_contents, const content::MediaStreamRequest& request, const content::MediaResponseCallback& callback) Q_DECL_OVERRIDE;
     virtual void MoveContents(content::WebContents *source, const gfx::Rect &pos) Q_DECL_OVERRIDE;
diff --git a/src/core/web_contents_view_qt.cpp b/src/core/web_contents_view_qt.cpp
index a8c6cca70bb146dacb669e22e46db28ab45f637e..daf2d48b410489e649bb2cc2f202f5509538bb36 100644
--- a/src/core/web_contents_view_qt.cpp
+++ b/src/core/web_contents_view_qt.cpp
@@ -207,7 +207,8 @@ void WebContentsViewQt::StartDragging(const content::DropData &drop_data,
                                       blink::WebDragOperationsMask allowed_ops,
                                       const gfx::ImageSkia &image,
                                       const gfx::Vector2d &image_offset,
-                                      const content::DragEventSourceInfo &event_info)
+                                      const content::DragEventSourceInfo &event_info,
+                                      content::RenderWidgetHostImpl* source_rwh)
 {
     Q_UNUSED(event_info);
 
diff --git a/src/core/web_contents_view_qt.h b/src/core/web_contents_view_qt.h
index 8d7d7a032555b81ce6d5528cd1db33ff66ea6843..a048db14d6e0d1a4c7629e7530828ec9a35eab1d 100644
--- a/src/core/web_contents_view_qt.h
+++ b/src/core/web_contents_view_qt.h
@@ -107,9 +107,10 @@ public:
 
     virtual gfx::Rect GetViewBounds() const Q_DECL_OVERRIDE { QT_NOT_YET_IMPLEMENTED return gfx::Rect(); }
 
-    void StartDragging(const content::DropData &drop_data, blink::WebDragOperationsMask allowed_ops,
-                       const gfx::ImageSkia &image,  const gfx::Vector2d &image_offset,
-                       const content::DragEventSourceInfo &event_info) Q_DECL_OVERRIDE;
+    void StartDragging(const content::DropData& drop_data, blink::WebDragOperationsMask allowed_ops,
+                       const gfx::ImageSkia& image, const gfx::Vector2d& image_offset,
+                       const content::DragEventSourceInfo& event_info,
+                       content::RenderWidgetHostImpl* source_rwh) Q_DECL_OVERRIDE;
 
     void UpdateDragCursor(blink::WebDragOperation dragOperation) Q_DECL_OVERRIDE;
 
diff --git a/src/core/web_engine_context.cpp b/src/core/web_engine_context.cpp
index 78c0fa3b80085d4d32ef9d8ccdd239e0fd302bd3..81f968d115388cd6266fd8a0536df12d1f2abc2e 100644
--- a/src/core/web_engine_context.cpp
+++ b/src/core/web_engine_context.cpp
@@ -48,7 +48,7 @@
 #include "base/run_loop.h"
 #include "base/threading/thread_restrictions.h"
 #include "cc/base/switches.h"
-#if defined(ENABLE_BASIC_PRINTING)
+#if BUILDFLAG(ENABLE_BASIC_PRINTING)
 #include "chrome/browser/printing/print_job_manager.h"
 #endif // defined(ENABLE_BASIC_PRINTING)
 #include "content/browser/devtools/devtools_http_handler.h"
@@ -427,12 +427,12 @@ WebEngineContext::WebEngineContext()
     content::PluginService::GetInstance()->GetPlugins(base::Bind(&dummyGetPluginCallback));
 #endif
 
-#if defined(ENABLE_BASIC_PRINTING)
+#if BUILDFLAG(ENABLE_BASIC_PRINTING)
     m_printJobManager.reset(new printing::PrintJobManager());
 #endif // defined(ENABLE_BASIC_PRINTING)
 }
 
-#if defined(ENABLE_BASIC_PRINTING)
+#if BUILDFLAG(ENABLE_BASIC_PRINTING)
 printing::PrintJobManager* WebEngineContext::getPrintJobManager()
 {
     return m_printJobManager.get();
diff --git a/src/core/web_engine_context.h b/src/core/web_engine_context.h
index 0058ccd84356b7d551711c021dc8fb9996ae996f..386f43035972f2627a388b036f343beedd2c1904 100644
--- a/src/core/web_engine_context.h
+++ b/src/core/web_engine_context.h
@@ -42,8 +42,11 @@
 
 #include "qtwebenginecoreglobal.h"
 
+#include "build/build_config.h"
+
 #include "base/memory/ref_counted.h"
 #include "base/values.h"
+#include "printing/features/features.h"
 
 #include <QSharedPointer>
 
@@ -56,11 +59,11 @@ class BrowserMainRunner;
 class ContentMainRunner;
 }
 
-#if defined(ENABLE_BASIC_PRINTING)
+#if BUILDFLAG(ENABLE_BASIC_PRINTING)
 namespace printing {
 class PrintJobManager;
 }
-#endif // defined(ENABLE_BASIC_PRINTING)
+#endif // BUILDFLAG(ENABLE_BASIC_PRINTING)
 
 QT_FORWARD_DECLARE_CLASS(QObject)
 
@@ -77,9 +80,9 @@ public:
 
     QSharedPointer<QtWebEngineCore::BrowserContextAdapter> defaultBrowserContext();
     QObject *globalQObject();
-#if defined(ENABLE_BASIC_PRINTING)
+#if BUILDFLAG(ENABLE_BASIC_PRINTING)
     printing::PrintJobManager* getPrintJobManager();
-#endif // defined(ENABLE_BASIC_PRINTING)
+#endif // BUILDFLAG(ENABLE_BASIC_PRINTING)
     void destroyBrowserContext();
     void destroy();
 
@@ -95,9 +98,9 @@ private:
     QObject* m_globalQObject;
     QSharedPointer<QtWebEngineCore::BrowserContextAdapter> m_defaultBrowserContext;
     std::unique_ptr<DevToolsServerQt> m_devtoolsServer;
-#if defined(ENABLE_BASIC_PRINTING)
+#if BUILDFLAG(ENABLE_BASIC_PRINTING)
     std::unique_ptr<printing::PrintJobManager> m_printJobManager;
-#endif // defined(ENABLE_BASIC_PRINTING)
+#endif // BUILDFLAG(ENABLE_BASIC_PRINTING)
 };
 
 } // namespace
diff --git a/src/core/web_event_factory.h b/src/core/web_event_factory.h
index b70da44a3dd379efd74440148573387dec9c1f70..c9871a4b97d55a15a5268e8c3676cad43a94d582 100644
--- a/src/core/web_event_factory.h
+++ b/src/core/web_event_factory.h
@@ -41,7 +41,7 @@
 #define WEB_EVENT_FACTORY_H
 
 #include "content/public/browser/native_web_keyboard_event.h"
-#include "third_party/WebKit/public/web/WebInputEvent.h"
+#include "third_party/WebKit/public/platform/WebInputEvent.h"
 
 #include <QtGlobal>
 
diff --git a/tools/scripts/version_resolver.py b/tools/scripts/version_resolver.py
index b80efff34b766ea5c5eb0a3c50f195099ad71064..4c0b03a97440bbdd6e09823acedc32e3390c34c1 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 = '55.0.2883.105'
-chromium_branch = '2883'
+chromium_version = '56.0.2924.122'
+chromium_branch = '2924'
 ninja_version = 'v1.7.2'
 
 json_url = 'http://omahaproxy.appspot.com/all.json'