summaryrefslogtreecommitdiffstats
path: root/WebKit/android/WebCoreSupport/WebRequest.cpp
diff options
context:
space:
mode:
authorJeff Sharkey <jsharkey@android.com>2010-12-16 20:31:13 -0800
committerJeff Sharkey <jsharkey@android.com>2010-12-16 20:32:05 -0800
commit4cb3633ed73429b0e553ce48d94911f61dd6e769 (patch)
tree6df09931169c4439ac4269f43c501b4fbbbbd338 /WebKit/android/WebCoreSupport/WebRequest.cpp
parent27f8b0be5e91afbcd668785adb636b43f27cc9f7 (diff)
downloadexternal_webkit-4cb3633ed73429b0e553ce48d94911f61dd6e769.zip
external_webkit-4cb3633ed73429b0e553ce48d94911f61dd6e769.tar.gz
external_webkit-4cb3633ed73429b0e553ce48d94911f61dd6e769.tar.bz2
Fix two SIGSEGV bugs in request interception.
When intercepting requests, properly ReleaseStringUTFChars for mimeType and encoding after bringing over from Java. Also, when finishing an intercepted request that failed, construct a valid WebResponse. Change-Id: I2990df2108a8fdf45c103512a8b9a30f4d6992ce
Diffstat (limited to 'WebKit/android/WebCoreSupport/WebRequest.cpp')
-rw-r--r--WebKit/android/WebCoreSupport/WebRequest.cpp13
1 files changed, 10 insertions, 3 deletions
diff --git a/WebKit/android/WebCoreSupport/WebRequest.cpp b/WebKit/android/WebCoreSupport/WebRequest.cpp
index cd496df..da84126 100644
--- a/WebKit/android/WebCoreSupport/WebRequest.cpp
+++ b/WebKit/android/WebCoreSupport/WebRequest.cpp
@@ -120,9 +120,16 @@ void WebRequest::finish(bool success)
m_urlLoader->maybeCallOnMainThread(NewRunnableMethod(
m_urlLoader.get(), &WebUrlLoaderClient::didFinishLoading));
} else {
- OwnPtr<WebResponse> webResponse(new WebResponse(m_request.get()));
- m_urlLoader->maybeCallOnMainThread(NewRunnableMethod(
- m_urlLoader.get(), &WebUrlLoaderClient::didFail, webResponse.release()));
+ if (m_interceptResponse == NULL) {
+ OwnPtr<WebResponse> webResponse(new WebResponse(m_request.get()));
+ m_urlLoader->maybeCallOnMainThread(NewRunnableMethod(
+ m_urlLoader.get(), &WebUrlLoaderClient::didFail, webResponse.release()));
+ } else {
+ OwnPtr<WebResponse> webResponse(new WebResponse(m_url, m_interceptResponse->mimeType(), 0,
+ m_interceptResponse->encoding(), m_interceptResponse->status()));
+ m_urlLoader->maybeCallOnMainThread(NewRunnableMethod(
+ m_urlLoader.get(), &WebUrlLoaderClient::didFail, webResponse.release()));
+ }
}
m_networkBuffer = 0;
m_request = 0;