Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 <vector> | 7 #include <vector> |
| 8 | 8 |
| 9 #include "android_webview/common/aw_resource.h" | 9 #include "android_webview/common/aw_resource.h" |
| 10 #include "android_webview/common/aw_switches.h" | 10 #include "android_webview/common/aw_switches.h" |
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 85 if (!spellcheck_) { | 85 if (!spellcheck_) { |
| 86 spellcheck_ = base::MakeUnique<SpellCheck>(); | 86 spellcheck_ = base::MakeUnique<SpellCheck>(); |
| 87 thread->AddObserver(spellcheck_.get()); | 87 thread->AddObserver(spellcheck_.get()); |
| 88 } | 88 } |
| 89 #endif | 89 #endif |
| 90 } | 90 } |
| 91 | 91 |
| 92 bool AwContentRendererClient::HandleNavigation( | 92 bool AwContentRendererClient::HandleNavigation( |
| 93 content::RenderFrame* render_frame, | 93 content::RenderFrame* render_frame, |
| 94 bool is_content_initiated, | 94 bool is_content_initiated, |
| 95 int opener_id, | 95 bool render_view_was_created_by_renderer, |
| 96 blink::WebFrame* frame, | 96 blink::WebFrame* frame, |
| 97 const blink::WebURLRequest& request, | 97 const blink::WebURLRequest& request, |
| 98 blink::WebNavigationType type, | 98 blink::WebNavigationType type, |
| 99 blink::WebNavigationPolicy default_policy, | 99 blink::WebNavigationPolicy default_policy, |
| 100 bool is_redirect) { | 100 bool is_redirect) { |
| 101 // Only GETs can be overridden. | 101 // Only GETs can be overridden. |
| 102 if (!request.httpMethod().equals("GET")) | 102 if (!request.httpMethod().equals("GET")) |
| 103 return false; | 103 return false; |
| 104 | 104 |
| 105 // Any navigation from loadUrl, and goBack/Forward are considered application- | 105 // Any navigation from loadUrl, and goBack/Forward are considered application- |
| (...skipping 16 matching lines...) Expand all Loading... | |
| 122 // For HTTP schemes, only top-level navigations can be overridden. Similarly, | 122 // For HTTP schemes, only top-level navigations can be overridden. Similarly, |
| 123 // WebView Classic lets app override only top level about:blank navigations. | 123 // WebView Classic lets app override only top level about:blank navigations. |
| 124 // So we filter out non-top about:blank navigations here. | 124 // So we filter out non-top about:blank navigations here. |
| 125 if (!is_main_frame && | 125 if (!is_main_frame && |
| 126 (gurl.SchemeIs(url::kHttpScheme) || gurl.SchemeIs(url::kHttpsScheme) || | 126 (gurl.SchemeIs(url::kHttpScheme) || gurl.SchemeIs(url::kHttpsScheme) || |
| 127 gurl.SchemeIs(url::kAboutScheme))) | 127 gurl.SchemeIs(url::kAboutScheme))) |
| 128 return false; | 128 return false; |
| 129 | 129 |
| 130 // use NavigationInterception throttle to handle the call as that can | 130 // use NavigationInterception throttle to handle the call as that can |
| 131 // be deferred until after the java side has been constructed. | 131 // be deferred until after the java side has been constructed. |
| 132 if (opener_id != MSG_ROUTING_NONE) { | 132 // |
| 133 // TODO(nick): |render_view_was_created_by_renderer| was plumbed in to | |
| 134 // preserve the existing code behavior, but it doesn't appear to be correct. | |
| 135 // In particular, this value will be true for the initial navigation of a | |
| 136 // RenderView created via window.open(), but it will also be true for all | |
| 137 // subsequent navigations in that RenderView, no matter how they are | |
| 138 // initiated. | |
|
sgurun-gerrit only
2016/11/21 21:17:25
yes, we have many bugs we are receiving there. but
| |
| 139 if (render_view_was_created_by_renderer) { | |
| 133 return false; | 140 return false; |
| 134 } | 141 } |
| 135 | 142 |
| 136 bool ignore_navigation = false; | 143 bool ignore_navigation = false; |
| 137 base::string16 url = request.url().string(); | 144 base::string16 url = request.url().string(); |
| 138 bool has_user_gesture = request.hasUserGesture(); | 145 bool has_user_gesture = request.hasUserGesture(); |
| 139 | 146 |
| 140 int render_frame_id = render_frame->GetRoutingID(); | 147 int render_frame_id = render_frame->GetRoutingID(); |
| 141 RenderThread::Get()->Send(new AwViewHostMsg_ShouldOverrideUrlLoading( | 148 RenderThread::Get()->Send(new AwViewHostMsg_ShouldOverrideUrlLoading( |
| 142 render_frame_id, url, has_user_gesture, is_redirect, is_main_frame, | 149 render_frame_id, url, has_user_gesture, is_redirect, is_main_frame, |
| (...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 276 for (auto* extension : kMediaPlayerExtensions) { | 283 for (auto* extension : kMediaPlayerExtensions) { |
| 277 if (base::EndsWith(url.path(), extension, | 284 if (base::EndsWith(url.path(), extension, |
| 278 base::CompareCase::INSENSITIVE_ASCII)) { | 285 base::CompareCase::INSENSITIVE_ASCII)) { |
| 279 return true; | 286 return true; |
| 280 } | 287 } |
| 281 } | 288 } |
| 282 return false; | 289 return false; |
| 283 } | 290 } |
| 284 | 291 |
| 285 } // namespace android_webview | 292 } // namespace android_webview |
| OLD | NEW |