summaryrefslogtreecommitdiffstats
path: root/src/fbgui/fbgui.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/fbgui/fbgui.cpp')
-rw-r--r--src/fbgui/fbgui.cpp81
1 files changed, 80 insertions, 1 deletions
diff --git a/src/fbgui/fbgui.cpp b/src/fbgui/fbgui.cpp
index 48e776b..c4f5f22 100644
--- a/src/fbgui/fbgui.cpp
+++ b/src/fbgui/fbgui.cpp
@@ -49,6 +49,12 @@ void fbgui::init() {
QObject::connect(jsi, SIGNAL(quitFbgui()), this, SLOT(close()));
QObject::connect(jsi, SIGNAL(shutDownClient()), this,
SLOT(shutdownSystem()));
+ QObject::connect(jsi, SIGNAL(deleteCookies()), this,
+ SLOT(clearAllCookies()));
+ QObject::connect(jsi, SIGNAL(showCookies()), this,
+ SLOT(printCookies()));
+ QObject::connect(jsi, SIGNAL(showHistory()), this,
+ SLOT(printHistory()));
QObject::connect(_webView->page()->mainFrame(), SIGNAL(
javaScriptWindowObjectCleared()), jsi, SLOT(attachToDOM()));
@@ -124,7 +130,6 @@ void fbgui::loadURL() {
QObject::connect(_webView, SIGNAL(loadFinished(bool)), this,
SLOT(loadURLDone(bool)));
_webView->load(req, QNetworkAccessManager::PostOperation, postData);
-
}
// TODO: error page if no host.
}
@@ -140,6 +145,80 @@ void fbgui::loadURLDone(bool success) {
LOG4CXX_DEBUG(coreLogger, "Loaded URL: " << _webView->url().toString());
}
}
+//-------------------------------------------------------------------------------------------
+/**
+ * This method clears all cookies aside from the ones sent by baseURL.
+ *
+ */
+
+void fbgui::clearAllCookies() {
+
+ LOG4CXX_DEBUG(coreLogger, "Clearing cookies...");
+
+ // persist pbs cookies and delete the rest.
+ QUrl currentURL(_webView->page()->mainFrame()->url());
+ QNetworkCookieJar* cookieJar = new QNetworkCookieJar();
+ QList<QNetworkCookie> cookieList = _webView->page()->networkAccessManager()->cookieJar()->cookiesForUrl(currentURL);
+ _webView->page()->networkAccessManager()->setCookieJar(cookieJar);
+
+ // restart the session with pbs
+ loadURL();
+}
+
+void fbgui::printCookies() {
+
+ QList<QNetworkCookie> cookieList = _webView->page()->networkAccessManager()->cookieJar()->cookiesForUrl(_webView->page()->mainFrame()->url());
+
+ if (cookieList.isEmpty()) {
+ LOG4CXX_DEBUG(coreLogger, "No cookies saved!");
+ }
+ else {
+ QList<QNetworkCookie>::iterator i;
+ for (i = cookieList.begin(); i != cookieList.end(); ++i) {
+ if (i->domain() == baseURL.host() || i->domain() == "." + baseURL.host()) {
+ LOG4CXX_DEBUG(coreLogger, "Keeping cookie from domain '" << i->domain() << "': " << i->toRawForm());
+ }
+ else {
+ LOG4CXX_DEBUG(coreLogger, "Deleting cookie from domain '" << i->domain() << "': " << i->toRawForm());
+ }
+ }
+ }
+
+}
+void fbgui::printHistory() {
+ LOG4CXX_DEBUG(coreLogger, "--------------------------------------------------");
+ QList<QUrl> urls;
+ QList<QWebHistoryItem> history = _webView->history()->backItems(10);
+ QList<QWebHistoryItem>::iterator n;
+ for (n = history.begin(); n != history.end(); ++n) {
+ LOG4CXX_DEBUG(coreLogger, "History item: " << n->url().toString());
+ if (!(urls.contains(n->url()))) {
+ urls.append(n->url());
+ LOG4CXX_DEBUG(coreLogger, "Appended: " << n->url().toString());
+ }
+ }
+
+ QList<QUrl>::iterator u;
+ for (u = urls.begin(); u != urls.end(); ++u) {
+ LOG4CXX_DEBUG(coreLogger, "Cookie from URL " << u->toString());
+ QList<QNetworkCookie> cookieList = _webView->page()->networkAccessManager()->cookieJar()->cookiesForUrl(*u);
+ if (cookieList.isEmpty()) {
+ LOG4CXX_DEBUG(coreLogger, "No cookies saved!");
+ }
+ else {
+ QList<QNetworkCookie>::iterator i;
+ for (i = cookieList.begin(); i != cookieList.end(); ++i) {
+ if (i->domain() == baseURL.host()) {
+ LOG4CXX_DEBUG(coreLogger, "Keeping cookie from domain '" << i->domain() << "': " << i->toRawForm());
+ }
+ else {
+ LOG4CXX_DEBUG(coreLogger, "Deleting cookie from domain '" << i->domain() << "': " << i->toRawForm());
+ }
+ }
+ }
+ }
+ LOG4CXX_DEBUG(coreLogger, "--------------------------------------------------");
+}
//-------------------------------------------------------------------------------------------
/**