diff options
author | Steve Block <steveblock@google.com> | 2011-08-25 12:41:57 +0100 |
---|---|---|
committer | Steve Block <steveblock@google.com> | 2011-08-31 14:21:59 +0100 |
commit | 5498351dca14a6380ef3174a0afa0bb950b92d68 (patch) | |
tree | 99de5978348aa4b62d01cb3443af1b3abacd1de4 /Source/WebKit/android/jni/WebCoreFrameBridge.cpp | |
parent | b489cd197be0a820a768f5bafacac9b6cd9cbb1c (diff) | |
download | external_webkit-5498351dca14a6380ef3174a0afa0bb950b92d68.zip external_webkit-5498351dca14a6380ef3174a0afa0bb950b92d68.tar.gz external_webkit-5498351dca14a6380ef3174a0afa0bb950b92d68.tar.bz2 |
Make sure WebViewClient.onPageStarted() doesn't preceed WebViewClient.shouldOverrideUrlLoading()
In the case of a server-side redirect, we were triggering a callback to
WebViewClient.onPageStarted() before we'd called
WebViewClient.shouldOverrideUrlLoading().
This change delays calling WebViewClient.onPageStarted() until after
WebViewClient.shouldOverrideUrlLoading() has returned and has indicated that the
WebView should continue with the load.
Bug: 5191031
Change-Id: I43d12c4df46e5d6e2defad10e80efbf0d5c30aed
Diffstat (limited to 'Source/WebKit/android/jni/WebCoreFrameBridge.cpp')
-rw-r--r-- | Source/WebKit/android/jni/WebCoreFrameBridge.cpp | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/Source/WebKit/android/jni/WebCoreFrameBridge.cpp b/Source/WebKit/android/jni/WebCoreFrameBridge.cpp index c1c8d96..f243b09 100644 --- a/Source/WebKit/android/jni/WebCoreFrameBridge.cpp +++ b/Source/WebKit/android/jni/WebCoreFrameBridge.cpp @@ -839,22 +839,24 @@ WebFrame::canHandleRequest(const WebCore::ResourceRequest& request) if (!javaFrame.get()) return true; - // always handle "POST" in place + // Always handle "POST" in place if (equalIgnoringCase(request.httpMethod(), "POST")) return true; const WebCore::KURL& requestUrl = request.url(); const WTF::String& url = requestUrl.string(); - // Empty urls should not be sent to java + // Empty URLs should not be sent to Java if (url.isEmpty()) return true; jstring jUrlStr = wtfStringToJstring(env, url); - // check to see whether browser app wants to hijack url loading. - // if browser app handles the url, we will return false to bail out WebCore loading + // Delegate to the Java side to make the decision. Note that the sense of + // the return value of the Java method is reversed. It will return true if + // the embedding application wishes to hijack the load and hence the WebView + // should _not_ proceed with the load. jboolean ret = env->CallBooleanMethod(javaFrame.get(), mJavaFrame->mHandleUrl, jUrlStr); checkException(env); env->DeleteLocalRef(jUrlStr); - return (ret == 0); + return ret == JNI_FALSE; } bool |