diff options
Diffstat (limited to 'src/fbgui/fbgui.cpp')
-rw-r--r-- | src/fbgui/fbgui.cpp | 81 |
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, "--------------------------------------------------"); +} //------------------------------------------------------------------------------------------- /** |