# Copyright (c) 2012-2014 The CEF Python authors. All rights reserved.
# License: New BSD License.
# Website: http://code.google.com/p/cefpython/
# More options/flags can be specified for Chromium through
# CefApp::OnBeforeCommandLineProcessing(), see comment 10 by Marshall:
# https://code.google.com/p/chromiumembedded/issues/detail?id=878#c10
include "cefpython.pyx"
cimport cef_types
LOGSEVERITY_DEFAULT = cef_types.LOGSEVERITY_DEFAULT
LOGSEVERITY_VERBOSE = cef_types.LOGSEVERITY_VERBOSE
LOGSEVERITY_INFO = cef_types.LOGSEVERITY_INFO
LOGSEVERITY_WARNING = cef_types.LOGSEVERITY_WARNING
LOGSEVERITY_ERROR = cef_types.LOGSEVERITY_ERROR
# keep for BC
LOGSEVERITY_ERROR_REPORT = cef_types.LOGSEVERITY_ERROR
LOGSEVERITY_DISABLE = cef_types.LOGSEVERITY_DISABLE
cdef void SetApplicationSettings(
dict appSettings,
CefSettings* cefAppSettings
) except *:
cdef CefString* cefString
for key in appSettings:
# Setting string: CefString(&browserDefaults.default_encoding).FromASCII("UTF-8");
# cefString = CefString(&cefSettings.user_agent)
# cefString.FromASCII(settings[key])
if key == "string_encoding"\
or key == "debug"\
or key == "unique_request_context_per_browser"\
or key == "downloads_enabled"\
or key == "context_menu" \
or key == "auto_zooming":
# CEF Python only options. These are not to be found in CEF.
continue
elif key == "accept_language_list":
cefString = new CefString(&cefAppSettings.accept_language_list)
PyToCefStringPointer(appSettings[key], cefString)
del cefString
elif key == "cache_path":
cefString = new CefString(&cefAppSettings.cache_path)
PyToCefStringPointer(appSettings[key], cefString)
del cefString
elif key == "persist_session_cookies":
cefAppSettings.persist_session_cookies = int(appSettings[key])
elif key == "user_agent":
cefString = new CefString(&cefAppSettings.user_agent)
PyToCefStringPointer(appSettings[key], cefString)
del cefString
elif key == "product_version":
cefString = new CefString(&cefAppSettings.product_version)
PyToCefStringPointer(appSettings[key], cefString)
del cefString
elif key == "log_file":
cefString = new CefString(&cefAppSettings.log_file)
PyToCefStringPointer(appSettings[key], cefString)
del cefString
elif key == "locale":
cefString = new CefString(&cefAppSettings.locale)
PyToCefStringPointer(appSettings[key], cefString)
del cefString
elif key == "log_severity":
cefAppSettings.log_severity = int(appSettings[key])
elif key == "multi_threaded_message_loop":
cefAppSettings.multi_threaded_message_loop = int(appSettings[key])
elif key == "net_security_expiration_enabled":
cefAppSettings.enable_net_security_expiration =\
int(appSettings[key])
elif key == "release_dcheck_enabled":
# Keep for BC, just log info - no error
Debug("DEPRECATED: 'release_dcheck_enabled' setting")
elif key == "javascript_flags":
cefString = new CefString(&cefAppSettings.javascript_flags)
PyToCefStringPointer(appSettings[key], cefString)
del cefString
elif key == "resources_dir_path":
cefString = new CefString(&cefAppSettings.resources_dir_path)
PyToCefStringPointer(appSettings[key], cefString)
del cefString
elif key == "locales_dir_path":
cefString = new CefString(&cefAppSettings.locales_dir_path)
PyToCefStringPointer(appSettings[key], cefString)
del cefString
elif key == "pack_loading_disabled":
cefAppSettings.pack_loading_disabled = int(appSettings[key])
elif key == "uncaught_exception_stack_size":
cefAppSettings.uncaught_exception_stack_size = int(appSettings[key])
elif key == "single_process":
cefAppSettings.single_process = int(appSettings[key])
elif key == "browser_subprocess_path":
cefString = new CefString(&cefAppSettings.browser_subprocess_path)
PyToCefStringPointer(appSettings[key], cefString)
del cefString
elif key == "command_line_args_disabled":
cefAppSettings.command_line_args_disabled = int(appSettings[key])
elif key == "remote_debugging_port":
cefAppSettings.remote_debugging_port = int(appSettings[key])
elif key == "ignore_certificate_errors":
cefAppSettings.ignore_certificate_errors = int(appSettings[key])
elif key == "background_color":
cefAppSettings.background_color = \
int(appSettings[key])
elif key == "persist_user_preferences":
cefAppSettings.persist_user_preferences = \
int(appSettings[key])
elif key == "user_data_path":
cefString = new CefString(&cefAppSettings.user_data_path)
PyToCefStringPointer(appSettings[key], cefString)
del cefString
elif key == "windowless_rendering_enabled":
cefAppSettings.windowless_rendering_enabled = \
int(appSettings[key])
elif key == "external_message_pump":
cefAppSettings.external_message_pump = \
int(appSettings[key])
else:
raise Exception("Invalid appSettings key: %s" % key)
cdef void SetBrowserSettings(
dict browserSettings,
CefBrowserSettings* cefBrowserSettings
) except *:
cdef CefString* cefString
for key in browserSettings:
if key == "accept_language_list":
cefString = new CefString(&cefBrowserSettings.accept_language_list)
PyToCefStringPointer(browserSettings[key], cefString)
del cefString
elif key == "background_color":
cefBrowserSettings.background_color = \
int(browserSettings[key])
elif key == "standard_font_family":
cefString = new CefString(&cefBrowserSettings.standard_font_family)
PyToCefStringPointer(browserSettings[key], cefString)
del cefString
elif key == "fixed_font_family":
cefString = new CefString(&cefBrowserSettings.fixed_font_family)
PyToCefStringPointer(browserSettings[key], cefString)
del cefString
elif key == "serif_font_family":
cefString = new CefString(&cefBrowserSettings.serif_font_family)
PyToCefStringPointer(browserSettings[key], cefString)
del cefString
elif key == "sans_serif_font_family":
cefString = new CefString(&cefBrowserSettings.sans_serif_font_family)
PyToCefStringPointer(browserSettings[key], cefString)
del cefString
elif key == "cursive_font_family":
cefString = new CefString(&cefBrowserSettings.cursive_font_family)
PyToCefStringPointer(browserSettings[key], cefString)
del cefString
elif key == "fantasy_font_family":
cefString = new CefString(&cefBrowserSettings.fantasy_font_family)
PyToCefStringPointer(browserSettings[key], cefString)
del cefString
elif key == "default_font_size":
cefBrowserSettings.default_font_size = int(browserSettings[key])
elif key == "default_fixed_font_size":
cefBrowserSettings.default_fixed_font_size = int(browserSettings[key])
elif key == "minimum_font_size":
cefBrowserSettings.minimum_font_size = int(browserSettings[key])
elif key == "minimum_logical_font_size":
cefBrowserSettings.minimum_logical_font_size = int(browserSettings[key])
elif key == "default_encoding":
cefString = new CefString(&cefBrowserSettings.default_encoding)
PyToCefStringPointer(browserSettings[key], cefString)
del cefString
elif key == "user_style_sheet_location":
# Keep for BC, just log info - no error
Debug("DEPRECATED: 'user_style_sheet_location' setting")
elif key == "remote_fonts_disabled":
if browserSettings[key]:
cefBrowserSettings.remote_fonts = cef_types.STATE_DISABLED
else:
cefBrowserSettings.remote_fonts = cef_types.STATE_ENABLED
elif key == "javascript_disabled":
if browserSettings[key]:
cefBrowserSettings.javascript = cef_types.STATE_DISABLED
else:
cefBrowserSettings.javascript = cef_types.STATE_ENABLED
elif key == "javascript_open_windows_disallowed":
if browserSettings[key]:
cefBrowserSettings.javascript_open_windows = (
cef_types.STATE_DISABLED)
else:
cefBrowserSettings.javascript_open_windows = (
cef_types.STATE_ENABLED)
elif key == "javascript_close_windows_disallowed":
if browserSettings[key]:
cefBrowserSettings.javascript_close_windows = (
cef_types.STATE_DISABLED)
else:
cefBrowserSettings.javascript_close_windows = (
cef_types.STATE_ENABLED)
elif key == "javascript_access_clipboard_disallowed":
if browserSettings[key]:
cefBrowserSettings.javascript_access_clipboard = (
cef_types.STATE_DISABLED)
else:
cefBrowserSettings.javascript_access_clipboard = (
cef_types.STATE_ENABLED)
elif key == "dom_paste_disabled":
if browserSettings[key]:
cefBrowserSettings.javascript_dom_paste = (
cef_types.STATE_DISABLED)
else:
cefBrowserSettings.javascript_dom_paste = (
cef_types.STATE_ENABLED)
elif key == "caret_browsing_enabled":
if browserSettings[key]:
cefBrowserSettings.caret_browsing = (
cef_types.STATE_ENABLED)
else:
cefBrowserSettings.caret_browsing = (
cef_types.STATE_DISABLED)
elif key == "java_disabled":
# Keep for BC, just log info - no error
Debug("DEPRECATED: 'java_disabled' setting")
elif key == "plugins_disabled":
if browserSettings[key]:
cefBrowserSettings.plugins = cef_types.STATE_DISABLED
else:
cefBrowserSettings.plugins = cef_types.STATE_ENABLED
elif key == "universal_access_from_file_urls_allowed":
if browserSettings[key]:
cefBrowserSettings.universal_access_from_file_urls = (
cef_types.STATE_ENABLED)
else:
cefBrowserSettings.universal_access_from_file_urls = (
cef_types.STATE_DISABLED)
elif key == "file_access_from_file_urls_allowed":
if browserSettings[key]:
cefBrowserSettings.file_access_from_file_urls = (
cef_types.STATE_ENABLED)
else:
cefBrowserSettings.file_access_from_file_urls = (
cef_types.STATE_DISABLED)
elif key == "web_security_disabled":
if browserSettings[key]:
cefBrowserSettings.web_security = cef_types.STATE_DISABLED
else:
cefBrowserSettings.web_security = cef_types.STATE_ENABLED
elif key == "image_load_disabled":
if browserSettings[key]:
cefBrowserSettings.image_loading = cef_types.STATE_DISABLED
else:
cefBrowserSettings.image_loading = cef_types.STATE_ENABLED
elif key == "shrink_standalone_images_to_fit":
if browserSettings[key]:
cefBrowserSettings.image_shrink_standalone_to_fit = (
cef_types.STATE_ENABLED)
else:
cefBrowserSettings.image_shrink_standalone_to_fit = (
cef_types.STATE_DISABLED)
elif key == "text_area_resize_disabled":
if browserSettings[key]:
cefBrowserSettings.text_area_resize = (
cef_types.STATE_DISABLED)
else:
cefBrowserSettings.text_area_resize = (
cef_types.STATE_ENABLED)
elif key == "tab_to_links_disabled":
if browserSettings[key]:
cefBrowserSettings.tab_to_links = cef_types.STATE_DISABLED
else:
cefBrowserSettings.tab_to_links = cef_types.STATE_ENABLED
elif key == "author_and_user_styles_disabled":
Debug("DEPRECATED: 'author_and_user_styles_disabled' setting")
elif key == "local_storage_disabled":
if browserSettings[key]:
cefBrowserSettings.local_storage = cef_types.STATE_DISABLED
else:
cefBrowserSettings.local_storage = cef_types.STATE_ENABLED
elif key == "databases_disabled":
if browserSettings[key]:
cefBrowserSettings.databases = cef_types.STATE_DISABLED
else:
cefBrowserSettings.databases = cef_types.STATE_ENABLED
elif key == "application_cache_disabled":
if browserSettings[key]:
cefBrowserSettings.application_cache = (
cef_types.STATE_DISABLED)
else:
cefBrowserSettings.application_cache = (
cef_types.STATE_ENABLED)
elif key == "webgl_disabled":
if browserSettings[key]:
cefBrowserSettings.webgl = cef_types.STATE_DISABLED
else:
cefBrowserSettings.webgl = cef_types.STATE_ENABLED
elif key == "accelerated_compositing_disabled":
Debug("DEPRECATED: 'accelerated_compositing_disabled' setting")
elif key == "windowless_frame_rate":
cefBrowserSettings.windowless_frame_rate =\
int(browserSettings[key])
else:
raise Exception("Invalid browserSettings key: %s" % key)