diff options
author | gsennton <gsennton@chromium.org> | 2015-07-16 13:12:49 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-07-16 20:13:36 +0000 |
commit | 777bb78a111aee919e07f5206267915a87639f88 (patch) | |
tree | 852c8f2cf62748fc0c28926fe6967e74f01b0cbc | |
parent | b839eab3001b70e7489661dfadffd3ecb3386ab5 (diff) | |
download | chromium_src-777bb78a111aee919e07f5206267915a87639f88.zip chromium_src-777bb78a111aee919e07f5206267915a87639f88.tar.gz chromium_src-777bb78a111aee919e07f5206267915a87639f88.tar.bz2 |
Use resource throttle to implement shouldOverrideUrlLoading, core change
We have been using both a resource throttle and a sync IPC to implement
shouldOverrideUrlLoading, with this patch we use only a resource
throttle instead.
This patch depends on https://codereview.chromium.org/1194383003 which
adds a flag indicating that the current request was overridden. The flag
is passed down to AwWebContentsObserver.didFailLoad. That CL in turn
depends on https://codereview.chromium.org/1178273007/ which adds the
flag to blink errors.
BUG=325351
Review URL: https://codereview.chromium.org/1155713005
Cr-Commit-Position: refs/heads/master@{#339109}
15 files changed, 131 insertions, 218 deletions
diff --git a/android_webview/browser/aw_content_browser_client.cc b/android_webview/browser/aw_content_browser_client.cc index ca277be..87a1b93 100644 --- a/android_webview/browser/aw_content_browser_client.cc +++ b/android_webview/browser/aw_content_browser_client.cc @@ -24,7 +24,6 @@ #include "components/cdm/browser/cdm_message_filter_android.h" #include "content/public/browser/access_token_store.h" #include "content/public/browser/browser_message_filter.h" -#include "content/public/browser/browser_thread.h" #include "content/public/browser/child_process_security_policy.h" #include "content/public/browser/client_certificate_delegate.h" #include "content/public/browser/render_frame_host.h" @@ -39,7 +38,6 @@ #include "ui/base/resource/resource_bundle.h" #include "ui/resources/grit/ui_resources.h" -using content::BrowserThread; using content::ResourceType; namespace android_webview { @@ -53,15 +51,8 @@ public: explicit AwContentsMessageFilter(int process_id); // BrowserMessageFilter methods. - void OverrideThreadForMessage(const IPC::Message& message, - BrowserThread::ID* thread) override; bool OnMessageReceived(const IPC::Message& message) override; - void OnShouldOverrideUrlLoading(int routing_id, - const base::string16& url, - bool has_user_gesture, - bool is_redirect, - bool* ignore_navigation); void OnSubFrameCreated(int parent_render_frame_id, int child_render_frame_id); private: @@ -80,43 +71,15 @@ AwContentsMessageFilter::AwContentsMessageFilter(int process_id) AwContentsMessageFilter::~AwContentsMessageFilter() { } -void AwContentsMessageFilter::OverrideThreadForMessage( - const IPC::Message& message, BrowserThread::ID* thread) { - if (message.type() == AwViewHostMsg_ShouldOverrideUrlLoading::ID) { - *thread = BrowserThread::UI; - } -} - bool AwContentsMessageFilter::OnMessageReceived(const IPC::Message& message) { bool handled = true; IPC_BEGIN_MESSAGE_MAP(AwContentsMessageFilter, message) - IPC_MESSAGE_HANDLER(AwViewHostMsg_ShouldOverrideUrlLoading, - OnShouldOverrideUrlLoading) IPC_MESSAGE_HANDLER(AwViewHostMsg_SubFrameCreated, OnSubFrameCreated) IPC_MESSAGE_UNHANDLED(handled = false) IPC_END_MESSAGE_MAP() return handled; } -void AwContentsMessageFilter::OnShouldOverrideUrlLoading( - int render_frame_id, - const base::string16& url, - bool has_user_gesture, - bool is_redirect, - bool* ignore_navigation) { - DCHECK_CURRENTLY_ON(BrowserThread::UI); - *ignore_navigation = false; - AwContentsClientBridgeBase* client = - AwContentsClientBridgeBase::FromID(process_id_, render_frame_id); - if (client) { - *ignore_navigation = - client->ShouldOverrideUrlLoading(url, has_user_gesture, is_redirect); - } else { - LOG(WARNING) << "Failed to find the associated render view host for url: " - << url; - } -} - void AwContentsMessageFilter::OnSubFrameCreated(int parent_render_frame_id, int child_render_frame_id) { AwContentsIoThreadClient::SubFrameCreated( diff --git a/android_webview/browser/aw_contents_client_bridge_base.h b/android_webview/browser/aw_contents_client_bridge_base.h index 31c965f..9cd9206 100644 --- a/android_webview/browser/aw_contents_client_bridge_base.h +++ b/android_webview/browser/aw_contents_client_bridge_base.h @@ -62,10 +62,6 @@ class AwContentsClientBridgeBase { const base::string16& message_text, const content::JavaScriptDialogManager::DialogClosedCallback& callback) = 0; - - virtual bool ShouldOverrideUrlLoading(const base::string16& url, - bool has_user_gesture, - bool is_redirect) = 0; }; } // namespace android_webview diff --git a/android_webview/browser/renderer_host/aw_resource_dispatcher_host_delegate.cc b/android_webview/browser/renderer_host/aw_resource_dispatcher_host_delegate.cc index 02160ce..da8a604 100644 --- a/android_webview/browser/renderer_host/aw_resource_dispatcher_host_delegate.cc +++ b/android_webview/browser/renderer_host/aw_resource_dispatcher_host_delegate.cc @@ -226,15 +226,16 @@ void AwResourceDispatcherHostDelegate::RequestBeginning( throttles->push_back(new IoThreadClientThrottle( request_info->GetChildID(), request_info->GetRenderFrameID(), request)); - // We allow intercepting only navigations within main frames. This - // is used to post onPageStarted. We handle shouldOverrideUrlLoading - // via a sync IPC. - if (resource_type == content::RESOURCE_TYPE_MAIN_FRAME) { + if (resource_type == content::RESOURCE_TYPE_MAIN_FRAME || + (resource_type == content::RESOURCE_TYPE_SUB_FRAME && + !request->url().SchemeIs(url::kHttpScheme) && + !request->url().SchemeIs(url::kHttpsScheme) && + !request->url().SchemeIs(url::kAboutScheme))) { throttles->push_back(InterceptNavigationDelegate::CreateThrottleFor( request)); - } else { - InterceptNavigationDelegate::UpdateUserGestureCarryoverInfo(request); } + if (resource_type != content::RESOURCE_TYPE_MAIN_FRAME) + InterceptNavigationDelegate::UpdateUserGestureCarryoverInfo(request); } void AwResourceDispatcherHostDelegate::OnRequestRedirected( diff --git a/android_webview/common/render_view_messages.h b/android_webview/common/render_view_messages.h index b5ca58c..2e0211b 100644 --- a/android_webview/common/render_view_messages.h +++ b/android_webview/common/render_view_messages.h @@ -98,19 +98,6 @@ IPC_MESSAGE_ROUTED1(AwViewHostMsg_PageScaleFactorChanged, IPC_MESSAGE_ROUTED1(AwViewHostMsg_OnContentsSizeChanged, gfx::Size /* contents_size */) -// Sent immediately before a top level navigation is initiated within Blink. -// There are some exlusions, the most important ones are it is not sent -// when creating a popup window, and not sent for application initiated -// navigations. See AwContentRendererClient::HandleNavigation for all -// cornercases. This is sent before updating the NavigationController state -// or creating a URLRequest for the main frame resource. -IPC_SYNC_MESSAGE_CONTROL4_1(AwViewHostMsg_ShouldOverrideUrlLoading, - int /* render_frame_id id */, - base::string16 /* in - url */, - bool /* in - has_user_gesture */, - bool /* in - is_redirect */, - bool /* out - result */) - // Sent when a subframe is created. IPC_MESSAGE_CONTROL2(AwViewHostMsg_SubFrameCreated, int /* parent_render_frame_id */, diff --git a/android_webview/java/src/org/chromium/android_webview/AwContents.java b/android_webview/java/src/org/chromium/android_webview/AwContents.java index 76a9cc8..20cebab 100644 --- a/android_webview/java/src/org/chromium/android_webview/AwContents.java +++ b/android_webview/java/src/org/chromium/android_webview/AwContents.java @@ -477,26 +477,41 @@ public class AwContents implements SmartClipProvider, @Override public boolean shouldIgnoreNavigation(NavigationParams navigationParams) { final String url = navigationParams.url; + + final int transitionType = navigationParams.pageTransitionType; + final boolean isLoadUrl = (transitionType & PageTransition.FROM_API) != 0; + final boolean isBackForward = (transitionType & PageTransition.FORWARD_BACK) != 0; + final boolean isReload = + (transitionType & PageTransition.CORE_MASK) == PageTransition.RELOAD; + final boolean isRedirect = navigationParams.isRedirect; + boolean ignoreNavigation = false; - if (mDeferredShouldOverrideUrlLoadingIsPendingForPopup) { - mDeferredShouldOverrideUrlLoadingIsPendingForPopup = false; - // If this is used for all navigations in future, cases for application initiated - // load, redirect and backforward should also be filtered out. - if (!navigationParams.isPost) { - if (!mContentsClient.hasWebViewClient()) { - ignoreNavigation = AwContentsClient.sendBrowsingIntent(mContext, url, - navigationParams.hasUserGesture - || navigationParams.hasUserGestureCarryover, - navigationParams.isRedirect); - } else { - ignoreNavigation = mContentsClient.shouldOverrideUrlLoading(url); - } + // Any navigation from loadUrl, goBack/Forward, or reload, are considered application + // initiated and hence will not yield a shouldOverrideUrlLoading() callback. + if ((!isLoadUrl || isRedirect) && !isBackForward && !navigationParams.isPost) { + if (!mContentsClient.hasWebViewClient()) { + ignoreNavigation = AwContentsClient.sendBrowsingIntent(mContext, url, + navigationParams.hasUserGesture + || navigationParams.hasUserGestureCarryover, + navigationParams.isRedirect); + } else { + ignoreNavigation = mContentsClient.shouldOverrideUrlLoading(url); } } + // The shouldOverrideUrlLoading call might have resulted in posting messages to the // UI thread. Using sendMessage here (instead of calling onPageStarted directly) // will allow those to run in order. - if (!ignoreNavigation) { + if (isRedirect) { + mContentsClient.getCallbackHelper().postOnPageStarted(url); + // We can post onPageFinished here since we know that the navigation will fail. + // Also AwWebContentsObserver.didFail does not call OnPageFinished when the + // navigation is overridden because we don't want an onPageFinished for such a + // navigation unless it is a redirect. + if (ignoreNavigation) { + mContentsClient.getCallbackHelper().postOnPageFinished(url); + } + } else if (!ignoreNavigation) { mContentsClient.getCallbackHelper().postOnPageStarted(url); } return ignoreNavigation; diff --git a/android_webview/java/src/org/chromium/android_webview/AwContentsClientBridge.java b/android_webview/java/src/org/chromium/android_webview/AwContentsClientBridge.java index 712c801..f86e54b 100644 --- a/android_webview/java/src/org/chromium/android_webview/AwContentsClientBridge.java +++ b/android_webview/java/src/org/chromium/android_webview/AwContentsClientBridge.java @@ -259,16 +259,6 @@ public class AwContentsClientBridge { mClient.handleJsBeforeUnload(url, message, handler); } - @CalledByNative - private boolean shouldOverrideUrlLoading(String url, boolean hasUserGesture, - boolean isRedirect) { - if (mClient.hasWebViewClient()) { - return mClient.shouldOverrideUrlLoading(url); - } else { - return AwContentsClient.sendBrowsingIntent(mContext, url, hasUserGesture, isRedirect); - } - } - void confirmJsResult(int id, String prompt) { if (mNativeContentsClientBridge == 0) return; nativeConfirmJsResult(mNativeContentsClientBridge, id, prompt); diff --git a/android_webview/java/src/org/chromium/android_webview/AwWebContentsObserver.java b/android_webview/java/src/org/chromium/android_webview/AwWebContentsObserver.java index 85cf90c..53715c6 100644 --- a/android_webview/java/src/org/chromium/android_webview/AwWebContentsObserver.java +++ b/android_webview/java/src/org/chromium/android_webview/AwWebContentsObserver.java @@ -53,9 +53,13 @@ public class AwWebContentsObserver extends WebContentsObserver { String unreachableWebDataUrl = AwContentsStatics.getUnreachableWebDataUrl(); boolean isErrorUrl = unreachableWebDataUrl != null && unreachableWebDataUrl.equals(failingUrl); - if (isMainFrame && !isErrorUrl && errorCode == NetError.ERR_ABORTED) { + if (isMainFrame && !isErrorUrl && errorCode == NetError.ERR_ABORTED + && !wasIgnoredByHandler) { // Need to call onPageFinished for backwards compatibility with the classic webview. // See also AwContents.IoThreadClientImpl.onReceivedError. + // If the navigation was ignored because of shouldOverrideUrlLoading we have already + // called onPageFinished in + // AwContents.InterceptNavigationDelegateImpl.shouldIgnoreNavigation instead. client.getCallbackHelper().postOnPageFinished(failingUrl); } } diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/AwContentsClientShouldOverrideUrlLoadingTest.java b/android_webview/javatests/src/org/chromium/android_webview/test/AwContentsClientShouldOverrideUrlLoadingTest.java index 2c90a20..64840fb 100644 --- a/android_webview/javatests/src/org/chromium/android_webview/test/AwContentsClientShouldOverrideUrlLoadingTest.java +++ b/android_webview/javatests/src/org/chromium/android_webview/test/AwContentsClientShouldOverrideUrlLoadingTest.java @@ -11,6 +11,7 @@ import android.util.Pair; import org.chromium.android_webview.AwContents; import org.chromium.android_webview.test.util.CommonResources; import org.chromium.android_webview.test.util.JSUtils; +import org.chromium.android_webview.test.util.JavascriptEventObserver; import org.chromium.base.annotations.SuppressFBWarnings; import org.chromium.base.test.util.DisabledTest; import org.chromium.base.test.util.Feature; @@ -26,6 +27,7 @@ import org.chromium.net.test.util.TestWebServer; import java.util.ArrayList; import java.util.List; import java.util.concurrent.Callable; +import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; /** @@ -1020,4 +1022,92 @@ public class AwContentsClientShouldOverrideUrlLoadingTest extends AwTestBase { getActivity().setIgnoreStartActivity(false); } } + + @SmallTest + @Feature({"AndroidWebView"}) + public void testXhrInLink() throws Throwable { + final TestAwContentsClient contentsClient = new TestAwContentsClient(); + final AwTestContainerView testContainerView = + createAwTestContainerViewOnMainSync(contentsClient); + final AwContents awContents = testContainerView.getAwContents(); + TestAwContentsClient.ShouldOverrideUrlLoadingHelper shouldOverrideUrlLoadingHelper = + contentsClient.getShouldOverrideUrlLoadingHelper(); + + final CountDownLatch shouldOverrideUrlLoadingSignal = new CountDownLatch(1); + + final String xhrPath = "/xhrPath.html"; + final String xhrUrl = mWebServer.setResponseWithRunnableAction( + xhrPath, CommonResources.makeHtmlPageFrom("", ""), null, new Runnable() { + @Override + public void run() { + try { + shouldOverrideUrlLoadingSignal.await(); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + } + }); + + final String xhrJs = "function xhrFunction() {" + + " var xhr = new XMLHttpRequest();" + + " xhr.onload=function() {" + + " console.info('xhr loaded');" + + " window.jsInterface.setValue(true);" + + " };" + + " xhr.onerror=function() {" + + " console.info('xhr failed, status ' + xhr.status);" + + " window.jsInterface.setValue(false);" + + " };" + + " xhr.open('GET', '" + xhrUrl + "', true);" + + " xhr.send();" + + "};"; + + String pageWithXhrLink = makeHtmlPageFrom( + "<script>" + xhrJs + "</script>", + "<img onclick=\"xhrFunction(); location.href='" + + "thiswillbe://intercepted/" + + "'\" class=\"big\" id=\"link\" />"); + + final String startPath = "/startPath.html"; + final String startUrl = addPageToTestServer(mWebServer, startPath, pageWithXhrLink); + + enableJavaScriptOnUiThread(awContents); + final BooleanValueJavascriptObserver jsInterface = new BooleanValueJavascriptObserver(); + + // add javascript interface + getInstrumentation().runOnMainSync(new Runnable() { + @Override + public void run() { + jsInterface.register(awContents.getContentViewCore(), "jsInterface"); + } + }); + + loadUrlSync(awContents, contentsClient.getOnPageFinishedHelper(), startUrl); + + setShouldOverrideUrlLoadingReturnValueOnUiThread(shouldOverrideUrlLoadingHelper, true); + final int shouldOverrideUrlLoadingCallCount = shouldOverrideUrlLoadingHelper.getCallCount(); + + clickOnLinkUsingJs(awContents, contentsClient); + + // Make the server xhr response wait until the navigation request is intercepted. + shouldOverrideUrlLoadingHelper.waitForCallback(shouldOverrideUrlLoadingCallCount); + shouldOverrideUrlLoadingSignal.countDown(); + + jsInterface.waitForEvent(WAIT_TIMEOUT_MS); + assertTrue(jsInterface.getValue()); + assertEquals(1, mWebServer.getRequestCount(xhrPath)); + } + + private static class BooleanValueJavascriptObserver extends JavascriptEventObserver { + private boolean mValue = false; + + public void setValue(boolean value) { + mValue = value; + notifyJava(); + } + + public boolean getValue() { + return mValue; + } + } } diff --git a/android_webview/native/aw_contents_client_bridge.cc b/android_webview/native/aw_contents_client_bridge.cc index 2b16fcc..9e570af 100644 --- a/android_webview/native/aw_contents_client_bridge.cc +++ b/android_webview/native/aw_contents_client_bridge.cc @@ -340,20 +340,6 @@ void AwContentsClientBridge::RunBeforeUnloadDialog( env, obj.obj(), jurl.obj(), jmessage.obj(), callback_id); } -bool AwContentsClientBridge::ShouldOverrideUrlLoading( - const base::string16& url, bool has_user_gesture, bool is_redirect) { - JNIEnv* env = AttachCurrentThread(); - ScopedJavaLocalRef<jobject> obj = java_ref_.get(env); - if (obj.is_null()) - return false; - ScopedJavaLocalRef<jstring> jurl = ConvertUTF16ToJavaString(env, url); - devtools_instrumentation::ScopedEmbedderCallbackTask( - "shouldOverrideUrlLoading"); - return Java_AwContentsClientBridge_shouldOverrideUrlLoading( - env, obj.obj(), - jurl.obj(), has_user_gesture, is_redirect); -} - void AwContentsClientBridge::ConfirmJsResult(JNIEnv* env, jobject, int id, diff --git a/android_webview/native/aw_contents_client_bridge.h b/android_webview/native/aw_contents_client_bridge.h index 0595ba0..74f13e0 100644 --- a/android_webview/native/aw_contents_client_bridge.h +++ b/android_webview/native/aw_contents_client_bridge.h @@ -54,9 +54,6 @@ class AwContentsClientBridge : public AwContentsClientBridgeBase { const base::string16& message_text, const content::JavaScriptDialogManager::DialogClosedCallback& callback) override; - bool ShouldOverrideUrlLoading(const base::string16& url, - bool has_user_gesture, - bool is_redirect) override; // Methods called from Java. void ProceedSslError(JNIEnv* env, jobject obj, jboolean proceed, jint id); diff --git a/android_webview/renderer/aw_content_renderer_client.cc b/android_webview/renderer/aw_content_renderer_client.cc index b9c6a3d..79c33cf 100644 --- a/android_webview/renderer/aw_content_renderer_client.cc +++ b/android_webview/renderer/aw_content_renderer_client.cc @@ -21,8 +21,6 @@ #include "components/printing/renderer/print_web_view_helper.h" #include "components/visitedlink/renderer/visitedlink_slave.h" #include "content/public/common/url_constants.h" -#include "content/public/renderer/document_state.h" -#include "content/public/renderer/navigation_state.h" #include "content/public/renderer/render_frame.h" #include "content/public/renderer/render_thread.h" #include "content/public/renderer/render_view.h" @@ -33,7 +31,6 @@ #include "third_party/WebKit/public/platform/WebURLError.h" #include "third_party/WebKit/public/platform/WebURLRequest.h" #include "third_party/WebKit/public/web/WebFrame.h" -#include "third_party/WebKit/public/web/WebNavigationType.h" #include "third_party/WebKit/public/web/WebSecurityPolicy.h" #include "url/gurl.h" @@ -65,61 +62,6 @@ void AwContentRendererClient::RenderThreadStarted() { thread->AddObserver(visited_link_slave_.get()); } -bool AwContentRendererClient::HandleNavigation( - content::RenderFrame* render_frame, - content::DocumentState* document_state, - int opener_id, - blink::WebFrame* frame, - const blink::WebURLRequest& request, - blink::WebNavigationType type, - blink::WebNavigationPolicy default_policy, - bool is_redirect) { - - // Only GETs can be overridden. - if (!request.httpMethod().equals("GET")) - return false; - - // Any navigation from loadUrl, and goBack/Forward are considered application- - // initiated and hence will not yield a shouldOverrideUrlLoading() callback. - // Webview classic does not consider reload application-initiated so we - // continue the same behavior. - // TODO(sgurun) is_content_initiated is normally false for cross-origin - // navigations but since android_webview does not swap out renderers, this - // works fine. This will stop working if android_webview starts swapping out - // renderers on navigation. - bool application_initiated = - !document_state->navigation_state()->IsContentInitiated() || - type == blink::WebNavigationTypeBackForward; - - // Don't offer application-initiated navigations unless it's a redirect. - if (application_initiated && !is_redirect) - return false; - - const GURL& gurl = request.url(); - // For HTTP schemes, only top-level navigations can be overridden. Similarly, - // WebView Classic lets app override only top level about:blank navigations. - // So we filter out non-top about:blank navigations here. - if (frame->parent() && - (gurl.SchemeIs(url::kHttpScheme) || gurl.SchemeIs(url::kHttpsScheme) || - gurl.SchemeIs(url::kAboutScheme))) - return false; - - // use NavigationInterception throttle to handle the call as that can - // be deferred until after the java side has been constructed. - if (opener_id != MSG_ROUTING_NONE) { - return false; - } - - bool ignore_navigation = false; - base::string16 url = request.url().string(); - bool has_user_gesture = request.hasUserGesture(); - - int render_frame_id = render_frame->GetRoutingID(); - RenderThread::Get()->Send(new AwViewHostMsg_ShouldOverrideUrlLoading( - render_frame_id, url, has_user_gesture, is_redirect, &ignore_navigation)); - return ignore_navigation; -} - void AwContentRendererClient::RenderFrameCreated( content::RenderFrame* render_frame) { new AwContentSettingsClient(render_frame); diff --git a/android_webview/renderer/aw_content_renderer_client.h b/android_webview/renderer/aw_content_renderer_client.h index c16b506..ab0c750 100644 --- a/android_webview/renderer/aw_content_renderer_client.h +++ b/android_webview/renderer/aw_content_renderer_client.h @@ -37,14 +37,6 @@ class AwContentRendererClient : public content::ContentRendererClient { bool IsLinkVisited(unsigned long long link_hash) override; void AddKeySystems(std::vector<media::KeySystemInfo>* key_systems) override; - bool HandleNavigation(content::RenderFrame* render_frame, - content::DocumentState* document_state, - int opener_id, - blink::WebFrame* frame, - const blink::WebURLRequest& request, - blink::WebNavigationType type, - blink::WebNavigationPolicy default_policy, - bool is_redirect) override; bool ShouldOverridePageVisibilityState( const content::RenderFrame* render_frame, blink::WebPageVisibilityState* override_state) override; diff --git a/content/public/renderer/content_renderer_client.cc b/content/public/renderer/content_renderer_client.cc index 7c6957b..95af2f7 100644 --- a/content/public/renderer/content_renderer_client.cc +++ b/content/public/renderer/content_renderer_client.cc @@ -101,20 +101,6 @@ bool ContentRendererClient::AllowPopup() { return false; } -#ifdef OS_ANDROID -bool ContentRendererClient::HandleNavigation( - RenderFrame* render_frame, - DocumentState* document_state, - int opener_id, - blink::WebFrame* frame, - const blink::WebURLRequest& request, - blink::WebNavigationType type, - blink::WebNavigationPolicy default_policy, - bool is_redirect) { - return false; -} -#endif - bool ContentRendererClient::ShouldFork(blink::WebLocalFrame* frame, const GURL& url, const std::string& http_method, diff --git a/content/public/renderer/content_renderer_client.h b/content/public/renderer/content_renderer_client.h index 2a0517a..ebb7f44 100644 --- a/content/public/renderer/content_renderer_client.h +++ b/content/public/renderer/content_renderer_client.h @@ -16,8 +16,6 @@ #include "base/strings/string16.h" #include "content/public/common/content_client.h" #include "third_party/WebKit/public/platform/WebPageVisibilityState.h" -#include "third_party/WebKit/public/web/WebNavigationPolicy.h" -#include "third_party/WebKit/public/web/WebNavigationType.h" #include "ui/base/page_transition_types.h" #include "v8/include/v8.h" @@ -198,23 +196,6 @@ class CONTENT_EXPORT ContentRendererClient { // Returns true if a popup window should be allowed. virtual bool AllowPopup(); -#ifdef OS_ANDROID - // TODO(sgurun) This callback is deprecated and will be removed as soon - // as android webview completes implementation of a resource throttle based - // shouldoverrideurl implementation. See crbug.com/325351 - // - // Returns true if the navigation was handled by the embedder and should be - // ignored by WebKit. This method is used by CEF and android_webview. - virtual bool HandleNavigation(RenderFrame* render_frame, - DocumentState* document_state, - int opener_id, - blink::WebFrame* frame, - const blink::WebURLRequest& request, - blink::WebNavigationType type, - blink::WebNavigationPolicy default_policy, - bool is_redirect); -#endif - // Returns true if we should fork a new process for the given navigation. // If |send_referrer| is set to false (which is the default), no referrer // header will be send for the navigation. Otherwise, the referrer header is diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc index 0635ae1..a47052d 100644 --- a/content/renderer/render_frame_impl.cc +++ b/content/renderer/render_frame_impl.cc @@ -4182,23 +4182,6 @@ void RenderFrameImpl::OnFailedNavigation( WebNavigationPolicy RenderFrameImpl::DecidePolicyForNavigation( RenderFrame* render_frame, const NavigationPolicyInfo& info) { -#ifdef OS_ANDROID - // The handlenavigation API is deprecated and will be removed once - // crbug.com/325351 is resolved. - if (info.urlRequest.url() != GURL(kSwappedOutURL) && - GetContentClient()->renderer()->HandleNavigation( - render_frame, - static_cast<DocumentState*>(info.extraData), - render_view_->opener_id_, - info.frame, - info.urlRequest, - info.navigationType, - info.defaultPolicy, - info.isRedirect)) { - return blink::WebNavigationPolicyIgnore; - } -#endif - Referrer referrer(RenderViewImpl::GetReferrerFromRequest(info.frame, info.urlRequest)); const base::CommandLine& command_line = |