diff options
author | Cary Clark <cary@android.com> | 2009-09-10 13:30:19 -0400 |
---|---|---|
committer | Cary Clark <cary@android.com> | 2009-09-10 17:09:37 -0400 |
commit | 0a7dd05ee942fb3835457cf640633c2d78f0a2e1 (patch) | |
tree | 2a599085302edd7ebba0667cb38d4dda862a5580 /WebKit/android/jni | |
parent | d709ea1bc8aa27b597a3ec568e7cb6eb3e094467 (diff) | |
download | external_webkit-0a7dd05ee942fb3835457cf640633c2d78f0a2e1.zip external_webkit-0a7dd05ee942fb3835457cf640633c2d78f0a2e1.tar.gz external_webkit-0a7dd05ee942fb3835457cf640633c2d78f0a2e1.tar.bz2 |
allow mixed-case schemes in resource URLs
Adjust the scheme to all lower case before looking up the
resource if the original was not already lower case.
This fixes http://b/2056348
Diffstat (limited to 'WebKit/android/jni')
-rw-r--r-- | WebKit/android/jni/WebCoreFrameBridge.cpp | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/WebKit/android/jni/WebCoreFrameBridge.cpp b/WebKit/android/jni/WebCoreFrameBridge.cpp index 9cc5e90..f366479 100644 --- a/WebKit/android/jni/WebCoreFrameBridge.cpp +++ b/WebKit/android/jni/WebCoreFrameBridge.cpp @@ -280,13 +280,26 @@ WebFrame::startLoadingResource(WebCore::ResourceHandle* loader, TimeCounterAuto counter(TimeCounter::JavaCallbackTimeCounter); #endif LOGV("::WebCore:: startLoadingResource(%p, %s)", - loader, request.url().string().ascii().data()); + loader, request.url().string().latin1().data()); WebCore::String method = request.httpMethod(); WebCore::HTTPHeaderMap headers = request.httpHeaderFields(); JNIEnv* env = JSC::Bindings::getJNIEnv(); WebCore::String urlStr = request.url().string(); + int colon = urlStr.find(':'); + bool allLower = true; + for (int index = 0; index < colon; index++) { + UChar ch = urlStr[index]; + if (!WTF::isASCIIAlpha(ch)) + break; + allLower &= WTF::isASCIILower(ch); + if (index == colon - 1 && !allLower) { + urlStr = urlStr.substring(0, colon).lower() + + urlStr.substring(colon); + } + } + LOGV("%s lower=%s", __FUNCTION__, urlStr.latin1().data()); jstring jUrlStr = env->NewString(urlStr.characters(), urlStr.length()); jstring jMethodStr = NULL; if (!method.isEmpty()) |