#include "config.h"
#include "CookieJar.h"
#include "Cookie.h"
#include "Document.h"
#include "FrameLoaderClientQt.h"
#include "KURL.h"
#include "NetworkingContext.h"
#include "PlatformString.h"
#include "qwebframe.h"
#include "qwebpage.h"
#include <QNetworkAccessManager>
#include <QNetworkCookie>
#include <QStringList>
namespace WebCore {
static QNetworkCookieJar *cookieJar(const Document *document)
{
if (!document)
return 0;
Frame* frame = document->frame();
if (!frame)
return 0;
FrameLoader* loader = frame->loader();
if (!loader)
return 0;
QNetworkAccessManager* manager = loader->networkingContext()->networkAccessManager();
QNetworkCookieJar* jar = manager->cookieJar();
return jar;
}
void setCookies(Document* document, const KURL& url, const String& value)
{
QNetworkCookieJar* jar = cookieJar(document);
if (!jar)
return;
QList<QNetworkCookie> cookies = QNetworkCookie::parseCookies(QString(value).toLatin1());
QList<QNetworkCookie>::Iterator it = cookies.begin();
while (it != cookies.end()) {
if (it->isHttpOnly())
it = cookies.erase(it);
else
++it;
}
jar->setCookiesFromUrl(cookies, QUrl(url));
}
String cookies(const Document* document, const KURL& url)
{
QNetworkCookieJar* jar = cookieJar(document);
if (!jar)
return String();
QList<QNetworkCookie> cookies = jar->cookiesForUrl(QUrl(url));
if (cookies.isEmpty())
return String();
QStringList resultCookies;
foreach (const QNetworkCookie& networkCookie, cookies) {
if (networkCookie.isHttpOnly())
continue;
resultCookies.append(QString::fromLatin1(networkCookie.toRawForm(QNetworkCookie::NameAndValueOnly).constData()));
}
return resultCookies.join(QLatin1String("; "));
}
String cookieRequestHeaderFieldValue(const Document* document, const KURL &url)
{
QNetworkCookieJar* jar = cookieJar(document);
if (!jar)
return String();
QList<QNetworkCookie> cookies = jar->cookiesForUrl(QUrl(url));
if (cookies.isEmpty())
return String();
QStringList resultCookies;
foreach (QNetworkCookie networkCookie, cookies)
resultCookies.append(QString::fromLatin1(networkCookie.toRawForm(QNetworkCookie::NameAndValueOnly).constData()));
return resultCookies.join(QLatin1String("; "));
}
bool cookiesEnabled(const Document* document)
{
QNetworkCookieJar* jar = cookieJar(document);
return jar;
}
bool getRawCookies(const Document*, const KURL&, Vector<Cookie>& rawCookies)
{
rawCookies.clear();
return false; }
void deleteCookie(const Document*, const KURL&, const String&)
{
}
void getHostnamesWithCookies(HashSet<String>& hostnames)
{
}
void deleteCookiesForHostname(const String& hostname)
{
}
void deleteAllCookies()
{
}
}