webEngineSettingsPointer = webEngineViewPointer->settings();
webEngineCookieStorePointer = webEngineProfilePointer->cookieStore();
- // Store a copy of each cookie when it is added.
+ // Process cookie changes.
connect(webEngineCookieStorePointer, SIGNAL(cookieAdded(QNetworkCookie)), this, SLOT(cookieAdded(QNetworkCookie)));
+ connect(webEngineCookieStorePointer, SIGNAL(cookieRemoved(QNetworkCookie)), this, SLOT(cookieRemoved(QNetworkCookie)));
// Store a copy of the WebEngine default user agent.
webEngineDefaultUserAgent = webEngineProfilePointer->httpUserAgent();
webEnginePagePointer->deleteLater();
}
+// The cookie is copied instead of referenced so that changes made to the cookie do not create a race condition with the display of the cookie in the dialog.
+void BrowserView::addCookieToStore(QNetworkCookie cookie) const
+{
+ // Create a url.
+ QUrl url;
+
+ // Check to see if the domain does not start with a `.` because Qt makes this harder than it should be. <https://doc.qt.io/qt-5/qwebenginecookiestore.html#setCookie>
+ if (!cookie.domain().startsWith(QStringLiteral(".")))
+ {
+ // Populate the URL.
+ url.setHost(cookie.domain());
+ url.setScheme(QStringLiteral("https"));
+
+ // Clear the domain from the cookie.
+ cookie.setDomain(QStringLiteral(""));
+ }
+
+ // Add the cookie to the store.
+ webEngineCookieStorePointer->setCookie(cookie, url);
+}
+
void BrowserView::applyApplicationSettings()
{
// Set the search engine URL.
emit addCookie(cookie);
}
+void BrowserView::cookieRemoved(const QNetworkCookie &cookie) const
+{
+ // Remove the cookie from the cookie list.
+ emit removeCookie(cookie);
+}
+
void BrowserView::deleteAllCookies() const
{
// Delete all the cookies.
webEngineCookieStorePointer->deleteAllCookies();
}
+void BrowserView::deleteCookieFromStore(const QNetworkCookie &cookie) const
+{
+ // Delete the cookie.
+ webEngineCookieStorePointer->deleteCookie(cookie);
+}
+
void BrowserView::forward() const
{
// Go forward.