Skip to content

Commit d1d4da3

Browse files
committed
Added RequestHandler.OnBeforeBrowse(), see Issue 94.
Thanks to Greg Farrell for the patch.
1 parent c385b49 commit d1d4da3

8 files changed

Lines changed: 48 additions & 3 deletions

File tree

cefpython/browser.pyx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,8 @@ cdef class PyBrowser:
208208
self.allowedClientCallbacks += ["OnBeforeResourceLoad",
209209
"OnResourceRedirect", "GetAuthCredentials",
210210
"OnQuotaRequest", "GetCookieManager",
211-
"OnProtocolExecution", "GetResourceHandler"]
211+
"OnProtocolExecution", "GetResourceHandler",
212+
"OnBeforeBrowse"]
212213
# LoadHandler
213214
self.allowedClientCallbacks += ["OnLoadStart", "OnLoadEnd",
214215
"OnLoadError", "OnRendererProcessTerminated",

cefpython/cef3/client_handler/client_handler.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -368,9 +368,8 @@ bool ClientHandler::OnBeforeBrowse(CefRefPtr<CefBrowser> browser,
368368
CefRefPtr<CefFrame> frame,
369369
CefRefPtr<CefRequest> request,
370370
bool is_redirect) {
371-
// Not yet implemented.
372371
REQUIRE_UI_THREAD();
373-
return false;
372+
return RequestHandler_OnBeforeBrowse(browser, frame, request, is_redirect);
374373
}
375374

376375
///

cefpython/cef3/linux/binaries_32bit/wxpython.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -329,6 +329,11 @@ def OnKeyEvent(self, browser, event, eventHandle):
329329
# RequestHandler
330330
# -------------------------------------------------------------------------
331331

332+
def OnBeforeBrowse(self, browser, frame, request, isRedirect):
333+
print("RequestHandler::OnBeforeBrowse()")
334+
print("url = %s" % request.GetUrl()[:70])
335+
return False
336+
332337
def OnBeforeResourceLoad(self, browser, frame, request):
333338
print("RequestHandler::OnBeforeResourceLoad()")
334339
print("url = %s" % request.GetUrl()[:70])

cefpython/cef3/linux/binaries_64bit/wxpython.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -330,6 +330,11 @@ def OnKeyEvent(self, browser, event, eventHandle):
330330
# RequestHandler
331331
# -------------------------------------------------------------------------
332332

333+
def OnBeforeBrowse(self, browser, frame, request, isRedirect):
334+
print("RequestHandler::OnBeforeBrowse()")
335+
print("url = %s" % request.GetUrl()[:70])
336+
return False
337+
333338
def OnBeforeResourceLoad(self, browser, frame, request):
334339
print("RequestHandler::OnBeforeResourceLoad()")
335340
print("url = %s" % request.GetUrl()[:70])

cefpython/cef3/linux/setup/cefpython.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ __PYX_EXTERN_C DL_IMPORT(bool) DisplayHandler_OnConsoleMessage(CefRefPtr<CefBrow
2828
__PYX_EXTERN_C DL_IMPORT(bool) KeyboardHandler_OnPreKeyEvent(CefRefPtr<CefBrowser>, CefKeyEvent const &, CefEventHandle, bool *);
2929
__PYX_EXTERN_C DL_IMPORT(bool) KeyboardHandler_OnKeyEvent(CefRefPtr<CefBrowser>, CefKeyEvent const &, CefEventHandle);
3030
__PYX_EXTERN_C DL_IMPORT(bool) RequestHandler_OnBeforeResourceLoad(CefRefPtr<CefBrowser>, CefRefPtr<CefFrame>, CefRefPtr<CefRequest>);
31+
__PYX_EXTERN_C DL_IMPORT(bool) RequestHandler_OnBeforeBrowse(CefRefPtr<CefBrowser>, CefRefPtr<CefFrame>, CefRefPtr<CefRequest>, bool);
3132
__PYX_EXTERN_C DL_IMPORT(CefRefPtr<CefResourceHandler>) RequestHandler_GetResourceHandler(CefRefPtr<CefBrowser>, CefRefPtr<CefFrame>, CefRefPtr<CefRequest>);
3233
__PYX_EXTERN_C DL_IMPORT(void) RequestHandler_OnResourceRedirect(CefRefPtr<CefBrowser>, CefRefPtr<CefFrame>, CefString const &, CefString &);
3334
__PYX_EXTERN_C DL_IMPORT(bool) RequestHandler_GetAuthCredentials(CefRefPtr<CefBrowser>, CefRefPtr<CefFrame>, bool, CefString const &, int, CefString const &, CefString const &, CefRefPtr<CefAuthCallback>);

cefpython/cef3/windows/binaries/wxpython.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -359,6 +359,11 @@ def OnKeyEvent(self, browser, event, eventHandle):
359359
# RequestHandler
360360
# -------------------------------------------------------------------------
361361

362+
def OnBeforeBrowse(self, browser, frame, request, isRedirect):
363+
print("RequestHandler::OnBeforeBrowse()")
364+
print(" url = %s" % request.GetUrl()[:70])
365+
return False
366+
362367
def OnBeforeResourceLoad(self, browser, frame, request):
363368
print("RequestHandler::OnBeforeResourceLoad()")
364369
print(" url = %s" % request.GetUrl()[:70])

cefpython/cef3/windows/setup/cefpython.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ __PYX_EXTERN_C DL_IMPORT(bool) DisplayHandler_OnConsoleMessage(CefRefPtr<CefBrow
2828
__PYX_EXTERN_C DL_IMPORT(bool) KeyboardHandler_OnPreKeyEvent(CefRefPtr<CefBrowser>, CefKeyEvent const &, CefEventHandle, bool *);
2929
__PYX_EXTERN_C DL_IMPORT(bool) KeyboardHandler_OnKeyEvent(CefRefPtr<CefBrowser>, CefKeyEvent const &, CefEventHandle);
3030
__PYX_EXTERN_C DL_IMPORT(bool) RequestHandler_OnBeforeResourceLoad(CefRefPtr<CefBrowser>, CefRefPtr<CefFrame>, CefRefPtr<CefRequest>);
31+
__PYX_EXTERN_C DL_IMPORT(bool) RequestHandler_OnBeforeBrowse(CefRefPtr<CefBrowser>, CefRefPtr<CefFrame>, CefRefPtr<CefRequest>, bool);
3132
__PYX_EXTERN_C DL_IMPORT(CefRefPtr<CefResourceHandler>) RequestHandler_GetResourceHandler(CefRefPtr<CefBrowser>, CefRefPtr<CefFrame>, CefRefPtr<CefRequest>);
3233
__PYX_EXTERN_C DL_IMPORT(void) RequestHandler_OnResourceRedirect(CefRefPtr<CefBrowser>, CefRefPtr<CefFrame>, CefString const &, CefString &);
3334
__PYX_EXTERN_C DL_IMPORT(bool) RequestHandler_GetAuthCredentials(CefRefPtr<CefBrowser>, CefRefPtr<CefFrame>, bool, CefString const &, int, CefString const &, CefString const &, CefRefPtr<CefAuthCallback>);

cefpython/request_handler_cef3.pyx

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,34 @@ cdef public cpp_bool RequestHandler_OnBeforeResourceLoad(
8484
(exc_type, exc_value, exc_trace) = sys.exc_info()
8585
sys.excepthook(exc_type, exc_value, exc_trace)
8686

87+
cdef public cpp_bool RequestHandler_OnBeforeBrowse(
88+
CefRefPtr[CefBrowser] cefBrowser,
89+
CefRefPtr[CefFrame] cefFrame,
90+
CefRefPtr[CefRequest] cefRequest,
91+
cpp_bool cefIsRedirect
92+
) except * with gil:
93+
cdef PyBrowser pyBrowser
94+
cdef PyFrame pyFrame
95+
cdef PyRequest pyRequest
96+
cdef py_bool pyIsRedirect
97+
cdef object clientCallback
98+
cdef py_bool returnValue
99+
try:
100+
pyBrowser = GetPyBrowser(cefBrowser)
101+
pyFrame = GetPyFrame(cefFrame)
102+
pyRequest = CreatePyRequest(cefRequest)
103+
pyIsRedirect = bool(cefIsRedirect)
104+
clientCallback = pyBrowser.GetClientCallback("OnBeforeBrowse")
105+
if clientCallback:
106+
returnValue = clientCallback(pyBrowser, pyFrame, pyRequest,
107+
pyIsRedirect)
108+
return bool(returnValue)
109+
else:
110+
return False
111+
except:
112+
(exc_type, exc_value, exc_trace) = sys.exc_info()
113+
sys.excepthook(exc_type, exc_value, exc_trace)
114+
87115
cdef public CefRefPtr[CefResourceHandler] RequestHandler_GetResourceHandler(
88116
CefRefPtr[CefBrowser] cefBrowser,
89117
CefRefPtr[CefFrame] cefFrame,

0 commit comments

Comments
 (0)