https://bugs.webkit.org/show_bug.cgi?id=80430
Patch by Lianghui Chen <liachen@rim.com> on 2012-03-06
Reviewed by Rob Buis.
Source/WebCore:
For loads started by AppCache, they are based on the manifest file,
it is not definitely sure what target it is for, so we just guess
based on its mimetype or file extension.
* loader/appcache/ApplicationCacheGroup.cpp:
(WebCore::ApplicationCacheGroup::createResourceHandle):
* loader/cache/CachedResource.cpp:
(WebCore):
(WebCore::CachedResource::load):
* platform/network/blackberry/ResourceRequest.h:
(ResourceRequest):
* platform/network/blackberry/ResourceRequestBlackBerry.cpp:
(WebCore):
(WebCore::mimeTypeRequestTypeMap):
(WebCore::ResourceRequest::targetTypeFromMimeType):
* workers/DefaultSharedWorkerRepository.cpp:
(WebCore::SharedWorkerScriptLoader::load):
* workers/Worker.cpp:
(WebCore::Worker::create):
* workers/WorkerContext.cpp:
(WebCore::WorkerContext::importScripts):
* workers/WorkerScriptLoader.cpp:
(WebCore::WorkerScriptLoader::createResourceRequest):
* workers/WorkerScriptLoader.h:
(WorkerScriptLoader):
Source/WebKit/blackberry:
Removed unused code in dispatchWillSendRequest(). These codes are too
late as the target type has already been referred to when calling
ResourceRequest::initializePlatformRequest().
* WebCoreSupport/FrameLoaderClientBlackBerry.cpp:
(WebCore::FrameLoaderClientBlackBerry::dispatchWillSendRequest):
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@110023
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
+2012-03-06 Lianghui Chen <liachen@rim.com>
+
+ [BlackBerry] Set correct ResourceRequest target type.
+ https://bugs.webkit.org/show_bug.cgi?id=80430
+
+ Reviewed by Rob Buis.
+
+ For loads started by AppCache, they are based on the manifest file,
+ it is not definitely sure what target it is for, so we just guess
+ based on its mimetype or file extension.
+
+ * loader/appcache/ApplicationCacheGroup.cpp:
+ (WebCore::ApplicationCacheGroup::createResourceHandle):
+ * loader/cache/CachedResource.cpp:
+ (WebCore):
+ (WebCore::CachedResource::load):
+ * platform/network/blackberry/ResourceRequest.h:
+ (ResourceRequest):
+ * platform/network/blackberry/ResourceRequestBlackBerry.cpp:
+ (WebCore):
+ (WebCore::mimeTypeRequestTypeMap):
+ (WebCore::ResourceRequest::targetTypeFromMimeType):
+ * workers/DefaultSharedWorkerRepository.cpp:
+ (WebCore::SharedWorkerScriptLoader::load):
+ * workers/Worker.cpp:
+ (WebCore::Worker::create):
+ * workers/WorkerContext.cpp:
+ (WebCore::WorkerContext::importScripts):
+ * workers/WorkerScriptLoader.cpp:
+ (WebCore::WorkerScriptLoader::createResourceRequest):
+ * workers/WorkerScriptLoader.h:
+ (WorkerScriptLoader):
+
2012-03-06 Dana Jansens <danakj@chromium.org>
[chromium] Add clipping to scissor rect to CCOcclusionTracker
}
}
+#if PLATFORM(BLACKBERRY)
+ ResourceRequest::TargetType target = ResourceRequest::TargetIsUnspecified;
+ if (newestCachedResource) {
+ const String& mimeType = newestCachedResource->response().mimeType();
+ if (!mimeType.isEmpty())
+ target = ResourceRequest::targetTypeFromMimeType(mimeType);
+ }
+ if (target == ResourceRequest::TargetIsUnspecified) {
+ String mimeType = mimeTypeFromDataURL(url);
+ if (!mimeType.isEmpty())
+ target = ResourceRequest::targetTypeFromMimeType(mimeType);
+ }
+
+ request.setTargetType(target);
+#endif
+
RefPtr<ResourceHandle> handle = ResourceHandle::create(m_frame->loader()->networkingContext(), request, this, false, true);
#if ENABLE(INSPECTOR)
// Because willSendRequest only gets called during redirects, we initialize
return ResourceLoadPriorityLow;
}
-#if PLATFORM(CHROMIUM)
+#if PLATFORM(CHROMIUM) || PLATFORM(BLACKBERRY)
static ResourceRequest::TargetType cachedResourceTypeToTargetType(CachedResource::Type type)
{
switch (type) {
m_options = options;
m_loading = true;
-#if PLATFORM(CHROMIUM)
+#if PLATFORM(CHROMIUM) || PLATFORM(BLACKBERRY)
if (m_resourceRequest.targetType() == ResourceRequest::TargetIsUnspecified)
m_resourceRequest.setTargetType(cachedResourceTypeToTargetType(type()));
#endif
TargetType targetType() const { return m_targetType; }
void setTargetType(TargetType type) { m_targetType = type; }
+ static TargetType targetTypeFromMimeType(const String& mimeType);
+
private:
friend class ResourceRequestBase;
#include "BlobRegistryImpl.h"
#include <BlackBerryPlatformClient.h>
#include <network/NetworkRequest.h>
+#include <wtf/HashMap.h>
#include <wtf/text/CString.h>
using BlackBerry::Platform::NetworkRequest;
}
}
+typedef HashMap<String, ResourceRequest::TargetType> MimeTypeResourceRequestTypeMap;
+
+static const MimeTypeResourceRequestTypeMap& mimeTypeRequestTypeMap()
+{
+ static MimeTypeResourceRequestTypeMap* map = 0;
+ if (!map) {
+ map = new MimeTypeResourceRequestTypeMap;
+
+ if (map) {
+ // The list here should match extensionMap[] in MIMETypeRegistryBlackBerry.cpp
+ map->add(String("text/css"), ResourceRequest::TargetIsStyleSheet);
+ map->add(String("application/x-javascript"), ResourceRequest::TargetIsScript);
+ map->add(String("image/bmp"), ResourceRequest::TargetIsImage);
+ map->add(String("image/gif"), ResourceRequest::TargetIsImage);
+ map->add(String("image/x-icon"), ResourceRequest::TargetIsImage);
+ map->add(String("image/jpeg"), ResourceRequest::TargetIsImage);
+ map->add(String("image/png"), ResourceRequest::TargetIsImage);
+ map->add(String("image/x-portable-bitmap"), ResourceRequest::TargetIsImage);
+ map->add(String("image/x-portable-graymap"), ResourceRequest::TargetIsImage);
+ map->add(String("image/x-portable-pixmap"), ResourceRequest::TargetIsImage);
+ map->add(String("image/svg+xml"), ResourceRequest::TargetIsImage);
+ map->add(String("image/tiff"), ResourceRequest::TargetIsImage);
+ map->add(String("image/x-xbitmap"), ResourceRequest::TargetIsImage);
+ map->add(String("image/x-xpm"), ResourceRequest::TargetIsImage);
+ }
+ }
+
+ return *map;
+}
+
+ResourceRequest::TargetType ResourceRequest::targetTypeFromMimeType(const String& mimeType)
+{
+ const MimeTypeResourceRequestTypeMap& map = mimeTypeRequestTypeMap();
+
+ MimeTypeResourceRequestTypeMap::const_iterator iter = map.find(mimeType);
+ if (iter == map.end())
+ return ResourceRequest::TargetIsUnspecified;
+
+ return iter->second;
+}
+
void ResourceRequest::initializePlatformRequest(NetworkRequest& platformRequest, bool isInitial) const
{
// If this is the initial load, skip the request body and headers.
// Mark this object as active for the duration of the load.
m_scriptLoader = WorkerScriptLoader::create();
-#if PLATFORM(CHROMIUM)
+#if PLATFORM(CHROMIUM) || PLATFORM(BLACKBERRY)
m_scriptLoader->setTargetType(ResourceRequest::TargetIsSharedWorker);
#endif
m_scriptLoader->loadAsynchronously(m_worker->scriptExecutionContext(), url, DenyCrossOriginRequests, this);
worker->setPendingActivity(worker.get());
worker->m_scriptLoader = WorkerScriptLoader::create();
-#if PLATFORM(CHROMIUM)
+#if PLATFORM(CHROMIUM) || PLATFORM(BLACKBERRY)
worker->m_scriptLoader->setTargetType(ResourceRequest::TargetIsWorker);
#endif
worker->m_scriptLoader->loadAsynchronously(context, scriptURL, DenyCrossOriginRequests, worker.get());
for (Vector<KURL>::const_iterator it = completedURLs.begin(); it != end; ++it) {
RefPtr<WorkerScriptLoader> scriptLoader(WorkerScriptLoader::create());
-#if PLATFORM(CHROMIUM)
+#if PLATFORM(CHROMIUM) || PLATFORM(BLACKBERRY)
scriptLoader->setTargetType(ResourceRequest::TargetIsScript);
#endif
scriptLoader->loadSynchronously(scriptExecutionContext(), *it, AllowCrossOriginRequests);
{
OwnPtr<ResourceRequest> request = adoptPtr(new ResourceRequest(m_url));
request->setHTTPMethod("GET");
-#if PLATFORM(CHROMIUM)
+#if PLATFORM(CHROMIUM) || PLATFORM(BLACKBERRY)
request->setTargetType(m_targetType);
#endif
return request.release();
virtual void didFail(const ResourceError&);
virtual void didFailRedirectCheck();
-#if PLATFORM(CHROMIUM)
+#if PLATFORM(CHROMIUM) || PLATFORM(BLACKBERRY)
void setTargetType(ResourceRequest::TargetType targetType) { m_targetType = targetType; }
#endif
+2012-03-06 Lianghui Chen <liachen@rim.com>
+
+ [BlackBerry] Set correct ResourceRequest target type.
+ https://bugs.webkit.org/show_bug.cgi?id=80430
+
+ Reviewed by Rob Buis.
+
+ Removed unused code in dispatchWillSendRequest(). These codes are too
+ late as the target type has already been referred to when calling
+ ResourceRequest::initializePlatformRequest().
+
+ * WebCoreSupport/FrameLoaderClientBlackBerry.cpp:
+ (WebCore::FrameLoaderClientBlackBerry::dispatchWillSendRequest):
+
2012-03-06 Lianghui Chen <liachen@rim.com>
[BlackBerry] Remove unused and unneeded WebPageClient::downloadRequested(NetworkRequest&)
finalUrl.characters(), finalUrl.length());
}
- // FIXME: Update the request type. See PR #119792.
- if (docLoader->frameLoader()->isLoadingMainFrame())
- request.setTargetType(ResourceRequest::TargetIsMainFrame);
- else
- request.setTargetType(ResourceRequest::TargetIsSubframe);
-
FrameLoader* loader = m_frame->loader();
ASSERT(loader);
if (isBackForwardLoadType(loader->loadType())) {