mirror of
https://bitbucket.org/chromiumembedded/cef
synced 2025-02-21 06:30:54 +01:00
74 lines
3.1 KiB
Diff
74 lines
3.1 KiB
Diff
diff --git public/renderer/content_renderer_client.cc public/renderer/content_renderer_client.cc
|
|
index 32004d1..ccd1f58 100644
|
|
--- public/renderer/content_renderer_client.cc
|
|
+++ public/renderer/content_renderer_client.cc
|
|
@@ -98,6 +98,18 @@ bool ContentRendererClient::AllowPopup() {
|
|
return false;
|
|
}
|
|
|
|
+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;
|
|
+}
|
|
+
|
|
bool ContentRendererClient::ShouldFork(blink::WebLocalFrame* frame,
|
|
const GURL& url,
|
|
const std::string& http_method,
|
|
diff --git public/renderer/content_renderer_client.h public/renderer/content_renderer_client.h
|
|
index fd2f3af..40cca1d 100644
|
|
--- public/renderer/content_renderer_client.h
|
|
+++ public/renderer/content_renderer_client.h
|
|
@@ -18,6 +18,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"
|
|
|
|
@@ -191,6 +193,17 @@ class CONTENT_EXPORT ContentRendererClient {
|
|
|
|
// Returns true if a popup window should be allowed.
|
|
virtual bool AllowPopup();
|
|
+
|
|
+ // 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);
|
|
|
|
// 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
|
|
diff --git renderer/render_frame_impl.cc renderer/render_frame_impl.cc
|
|
index 9ea32c4..adb478d 100644
|
|
--- renderer/render_frame_impl.cc
|
|
+++ renderer/render_frame_impl.cc
|
|
@@ -4609,6 +4609,14 @@ WebNavigationPolicy RenderFrameImpl::decidePolicyForNavigation(
|
|
(pending_navigation_params_ &&
|
|
!pending_navigation_params_->request_params.redirects.empty());
|
|
|
|
+ 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;
|
|
+ }
|
|
+
|
|
Referrer referrer(
|
|
RenderViewImpl::GetReferrerFromRequest(frame_, info.urlRequest));
|
|
|