QWebNetworkJob::QWebNetworkJob()
: d(new QWebNetworkJobPrivate)
{
- d->ref = 1;
- d->redirected = false;
- d->interface = 0;
}
/*!
return 0;
}
+QWebNetworkJob::JobStatus QWebNetworkJob::status() const
+{
+ return d->jobStatus;
+}
+
+void QWebNetworkJob::setStatus(const JobStatus& status)
+{
+ d->jobStatus = status;
+}
+
/*!
\class QWebNetworkManager
\internal
void QWebNetworkManager::started(QWebNetworkJob *job)
{
Q_ASSERT(job->d);
+ Q_ASSERT(job->status() == QWebNetworkJob::JobCreated ||
+ job->status() == QWebNetworkJob::JobRecreated);
+ job->setStatus(QWebNetworkJob::JobStarted);
ResourceHandleClient* client = 0;
if (job->d->resourceHandle) {
client = job->d->resourceHandle->client();
void QWebNetworkManager::data(QWebNetworkJob *job, const QByteArray &data)
{
+ Q_ASSERT(job->status() == QWebNetworkJob::JobStarted ||
+ job->status() == QWebNetworkJob::JobReceivingData);
+
+ job->setStatus(QWebNetworkJob::JobReceivingData);
ResourceHandleClient* client = 0;
if (job->d->resourceHandle) {
client = job->d->resourceHandle->client();
void QWebNetworkManager::finished(QWebNetworkJob *job, int errorCode)
{
+ Q_ASSERT(job->status() == QWebNetworkJob::JobStarted ||
+ job->status() == QWebNetworkJob::JobReceivingData);
+
if (m_synchronousJobs.contains(job))
m_synchronousJobs.remove(job);
+ job->setStatus(QWebNetworkJob::JobFinished);
ResourceHandleClient* client = 0;
if (job->d->resourceHandle) {
client = job->d->resourceHandle->client();
if (job->d->redirected) {
job->d->redirected = false;
+ job->setStatus(QWebNetworkJob::JobRecreated);
job->d->interface->addJob(job);
return;
}
class QWEBKIT_EXPORT QWebNetworkJob
{
public:
+
QUrl url() const;
QByteArray postData() const;
QHttpRequestHeader httpHeader() const;
QWebFrame *frame() const;
+protected:
+ enum JobStatus {
+ JobCreated,
+ JobRecreated,
+ JobStarted,
+ JobReceivingData,
+ JobFinished
+ };
+
+ JobStatus status() const;
+ void setStatus(const JobStatus&);
+
private:
QWebNetworkJob();
~QWebNetworkJob();
friend class QWebNetworkManager;
friend class QWebObjectPluginConnector;
+ friend class QWebNetworkJobPrivate;
QWebNetworkJobPrivate *d;
};
+2007-10-25 Holger Freyther <zecke@selfish.org>
+
+ Reviewed by Simon Hausmann <hausmann@kde.org>.
+
+ * No need to initialize values in the QWebNetworkJob c'tor
+ * Add a JobStatus to QWebNetworkJob and verify that the jobs are handled in the way we expect them to be handled. This means no data after the job has finished, not finishing a job before it has been started.
+
+
+ * Api/qwebnetworkinterface.cpp:
+ (QWebNetworkJob::status):
+ (QWebNetworkJob::setStatus):
+ (QWebNetworkManager::started):
+ (QWebNetworkManager::data):
+ (QWebNetworkManager::finished):
+ * Api/qwebnetworkinterface.h:
+ * Api/qwebnetworkinterface_p.h:
+ (QWebNetworkJobPrivate::QWebNetworkJobPrivate):
+
2007-10-25 Holger Freyther <zecke@selfish.org>
Reviewed by Simon Hausmann <hausmann@kde.org>.