diff --git a/src/3rdparty b/src/3rdparty
index 1c64c9878f36c83b18c2e81aafe6eedc2a67488b..ec43e18d084a44ed6bb4378f05f5523606316c5a 160000
--- a/src/3rdparty
+++ b/src/3rdparty
@@ -1 +1 @@
-Subproject commit 1c64c9878f36c83b18c2e81aafe6eedc2a67488b
+Subproject commit ec43e18d084a44ed6bb4378f05f5523606316c5a
diff --git a/src/core/renderer/content_renderer_client_qt.cpp b/src/core/renderer/content_renderer_client_qt.cpp
index 6d4315b64f32bc208a87b327208a32310450ad20..451aaac4b7498eb6f353d09b52df200c464d5b0a 100644
--- a/src/core/renderer/content_renderer_client_qt.cpp
+++ b/src/core/renderer/content_renderer_client_qt.cpp
@@ -39,6 +39,7 @@
 #include "base/strings/utf_string_conversions.h"
 #include "chrome/common/localized_error.h"
 #include "components/visitedlink/renderer/visitedlink_slave.h"
+#include "content/public/renderer/render_frame.h"
 #include "content/public/renderer/render_thread.h"
 #include "content/public/renderer/render_view.h"
 #include "net/base/net_errors.h"
@@ -46,6 +47,7 @@
 #include "third_party/WebKit/public/platform/WebURLRequest.h"
 #include "ui/base/resource/resource_bundle.h"
 #include "ui/base/webui/jstemplate_builder.h"
+#include "webkit/common/webpreferences.h"
 
 #include "renderer/qt_render_view_observer.h"
 
@@ -84,6 +86,11 @@ bool ContentRendererClientQt::HasErrorPage(int httpStatusCode, std::string *erro
     return true;
 }
 
+bool ContentRendererClientQt::ShouldSuppressErrorPage(content::RenderFrame *frame, const GURL &)
+{
+    return !(frame->GetWebkitPreferences().enable_error_page);
+}
+
 // To tap into the chromium localized strings. Ripped from the chrome layer (highly simplified).
 void ContentRendererClientQt::GetNavigationErrorStrings(content::RenderView* render_view, blink::WebFrame *frame, const blink::WebURLRequest &failed_request, const blink::WebURLError &error, std::string *error_html, base::string16 *error_description)
 {
diff --git a/src/core/renderer/content_renderer_client_qt.h b/src/core/renderer/content_renderer_client_qt.h
index 386495e20dadc6fc3a83b7388e169f1bc20300c4..505262fc83489711cc51f5a9568a22d51906fb0e 100644
--- a/src/core/renderer/content_renderer_client_qt.h
+++ b/src/core/renderer/content_renderer_client_qt.h
@@ -50,7 +50,7 @@ public:
     virtual void RenderThreadStarted() Q_DECL_OVERRIDE;
     virtual void RenderViewCreated(content::RenderView *render_view) Q_DECL_OVERRIDE;
 
-    virtual bool ShouldSuppressErrorPage(content::RenderFrame *, const GURL &) Q_DECL_OVERRIDE { return false; }
+    virtual bool ShouldSuppressErrorPage(content::RenderFrame *, const GURL &) Q_DECL_OVERRIDE;
     virtual bool HasErrorPage(int httpStatusCode, std::string *errorDomain) Q_DECL_OVERRIDE;
     virtual void GetNavigationErrorStrings(content::RenderView* render_view, blink::WebFrame* frame, const blink::WebURLRequest& failed_request
             , const blink::WebURLError& error, std::string* error_html, base::string16* error_description) Q_DECL_OVERRIDE;
diff --git a/src/core/web_engine_settings.cpp b/src/core/web_engine_settings.cpp
index 03f746f413bf91cfebd61fe6b7cdf946a61f0a47..9b070d3b2c02e9cf56061632e4f50728234a1f45 100644
--- a/src/core/web_engine_settings.cpp
+++ b/src/core/web_engine_settings.cpp
@@ -213,6 +213,7 @@ void WebEngineSettings::initDefaults()
     m_attributes.insert(LocalContentCanAccessFileUrls, true);
     m_attributes.insert(HyperlinkAuditingEnabled, false);
     m_attributes.insert(ScrollAnimatorEnabled, false);
+    m_attributes.insert(ErrorPageEnabled, true);
 
     // Default fonts
     QFont defaultFont;
@@ -276,6 +277,7 @@ void WebEngineSettings::applySettingsToWebPreferences(WebPreferences *prefs)
     prefs->allow_file_access_from_file_urls = testAttribute(LocalContentCanAccessFileUrls);
     prefs->hyperlink_auditing_enabled = testAttribute(HyperlinkAuditingEnabled);
     prefs->enable_scroll_animator = testAttribute(ScrollAnimatorEnabled);
+    prefs->enable_error_page = testAttribute(ErrorPageEnabled);
 
     // Fonts settings.
     prefs->standard_font_family_map[webkit_glue::kCommonScript] = toString16(fontFamily(StandardFont));
diff --git a/src/core/web_engine_settings.h b/src/core/web_engine_settings.h
index b8d661fcc49b929a0b48305c70b4d8da7fa06313..c098f8ef4e8a087e1de15d3ac42ebc69a7f4833c 100644
--- a/src/core/web_engine_settings.h
+++ b/src/core/web_engine_settings.h
@@ -74,6 +74,7 @@ public:
         LocalContentCanAccessFileUrls,
         HyperlinkAuditingEnabled,
         ScrollAnimatorEnabled,
+        ErrorPageEnabled,
     };
 
     // Must match the values from the public API in qwebenginesettings.h.
