From d8daba265ba260b41899fe817ee0fb8833441979 Mon Sep 17 00:00:00 2001
From: Pierre Rossi <pierre.rossi@theqtcompany.com>
Date: Tue, 17 Mar 2015 13:47:07 +0100
Subject: [PATCH] Revive ReloadAndBypassCache

Appears to be an oversight for widgets, as the API was there,
but just wasn't wired.
Also add it for QQuickWebEngineView while we're at it.

Change-Id: I07d6e356cbaf22b79f3fc5a82df78c6821993e8d
Reviewed-by: Zeno Albisser <zeno.albisser@digia.com>
---
 src/core/web_contents_adapter.cpp           | 7 +++++++
 src/core/web_contents_adapter.h             | 1 +
 src/webengine/api/qquickwebengineview.cpp   | 8 ++++++++
 src/webengine/api/qquickwebengineview_p.h   | 1 +
 src/webenginewidgets/api/qwebenginepage.cpp | 3 +++
 5 files changed, 20 insertions(+)

diff --git a/src/core/web_contents_adapter.cpp b/src/core/web_contents_adapter.cpp
index c5cd83c6e..2ccaf399c 100644
--- a/src/core/web_contents_adapter.cpp
+++ b/src/core/web_contents_adapter.cpp
@@ -454,6 +454,13 @@ void WebContentsAdapter::reload()
     d->webContents->Focus();
 }
 
+void WebContentsAdapter::reloadAndBypassCache()
+{
+    Q_D(WebContentsAdapter);
+    d->webContents->GetController().ReloadIgnoringCache(/*checkRepost = */false);
+    d->webContents->Focus();
+}
+
 void WebContentsAdapter::load(const QUrl &url)
 {
     // The situation can occur when relying on the editingFinished signal in QML to set the url
diff --git a/src/core/web_contents_adapter.h b/src/core/web_contents_adapter.h
index f4b434353..5ea55c1b8 100644
--- a/src/core/web_contents_adapter.h
+++ b/src/core/web_contents_adapter.h
@@ -74,6 +74,7 @@ public:
     bool canGoForward() const;
     void stop();
     void reload();
+    void reloadAndBypassCache();
     void load(const QUrl&);
     void setContent(const QByteArray &data, const QString &mimeType, const QUrl &baseUrl);
     QUrl activeUrl() const;
diff --git a/src/webengine/api/qquickwebengineview.cpp b/src/webengine/api/qquickwebengineview.cpp
index 2a5097597..bc58e2526 100644
--- a/src/webengine/api/qquickwebengineview.cpp
+++ b/src/webengine/api/qquickwebengineview.cpp
@@ -665,6 +665,14 @@ void QQuickWebEngineView::reload()
     d->adapter->reload();
 }
 
+void QQuickWebEngineView::reloadAndBypassCache()
+{
+    Q_D(QQuickWebEngineView);
+    if (!d->adapter)
+        return;
+    d->adapter->reloadAndBypassCache();
+}
+
 void QQuickWebEngineView::stop()
 {
     Q_D(QQuickWebEngineView);
diff --git a/src/webengine/api/qquickwebengineview_p.h b/src/webengine/api/qquickwebengineview_p.h
index c84a65805..4539ad34b 100644
--- a/src/webengine/api/qquickwebengineview_p.h
+++ b/src/webengine/api/qquickwebengineview_p.h
@@ -207,6 +207,7 @@ public Q_SLOTS:
     void goForward();
     void goBackOrForward(int index);
     void reload();
+    void reloadAndBypassCache();
     void stop();
     Q_REVISION(1) void findText(const QString &subString, FindFlags options = 0, const QJSValue &callback = QJSValue());
     Q_REVISION(1) void fullScreenCancelled();
diff --git a/src/webenginewidgets/api/qwebenginepage.cpp b/src/webenginewidgets/api/qwebenginepage.cpp
index 65a0a5bed..55bd67e5e 100644
--- a/src/webenginewidgets/api/qwebenginepage.cpp
+++ b/src/webenginewidgets/api/qwebenginepage.cpp
@@ -646,6 +646,9 @@ void QWebEnginePage::triggerAction(WebAction action, bool)
     case Reload:
         d->adapter->reload();
         break;
+    case ReloadAndBypassCache:
+        d->adapter->reloadAndBypassCache();
+        break;
     case Cut:
         d->adapter->cut();
         break;
-- 
GitLab