+2008-01-10 Simon Hausmann <hausmann@webkit.org>
+
+ Reviewed by Lars.
+
+ http://bugs.webkit.org/show_bug.cgi?id=16588
+
+ Added a (last) Frame argument to ResourceHandle::loadResourceSynchronously.
+ This allows implementing the synchronous loading correctly for the Qt port where the networking
+ backend is bound to the page.
+
+ * loader/FrameLoader.cpp:
+ (WebCore::FrameLoader::loadResourceSynchronously):
+ * platform/network/ResourceHandle.h:
+ * platform/network/cf/ResourceHandleCFNet.cpp:
+ * platform/network/curl/ResourceHandleCurl.cpp:
+ * platform/network/mac/ResourceHandleMac.mm:
+ * platform/network/qt/ResourceHandleQt.cpp:
+ (WebCore::ResourceHandle::loadResourceSynchronously):
+
2008-01-10 Kevin Ollivier <kevino@theolliviers.com>
wx build fix for changes in r29328
if (error.isNull()) {
ASSERT(!newRequest.isNull());
didTellClientAboutLoad(newRequest.url().string());
- ResourceHandle::loadResourceSynchronously(newRequest, error, response, data);
+ ResourceHandle::loadResourceSynchronously(newRequest, error, response, data, m_frame);
}
sendRemainingDelegateMessages(identifier, response, data.size(), error);
// FIXME: should not need the Frame
static PassRefPtr<ResourceHandle> create(const ResourceRequest&, ResourceHandleClient*, Frame*, bool defersLoading, bool shouldContentSniff, bool mightDownloadFromHandle = false);
- static void loadResourceSynchronously(const ResourceRequest&, ResourceError&, ResourceResponse&, Vector<char>& data);
+ static void loadResourceSynchronously(const ResourceRequest&, ResourceError&, ResourceResponse&, Vector<char>& data, Frame* frame);
static bool willLoadFromCache(ResourceRequest&);
~ResourceHandle();
return d->m_connection.releaseRef();
}
-void ResourceHandle::loadResourceSynchronously(const ResourceRequest& request, ResourceError& error, ResourceResponse& response, Vector<char>& vector)
+void ResourceHandle::loadResourceSynchronously(const ResourceRequest& request, ResourceError& error, ResourceResponse& response, Vector<char>& vector, Frame*)
{
ASSERT(!request.isEmpty());
CFURLResponseRef cfResponse = 0;
return false;
}
-void ResourceHandle::loadResourceSynchronously(const ResourceRequest&, ResourceError&, ResourceResponse&, Vector<char>&)
+void ResourceHandle::loadResourceSynchronously(const ResourceRequest&, ResourceError&, ResourceResponse&, Vector<char>&, Frame*)
{
notImplemented();
}
return nsURLResponse;
}
-void ResourceHandle::loadResourceSynchronously(const ResourceRequest& request, ResourceError& error, ResourceResponse& response, Vector<char>& data)
+void ResourceHandle::loadResourceSynchronously(const ResourceRequest& request, ResourceError& error, ResourceResponse& response, Vector<char>& data, Frame*)
{
NSError *nsError = nil;
return 0;
}
-void ResourceHandle::loadResourceSynchronously(const ResourceRequest& request, ResourceError& error, ResourceResponse& response, Vector<char>& data)
+void ResourceHandle::loadResourceSynchronously(const ResourceRequest& request, ResourceError& error, ResourceResponse& response, Vector<char>& data, Frame* frame)
{
-#if QT_VERSION < 0x040400
WebCoreSynchronousLoader syncLoader;
ResourceHandle handle(request, &syncLoader, true, false, true);
+#if QT_VERSION < 0x040400
if (!QWebNetworkManager::self()->add(&handle, QWebNetworkInterface::defaultInterface(), QWebNetworkManager::SynchronousJob)) {
// FIXME Create a sane ResourceError
error = ResourceError(String(), -1, String(), String());
return;
}
+#else
+ ResourceHandleInternal *d = handle.getInternal();
+ d->m_frame = static_cast<FrameLoaderClientQt*>(frame->loader()->client())->webFrame();
+ d->m_job = new QNetworkReplyHandler(&handle);
+#endif
syncLoader.waitForCompletion();
error = syncLoader.resourceError();
data = syncLoader.data();
qDebug() << data.size();
response = syncLoader.resourceResponse();
-#else
- notImplemented(); // #### implement me
-#endif
}