[SCM] WebKit Debian packaging branch, webkit-1.1, updated. upstream/1.1.17-1283-gcf603cf
eric at webkit.org
eric at webkit.org
Tue Jan 5 23:49:32 UTC 2010
The following commit has been merged in the webkit-1.1 branch:
commit fd9f25fd8ea9bf9595cb9c3c211e71b252e64a49
Author: eric at webkit.org <eric at webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date: Mon Dec 14 22:38:09 2009 +0000
2009-12-14 Andrei Popescu <andreip at google.com>
Reviewed by Darin Adler.
[Android] Android needs ResourceHandle implementation
https://bugs.webkit.org/show_bug.cgi?id=32515
Adds implementation of ResourceHandle on Android.
No new tests needed, this is platform-specific code, so existing
tests are sufficient.
* platform/network/android/ResourceHandleAndroid.cpp: Added.
(WebCore::ResourceHandleInternal::~ResourceHandleInternal):
(WebCore::ResourceHandle::~ResourceHandle):
(WebCore::ResourceHandle::start):
(WebCore::ResourceHandle::cancel):
(WebCore::ResourceHandle::bufferedData):
(WebCore::ResourceHandle::supportsBufferedData):
(WebCore::ResourceHandle::setDefersLoading):
(WebCore::ResourceHandle::willLoadFromCache):
(WebCore::ResourceHandle::loadsBlocked):
(WebCore::SyncLoader::SyncLoader):
(WebCore::SyncLoader::~SyncLoader):
(WebCore::SyncLoader::didReceiveResponse):
(WebCore::SyncLoader::didReceiveData):
(WebCore::SyncLoader::didFail):
(WebCore::ResourceHandle::loadResourceSynchronously):
* platform/network/android/ResourceLoaderAndroid.h: Added.
(WebCore::ResourceLoaderAndroid::~ResourceLoaderAndroid):
(WebCore::ResourceLoaderAndroid::ResourceLoaderAndroid):
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@52123 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index 8711e01..081218d 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,35 @@
+2009-12-14 Andrei Popescu <andreip at google.com>
+
+ Reviewed by Darin Adler.
+
+ [Android] Android needs ResourceHandle implementation
+ https://bugs.webkit.org/show_bug.cgi?id=32515
+
+ Adds implementation of ResourceHandle on Android.
+
+ No new tests needed, this is platform-specific code, so existing
+ tests are sufficient.
+
+ * platform/network/android/ResourceHandleAndroid.cpp: Added.
+ (WebCore::ResourceHandleInternal::~ResourceHandleInternal):
+ (WebCore::ResourceHandle::~ResourceHandle):
+ (WebCore::ResourceHandle::start):
+ (WebCore::ResourceHandle::cancel):
+ (WebCore::ResourceHandle::bufferedData):
+ (WebCore::ResourceHandle::supportsBufferedData):
+ (WebCore::ResourceHandle::setDefersLoading):
+ (WebCore::ResourceHandle::willLoadFromCache):
+ (WebCore::ResourceHandle::loadsBlocked):
+ (WebCore::SyncLoader::SyncLoader):
+ (WebCore::SyncLoader::~SyncLoader):
+ (WebCore::SyncLoader::didReceiveResponse):
+ (WebCore::SyncLoader::didReceiveData):
+ (WebCore::SyncLoader::didFail):
+ (WebCore::ResourceHandle::loadResourceSynchronously):
+ * platform/network/android/ResourceLoaderAndroid.h: Added.
+ (WebCore::ResourceLoaderAndroid::~ResourceLoaderAndroid):
+ (WebCore::ResourceLoaderAndroid::ResourceLoaderAndroid):
+
2009-12-14 Marco Martin <notmart at gmail.com>
Reviewed by Kenneth Rohde Christiansen.
diff --git a/WebCore/platform/network/android/ResourceHandleAndroid.cpp b/WebCore/platform/network/android/ResourceHandleAndroid.cpp
new file mode 100644
index 0000000..60bfc7b
--- /dev/null
+++ b/WebCore/platform/network/android/ResourceHandleAndroid.cpp
@@ -0,0 +1,154 @@
+/*
+ * Copyright 2009, The Android Open Source Project
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+
+#include "ResourceHandle.h"
+
+#include "CString.h"
+#include "DocLoader.h"
+#include "DocumentLoader.h"
+#include "Frame.h"
+#include "FrameLoader.h"
+#include "MainResourceLoader.h"
+#include "NotImplemented.h"
+#include "ResourceHandleClient.h"
+#include "ResourceHandleInternal.h"
+#include "ResourceLoaderAndroid.h"
+
+namespace WebCore {
+
+ResourceHandleInternal::~ResourceHandleInternal()
+{
+}
+
+ResourceHandle::~ResourceHandle()
+{
+}
+
+bool ResourceHandle::start(Frame* frame)
+{
+ DocumentLoader* docLoader = frame->loader()->activeDocumentLoader();
+ MainResourceLoader* mainLoader = docLoader->mainResourceLoader();
+ bool isMainResource = (mainLoader->handle() == this);
+
+ PassRefPtr<ResourceLoaderAndroid> loader = ResourceLoaderAndroid::start(this, d->m_request, frame->loader()->client(), isMainResource, false);
+
+ if (loader) {
+ d->m_loader = loader;
+ return true;
+ }
+
+ return false;
+}
+
+void ResourceHandle::cancel()
+{
+ if (d->m_loader)
+ d->m_loader->cancel();
+}
+
+PassRefPtr<SharedBuffer> ResourceHandle::bufferedData()
+{
+ notImplemented();
+ return 0;
+}
+
+bool ResourceHandle::supportsBufferedData()
+{
+ // We don't support buffering data on the native side.
+ notImplemented();
+ return false;
+}
+
+void ResourceHandle::setDefersLoading(bool defers)
+{
+ notImplemented();
+}
+
+// This static method is called to check to see if a POST response is in
+// the cache. The JNI call through to the HTTP cache stored on the Java
+// side may be slow, but is only used during a navigation to
+// a POST response.
+bool ResourceHandle::willLoadFromCache(ResourceRequest& request, Frame*)
+{
+ // set the cache policy correctly, copied from
+ // network/mac/ResourceHandleMac.mm
+ request.setCachePolicy(ReturnCacheDataDontLoad);
+ FormData* formData = request.httpBody();
+ return ResourceLoaderAndroid::willLoadFromCache(request.url(), formData ? formData->identifier() : 0);
+}
+
+bool ResourceHandle::loadsBlocked()
+{
+ // FIXME, need to check whether connection pipe is blocked.
+ // return false for now
+ return false;
+}
+
+// Class to handle synchronized loading of resources.
+class SyncLoader : public ResourceHandleClient {
+public:
+ SyncLoader(ResourceError& error, ResourceResponse& response, WTF::Vector<char>& data)
+ {
+ m_error = &error;
+ m_response = &response;
+ m_data = &data;
+ }
+ ~SyncLoader() {}
+
+ virtual void didReceiveResponse(ResourceHandle*, const ResourceResponse& response)
+ {
+ *m_response = response;
+ }
+
+ virtual void didReceiveData(ResourceHandle*, const char* data, int len, int lengthReceived)
+ {
+ m_data->append(data, len);
+ }
+
+ virtual void didFail(ResourceHandle*, const ResourceError& error)
+ {
+ *m_error = error;
+ }
+
+private:
+ ResourceError* m_error;
+ ResourceResponse* m_response;
+ WTF::Vector<char>* m_data;
+};
+
+void ResourceHandle::loadResourceSynchronously(const ResourceRequest& request,
+ StoredCredentials /*storedCredentials*/,
+ ResourceError& error, ResourceResponse& response, WTF::Vector<char>& data,
+ Frame* frame)
+{
+ SyncLoader s(error, response, data);
+ ResourceHandle h(request, &s, false, false, false);
+ // This blocks until the load is finished.
+ ResourceLoaderAndroid::start(&h, request, frame->loader()->client(), false, true);
+}
+
+} // namespace WebCore
diff --git a/WebCore/platform/network/android/ResourceLoaderAndroid.h b/WebCore/platform/network/android/ResourceLoaderAndroid.h
new file mode 100644
index 0000000..004675e
--- /dev/null
+++ b/WebCore/platform/network/android/ResourceLoaderAndroid.h
@@ -0,0 +1,53 @@
+/*
+ * Copyright 2009, The Android Open Source Project
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef ResourceLoaderAndroid_h
+#define ResourceLoaderAndroid_h
+
+#include <ResourceRequest.h>
+#include <wtf/PassRefPtr.h>
+#include <wtf/RefCounted.h>
+
+namespace WebCore {
+
+class FrameLoaderClient;
+class ResourceHandle;
+
+class ResourceLoaderAndroid : public RefCounted<ResourceLoaderAndroid> {
+public:
+ static PassRefPtr<ResourceLoaderAndroid> start(ResourceHandle*, const ResourceRequest&, FrameLoaderClient*, bool isMainResource, bool isSync);
+ virtual ~ResourceLoaderAndroid() { }
+
+ virtual void cancel() = 0;
+ virtual void downloadFile() = 0;
+
+ // Call to java to find out if this URL is in the cache
+ static bool willLoadFromCache(const WebCore::KURL&, int64_t identifier);
+protected:
+ ResourceLoaderAndroid() { }
+};
+
+}
+#endif // ResourceLoaderAndroid
--
WebKit Debian packaging
More information about the Pkg-webkit-commits
mailing list