Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
cef_browser = cef.CreateBrowserSync(window_info=window_info, url=real_url)
browser = Browser(window, handle, cef_browser)
bindings = cef.JavascriptBindings()
bindings.SetObject('external', browser.js_bridge)
bindings.SetFunction('alert', alert_func)
cef_browser.SetJavascriptBindings(bindings)
cef_browser.SetClientHandler(LoadHandler())
instances[window.uid] = browser
window.shown.set()
window_info = cef.WindowInfo()
window_info.SetAsChild(handle)
cef.PostTask(cef.TID_UI, _create)
# Set WindowInfo object:
# > windowInfo[0] = cefpython.WindowInfo()
# On Windows there are keyboard problems in popups, when popup
# is created using "window.open" or "target=blank". This issue
# occurs only in wxPython. PyGTK or PyQt do not require this fix.
# The solution is to create window explicitilly, and not depend
# on CEF to create window internally.
# If you set allowPopups=True then CEF will create popup window.
# The wx.Frame cannot be created here, as this callback is
# executed on the IO thread. Window should be created on the UI
# thread. One solution is to call cefpython.CreateBrowser()
# which runs asynchronously and can be called on any thread.
# The other solution is to post a task on the UI thread, so
# that cefpython.CreateBrowserSync() can be used.
cefpython.PostTask(cefpython.TID_UI, self._CreatePopup, targetUrl)
allowPopups = False
return not allowPopups
def OnLoadError(self, browser, frame, error_code, failed_url, **_):
"""Called when the resource load for a navigation fails
or is canceled."""
if not frame.IsMain():
# We are interested only in loading main url.
# Ignore any errors during loading of other frames.
return
print("[screenshot.py] ERROR: Failed to load url: {url}"
.format(url=failed_url))
print("[screenshot.py] Error code: {code}"
.format(code=error_code))
# See comments in exit_app() why PostTask must be used
cef.PostTask(cef.TID_UI, exit_app, browser)
cef_browser = cef.CreateBrowserSync(window_info=window_info, url=real_url)
browser = Browser(window, handle, cef_browser)
bindings = cef.JavascriptBindings()
bindings.SetObject("external", browser.js_bridge)
bindings.SetFunction("alert", alert_func)
cef_browser.SetJavascriptBindings(bindings)
cef_browser.SetClientHandler(LoadHandler())
instances[window.uid] = browser
window.shown.set()
window_info = cef.WindowInfo()
window_info.SetAsChild(handle)
cef.PostTask(cef.TID_UI, _create)
# On Windows there are keyboard problems in popups, when popup
# is created using "window.open" or "target=blank". This issue
# occurs only in wxPython. PyGTK or PyQt do not require this fix.
# The solution is to create window explicitly, and not depend
# on CEF to create window internally. See Issue 80 for details:
# https://code.google.com/p/cefpython/issues/detail?id=80
# If you set allowPopups=True then CEF will create popup window.
# The wx.Frame cannot be created here, as this callback is
# executed on the IO thread. Window should be created on the UI
# thread. One solution is to call cefpython.CreateBrowser()
# which runs asynchronously and can be called on any thread.
# The other solution is to post a task on the UI thread, so
# that cefpython.CreateBrowserSync() can be used.
cefpython.PostTask(cefpython.TID_UI, self._CreatePopup, targetUrl)
allowPopups = False
return not allowPopups
window_handle = create_window(title="PyWin32 example",
class_name="pywin32.example",
width=800,
height=600,
window_proc=window_proc,
icon="resources/chromium.ico")
window_info = cef.WindowInfo()
window_info.SetAsChild(window_handle)
if g_multi_threaded:
# When using multi-threaded message loop, CEF's UI thread
# is no more application's main thread. In such case browser
# must be created using cef.PostTask function and CEF message
# loop must not be run explicitilly.
cef.PostTask(cef.TID_UI,
create_browser,
window_info,
{},
"https://www.google.com/")
win32gui.PumpMessages()
else:
create_browser(window_info=window_info,
settings={},
url="https://www.google.com/")
cef.MessageLoop()
cef.Shutdown()