cef/patch/patches/content_navigation.patch
2012-11-09 18:47:09 +00:00

67 lines
3.0 KiB
Diff

Index: public/renderer/content_renderer_client.cc
===================================================================
--- public/renderer/content_renderer_client.cc (revision 165669)
+++ public/renderer/content_renderer_client.cc (working copy)
@@ -56,6 +56,15 @@
return false;
}
+bool ContentRendererClient::HandleNavigation(
+ WebKit::WebFrame* frame,
+ const WebKit::WebURLRequest& request,
+ WebKit::WebNavigationType type,
+ WebKit::WebNavigationPolicy default_policy,
+ bool is_redirect) {
+ return false;
+}
+
bool ContentRendererClient::ShouldFork(WebKit::WebFrame* frame,
const GURL& url,
bool is_initial_navigation,
Index: public/renderer/content_renderer_client.h
===================================================================
--- public/renderer/content_renderer_client.h (revision 165669)
+++ public/renderer/content_renderer_client.h (working copy)
@@ -12,6 +12,8 @@
#include "ipc/ipc_message.h"
#include "content/public/common/content_client.h"
#include "content/public/common/page_transition_types.h"
+#include "third_party/WebKit/Source/WebKit/chromium/public/WebNavigationPolicy.h"
+#include "third_party/WebKit/Source/WebKit/chromium/public/WebNavigationType.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebPageVisibilityState.h"
#include "v8/include/v8.h"
@@ -130,6 +132,14 @@
// Returns true if the given url can create popup windows.
virtual bool AllowPopup(const GURL& creator);
+ // Returns true if the navigation was handled by the embedder and should be
+ // ignored by WebKit. This method is used by CEF.
+ virtual bool HandleNavigation(WebKit::WebFrame* frame,
+ const WebKit::WebURLRequest& request,
+ WebKit::WebNavigationType type,
+ WebKit::WebNavigationPolicy default_policy,
+ bool is_redirect);
+
// Returns true if we should fork a new process for the given navigation.
virtual bool ShouldFork(WebKit::WebFrame* frame,
const GURL& url,
Index: renderer/render_view_impl.cc
===================================================================
--- renderer/render_view_impl.cc (revision 165669)
+++ renderer/render_view_impl.cc (working copy)
@@ -2674,6 +2674,13 @@
WebNavigationPolicy RenderViewImpl::decidePolicyForNavigation(
WebFrame* frame, const WebURLRequest& request, WebNavigationType type,
const WebNode&, WebNavigationPolicy default_policy, bool is_redirect) {
+ if (request.url() != GURL(kSwappedOutURL) &&
+ GetContentClient()->renderer()->HandleNavigation(frame, request, type,
+ default_policy,
+ is_redirect)) {
+ return WebKit::WebNavigationPolicyIgnore;
+ }
+
Referrer referrer(
GURL(request.httpHeaderField(WebString::fromUTF8("Referer"))),
GetReferrerPolicyFromRequest(frame, request));