OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 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 "content/renderer/render_view_impl.h" | 5 #include "content/renderer/render_view_impl.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <cmath> | 8 #include <cmath> |
9 #include <string> | 9 #include <string> |
10 #include <vector> | 10 #include <vector> |
(...skipping 2307 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2318 // TODO(cevans): revisit whether this origin check is still necessary once | 2318 // TODO(cevans): revisit whether this origin check is still necessary once |
2319 // crbug.com/101395 is fixed. | 2319 // crbug.com/101395 is fixed. |
2320 if (frame_url.GetOrigin() != url.GetOrigin()) { | 2320 if (frame_url.GetOrigin() != url.GetOrigin()) { |
2321 OpenURL(frame, url, referrer, default_policy); | 2321 OpenURL(frame, url, referrer, default_policy); |
2322 return WebKit::WebNavigationPolicyIgnore; | 2322 return WebKit::WebNavigationPolicyIgnore; |
2323 } | 2323 } |
2324 } | 2324 } |
2325 | 2325 |
2326 // If the browser is interested, then give it a chance to look at top level | 2326 // If the browser is interested, then give it a chance to look at top level |
2327 // navigations. | 2327 // navigations. |
2328 if (is_content_initiated) { | 2328 if (renderer_preferences_.browser_handles_top_level_requests) { |
2329 bool browser_handles_top_level_requests = | 2329 if (IsNonLocalTopLevelNavigation(url, frame, type) || |
2330 renderer_preferences_.browser_handles_top_level_requests && | |
2331 IsNonLocalTopLevelNavigation(url, frame, type); | |
2332 if (browser_handles_top_level_requests || | |
2333 renderer_preferences_.browser_handles_all_requests) { | 2330 renderer_preferences_.browser_handles_all_requests) { |
2334 // Reset these counters as the RenderView could be reused for the next | 2331 // Reset these counters as the RenderView could be reused for the next |
2335 // navigation. | 2332 // navigation. |
2336 page_id_ = -1; | 2333 page_id_ = -1; |
2337 last_page_id_sent_to_browser_ = -1; | 2334 last_page_id_sent_to_browser_ = -1; |
2338 OpenURL(frame, url, referrer, default_policy); | 2335 bool ignore_navigation = false; |
2339 return WebKit::WebNavigationPolicyIgnore; // Suppress the load here. | 2336 Send(new ViewHostMsg_ShouldIgnoreNavigation( |
| 2337 routing_id_, |
| 2338 url, |
| 2339 referrer, |
| 2340 NavigationPolicyToDisposition(default_policy), |
| 2341 frame->identifier(), |
| 2342 is_content_initiated, |
| 2343 &ignore_navigation)); |
| 2344 if (ignore_navigation) |
| 2345 return WebKit::WebNavigationPolicyIgnore; |
2340 } | 2346 } |
2341 } | 2347 } |
2342 | 2348 |
2343 // Detect when we're crossing a permission-based boundary (e.g. into or out of | 2349 // Detect when we're crossing a permission-based boundary (e.g. into or out of |
2344 // an extension or app origin, leaving a WebUI page, etc). We only care about | 2350 // an extension or app origin, leaving a WebUI page, etc). We only care about |
2345 // top-level navigations (not iframes). But we sometimes navigate to | 2351 // top-level navigations (not iframes). But we sometimes navigate to |
2346 // about:blank to clear a tab, and we want to still allow that. | 2352 // about:blank to clear a tab, and we want to still allow that. |
2347 // | 2353 // |
2348 // Note: this is known to break POST submissions when crossing process | 2354 // Note: this is known to break POST submissions when crossing process |
2349 // boundaries until http://crbug.com/101395 is fixed. This is better for | 2355 // boundaries until http://crbug.com/101395 is fixed. This is better for |
(...skipping 2890 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5240 bool RenderViewImpl::WebWidgetHandlesCompositorScheduling() const { | 5246 bool RenderViewImpl::WebWidgetHandlesCompositorScheduling() const { |
5241 return !!RenderThreadImpl::current()->compositor_thread(); | 5247 return !!RenderThreadImpl::current()->compositor_thread(); |
5242 } | 5248 } |
5243 | 5249 |
5244 void RenderViewImpl::OnJavaBridgeInit() { | 5250 void RenderViewImpl::OnJavaBridgeInit() { |
5245 DCHECK(!java_bridge_dispatcher_.get()); | 5251 DCHECK(!java_bridge_dispatcher_.get()); |
5246 #if defined(ENABLE_JAVA_BRIDGE) | 5252 #if defined(ENABLE_JAVA_BRIDGE) |
5247 java_bridge_dispatcher_.reset(new JavaBridgeDispatcher(this)); | 5253 java_bridge_dispatcher_.reset(new JavaBridgeDispatcher(this)); |
5248 #endif | 5254 #endif |
5249 } | 5255 } |
OLD | NEW |