From kde-commits Thu Aug 24 14:10:47 2006 From: Nikolas Zimmermann Date: Thu, 24 Aug 2006 14:10:47 +0000 To: kde-commits Subject: branches/work/unity/WebKit/WebCore Message-Id: <1156428647.618021.17575.nullmailer () svn ! kde ! org> X-MARC-Message: https://marc.info/?l=kde-commits&m=115642868226564 SVN commit 576654 by wildfox: Implemented mimetype detection, and setting the correct mimetype in the ResourceRequest, _before_ calling begin(). The approriate documents (either for SVG/HTML/XHTML) will be created now! :-) Finally we can enable SVG_SUPPORT by default! M +1 -1 CMakeLists.txt M +1 -0 platform/TransferJobInternal.h M +24 -11 platform/qt/FrameQt.cpp M +1 -1 platform/qt/FrameQt.h M +23 -7 platform/qt/TransferJobManager.cpp M +0 -2 platform/qt/TransferJobManager.h M +0 -3 platform/qt/TransferJobQt.cpp --- branches/work/unity/WebKit/WebCore/CMakeLists.txt #576653:576654 @@ -2,7 +2,7 @@ project( WebCore ) # Global switch for SVG support -SET (USE_WEBKIT_SVG_SUPPORT 0) +SET (USE_WEBKIT_SVG_SUPPORT 1) include (CheckCXXCompilerFlag) --- branches/work/unity/WebKit/WebCore/platform/TransferJobInternal.h #576653:576654 @@ -143,6 +143,7 @@ #endif #if PLATFORM(QT) QString m_response; + QString m_mimetype; #endif }; --- branches/work/unity/WebKit/WebCore/platform/qt/FrameQt.cpp #576653:576654 @@ -48,6 +48,7 @@ #include "GraphicsContext.h" #include "HTMLDocument.h" #include "TransferJob.h" +#include "TransferJobInternal.h" #include "PlatformMouseEvent.h" #include "PlatformKeyboardEvent.h" #include "PlatformWheelEvent.h" @@ -150,14 +151,10 @@ { qDebug("openURL(%s)", url.url().latin1()); didOpenURL(url); - - // ResourceRequest request(resourceRequest()); - // request.m_responseMIMEType = "image/svg+xml"; - // setResourceRequest(request); + m_beginCalled = false; - begin(url); TransferJob* job = new TransferJob(this, "GET", url); - job->start(document()->docLoader()); + job->start(0); return true; } @@ -176,10 +173,10 @@ m_client->submitForm(request.doPost() ? "POST" : "GET", request.url(), &request.postData); */ - begin(request.url()); + m_beginCalled = false; TransferJob* job = new TransferJob(this, request.doPost() ? "POST" : "GET", request.url(), request.postData); - job->start(document()->docLoader()); + job->start(0); clearRecordedFormValues(); } @@ -188,11 +185,12 @@ { //need to potentially updateLocationBar(str.ascii()); or notify sys of new url mybe event or callback const KURL url = request.url(); - printf("------------------> LOADING NEW URL %s \n", url.url().ascii()); + didOpenURL(url); - begin(url); + m_beginCalled = false; + TransferJob* job = new TransferJob(this, "GET", url); - job->start(document()->docLoader()); + job->start(0); } String FrameQt::userAgent() const @@ -537,12 +535,27 @@ void FrameQt::receivedData(TransferJob* job, const char* data, int length) { + if (!m_beginCalled) { + m_beginCalled = true; + + // Assign correct mimetype _before_ calling begin()! + TransferJobInternal* d = job->getInternal(); + if (d) { + ResourceRequest request(resourceRequest()); + request.m_responseMIMEType = fromQString(d->m_mimetype); + setResourceRequest(request); + } + + begin(job->url()); + } + write(data, length); } void FrameQt::receivedAllData(TransferJob* job, PlatformData data) { end(); + m_beginCalled = false; } void FrameQt::setFrameGeometry(const IntRect &r) --- branches/work/unity/WebKit/WebCore/platform/qt/FrameQt.h #576653:576654 @@ -143,7 +143,7 @@ void init(); virtual bool passMouseDownEventToWidget(Widget*); FrameQtClient* m_client; - + bool m_beginCalled : 1; }; inline FrameQt* Win(Frame* frame) { return static_cast(frame); } --- branches/work/unity/WebKit/WebCore/platform/qt/TransferJobManager.cpp #576653:576654 @@ -25,10 +25,12 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +#include "config.h" + #include #include -#include "config.h" +#include "FrameQt.h" #include "HelperQt.h" #include "TransferJobManager.h" #include "TransferJobInternal.h" @@ -76,12 +78,28 @@ d->client->receivedData(job, data.data(), data.size()); } -void TransferJobManager::slotMimetype(KIO::Job* job, const QString& type) +void TransferJobManager::slotMimetype(KIO::Job* kioJob, const QString& type) { - qDebug("TransferJobManager::slotMimetype(), job=%p, type=%s", job, qPrintable(type)); + qDebug("TransferJobManager::slotMimetype(), kioJob=%p, type=%s", kioJob, qPrintable(type)); + + TransferJob* job = 0; + + // Check if we know about 'kioJob'... + QMap::const_iterator it = m_kioToJobMap.find(kioJob); + if (it != m_kioToJobMap.end()) + job = it.value(); + + if (!job) + return; + + TransferJobInternal* d = job->getInternal(); + if (!d || !d->client) + return; + + d->m_mimetype = type; } -void TransferJobManager::slotResult(KJob *kjob) +void TransferJobManager::slotResult(KJob* kjob) { qDebug("TransferJobManager::slotResult(), kjob=%p", kjob); @@ -149,7 +167,7 @@ else if (job->method() == "POST") { DeprecatedString postData = job->postData().flattenToString(); QByteArray postDataArray(postData.ascii(), postData.length()); - + kioJob = KIO::http_post(KUrl(toQString(url)), postDataArray, false); kioJob->addMetaData("PropagateHttpHeader", "true"); kioJob->addMetaData("content-type", "Content-Type: application/x-www-form-urlencoded"); @@ -176,5 +194,3 @@ } // namespace WebCore #include "TransferJobManager.moc" - -// vim: ts=4 sw=4 et --- branches/work/unity/WebKit/WebCore/platform/qt/TransferJobManager.h #576653:576654 @@ -64,5 +64,3 @@ } #endif - -// vim: ts=4 sw=4 et --- branches/work/unity/WebKit/WebCore/platform/qt/TransferJobQt.cpp #576653:576654 @@ -28,7 +28,6 @@ #include "config.h" #include "HelperQt.h" -#include #include #include "DocLoader.h" @@ -101,5 +100,3 @@ } } // namespace WebCore - -// vim: ts=4 sw=4 et