Add user_gesture parameter to OnBeforeBrowse (issue #1526)

This commit is contained in:
Felix Bruns 2018-04-27 15:11:53 +00:00 committed by Marshall Greenblatt
parent 8e7c5d6568
commit d0bfc4d2a4
15 changed files with 46 additions and 11 deletions

View File

@ -33,7 +33,7 @@
// by hand. See the translator.README.txt file in the tools directory for
// more information.
//
// $hash=b8b5a62b11dbc48f0733c0522864e4dbda8b4f59$
// $hash=95e44047a75693dbae0ab6b07b415d188252bfdf$
//
#ifndef CEF_INCLUDE_CAPI_CEF_REQUEST_HANDLER_CAPI_H_
@ -112,12 +112,15 @@ typedef struct _cef_request_handler_t {
// If the navigation is allowed cef_load_handler_t::OnLoadStart and
// cef_load_handler_t::OnLoadEnd will be called. If the navigation is canceled
// cef_load_handler_t::OnLoadError will be called with an |errorCode| value of
// ERR_ABORTED.
// ERR_ABORTED. The |user_gesture| value will be true (1) if the browser
// navigated via explicit user gesture (e.g. clicking a link) or false (0) if
// it navigated automatically (e.g. via the DomContentLoaded event).
///
int(CEF_CALLBACK* on_before_browse)(struct _cef_request_handler_t* self,
struct _cef_browser_t* browser,
struct _cef_frame_t* frame,
struct _cef_request_t* request,
int user_gesture,
int is_redirect);
///

View File

@ -106,12 +106,15 @@ class CefRequestHandler : public virtual CefBaseRefCounted {
// If the navigation is allowed CefLoadHandler::OnLoadStart and
// CefLoadHandler::OnLoadEnd will be called. If the navigation is canceled
// CefLoadHandler::OnLoadError will be called with an |errorCode| value of
// ERR_ABORTED.
// ERR_ABORTED. The |user_gesture| value will be true if the browser
// navigated via explicit user gesture (e.g. clicking a link) or false if it
// navigated automatically (e.g. via the DomContentLoaded event).
///
/*--cef()--*/
virtual bool OnBeforeBrowse(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame,
CefRefPtr<CefRequest> request,
bool user_gesture,
bool is_redirect) {
return false;
}

View File

@ -426,7 +426,8 @@ bool NavigationOnUIThread(
request->SetReadOnly(true);
ignore_navigation = handler->OnBeforeBrowse(
browser.get(), frame, request.get(), params.is_redirect());
browser.get(), frame, request.get(), params.has_user_gesture(),
params.is_redirect());
}
}
}

View File

