Holger Hans Peter Freyther <zecke@selfish.org>
authorhausmann@webkit.org <hausmann@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 24 Apr 2008 11:20:22 +0000 (11:20 +0000)
committerhausmann@webkit.org <hausmann@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 24 Apr 2008 11:20:22 +0000 (11:20 +0000)
* Set an expiration date for local files as we do not know what will happen
  to these files (in contrast to a http server with max-age and other headers)
* Remember the time when we started the job and use that for the expiration date
* QNetworkManager does not handle expiration at all, we might want to set the
  expiration for all downloads but this will be a performance nightmare.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@32482 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebCore/ChangeLog
WebCore/platform/network/qt/QNetworkReplyHandler.cpp
WebCore/platform/network/qt/QNetworkReplyHandler.h

index 4ec18c0..8890774 100644 (file)
@@ -1,3 +1,19 @@
+2008-04-24  Holger Hans Peter Freyther  <zecke@selfish.org>
+
+        Reviewed by Simon.
+
+        * Set an expiration date for local files as we do not know what will happen
+        to these files (in contrast to a http server with max-age and other headers)
+        * Remember the time when we started the job and use that for the expiration date
+        * QNetworkManager does not handle expiration at all, we might want to set the
+        expiration for all downloads but this will be a performance nightmare.
+
+        * platform/network/qt/QNetworkReplyHandler.cpp:
+        (WebCore::QNetworkReplyHandler::QNetworkReplyHandler):
+        (WebCore::QNetworkReplyHandler::sendResponseIfNeeded):
+        (WebCore::QNetworkReplyHandler::start):
+        * platform/network/qt/QNetworkReplyHandler.h:
+
 2008-04-24  Simon Hausmann  <hausmann@webkit.org>
 
         Fix the Gtk and Qt builds.
 2008-04-24  Simon Hausmann  <hausmann@webkit.org>
 
         Fix the Gtk and Qt builds.
index eb1d8a8..5e3d943 100644 (file)
@@ -29,6 +29,7 @@
 #include "ResourceHandleInternal.h"
 #include "ResourceResponse.h"
 #include "ResourceRequest.h"
 #include "ResourceHandleInternal.h"
 #include "ResourceResponse.h"
 #include "ResourceRequest.h"
+#include <QDateTime>
 #include <QFile>
 #include <QNetworkReply>
 #include <QNetworkCookie>
 #include <QFile>
 #include <QNetworkReply>
 #include <QNetworkCookie>
@@ -132,6 +133,7 @@ QNetworkReplyHandler::QNetworkReplyHandler(ResourceHandle *handle)
     , m_reply(0)
     , m_redirected(false)
     , m_responseSent(false)
     , m_reply(0)
     , m_redirected(false)
     , m_responseSent(false)
+    , m_startTime(0)
 {
     const ResourceRequest &r = m_resourceHandle->request();
 
 {
     const ResourceRequest &r = m_resourceHandle->request();
 
@@ -252,6 +254,9 @@ void QNetworkReplyHandler::sendResponseIfNeeded()
         response.setHTTPHeaderField(QString::fromAscii(headerName), QString::fromAscii(m_reply->rawHeader(headerName)));
     }
 
         response.setHTTPHeaderField(QString::fromAscii(headerName), QString::fromAscii(m_reply->rawHeader(headerName)));
     }
 
+    if (isLocalFileReply)
+        response.setExpirationDate(m_startTime);
+
     QUrl redirection = m_reply->attribute(QNetworkRequest::RedirectionTargetAttribute).toUrl();
     if (redirection.isValid()) {
         QUrl newUrl = m_reply->url().resolved(redirection);
     QUrl redirection = m_reply->attribute(QNetworkRequest::RedirectionTargetAttribute).toUrl();
     if (redirection.isValid()) {
         QUrl newUrl = m_reply->url().resolved(redirection);
@@ -307,6 +312,8 @@ void QNetworkReplyHandler::start()
         && (!url.toLocalFile().isEmpty() || url.scheme() == QLatin1String("data")))
         m_method = QNetworkAccessManager::GetOperation;
 
         && (!url.toLocalFile().isEmpty() || url.scheme() == QLatin1String("data")))
         m_method = QNetworkAccessManager::GetOperation;
 
+    m_startTime = QDateTime::currentDateTime().toTime_t();
+
     switch (m_method) {
         case QNetworkAccessManager::GetOperation:
             m_reply = manager->get(m_request);
     switch (m_method) {
         case QNetworkAccessManager::GetOperation:
             m_reply = manager->get(m_request);
index 20e97a6..935009d 100644 (file)
@@ -63,6 +63,7 @@ private:
     bool m_responseSent;
     QNetworkAccessManager::Operation m_method;
     QNetworkRequest m_request;
     bool m_responseSent;
     QNetworkAccessManager::Operation m_method;
     QNetworkRequest m_request;
+    uint   m_startTime;
 };
 
 // Self destructing QIODevice for FormData
 };
 
 // Self destructing QIODevice for FormData