From d340be4b27b9067c0057b20f6bd0228f03c994c6 Mon Sep 17 00:00:00 2001
From: Aqua-sama <aqua@iserlohn-fortress.net>
Date: Sun, 17 Jun 2018 19:50:56 +0200
Subject: WebProfile: cache a list of cookies

ProfileView: delete selected items rather than current item
Browser: store profiles in QMap instead of QHash
---
 lib/web/webprofile.cpp | 14 ++++++++++++++
 lib/web/webprofile.h   |  9 +++++++++
 2 files changed, 23 insertions(+)

(limited to 'lib/web')

diff --git a/lib/web/webprofile.cpp b/lib/web/webprofile.cpp
index 37338b9..1124261 100644
--- a/lib/web/webprofile.cpp
+++ b/lib/web/webprofile.cpp
@@ -79,6 +79,13 @@ WebProfile::WebProfile(const QString &name, const QString &configPath, QObject *
 #ifdef QT_DEBUG
     qDebug("Creating otr profile %s", qUtf8Printable(m_name));
 #endif
+
+    connect(this->cookieStore(), &QWebEngineCookieStore::cookieAdded, this, [this](const QNetworkCookie &cookie) {
+        m_cookies.append(cookie);
+    });
+    connect(this->cookieStore(), &QWebEngineCookieStore::cookieRemoved, this, [this](const QNetworkCookie &cookie) {
+        m_cookies.removeAll(cookie);
+    });
 }
 
 WebProfile::WebProfile(const QString &storageName, const QString &name, const QString &configPath, QObject *parent)
@@ -90,6 +97,13 @@ WebProfile::WebProfile(const QString &storageName, const QString &name, const QS
 #ifdef QT_DEBUG
     qDebug("Creating profile %s", qUtf8Printable(m_name));
 #endif
+
+    connect(this->cookieStore(), &QWebEngineCookieStore::cookieAdded, this, [this](const QNetworkCookie &cookie) {
+        m_cookies.append(cookie);
+    });
+    connect(this->cookieStore(), &QWebEngineCookieStore::cookieRemoved, this, [this](const QNetworkCookie &cookie) {
+        m_cookies.removeAll(cookie);
+    });
 }
 
 QString WebProfile::search() const
diff --git a/lib/web/webprofile.h b/lib/web/webprofile.h
index 9e9fd3e..279e6bf 100644
--- a/lib/web/webprofile.h
+++ b/lib/web/webprofile.h
@@ -13,6 +13,8 @@
 #include <QUrl>
 #include <QString>
 #include <QWebEngineProfile>
+#include <QVector>
+#include <QNetworkCookie>
 
 class WebProfile : public QWebEngineProfile
 {
@@ -60,6 +62,11 @@ public:
         return m_configPath;
     }
 
+    const QVector<QNetworkCookie> cookies() const
+    {
+        return qAsConst(m_cookies);
+    }
+
     // search url
     QString search() const;
     void setSearch(const QString &url);
@@ -103,6 +110,8 @@ private:
     QString m_search = QString("about:blank");
     QUrl m_homepage = QUrl("about:blank");
     QUrl m_newtab = QUrl("about:blank");
+
+    QVector<QNetworkCookie> m_cookies;
 };
 
 WebProfile* loadProfile(const QString &name, const QHash<QString, QString> &defaults, const QString &path = QString(), QObject *parent = nullptr);
-- 
cgit v1.2.1