@ -9,7 +9,7 @@
// implementations. See the translator.README.txt file in the tools directory
// for more information.
//
// $hash=b4c3eec00b1889871f4e13ea05d7c00a12da1fa0$
// $hash=02ebd75f0920edad6a23db997a57f28fc921b045$
//
#include "libcef_dll/cpptoc/request_handler_cpptoc.h"
@ -34,6 +34,7 @@ request_handler_on_before_browse(struct _cef_request_handler_t* self,
cef_browser_t* browser,
cef_frame_t* frame,
cef_request_t* request,
int user_gesture,
int is_redirect) {
// AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
@ -56,7 +57,8 @@ request_handler_on_before_browse(struct _cef_request_handler_t* self,
// Execute
bool _retval = CefRequestHandlerCppToC::Get(self)->OnBeforeBrowse(
CefBrowserCToCpp::Wrap(browser), CefFrameCToCpp::Wrap(frame),
CefRequestCToCpp::Wrap(request), is_redirect ? true : false);
CefRequestCToCpp::Wrap(request), user_gesture ? true : false,
is_redirect ? true : false);
// Return type: bool
return _retval;

View File

@ -9,7 +9,7 @@
// implementations. See the translator.README.txt file in the tools directory
// for more information.
//
// $hash=fbd234d6060aadc1bf5ee0efce5d8cb2c4a0e022$
// $hash=83e35477036fe71704286b8089535e8787edf2c3$
//
#include "libcef_dll/ctocpp/request_handler_ctocpp.h"
@ -30,6 +30,7 @@
bool CefRequestHandlerCToCpp::OnBeforeBrowse(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame,
CefRefPtr<CefRequest> request,
bool user_gesture,
bool is_redirect) {
cef_request_handler_t* _struct = GetStruct();
if (CEF_MEMBER_MISSING(_struct, on_before_browse))
@ -53,7 +54,7 @@ bool CefRequestHandlerCToCpp::OnBeforeBrowse(CefRefPtr<CefBrowser> browser,
// Execute
int _retval = _struct->on_before_browse(
_struct, CefBrowserCppToC::Wrap(browser), CefFrameCppToC::Wrap(frame),
CefRequestCppToC::Wrap(request), is_redirect);
CefRequestCppToC::Wrap(request), user_gesture, is_redirect);
// Return type: bool
return _retval ? true : false;

View File

@ -9,7 +9,7 @@
// implementations. See the translator.README.txt file in the tools directory
// for more information.
//
// $hash=cde69cb97f29cb75da85bb709470f73d9e57f5bc$
// $hash=f8849fecaa6e2a36280b9c71b37bdfbe1600fb06$
//
#ifndef CEF_LIBCEF_DLL_CTOCPP_REQUEST_HANDLER_CTOCPP_H_
@ -37,6 +37,7 @@ class CefRequestHandlerCToCpp
bool OnBeforeBrowse(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame,
CefRefPtr<CefRequest> request,
bool user_gesture,
bool is_redirect) override;
bool OnOpenURLFromTab(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame,

View File

@ -635,6 +635,7 @@ void ClientHandler::OnLoadError(CefRefPtr<CefBrowser> browser,
bool ClientHandler::OnBeforeBrowse(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame,
CefRefPtr<CefRequest> request,
bool user_gesture,
bool is_redirect) {
CEF_REQUIRE_UI_THREAD();

View File

@ -208,6 +208,7 @@ class ClientHandler : public CefClient,
bool OnBeforeBrowse(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame,
CefRefPtr<CefRequest> request,
bool user_gesture,
bool is_redirect) OVERRIDE;
bool OnOpenURLFromTab(
CefRefPtr<CefBrowser> browser,

View File

@ -480,6 +480,7 @@ class FrameNavTestHandler : public TestHandler {
bool OnBeforeBrowse(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame,
CefRefPtr<CefRequest> request,
bool user_gesture,
bool is_redirect) override {
EXPECT_TRUE(
expectations_->OnBeforeBrowse(browser, frame, request->GetURL()))

View File

@ -229,6 +229,7 @@ class MRTestHandler : public TestHandler {
bool OnBeforeBrowse(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame,
CefRefPtr<CefRequest> request,
bool user_gesture,
bool is_redirect) override {
message_router_->OnBeforeBrowse(browser, frame);
return false;

View File

@ -368,6 +368,7 @@ class HistoryNavTestHandler : public TestHandler {
bool OnBeforeBrowse(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame,
CefRefPtr<CefRequest> request,
bool user_gesture,
bool is_redirect) override {
const NavListItem& item = kHNavList[nav_];
@ -1455,6 +1456,7 @@ class OrderNavTestHandler : public TestHandler {
bool OnBeforeBrowse(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame,
CefRefPtr<CefRequest> request,
bool user_gesture,
bool is_redirect) override {
EXPECT_EQ(RT_MAIN_FRAME, request->GetResourceType());
@ -1896,13 +1898,22 @@ class LoadNavTestHandler : public TestHandler {
bool OnBeforeBrowse(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame,
CefRefPtr<CefRequest> request,
bool user_gesture,
bool is_redirect) override {
EXPECT_EQ(RT_MAIN_FRAME, request->GetResourceType());
if (mode_ == LOAD || request->GetURL() == kLoadNav1)
if (mode_ == LOAD || request->GetURL() == kLoadNav1) {
EXPECT_EQ(TT_EXPLICIT, request->GetTransitionType());
else
EXPECT_FALSE(user_gesture);
} else {
EXPECT_EQ(TT_LINK, request->GetTransitionType());
if (mode_ == LEFT_CLICK) {
EXPECT_TRUE(user_gesture);
} else {
EXPECT_FALSE(user_gesture);
}
}
EXPECT_GT(browser_id_current_, 0);
EXPECT_EQ(browser_id_current_, browser->GetIdentifier());
@ -2602,6 +2613,7 @@ class BrowseNavTestHandler : public TestHandler {
bool OnBeforeBrowse(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame,
CefRefPtr<CefRequest> request,
bool user_gesture,
bool is_redirect) override {
const std::string& url = request->GetURL();
EXPECT_STREQ(kBrowseNavPageUrl, url.c_str());
@ -2764,6 +2776,7 @@ class SameNavTestHandler : public TestHandler {
bool OnBeforeBrowse(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame,
CefRefPtr<CefRequest> request,
bool user_gesture,
bool is_redirect) override {
const std::string& url = request->GetURL();
EXPECT_STREQ(expected_url_.c_str(), url.c_str());
@ -2956,6 +2969,7 @@ class CancelBeforeNavTestHandler : public TestHandler {
bool OnBeforeBrowse(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame,
CefRefPtr<CefRequest> request,
bool user_gesture,
bool is_redirect) override {
EXPECT_TRUE(got_loading_state_changed_start_);
EXPECT_FALSE(got_before_browse_);
@ -3199,6 +3213,7 @@ class CancelAfterNavTestHandler : public TestHandler {
bool OnBeforeBrowse(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame,
CefRefPtr<CefRequest> request,
bool user_gesture,
bool is_redirect) override {
EXPECT_TRUE(got_loading_state_changed_start_);
EXPECT_FALSE(got_before_browse_);

View File

@ -204,6 +204,7 @@ class NetNotifyTestHandler : public TestHandler {
bool OnBeforeBrowse(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame,
CefRefPtr<CefRequest> request,
bool user_gesture,
bool is_redirect) override {
std::string url = request->GetURL();
@ -576,6 +577,7 @@ class ResourceResponseTest : public TestHandler {
bool OnBeforeBrowse(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame,
CefRefPtr<CefRequest> request,
bool user_gesture,
bool is_redirect) override {
EXPECT_UI_THREAD();
EXPECT_EQ(0, browser_id_);

View File

@ -487,6 +487,7 @@ class TypeTestHandler : public TestHandler {
bool OnBeforeBrowse(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame,
CefRefPtr<CefRequest> request,
bool user_gesture,
bool is_redirect) override {
browse_expectations_.GotRequest(request);

View File

@ -83,6 +83,7 @@ void RoutingTestHandler::OnRenderProcessTerminated(
bool RoutingTestHandler::OnBeforeBrowse(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame,
CefRefPtr<CefRequest> request,
bool user_gesture,
bool is_redirect) {
message_router_->OnBeforeBrowse(browser, frame);
return false;

View File

@ -26,6 +26,7 @@ class RoutingTestHandler : public TestHandler,
bool OnBeforeBrowse(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame,
CefRefPtr<CefRequest> request,
bool user_gesture,
bool is_redirect) override;
// Returns true if the router handled the navigation.