# 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 IF CEF_VERSION == 3: 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 LOGSEVERITY_ERROR_REPORT = cef_types.LOGSEVERITY_ERROR_REPORT LOGSEVERITY_DISABLE = cef_types.LOGSEVERITY_DISABLE IF UNAME_SYSNAME == "Windows": IF CEF_VERSION == 1: ANGLE_IN_PROCESS = cef_types_win.ANGLE_IN_PROCESS ANGLE_IN_PROCESS_COMMAND_BUFFER = cef_types_win.ANGLE_IN_PROCESS_COMMAND_BUFFER DESKTOP_IN_PROCESS = cef_types_win.DESKTOP_IN_PROCESS DESKTOP_IN_PROCESS_COMMAND_BUFFER = cef_types_win.DESKTOP_IN_PROCESS_COMMAND_BUFFER 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]) # --------------------------------------------------------------------- # CEF 1 # --------------------------------------------------------------------- IF CEF_VERSION == 1: if key == "string_encoding"\ or key == "debug": # CEF Python only options. These are not to be found in CEF. continue elif key == "multi_threaded_message_loop": cefAppSettings.multi_threaded_message_loop = bool(appSettings[key]) elif key == "cache_path": cefString = new CefString(&cefAppSettings.cache_path) PyToCefStringPointer(appSettings[key], cefString) del cefString 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 == "release_dcheck_enabled": cefAppSettings.release_dcheck_enabled = bool(appSettings[key]) elif key == "graphics_implementation" and platform.system() == "Windows": # Cython compiler error: cef_types_win not defined on linux IF UNAME_SYSNAME == "Windows": cefAppSettings.graphics_implementation = int(appSettings[key]) elif key == "local_storage_quota": cefAppSettings.local_storage_quota = int(appSettings[key]) elif key == "session_storage_quota": cefAppSettings.session_storage_quota = int(appSettings[key]) elif key == "javascript_flags": cefString = new CefString(&cefAppSettings.javascript_flags) PyToCefStringPointer(appSettings[key], cefString) del cefString elif key == "auto_detect_proxy_settings_enabled": IF UNAME_SYSNAME == "Windows": cefAppSettings.auto_detect_proxy_settings_enabled = bool(appSettings[key]) ELSE: raise Exception("auto_detect_proxy_settings_enabled is a Windows-only option") 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 = bool(appSettings[key]) elif key == "uncaught_exception_stack_size": cefAppSettings.uncaught_exception_stack_size = int(appSettings[key]) else: raise Exception("Invalid appSettings key: %s" % key) # --------------------------------------------------------------------- # CEF 3 # --------------------------------------------------------------------- ELIF CEF_VERSION == 3: 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 == "multi_threaded_message_loop": cefAppSettings.multi_threaded_message_loop = bool(appSettings[key]) 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 = bool(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 == "release_dcheck_enabled": cefAppSettings.release_dcheck_enabled = bool(appSettings[key]) 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 = bool(appSettings[key]) elif key == "uncaught_exception_stack_size": cefAppSettings.uncaught_exception_stack_size = int(appSettings[key]) elif key == "single_process": cefAppSettings.single_process = bool(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 = bool(appSettings[key]) elif key == "remote_debugging_port": cefAppSettings.remote_debugging_port = int(appSettings[key]) elif key == "ignore_certificate_errors": cefAppSettings.ignore_certificate_errors = bool(appSettings[key]) elif key == "background_color": cefAppSettings.background_color = \ 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 CEF_VERSION == 1: if key == "animation_frame_rate": cefBrowserSettings.animation_frame_rate = int(browserSettings[key]) elif key == "drag_drop_disabled": cefBrowserSettings.drag_drop_disabled = bool(browserSettings[key]) elif key == "load_drops_disabled": cefBrowserSettings.load_drops_disabled = bool(browserSettings[key]) elif key == "history_disabled": cefBrowserSettings.history_disabled = bool(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 == "remote_fonts_disabled": cefBrowserSettings.remote_fonts_disabled = bool(browserSettings[key]) elif key == "default_encoding": cefString = new CefString(&cefBrowserSettings.default_encoding) PyToCefStringPointer(browserSettings[key], cefString) del cefString elif key == "encoding_detector_enabled": cefBrowserSettings.encoding_detector_enabled = bool(browserSettings[key]) elif key == "javascript_disabled": cefBrowserSettings.javascript_disabled = bool(browserSettings[key]) elif key == "javascript_open_windows_disallowed": cefBrowserSettings.javascript_open_windows_disallowed = bool(browserSettings[key]) elif key == "javascript_close_windows_disallowed": cefBrowserSettings.javascript_close_windows_disallowed = bool(browserSettings[key]) elif key == "javascript_access_clipboard_disallowed": cefBrowserSettings.javascript_access_clipboard_disallowed = bool(browserSettings[key]) elif key == "dom_paste_disabled": cefBrowserSettings.dom_paste_disabled = bool(browserSettings[key]) elif key == "caret_browsing_enabled": cefBrowserSettings.caret_browsing_enabled = bool(browserSettings[key]) elif key == "java_disabled": cefBrowserSettings.java_disabled = bool(browserSettings[key]) elif key == "plugins_disabled": cefBrowserSettings.plugins_disabled = bool(browserSettings[key]) elif key == "universal_access_from_file_urls_allowed": cefBrowserSettings.universal_access_from_file_urls_allowed = bool(browserSettings[key]) elif key == "file_access_from_file_urls_allowed": cefBrowserSettings.file_access_from_file_urls_allowed = bool(browserSettings[key]) elif key == "web_security_disabled": cefBrowserSettings.web_security_disabled = bool(browserSettings[key]) elif key == "xss_auditor_enabled": cefBrowserSettings.xss_auditor_enabled = bool(browserSettings[key]) elif key == "image_load_disabled": cefBrowserSettings.image_load_disabled = bool(browserSettings[key]) elif key == "shrink_standalone_images_to_fit": cefBrowserSettings.shrink_standalone_images_to_fit = bool(browserSettings[key]) elif key == "site_specific_quirks_disabled": cefBrowserSettings.site_specific_quirks_disabled = bool(browserSettings[key]) elif key == "text_area_resize_disabled": cefBrowserSettings.text_area_resize_disabled = bool(browserSettings[key]) elif key == "page_cache_disabled": cefBrowserSettings.page_cache_disabled = bool(browserSettings[key]) elif key == "tab_to_links_disabled": cefBrowserSettings.tab_to_links_disabled = bool(browserSettings[key]) elif key == "hyperlink_auditing_disabled": cefBrowserSettings.hyperlink_auditing_disabled = bool(browserSettings[key]) elif key == "user_style_sheet_enabled": cefBrowserSettings.user_style_sheet_enabled = bool(browserSettings[key]) elif key == "user_style_sheet_location": cefString = new CefString(&cefBrowserSettings.user_style_sheet_location) PyToCefStringPointer(browserSettings[key], cefString) del cefString elif key == "author_and_user_styles_disabled": cefBrowserSettings.author_and_user_styles_disabled = bool(browserSettings[key]) elif key == "local_storage_disabled": cefBrowserSettings.local_storage_disabled = bool(browserSettings[key]) elif key == "databases_disabled": cefBrowserSettings.databases_disabled = bool(browserSettings[key]) elif key == "application_cache_disabled": cefBrowserSettings.application_cache_disabled = bool(browserSettings[key]) elif key == "webgl_disabled": cefBrowserSettings.webgl_disabled = bool(browserSettings[key]) elif key == "accelerated_compositing_enabled": cefBrowserSettings.accelerated_compositing_enabled = bool(browserSettings[key]) elif key == "accelerated_layers_disabled": cefBrowserSettings.accelerated_layers_disabled = bool(browserSettings[key]) elif key == "accelerated_video_disabled": cefBrowserSettings.accelerated_video_disabled = bool(browserSettings[key]) elif key == "accelerated_2d_canvas_disabled": cefBrowserSettings.accelerated_2d_canvas_disabled = bool(browserSettings[key]) elif key == "accelerated_filters_disabled": cefBrowserSettings.accelerated_filters_disabled = bool(browserSettings[key]) elif key == "accelerated_plugins_disabled": cefBrowserSettings.accelerated_plugins_disabled = bool(browserSettings[key]) elif key == "developer_tools_disabled": cefBrowserSettings.developer_tools_disabled = bool(browserSettings[key]) elif key == "fullscreen_enabled": cefBrowserSettings.fullscreen_enabled = bool(browserSettings[key]) else: raise Exception("Invalid browserSettings key: %s" % key) ELIF CEF_VERSION == 3: if 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": cefString = new CefString(&cefBrowserSettings.user_style_sheet_location) PyToCefStringPointer(browserSettings[key], cefString) del cefString 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": if browserSettings[key]: cefBrowserSettings.java = cef_types.STATE_DISABLED else: cefBrowserSettings.java = cef_types.STATE_ENABLED 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": if browserSettings[key]: cefBrowserSettings.author_and_user_styles = ( cef_types.STATE_DISABLED) else: cefBrowserSettings.author_and_user_styles = ( cef_types.STATE_ENABLED) 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": if browserSettings[key]: cefBrowserSettings.accelerated_compositing = ( cef_types.STATE_DISABLED) else: cefBrowserSettings.accelerated_compositing = ( cef_types.STATE_ENABLED) else: raise Exception("Invalid browserSettings key: %s" % key)