diff --git a/src/webengine/api/qquickwebenginesettings.cpp b/src/webengine/api/qquickwebenginesettings.cpp
index aa6290aa81925e529689028f6f47c1624a51247c..7f36bad5e0fbac6ee0037a71fccb63140acf2cf9 100644
--- a/src/webengine/api/qquickwebenginesettings.cpp
+++ b/src/webengine/api/qquickwebenginesettings.cpp
@@ -140,6 +140,12 @@ bool QQuickWebEngineSettings::hyperlinkAuditingEnabled() const
     return d->coreSettings->testAttribute(WebEngineSettings::HyperlinkAuditingEnabled);
 }
 
+bool QQuickWebEngineSettings::errorPageEnabled() const
+{
+    Q_D(const QQuickWebEngineSettings);
+    return d->coreSettings->testAttribute(WebEngineSettings::ErrorPageEnabled);
+}
+
 QString QQuickWebEngineSettings::defaultTextEncoding() const
 {
     Q_D(const QQuickWebEngineSettings);
@@ -239,6 +245,15 @@ void QQuickWebEngineSettings::setHyperlinkAuditingEnabled(bool on)
         Q_EMIT hyperlinkAuditingEnabledChanged(on);
 }
 
+void QQuickWebEngineSettings::setErrorPageEnabled(bool on)
+{
+    Q_D(QQuickWebEngineSettings);
+    bool wasOn = d->coreSettings->testAttribute(WebEngineSettings::ErrorPageEnabled);
+    d->coreSettings->setAttribute(WebEngineSettings::ErrorPageEnabled, on);
+    if (wasOn ^ on)
+        Q_EMIT errorPageEnabledChanged(on);
+}
+
 void QQuickWebEngineSettings::setDefaultTextEncoding(QString encoding)
 {
     Q_D(QQuickWebEngineSettings);
diff --git a/src/webengine/api/qquickwebenginesettings_p.h b/src/webengine/api/qquickwebenginesettings_p.h
index 0fa44ef445b92da4be5084629375168ccf603a30..4a7c2f8345cfb31fe20c5ad7a5ffbf4d21a49f89 100644
--- a/src/webengine/api/qquickwebenginesettings_p.h
+++ b/src/webengine/api/qquickwebenginesettings_p.h
@@ -57,6 +57,7 @@ class Q_WEBENGINE_PRIVATE_EXPORT QQuickWebEngineSettings : public QObject {
     Q_PROPERTY(bool spatialNavigationEnabled READ spatialNavigationEnabled WRITE setSpatialNavigationEnabled NOTIFY spatialNavigationEnabledChanged)
     Q_PROPERTY(bool localContentCanAccessFileUrls READ localContentCanAccessFileUrls WRITE setLocalContentCanAccessFileUrls NOTIFY localContentCanAccessFileUrlsChanged)
     Q_PROPERTY(bool hyperlinkAuditingEnabled READ hyperlinkAuditingEnabled WRITE setHyperlinkAuditingEnabled NOTIFY hyperlinkAuditingEnabledChanged)
+    Q_PROPERTY(bool errorPageEnabled READ errorPageEnabled WRITE setErrorPageEnabled NOTIFY errorPageEnabledChanged)
     Q_PROPERTY(QString defaultTextEncoding READ defaultTextEncoding WRITE setDefaultTextEncoding NOTIFY defaultTextEncodingChanged)
 
 public:
@@ -74,6 +75,7 @@ public:
     bool spatialNavigationEnabled() const;
     bool localContentCanAccessFileUrls() const;
     bool hyperlinkAuditingEnabled() const;
+    bool errorPageEnabled() const;
     QString defaultTextEncoding() const;
 
     void setAutoLoadImages(bool on);
@@ -86,6 +88,7 @@ public:
     void setSpatialNavigationEnabled(bool on);
     void setLocalContentCanAccessFileUrls(bool on);
     void setHyperlinkAuditingEnabled(bool on);
+    void setErrorPageEnabled(bool on);
     void setDefaultTextEncoding(QString encoding);
 
 signals:
@@ -99,6 +102,7 @@ signals:
     void spatialNavigationEnabledChanged(bool on);
     void localContentCanAccessFileUrlsChanged(bool on);
     void hyperlinkAuditingEnabledChanged(bool on);
+    void errorPageEnabledChanged(bool on);
     void defaultTextEncodingChanged(QString encoding);
 
 private:
diff --git a/src/webenginewidgets/api/qwebenginesettings.cpp b/src/webenginewidgets/api/qwebenginesettings.cpp
index 9ade311fc3e36bef2ad315aa646e8d256604ad53..729a09f569fdc71c26b366fe20955686131f0757 100644
--- a/src/webenginewidgets/api/qwebenginesettings.cpp
+++ b/src/webenginewidgets/api/qwebenginesettings.cpp
@@ -67,6 +67,8 @@ static WebEngineSettings::Attribute toWebEngineAttribute(QWebEngineSettings::Web
         return WebEngineSettings::HyperlinkAuditingEnabled;
     case QWebEngineSettings::ScrollAnimatorEnabled:
         return WebEngineSettings::ScrollAnimatorEnabled;
+    case QWebEngineSettings::ErrorPageEnabled:
+        return WebEngineSettings::ErrorPageEnabled;
     default:
         return WebEngineSettings::UnsupportedInCoreSettings;
     }
diff --git a/src/webenginewidgets/api/qwebenginesettings.h b/src/webenginewidgets/api/qwebenginesettings.h
index 68c0a60316495c832bf7bcea400d4878913cac87..d9f57a935143f959b6f94eb75cbbe9decf4f025d 100644
--- a/src/webenginewidgets/api/qwebenginesettings.h
+++ b/src/webenginewidgets/api/qwebenginesettings.h
@@ -54,7 +54,8 @@ public:
         SpatialNavigationEnabled,
         LocalContentCanAccessFileUrls,
         HyperlinkAuditingEnabled,
-        ScrollAnimatorEnabled
+        ScrollAnimatorEnabled,
+        ErrorPageEnabled
     };
 
     enum FontSize {
diff --git a/src/webenginewidgets/doc/src/qwebenginesettings_lgpl.qdoc b/src/webenginewidgets/doc/src/qwebenginesettings_lgpl.qdoc
index 3c420b805c3a427da39587406d72f06c262a0f76..ca9f0ca950b5eeadbbe50544ec3f91bf3d9ff704 100644
--- a/src/webenginewidgets/doc/src/qwebenginesettings_lgpl.qdoc
+++ b/src/webenginewidgets/doc/src/qwebenginesettings_lgpl.qdoc
@@ -115,6 +115,7 @@
         about security origins and local vs. remote content see QWebEngineSecurityOrigin.
     \value HyperlinkAuditingEnabled This setting enables support for the ping attribute for hyperlinks. It is disabled by default.
     \value ScrollAnimatorEnabled This setting enables animated scrolling. It is disabled by default.
+    \value ErrorPageEnabled This setting enables built-in error pages of Chromium. It is enabled by default.
 */
 
 /*!
diff --git a/tests/auto/widgets/qwebengineframe/tst_qwebengineframe.cpp b/tests/auto/widgets/qwebengineframe/tst_qwebengineframe.cpp
index 4b18f8e7ad559d96ba4cdd2e8a7478875763f522..218a8b5792860e2d477e22c07297b1638e2190e5 100644
--- a/tests/auto/widgets/qwebengineframe/tst_qwebengineframe.cpp
+++ b/tests/auto/widgets/qwebengineframe/tst_qwebengineframe.cpp
@@ -32,6 +32,7 @@
 #include <QNetworkRequest>
 #include <QNetworkReply>
 #include <QTextCodec>
+#include <QWebEngineSettings>
 #ifndef QT_NO_OPENSSL
 #include <qsslerror.h>
 #endif
@@ -124,6 +125,7 @@ void tst_QWebEngineFrame::init()
 {
     m_view = new QWebEngineView();
     m_page = m_view->page();
+    m_page->settings()->setAttribute(QWebEngineSettings::ErrorPageEnabled, false);
 }
 
 void tst_QWebEngineFrame::cleanup()
@@ -347,7 +349,7 @@ void tst_QWebEngineFrame::requestedUrl()
 void tst_QWebEngineFrame::requestedUrlAfterSetAndLoadFailures()
 {
     QWebEnginePage page;
-
+    page.settings()->setAttribute(QWebEngineSettings::ErrorPageEnabled, false);
     QSignalSpy spy(&page, SIGNAL(loadFinished(bool)));
 
     const QUrl first("http://abcdef.abcdef/");
@@ -365,7 +367,6 @@ void tst_QWebEngineFrame::requestedUrlAfterSetAndLoadFailures()
     ::waitForSignal(&page, SIGNAL(loadFinished(bool)));
     QCOMPARE(spy.count(), 2);
     QCOMPARE(page.url(), first);
-    QEXPECT_FAIL("", "Slight change: The requestedUrl() function catches the error page's entry here thus it results the error page's requested url.", Continue);
     QCOMPARE(page.requestedUrl(), second);
     QVERIFY(!spy.at(1).first().toBool());
 }
@@ -1369,14 +1370,18 @@ void tst_QWebEngineFrame::setUrlHistory()
     QTRY_COMPARE(spy.count(), expectedLoadFinishedCount);
     QCOMPARE(m_page->url(), aboutBlank);
     QCOMPARE(m_page->requestedUrl(), QUrl());
+    QEXPECT_FAIL("", "Slight change: load(QUrl()) currently loads about:blank and nothing prevents it from being added to the history.", Continue);
     QCOMPARE(collectHistoryUrls(m_page->history()), QStringList());
 
     url = QUrl("http://non.existent/");
     m_page->setUrl(url);
     expectedLoadFinishedCount++;
     QTRY_COMPARE(spy.count(), expectedLoadFinishedCount);
+    QEXPECT_FAIL("", "Needs to be investigated", Continue);
     QCOMPARE(m_page->url(), url);
+    QEXPECT_FAIL("", "Needs to be investigated", Continue);
     QCOMPARE(m_page->requestedUrl(), url);
+    QEXPECT_FAIL("", "Slight change: load(QUrl()) currently loads about:blank and nothing prevents it from being added to the history.", Continue);
     QCOMPARE(collectHistoryUrls(m_page->history()), QStringList());
 
     url = QUrl("qrc:/test1.html");
@@ -1385,6 +1390,7 @@ void tst_QWebEngineFrame::setUrlHistory()
     QTRY_COMPARE(spy.count(), expectedLoadFinishedCount);
     QCOMPARE(m_page->url(), url);
     QCOMPARE(m_page->requestedUrl(), url);
+    QEXPECT_FAIL("", "Slight change: load(QUrl()) currently loads about:blank and nothing prevents it from being added to the history.", Continue);
     QCOMPARE(collectHistoryUrls(m_page->history()), QStringList() << QStringLiteral("qrc:/test1.html"));
 
     m_page->setUrl(QUrl());