summaryrefslogtreecommitdiff
path: root/Source/WebKit2/WebProcess/qt/QtNetworkAccessManager.cpp
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@nokia.com>2012-02-03 09:55:33 +0100
committerSimon Hausmann <simon.hausmann@nokia.com>2012-02-03 09:55:33 +0100
commitcd44dc59cdfc39534aef4d417e9f3c412e3be139 (patch)
tree8d89889ba95ed6ec9322e733846cc9cce9d7dff1 /Source/WebKit2/WebProcess/qt/QtNetworkAccessManager.cpp
parentd11f84f5b5cdc0d92a08af01b13472fdd5f9acb9 (diff)
downloadqtwebkit-cd44dc59cdfc39534aef4d417e9f3c412e3be139.tar.gz
Imported WebKit commit fce473cb4d55aa9fe9d0b0322a2fffecb731b961 (http://svn.webkit.org/repository/webkit/trunk@106560)
Diffstat (limited to 'Source/WebKit2/WebProcess/qt/QtNetworkAccessManager.cpp')
-rw-r--r--Source/WebKit2/WebProcess/qt/QtNetworkAccessManager.cpp63
1 files changed, 50 insertions, 13 deletions
diff --git a/Source/WebKit2/WebProcess/qt/QtNetworkAccessManager.cpp b/Source/WebKit2/WebProcess/qt/QtNetworkAccessManager.cpp
index 57b953fea..aa487563d 100644
--- a/Source/WebKit2/WebProcess/qt/QtNetworkAccessManager.cpp
+++ b/Source/WebKit2/WebProcess/qt/QtNetworkAccessManager.cpp
@@ -1,5 +1,6 @@
/*
* Copyright (C) 2011 Zeno Albisser <zeno@webkit.org>
+ * Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies)
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -29,7 +30,9 @@
#include "SharedMemory.h"
#include "WebFrameNetworkingContext.h"
#include "WebPage.h"
+#include "WebPageProxyMessages.h"
#include "WebProcess.h"
+#include <QAuthenticator>
#include <QNetworkReply>
#include <QNetworkRequest>
@@ -39,12 +42,8 @@ QtNetworkAccessManager::QtNetworkAccessManager(WebProcess* webProcess)
: QNetworkAccessManager()
, m_webProcess(webProcess)
{
-}
-
-QtNetworkAccessManager::QtNetworkAccessManager(QObject* parent)
- : QNetworkAccessManager(parent)
- , m_webProcess(0)
-{
+ connect(this, SIGNAL(authenticationRequired(QNetworkReply*, QAuthenticator*)), SLOT(onAuthenticationRequired(QNetworkReply*, QAuthenticator*)));
+ connect(this, SIGNAL(sslErrors(QNetworkReply*, QList<QSslError>)), SLOT(onSslErrors(QNetworkReply*, QList<QSslError>)));
}
WebPage* QtNetworkAccessManager::obtainOriginatingWebPage(const QNetworkRequest& request)
@@ -53,13 +52,8 @@ WebPage* QtNetworkAccessManager::obtainOriginatingWebPage(const QNetworkRequest&
if (!originatingObject)
return 0;
- QVariant pagePtr = originatingObject->property("PagePointer");
- if (!pagePtr.isValid() || !pagePtr.canConvert<void*>())
- return 0;
-
- WebPage* webPage = static_cast<WebPage*>(pagePtr.value<void*>());
- Q_ASSERT(webPage);
- return webPage;
+ qulonglong pageID = originatingObject->property("pageID").toULongLong();
+ return m_webProcess->webPage(pageID);
}
QNetworkReply* QtNetworkAccessManager::createRequest(Operation operation, const QNetworkRequest& request, QIODevice* outData)
@@ -79,6 +73,49 @@ void QtNetworkAccessManager::registerApplicationScheme(const WebPage* page, cons
m_applicationSchemes.insert(page, scheme.toLower());
}
+void QtNetworkAccessManager::onAuthenticationRequired(QNetworkReply* reply, QAuthenticator* authenticator)
+{
+ WebPage* webPage = obtainOriginatingWebPage(reply->request());
+
+ // FIXME: This check can go away once our Qt version is up-to-date. See: QTBUG-23512.
+ if (!webPage)
+ return;
+
+ String hostname = reply->url().toString(QUrl::RemovePath | QUrl::RemoveQuery | QUrl::RemoveFragment | QUrl::StripTrailingSlash);
+ String realm = authenticator->realm();
+ String prefilledUsername = authenticator->user();
+ String username;
+ String password;
+
+ if (webPage->sendSync(
+ Messages::WebPageProxy::AuthenticationRequiredRequest(hostname, realm, prefilledUsername),
+ Messages::WebPageProxy::AuthenticationRequiredRequest::Reply(username, password))) {
+ if (!username.isEmpty())
+ authenticator->setUser(username);
+ if (!password.isEmpty())
+ authenticator->setPassword(password);
+ }
+}
+
+void QtNetworkAccessManager::onSslErrors(QNetworkReply* reply, const QList<QSslError>& qSslErrors)
+{
+ WebPage* webPage = obtainOriginatingWebPage(reply->request());
+
+ // FIXME: This check can go away once our Qt version is up-to-date. See: QTBUG-23512.
+ if (!webPage)
+ return;
+
+ String hostname = reply->url().host();
+ bool ignoreErrors = false;
+
+ if (webPage->sendSync(
+ Messages::WebPageProxy::CertificateVerificationRequest(hostname),
+ Messages::WebPageProxy::CertificateVerificationRequest::Reply(ignoreErrors))) {
+ if (ignoreErrors)
+ reply->ignoreSslErrors(qSslErrors);
+ }
+}
+
}
#include "moc_QtNetworkAccessManager.cpp"