summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorSzabolcs David <davidsz@inf.u-szeged.hu>2015-12-07 06:39:13 -0800
committerSzabolcs David <davidsz@inf.u-szeged.hu>2016-01-05 13:08:40 +0000
commit2656cdbeb0a45357cfb2621b0307a4e1462fbaaf (patch)
tree783ff611f7d39dbd990713b6a394bbef654924cd /src
parent3f92ac7456a6c89fee71623594058c928a727204 (diff)
Fix an assertion in QWebEngineCookieStore
Don't process pending cookies after resetting the CookieMonster to 0 in the CookieMonsterDelegateQt. We are destroying the old cookie store, so we can reject the pending cookies here. Task-number: QTBUG-50160 Change-Id: I0b2ca7ee0f5e3fdcf99680bb9c0a2772a10ff3f4 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@theqtcompany.com>
Diffstat (limited to 'src')
-rw-r--r--src/core/api/qwebenginecookiestore.cpp8
-rw-r--r--src/core/api/qwebenginecookiestore_p.h1
-rw-r--r--src/core/cookie_monster_delegate_qt.cpp10
-rw-r--r--src/core/url_request_context_getter_qt.cpp2
4 files changed, 19 insertions, 2 deletions
diff --git a/src/core/api/qwebenginecookiestore.cpp b/src/core/api/qwebenginecookiestore.cpp
index 89272057e..2938eddbd 100644
--- a/src/core/api/qwebenginecookiestore.cpp
+++ b/src/core/api/qwebenginecookiestore.cpp
@@ -88,6 +88,14 @@ void QWebEngineCookieStorePrivate::processPendingUserCookies()
m_pendingUserCookies.clear();
}
+void QWebEngineCookieStorePrivate::rejectPendingUserCookies()
+{
+ m_getAllCookiesPending = false;
+ m_deleteAllCookiesPending = false;
+ m_deleteSessionCookiesPending = false;
+ m_pendingUserCookies.clear();
+}
+
void QWebEngineCookieStorePrivate::setCookie(const QWebEngineCallback<bool> &callback, const QNetworkCookie &cookie, const QUrl &origin)
{
const quint64 currentCallbackId = callback ? m_nextCallbackId++ : static_cast<quint64>(CallbackDirectory::NoCallbackId);
diff --git a/src/core/api/qwebenginecookiestore_p.h b/src/core/api/qwebenginecookiestore_p.h
index b8c8b6145..348dcd69f 100644
--- a/src/core/api/qwebenginecookiestore_p.h
+++ b/src/core/api/qwebenginecookiestore_p.h
@@ -87,6 +87,7 @@ public:
QWebEngineCookieStorePrivate();
void processPendingUserCookies();
+ void rejectPendingUserCookies();
void setCookie(const QWebEngineCallback<bool> &callback, const QNetworkCookie &cookie, const QUrl &origin);
void deleteCookie(const QNetworkCookie &cookie, const QUrl &url);
void deleteSessionCookies();
diff --git a/src/core/cookie_monster_delegate_qt.cpp b/src/core/cookie_monster_delegate_qt.cpp
index fa4e9e8bf..e740d01e7 100644
--- a/src/core/cookie_monster_delegate_qt.cpp
+++ b/src/core/cookie_monster_delegate_qt.cpp
@@ -139,10 +139,18 @@ void CookieMonsterDelegateQt::deleteAllCookies(quint64 callbackId)
void CookieMonsterDelegateQt::setCookieMonster(net::CookieMonster* monster)
{
+ if (!monster && !m_cookieMonster)
+ return;
+
m_cookieMonster = monster;
- if (m_client)
+ if (!m_client)
+ return;
+
+ if (monster)
m_client->d_func()->processPendingUserCookies();
+ else
+ m_client->d_func()->rejectPendingUserCookies();
}
void CookieMonsterDelegateQt::setClient(QWebEngineCookieStore *client)
diff --git a/src/core/url_request_context_getter_qt.cpp b/src/core/url_request_context_getter_qt.cpp
index f5c310e90..26e2633d8 100644
--- a/src/core/url_request_context_getter_qt.cpp
+++ b/src/core/url_request_context_getter_qt.cpp
@@ -210,7 +210,7 @@ void URLRequestContextGetterQt::generateCookieStore()
Q_ASSERT(m_storage);
m_updateCookieStore = 0;
- // Unset it first to get a chance to destroy and flush the old cookie store before before opening a new on possibly the same file.
+ // Unset it first to get a chance to destroy and flush the old cookie store before opening a new on possibly the same file.
m_storage->set_cookie_store(0);
m_cookieDelegate->setCookieMonster(0);
m_cookieDelegate->setClient(m_browserContext->cookieStore());