mirror of
https://bitbucket.org/chromiumembedded/cef
synced 2025-01-30 11:04:52 +01:00
9af98fab45
- Mac: 10.10 SDK is now required for building (see http://crbug.com/463170#c63). Older SDKs can be used for a short time by setting mac_sdk_min via GYP_DEFINES.
79 lines
3.3 KiB
Diff
79 lines
3.3 KiB
Diff
diff --git public/renderer/content_renderer_client.cc public/renderer/content_renderer_client.cc
|
|
index 9513339..75ddff8 100644
|
|
--- public/renderer/content_renderer_client.cc
|
|
+++ public/renderer/content_renderer_client.cc
|
|
@@ -103,6 +103,18 @@ bool ContentRendererClient::AllowPopup() {
|
|
return false;
|
|
}
|
|
|
|
+bool ContentRendererClient::HandleNavigation(
|
|
+ RenderFrame* render_frame,
|
|
+ DocumentState* document_state,
|
|
+ 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 ccf4b5f..91a5be3 100644
|
|
--- public/renderer/content_renderer_client.h
|
|
+++ public/renderer/content_renderer_client.h
|
|
@@ -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"
|
|
|
|
@@ -198,6 +200,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,
|
|
+ DocumentState* document_state,
|
|
+ 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
|
|
// header will be send for the navigation. Otherwise, the referrer header is
|
|
diff --git renderer/render_frame_impl.cc renderer/render_frame_impl.cc
|
|
index 8568626..9a746d2 100644
|
|
--- renderer/render_frame_impl.cc
|
|
+++ renderer/render_frame_impl.cc
|
|
@@ -4240,6 +4240,19 @@ void RenderFrameImpl::OnFailedNavigation(
|
|
WebNavigationPolicy RenderFrameImpl::DecidePolicyForNavigation(
|
|
RenderFrame* render_frame,
|
|
const NavigationPolicyInfo& info) {
|
|
+ if (info.urlRequest.url() != GURL(kSwappedOutURL) &&
|
|
+ GetContentClient()->renderer()->HandleNavigation(
|
|
+ render_frame,
|
|
+ static_cast<DocumentState*>(info.extraData),
|
|
+ render_view_->opener_id_,
|
|
+ info.frame,
|
|
+ info.urlRequest,
|
|
+ info.navigationType,
|
|
+ info.defaultPolicy,
|
|
+ info.isRedirect)) {
|
|
+ return blink::WebNavigationPolicyIgnore;
|
|
+ }
|
|
+
|
|
Referrer referrer(RenderViewImpl::GetReferrerFromRequest(info.frame,
|
|
info.urlRequest));
|
|
|