+2004-12-09 Chris Blumenberg <cblu@apple.com>
+
+ Fix for busting XMLHTTPRequest.
+
+ Reviewed by kocienda.
+
+ * khtml/misc/loader.cpp:
+ (Loader::servePendingRequests): pass true for deliverAllData
+ * kwq/KWQKJob.h:
+ (KIO::get): take deliverAllData param
+ (KIO::http_post): ditto
+ * kwq/KWQKJobClasses.h:
+ * kwq/KWQKJobClasses.mm:
+ (KIO::TransferJob::TransferJob): if deliverAllData, create signal with data param
+ (KIO::TransferJob::emitResult): if deliverAllData, call signal with data param
+
2004-12-09 Ken Kocienda <kocienda@apple.com>
Reviewed by John
#endif
KURL u(req->object->url().string());
+#if APPLE_CHANGES
+ KIO::TransferJob* job = KIO::get( u, false, false /*no GUI*/, true);
+#else
KIO::TransferJob* job = KIO::get( u, false, false /*no GUI*/);
-
+#endif
+
job->addMetaData("cache", getCacheControlString(req->object->cachePolicy()));
if (!req->object->accept().isEmpty())
job->addMetaData("accept", req->object->accept());
#endif // APPLE_CHANGES
}
-#if !defined(APPLE_CHANGES)
-void Loader::slotFinished( KIO::Job* job, NSData *allData)
+#if !APPLE_CHANGES
+void Loader::slotFinished( KIO::Job* job)
{
Request *r = m_requestsLoading.take( job );
KIO::TransferJob* j = static_cast<KIO::TransferJob*>(job);
void http_update_cache(const KURL &, bool, time_t);
-inline TransferJob *get(const KURL &url, bool reload, bool)
- { return new TransferJob(url, reload); }
+inline TransferJob *get(const KURL &url, bool reload, bool, bool deliverAllData=false)
+ { return new TransferJob(url, reload, deliverAllData); }
-inline TransferJob *http_post(const KURL& url, const khtml::FormData &postData, bool)
- { return new TransferJob(url, postData); }
+inline TransferJob *http_post(const KURL& url, const khtml::FormData &postData, bool, bool deliverAllData=false)
+ { return new TransferJob(url, postData, deliverAllData); }
} // namespace KIO
class TransferJob : public Job {
public:
- TransferJob(const KURL &, bool reload);
- TransferJob(const KURL &, const khtml::FormData &postData);
+ TransferJob(const KURL &, bool reload, bool deliverAllData=false);
+ TransferJob(const KURL &, const khtml::FormData &postData, bool deliverAllData=false);
~TransferJob();
int error() const;
void emitData(const char *, int);
void emitRedirection(const KURL &);
- void emitResult();
- void emitResult(NSData *);
+ void emitResult(NSData *allData=nil);
void emitReceivedResponse(NSURLResponse *);
khtml::FormData postData() const;
TransferJobPrivate *d;
+ bool m_deliverAllData;
+
KWQSignal m_data;
KWQSignal m_redirection;
- KWQSignal m_result1;
- KWQSignal m_result2;
- KWQSignal m_receivedResponse;
+ KWQSignal m_result;
+ KWQSignal m_receivedResponse;
};
} // namespace KIO
QString responseHeaders;
};
-TransferJob::TransferJob(const KURL &url, bool reload)
+TransferJob::TransferJob(const KURL &url, bool reload, bool deliverAllData)
: d(new TransferJobPrivate(url)),
+ m_deliverAllData(deliverAllData),
m_data(this, SIGNAL(data(KIO::Job*, const char*, int))),
m_redirection(this, SIGNAL(redirection(KIO::Job*, const KURL&))),
- m_result1(this, SIGNAL(result(KIO::Job*))),
- m_result2(this, SIGNAL(result(KIO::Job*, NSData *))),
+ m_result(this, deliverAllData ? SIGNAL(result(KIO::Job*, NSData *)) : SIGNAL(result(KIO::Job*))),
m_receivedResponse(this, SIGNAL(receivedResponse(KIO::Job*, NSURLResponse *)))
{
}
-TransferJob::TransferJob(const KURL &url, const FormData &postData)
+TransferJob::TransferJob(const KURL &url, const FormData &postData, bool deliverAllData)
: d(new TransferJobPrivate(url, postData)),
+ m_deliverAllData(deliverAllData),
m_data(this, SIGNAL(data(KIO::Job*, const char*, int))),
m_redirection(this, SIGNAL(redirection(KIO::Job*, const KURL&))),
- m_result1(this, SIGNAL(result(KIO::Job*))),
- m_result2(this, SIGNAL(result(KIO::Job*, NSData *))),
+ m_result(this, deliverAllData ? SIGNAL(result(KIO::Job*, NSData *)) : SIGNAL(result(KIO::Job*))),
m_receivedResponse(this, SIGNAL(receivedResponse(KIO::Job*, NSURLResponse *)))
{
}
m_redirection.call(this, url);
}
-void TransferJob::emitResult()
-{
- m_result1.call(this);
-}
-
void TransferJob::emitResult(NSData *allData)
{
- m_result2.call(this, allData);
+ m_deliverAllData ? m_result.call(this, allData) : m_result.call(this);
}
void TransferJob::emitReceivedResponse(NSURLResponse *response)