2014-09-04 19:53:40 +02:00
|
|
|
diff --git public/renderer/content_renderer_client.cc public/renderer/content_renderer_client.cc
|
2015-12-09 17:10:16 +01:00
|
|
|
index 32004d1..ccd1f58 100644
|
2014-09-04 19:53:40 +02:00
|
|
|
--- public/renderer/content_renderer_client.cc
|
|
|
|
+++ public/renderer/content_renderer_client.cc
|
2015-12-09 17:10:16 +01:00
|
|
|
@@ -98,6 +98,18 @@ bool ContentRendererClient::AllowPopup() {
|
2013-12-17 23:04:35 +01:00
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
2015-12-09 17:10:16 +01:00
|
|
|
+bool ContentRendererClient::HandleNavigation(
|
|
|
|
+ RenderFrame* render_frame,
|
|
|
|
+ bool is_content_initiated,
|
|
|
|
+ int opener_id,
|
|
|
|
+ blink::WebFrame* frame,
|
|
|
|
+ const blink::WebURLRequest& request,
|
|
|
|
+ blink::WebNavigationType type,
|
|
|
|
+ blink::WebNavigationPolicy default_policy,
|
|
|
|
+ bool is_redirect) {
|
|
|
|
+ return false;
|
|
|
|
+}
|
|
|
|
+
|
2015-07-24 02:06:56 +02:00
|
|
|
bool ContentRendererClient::ShouldFork(blink::WebLocalFrame* frame,
|
2013-12-17 23:04:35 +01:00
|
|
|
const GURL& url,
|
2015-12-09 17:10:16 +01:00
|
|
|
const std::string& http_method,
|
2014-09-04 19:53:40 +02:00
|
|
|
diff --git public/renderer/content_renderer_client.h public/renderer/content_renderer_client.h
|
2015-12-09 17:10:16 +01:00
|
|
|
index 59d448c..ef15ff1 100644
|
2014-09-04 19:53:40 +02:00
|
|
|
--- public/renderer/content_renderer_client.h
|
|
|
|
+++ public/renderer/content_renderer_client.h
|
2015-12-09 17:10:16 +01:00
|
|
|
@@ -16,6 +16,8 @@
|
|
|
|
#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"
|
|
|
|
|
|
|
|
@@ -189,6 +191,17 @@ class CONTENT_EXPORT ContentRendererClient {
|
|
|
|
|
2013-12-17 23:04:35 +01:00
|
|
|
// Returns true if a popup window should be allowed.
|
|
|
|
virtual bool AllowPopup();
|
2015-12-09 17:10:16 +01:00
|
|
|
+
|
|
|
|
+ // 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,
|
|
|
|
+ bool is_content_initiated,
|
|
|
|
+ int opener_id,
|
|
|
|
+ blink::WebFrame* frame,
|
|
|
|
+ const blink::WebURLRequest& request,
|
|
|
|
+ blink::WebNavigationType type,
|
|
|
|
+ blink::WebNavigationPolicy default_policy,
|
|
|
|
+ bool is_redirect);
|
2015-11-10 21:18:16 +01:00
|
|
|
|
2013-12-17 23:04:35 +01:00
|
|
|
// 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
|
2014-09-04 19:53:40 +02:00
|
|
|
diff --git renderer/render_frame_impl.cc renderer/render_frame_impl.cc
|
2015-12-09 17:10:16 +01:00
|
|
|
index 314fe7b..c519785 100644
|
2014-09-04 19:53:40 +02:00
|
|
|
--- renderer/render_frame_impl.cc
|
|
|
|
+++ renderer/render_frame_impl.cc
|
2015-12-09 17:10:16 +01:00
|
|
|
@@ -4440,6 +4440,14 @@ WebNavigationPolicy RenderFrameImpl::decidePolicyForNavigation(
|
2015-11-10 21:18:16 +01:00
|
|
|
(pending_navigation_params_ &&
|
|
|
|
!pending_navigation_params_->request_params.redirects.empty());
|
|
|
|
|
2015-12-09 17:10:16 +01:00
|
|
|
+ if (info.urlRequest.url() != GURL(kSwappedOutURL) &&
|
|
|
|
+ GetContentClient()->renderer()->HandleNavigation(
|
|
|
|
+ this, is_content_initiated, render_view_->opener_id_, frame_,
|
|
|
|
+ info.urlRequest, info.navigationType, info.defaultPolicy,
|
|
|
|
+ is_redirect)) {
|
|
|
|
+ return blink::WebNavigationPolicyIgnore;
|
|
|
|
+ }
|
|
|
|
+
|
2015-11-10 21:18:16 +01:00
|
|
|
Referrer referrer(
|
|
|
|
RenderViewImpl::GetReferrerFromRequest(frame_, info.urlRequest));
|
2015-12-09 17:10:16 +01:00
|
|
|
|