Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(207)

Side by Side Diff: android_webview/renderer/aw_content_renderer_client.cc

Issue 1155713005: Use a resource throttle to implement shouldOverrideUrlLoading. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add flag showing that shouldOverrideUrl cancelled the navigation Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "android_webview/renderer/aw_content_renderer_client.h" 5 #include "android_webview/renderer/aw_content_renderer_client.h"
6 6
7 #include "android_webview/common/aw_resource.h" 7 #include "android_webview/common/aw_resource.h"
8 #include "android_webview/common/render_view_messages.h" 8 #include "android_webview/common/render_view_messages.h"
9 #include "android_webview/common/url_constants.h" 9 #include "android_webview/common/url_constants.h"
10 #include "android_webview/renderer/aw_content_settings_client.h" 10 #include "android_webview/renderer/aw_content_settings_client.h"
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
58 58
59 RenderThread* thread = RenderThread::Get(); 59 RenderThread* thread = RenderThread::Get();
60 60
61 aw_render_process_observer_.reset(new AwRenderProcessObserver); 61 aw_render_process_observer_.reset(new AwRenderProcessObserver);
62 thread->AddObserver(aw_render_process_observer_.get()); 62 thread->AddObserver(aw_render_process_observer_.get());
63 63
64 visited_link_slave_.reset(new visitedlink::VisitedLinkSlave); 64 visited_link_slave_.reset(new visitedlink::VisitedLinkSlave);
65 thread->AddObserver(visited_link_slave_.get()); 65 thread->AddObserver(visited_link_slave_.get());
66 } 66 }
67 67
68 bool AwContentRendererClient::HandleNavigation( 68 bool AwContentRendererClient::HandleNavigation(
mnaganov (inactive) 2015/06/04 19:09:27 Hmm. Does it mean we can remove this override, as
sgurun-gerrit only 2015/06/05 07:52:49 I think all the handleNavigation path should be re
gsennton 2015/06/08 14:07:23 I have removed the handleNavigation path but there
69 content::RenderFrame* render_frame, 69 content::RenderFrame* render_frame,
70 content::DocumentState* document_state, 70 content::DocumentState* document_state,
71 int opener_id, 71 int opener_id,
72 blink::WebFrame* frame, 72 blink::WebFrame* frame,
73 const blink::WebURLRequest& request, 73 const blink::WebURLRequest& request,
74 blink::WebNavigationType type, 74 blink::WebNavigationType type,
75 blink::WebNavigationPolicy default_policy, 75 blink::WebNavigationPolicy default_policy,
76 bool is_redirect) { 76 bool is_redirect) {
77 77
78 // Only GETs can be overridden. 78 // Only GETs can be overridden.
(...skipping 20 matching lines...) Expand all
99 // For HTTP schemes, only top-level navigations can be overridden. Similarly, 99 // For HTTP schemes, only top-level navigations can be overridden. Similarly,
100 // WebView Classic lets app override only top level about:blank navigations. 100 // WebView Classic lets app override only top level about:blank navigations.
101 // So we filter out non-top about:blank navigations here. 101 // So we filter out non-top about:blank navigations here.
102 if (frame->parent() && 102 if (frame->parent() &&
103 (gurl.SchemeIs(url::kHttpScheme) || gurl.SchemeIs(url::kHttpsScheme) || 103 (gurl.SchemeIs(url::kHttpScheme) || gurl.SchemeIs(url::kHttpsScheme) ||
104 gurl.SchemeIs(url::kAboutScheme))) 104 gurl.SchemeIs(url::kAboutScheme)))
105 return false; 105 return false;
106 106
107 // use NavigationInterception throttle to handle the call as that can 107 // use NavigationInterception throttle to handle the call as that can
108 // be deferred until after the java side has been constructed. 108 // be deferred until after the java side has been constructed.
109 if (opener_id != MSG_ROUTING_NONE) { 109 return false; // don't call shouldOverrideUrlLoading from this function...
110 /*if (opener_id != MSG_ROUTING_NONE) {
110 return false; 111 return false;
111 } 112 }
112 113
113 bool ignore_navigation = false; 114 bool ignore_navigation = false;
114 base::string16 url = request.url().string(); 115 base::string16 url = request.url().string();
115 116
116 int render_frame_id = render_frame->GetRoutingID(); 117 int render_frame_id = render_frame->GetRoutingID();
117 RenderThread::Get()->Send(new AwViewHostMsg_ShouldOverrideUrlLoading( 118 RenderThread::Get()->Send(new AwViewHostMsg_ShouldOverrideUrlLoading(
118 render_frame_id, url, &ignore_navigation)); 119 render_frame_id, url, &ignore_navigation));
119 return ignore_navigation; 120 return ignore_navigation;*/
120 } 121 }
121 122
122 void AwContentRendererClient::RenderFrameCreated( 123 void AwContentRendererClient::RenderFrameCreated(
123 content::RenderFrame* render_frame) { 124 content::RenderFrame* render_frame) {
124 new AwContentSettingsClient(render_frame); 125 new AwContentSettingsClient(render_frame);
125 new PrintRenderFrameObserver(render_frame); 126 new PrintRenderFrameObserver(render_frame);
126 new AwRenderFrameExt(render_frame); 127 new AwRenderFrameExt(render_frame);
127 new AwMessagePortClient(render_frame); 128 new AwMessagePortClient(render_frame);
128 129
129 // TODO(jam): when the frame tree moves into content and parent() works at 130 // TODO(jam): when the frame tree moves into content and parent() works at
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
206 207
207 bool AwContentRendererClient::ShouldOverridePageVisibilityState( 208 bool AwContentRendererClient::ShouldOverridePageVisibilityState(
208 const content::RenderFrame* render_frame, 209 const content::RenderFrame* render_frame,
209 blink::WebPageVisibilityState* override_state) { 210 blink::WebPageVisibilityState* override_state) {
210 // webview is always visible due to rendering requirements. 211 // webview is always visible due to rendering requirements.
211 *override_state = blink::WebPageVisibilityStateVisible; 212 *override_state = blink::WebPageVisibilityStateVisible;
212 return true; 213 return true;
213 } 214 }
214 215
215 } // namespace android_webview 216 } // namespace android_webview
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698