Improve the way that settings are specified (issue #878).

- Change CefBrowserSettings members that previously used a boolean to instead use a cef_state_t enumeration with default, enabled and disabled states.
- Remove CefBrowserSettings members that are unlikely to be used and that can also be set using Chromium command-line switches.
- Change the CEF command-line switch naming pattern to match Chromium and move the implementation out of cefclient.
- Improve documentation by listing the command-line switch, if any, associated with each setting.

git-svn-id: https://chromiumembedded.googlecode.com/svn/branches/1364@1082 5089003a-bbd8-11dd-ad1f-f1f9622dbc98
This commit is contained in:
Marshall Greenblatt 2013-02-07 19:58:58 +00:00
parent f0394ead29
commit 8d90b87c01
15 changed files with 415 additions and 506 deletions

View File

@ -1,4 +1,4 @@
// Copyright (c) 2010 Marshall A. Greenblatt. All rights reserved.
// Copyright (c) 2013 Marshall A. Greenblatt. All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
@ -128,10 +128,30 @@ enum cef_log_severity_t {
LOGSEVERITY_DISABLE = 99
};
///
// Represents the state of a setting.
///
enum cef_state_t {
///
// Use the default state for the setting.
///
STATE_DEFAULT = 0,
///
// Enable or allow the setting.
///
STATE_ENABLED,
///
// Disable or disallow the setting.
///
STATE_DISABLED,
};
///
// Initialization settings. Specify NULL or 0 to get the recommended default
// values. Many of these and other settings can also configured using command-
// line flags.
// line switches.
///
typedef struct _cef_settings_t {
///
@ -142,14 +162,16 @@ typedef struct _cef_settings_t {
///
// Set to true (1) to use a single process for the browser and renderer. This
// run mode is not officially supported by Chromium and is less stable than
// the multi-process default.
// the multi-process default. Also configurable using the "single-process"
// command-line switch.
///
bool single_process;
///
// The path to a separate executable that will be launched for sub-processes.
// By default the browser process executable is used. See the comments on
// CefExecuteProcess() for details.
// CefExecuteProcess() for details. Also configurable using the
// "browser-subprocess-path" command-line switch.
///
cef_string_t browser_subprocess_path;
@ -177,14 +199,16 @@ typedef struct _cef_settings_t {
///
// Value that will be returned as the User-Agent HTTP header. If empty the
// default User-Agent string will be used.
// default User-Agent string will be used. Also configurable using the
// "user-agent" command-line switch.
///
cef_string_t user_agent;
///
// Value that will be inserted as the product portion of the default
// User-Agent string. If empty the Chromium product version will be used. If
// |userAgent| is specified this value will be ignored.
// |userAgent| is specified this value will be ignored. Also configurable
// using the "product-version" command-line switch.
///
cef_string_t product_version;
@ -192,31 +216,37 @@ typedef struct _cef_settings_t {
// The locale string that will be passed to WebKit. If empty the default
// locale of "en-US" will be used. This value is ignored on Linux where locale
// is determined using environment variable parsing with the precedence order:
// LANGUAGE, LC_ALL, LC_MESSAGES and LANG.
// LANGUAGE, LC_ALL, LC_MESSAGES and LANG. Also configurable using the "lang"
// command-line switch.
///
cef_string_t locale;
///
// The directory and file name to use for the debug log. If empty, the
// default name of "debug.log" will be used and the file will be written
// to the application directory.
// to the application directory. Also configurable using the "log-file"
// command-line switch.
///
cef_string_t log_file;
///
// The log severity. Only messages of this severity level or higher will be
// logged.
// logged. Also configurable using the "log-severity" command-line switch with
// a value of "verbose", "info", "warning", "error", "error-report" or
// "disable".
///
cef_log_severity_t log_severity;
///
// Enable DCHECK in release mode to ease debugging.
// Enable DCHECK in release mode to ease debugging. Also configurable using the
// "enable-release-dcheck" command-line switch.
///
bool release_dcheck_enabled;
///
// Custom flags that will be used when initializing the V8 JavaScript engine.
// The consequences of using custom flags may not be well tested.
// The consequences of using custom flags may not be well tested. Also
// configurable using the "js-flags" command-line switch.
///
cef_string_t javascript_flags;
@ -224,7 +254,8 @@ typedef struct _cef_settings_t {
// The fully qualified path for the resources directory. If this value is
// empty the cef.pak and/or devtools_resources.pak files must be located in
// the module directory on Windows/Linux or the app bundle Resources directory
// on Mac OS X.
// on Mac OS X. Also configurable using the "resources-dir-path" command-line
// switch.
///
cef_string_t resources_dir_path;
@ -232,7 +263,8 @@ typedef struct _cef_settings_t {
// The fully qualified path for the locales directory. If this value is empty
// the locales directory must be located in the module directory. This value
// is ignored on Mac OS X where pack files are always loaded from the app
// bundle Resources directory.
// bundle Resources directory. Also configurable using the "locales-dir-path"
// command-line switch.
///
cef_string_t locales_dir_path;
@ -240,7 +272,8 @@ typedef struct _cef_settings_t {
// Set to true (1) to disable loading of pack files for resources and locales.
// A resource bundle handler must be provided for the browser and render
// processes via CefApp::GetResourceBundleHandler() if loading of pack files
// is disabled.
// is disabled. Also configurable using the "disable-pack-loading" command-
// line switch.
///
bool pack_loading_disabled;
@ -248,7 +281,8 @@ typedef struct _cef_settings_t {
// Set to a value between 1024 and 65535 to enable remote debugging on the
// specified port. For example, if 8080 is specified the remote debugging URL
// will be http://localhost:8080. CEF can be remotely debugged from any CEF or
// Chrome browser window.
// Chrome browser window. Also configurable using the "remote-debugging-port"
// command-line switch.
///
int remote_debugging_port;
@ -256,7 +290,8 @@ typedef struct _cef_settings_t {
// The number of stack trace frames to capture for uncaught exceptions.
// Specify a positive value to enable the CefV8ContextHandler::
// OnUncaughtException() callback. Specify 0 (default value) and
// OnUncaughtException() will not be called.
// OnUncaughtException() will not be called. Also configurable using the
// "uncaught-exception-stack-size" command-line switch.
///
int uncaught_exception_stack_size;
@ -276,6 +311,9 @@ typedef struct _cef_settings_t {
// If you need better performance in the creation of V8 references and you
// plan to manually track context lifespan you can disable context safety by
// specifying a value of -1.
//
// Also configurable using the "context-safety-implementation" command-line
// switch.
///
int context_safety_implementation;
} cef_settings_t;
@ -284,7 +322,7 @@ typedef struct _cef_settings_t {
// Browser initialization settings. Specify NULL or 0 to get the recommended
// default values. The consequences of using custom values may not be well
// tested. Many of these and other settings can also configured using command-
// line flags.
// line switches.
///
typedef struct _cef_browser_settings_t {
///
@ -309,185 +347,174 @@ typedef struct _cef_browser_settings_t {
int minimum_logical_font_size;
///
// Set to true (1) to disable loading of fonts from remote sources.
///
bool remote_fonts_disabled;
///
// Default encoding for Web content. If empty "ISO-8859-1" will be used.
// Default encoding for Web content. If empty "ISO-8859-1" will be used. Also
// configurable using the "default-encoding" command-line switch.
///
cef_string_t default_encoding;
///
// Set to true (1) to attempt automatic detection of content encoding.
///
bool encoding_detector_enabled;
///
// Set to true (1) to disable JavaScript.
///
bool javascript_disabled;
///
// Set to true (1) to disallow JavaScript from opening windows.
///
bool javascript_open_windows_disallowed;
///
// Set to true (1) to disallow JavaScript from closing windows.
///
bool javascript_close_windows_disallowed;
///
// Set to true (1) to disallow JavaScript from accessing the clipboard.
///
bool javascript_access_clipboard_disallowed;
///
// Set to true (1) to disable DOM pasting in the editor. DOM pasting also
// depends on |javascript_cannot_access_clipboard| being false (0).
///
bool dom_paste_disabled;
///
// Set to true (1) to enable drawing of the caret position.
///
bool caret_browsing_enabled;
///
// Set to true (1) to disable Java.
///
bool java_disabled;
///
// Set to true (1) to disable plugins.
///
bool plugins_disabled;
///
// Set to true (1) to allow access to all URLs from file URLs.
///
bool universal_access_from_file_urls_allowed;
///
// Set to true (1) to allow access to file URLs from other file URLs.
///
bool file_access_from_file_urls_allowed;
///
// Set to true (1) to allow risky security behavior such as cross-site
// scripting (XSS). Use with extreme care.
///
bool web_security_disabled;
///
// Set to true (1) to enable console warnings about XSS attempts.
///
bool xss_auditor_enabled;
///
// Set to true (1) to suppress the network load of image URLs. A cached
// image will still be rendered if requested.
///
bool image_load_disabled;
///
// Set to true (1) to shrink standalone images to fit the page.
///
bool shrink_standalone_images_to_fit;
///
// Set to true (1) to disable browser backwards compatibility features.
///
bool site_specific_quirks_disabled;
///
// Set to true (1) to disable resize of text areas.
///
bool text_area_resize_disabled;
///
// Set to true (1) to disable use of the page cache.
///
bool page_cache_disabled;
///
// Set to true (1) to not have the tab key advance focus to links.
///
bool tab_to_links_disabled;
///
// Set to true (1) to disable hyperlink pings (<a ping> and window.sendPing).
///
bool hyperlink_auditing_disabled;
///
// Set to true (1) to enable the user style sheet for all pages.
///
bool user_style_sheet_enabled;
///
// Location of the user style sheet. This must be a data URL of the form
// "data:text/css;charset=utf-8;base64,csscontent" where "csscontent" is the
// base64 encoded contents of the CSS file.
// Location of the user style sheet that will be used for all pages. This must
// be a data URL of the form "data:text/css;charset=utf-8;base64,csscontent"
// where "csscontent" is the base64 encoded contents of the CSS file. Also
// configurable using the "user-style-sheet-location" command-line switch.
///
cef_string_t user_style_sheet_location;
///
// Set to true (1) to disable style sheets.
// Controls the loading of fonts from remote sources. Also configurable using
// the "disable-remote-fonts" command-line switch.
///
bool author_and_user_styles_disabled;
cef_state_t remote_fonts;
///
// Set to true (1) to disable local storage.
// Controls whether JavaScript can be executed. Also configurable using the
// "disable-javascript" command-line switch.
///
bool local_storage_disabled;
cef_state_t javascript;
///
// Set to true (1) to disable databases.
// Controls whether JavaScript can be used for opening windows. Also
// configurable using the "disable-javascript-open-windows" command-line
// switch.
///
bool databases_disabled;
cef_state_t javascript_open_windows;
///
// Set to true (1) to disable application cache.
// Controls whether JavaScript can be used to close windows that were not
// opened via JavaScript. JavaScript can still be used to close windows that
// were opened via JavaScript. Also configurable using the
// "disable-javascript-close-windows" command-line switch.
///
bool application_cache_disabled;
cef_state_t javascript_close_windows;
///
// Set to true (1) to disable WebGL.
// Controls whether JavaScript can access the clipboard. Also configurable
// using the "disable-javascript-access-clipboard" command-line switch.
///
bool webgl_disabled;
cef_state_t javascript_access_clipboard;
///
// Set to true (1) to disable accelerated compositing.
// Controls whether DOM pasting is supported in the editor via
// execCommand("paste"). The |javascript_access_clipboard| setting must also
// be enabled. Also configurable using the "disable-javascript-dom-paste"
// command-line switch.
///
bool accelerated_compositing_disabled;
cef_state_t javascript_dom_paste;
///
// Set to true (1) to disable accelerated layers. This affects features like
// 3D CSS transforms.
// Controls whether the caret position will be drawn. Also configurable using
// the "enable-caret-browsing" command-line switch.
///
bool accelerated_layers_disabled;
cef_state_t caret_browsing;
///
// Set to true (1) to disable accelerated video.
// Controls whether the Java plugin will be loaded. Also configurable using
// the "disable-java" command-line switch.
///
bool accelerated_video_disabled;
cef_state_t java;
///
// Set to true (1) to disable accelerated 2d canvas.
// Controls whether any plugins will be loaded. Also configurable using the
// "disable-plugins" command-line switch.
///
bool accelerated_2d_canvas_disabled;
cef_state_t plugins;
///
// Set to true (1) to disable accelerated plugins.
// Controls whether file URLs will have access to all URLs. Also configurable
// using the "allow-universal-access-from-files" command-line switch.
///
bool accelerated_plugins_disabled;
cef_state_t universal_access_from_file_urls;
///
// Set to true (1) to disable developer tools (WebKit inspector).
// Controls whether file URLs will have access to other file URLs. Also
// configurable using the "allow-access-from-files" command-line switch.
///
bool developer_tools_disabled;
cef_state_t file_access_from_file_urls;
///
// Controls whether web security restrictions (same-origin policy) will be
// enforced. Disabling this setting is not recommend as it will allow risky
// security behavior such as cross-site scripting (XSS). Also configurable
// using the "disable-web-security" command-line switch.
///
cef_state_t web_security;
///
// Controls whether image URLs will be loaded from the network. A cached image
// will still be rendered if requested. Also configurable using the
// "disable-image-loading" command-line switch.
///
cef_state_t image_loading;
///
// Controls whether standalone images will be shrunk to fit the page. Also
// configurable using the "image-shrink-standalone-to-fit" command-line
// switch.
///
cef_state_t image_shrink_standalone_to_fit;
///
// Controls whether text areas can be resized. Also configurable using the
// "disable-text-area-resize" command-line switch.
///
cef_state_t text_area_resize;
///
// Controls whether the fastback (back/forward) page cache will be used. Also
// configurable using the "enable-fastback" command-line switch.
///
cef_state_t page_cache;
///
// Controls whether the tab key can advance focus to links. Also configurable
// using the "disable-tab-to-links" command-line switch.
///
cef_state_t tab_to_links;
///
// Controls whether style sheets can be used. Also configurable using the
// "disable-author-and-user-styles" command-line switch.
///
cef_state_t author_and_user_styles;
///
// Controls whether local storage can be used. Also configurable using the
// "disable-local-storage" command-line switch.
///
cef_state_t local_storage;
///
// Controls whether databases can be used. Also configurable using the
// "disable-databases" command-line switch.
///
cef_state_t databases;
///
// Controls whether the application cache can be used. Also configurable using
// the "disable-application-cache" command-line switch.
///
cef_state_t application_cache;
///
// Controls whether WebGL can be used. Note that WebGL requires hardware
// support and may not work on all systems even when enabled. Also
// configurable using the "disable-webgl" command-line switch.
///
cef_state_t webgl;
///
// Controls whether content that depends on accelerated compositing can be
// used. Note that accelerated compositing requires hardware support and may
// not work on all systems even when enabled. Also configurable using the
// "disable-accelerated-compositing" command-line switch.
///
cef_state_t accelerated_compositing;
///
// Controls whether developer tools (WebKit inspector) can be used. Also
// configurable using the "disable-developer-tools" command-line switch.
///
cef_state_t developer_tools;
} cef_browser_settings_t;
///

View File

@ -1,4 +1,4 @@
// Copyright (c) 2012 Marshall A. Greenblatt. All rights reserved.
// Copyright (c) 2013 Marshall A. Greenblatt. All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
@ -366,57 +366,40 @@ struct CefBrowserSettingsTraits {
target->default_fixed_font_size = src->default_fixed_font_size;
target->minimum_font_size = src->minimum_font_size;
target->minimum_logical_font_size = src->minimum_logical_font_size;
target->remote_fonts_disabled = src->remote_fonts_disabled;
cef_string_set(src->default_encoding.str, src->default_encoding.length,
&target->default_encoding, copy);
target->encoding_detector_enabled = src->encoding_detector_enabled;
target->javascript_disabled = src->javascript_disabled;
target->javascript_open_windows_disallowed =
src->javascript_open_windows_disallowed;
target->javascript_close_windows_disallowed =
src->javascript_close_windows_disallowed;
target->javascript_access_clipboard_disallowed =
src->javascript_access_clipboard_disallowed;
target->dom_paste_disabled = src->dom_paste_disabled;
target->caret_browsing_enabled = src->caret_browsing_enabled;
target->java_disabled = src->java_disabled;
target->plugins_disabled = src->plugins_disabled;
target->universal_access_from_file_urls_allowed =
src->universal_access_from_file_urls_allowed;
target->file_access_from_file_urls_allowed =
src->file_access_from_file_urls_allowed;
target->web_security_disabled = src->web_security_disabled;
target->xss_auditor_enabled = src->xss_auditor_enabled;
target->image_load_disabled = src->image_load_disabled;
target->shrink_standalone_images_to_fit =
src->shrink_standalone_images_to_fit;
target->site_specific_quirks_disabled = src->site_specific_quirks_disabled;
target->text_area_resize_disabled = src->text_area_resize_disabled;
target->page_cache_disabled = src->page_cache_disabled;
target->tab_to_links_disabled = src->tab_to_links_disabled;
target->hyperlink_auditing_disabled = src->hyperlink_auditing_disabled;
target->user_style_sheet_enabled = src->user_style_sheet_enabled;
cef_string_set(src->user_style_sheet_location.str,
src->user_style_sheet_location.length,
&target->user_style_sheet_location, copy);
target->author_and_user_styles_disabled =
src->author_and_user_styles_disabled;
target->local_storage_disabled = src->local_storage_disabled;
target->databases_disabled = src->databases_disabled;
target->application_cache_disabled = src->application_cache_disabled;
target->webgl_disabled = src->webgl_disabled;
target->accelerated_compositing_disabled =
src->accelerated_compositing_disabled;
target->accelerated_layers_disabled = src->accelerated_layers_disabled;
target->accelerated_video_disabled = src->accelerated_video_disabled;
target->accelerated_2d_canvas_disabled =
src->accelerated_2d_canvas_disabled;
target->accelerated_plugins_disabled = src->accelerated_plugins_disabled;
target->developer_tools_disabled = src->developer_tools_disabled;
target->remote_fonts = src->remote_fonts;
target->javascript = src->javascript;
target->javascript_open_windows = src->javascript_open_windows;
target->javascript_close_windows = src->javascript_close_windows;
target->javascript_access_clipboard = src->javascript_access_clipboard;
target->javascript_dom_paste = src->javascript_dom_paste;
target->caret_browsing = src->caret_browsing;
target->java = src->java;
target->plugins = src->plugins;
target->universal_access_from_file_urls =
src->universal_access_from_file_urls;
target->file_access_from_file_urls = src->file_access_from_file_urls;
target->web_security = src->web_security;
target->image_loading = src->image_loading;
target->image_shrink_standalone_to_fit =
src->image_shrink_standalone_to_fit;
target->text_area_resize = src->text_area_resize;
target->page_cache = src->page_cache;
target->tab_to_links = src->tab_to_links;
target->author_and_user_styles = src->author_and_user_styles;
target->local_storage = src->local_storage;
target->databases= src->databases;
target->application_cache = src->application_cache;
target->webgl = src->webgl;
target->accelerated_compositing = src->accelerated_compositing;
target->developer_tools = src->developer_tools;
}
};

View File

@ -233,10 +233,10 @@ bool CefBrowserHost::CreateBrowser(const CefWindowInfo& windowInfo,
NOTREACHED() << "CefRenderHandler implementation is required";
return false;
}
if (!new_settings.accelerated_compositing_disabled) {
if (new_settings.accelerated_compositing != STATE_DISABLED) {
// Accelerated compositing is not supported when window rendering is
// disabled.
new_settings.accelerated_compositing_disabled = true;
new_settings.accelerated_compositing = STATE_DISABLED;
}
}
@ -280,10 +280,10 @@ CefRefPtr<CefBrowser> CefBrowserHost::CreateBrowserSync(
NOTREACHED() << "CefRenderHandler implementation is required";
return NULL;
}
if (!new_settings.accelerated_compositing_disabled) {
if (new_settings.accelerated_compositing != STATE_DISABLED) {
// Accelerated compositing is not supported when window rendering is
// disabled.
new_settings.accelerated_compositing_disabled = true;
new_settings.accelerated_compositing = STATE_DISABLED;
}
}
@ -1530,15 +1530,15 @@ bool CefBrowserHostImpl::ShouldCreateWebContents(
}
if (IsWindowRenderingDisabled(pending_window_info_)) {
if (!pending_client_->GetRenderHandler().get()) {
NOTREACHED() << "CefRenderHandler implementation is required";
return false;
}
if (!pending_settings_.accelerated_compositing_disabled) {
// Accelerated compositing is not supported when window rendering is
// disabled.
pending_settings_.accelerated_compositing_disabled = true;
}
if (!pending_client_->GetRenderHandler().get()) {
NOTREACHED() << "CefRenderHandler implementation is required";
return false;
}
if (pending_settings_.accelerated_compositing != STATE_DISABLED) {
// Accelerated compositing is not supported when window rendering is
// disabled.
pending_settings_.accelerated_compositing = STATE_DISABLED;
}
}
_Context->browser_context()->set_use_osr_next_contents_view(

View File

@ -6,15 +6,71 @@
#include <string>
#include "libcef/common/cef_switches.h"
#include "base/command_line.h"
#include "include/internal/cef_types_wrappers.h"
#include "webkit/glue/webpreferences.h"
using webkit_glue::WebPreferences;
// Set default preferences based on CEF command-line flags. Chromium command-
// line flags should not exist for these preferences.
void SetDefaults(WebPreferences& web) {
const CommandLine& command_line = *CommandLine::ForCurrentProcess();
if (command_line.HasSwitch(switches::kDefaultEncoding)) {
web.default_encoding =
command_line.GetSwitchValueASCII(switches::kDefaultEncoding);
}
if (command_line.HasSwitch(switches::kUserStyleSheetLocation)) {
web.user_style_sheet_location = GURL(
command_line.GetSwitchValueASCII(switches::kUserStyleSheetLocation));
if (!web.user_style_sheet_location.is_empty())
web.user_style_sheet_enabled = true;
}
web.javascript_can_open_windows_automatically =
!command_line.HasSwitch(switches::kDisableJavascriptOpenWindows);
web.allow_scripts_to_close_windows =
!command_line.HasSwitch(switches::kDisableJavascriptCloseWindows);
web.javascript_can_access_clipboard =
!command_line.HasSwitch(switches::kDisableJavascriptAccessClipboard);
web.dom_paste_enabled =
!command_line.HasSwitch(switches::kDisableJavascriptDomPaste);
web.caret_browsing_enabled =
command_line.HasSwitch(switches::kEnableCaretBrowsing);
web.allow_universal_access_from_file_urls =
command_line.HasSwitch(switches::kAllowUniversalAccessFromFileUrls);
web.loads_images_automatically =
!command_line.HasSwitch(switches::kDisableImageLoading);
web.shrinks_standalone_images_to_fit =
command_line.HasSwitch(switches::kImageShrinkStandaloneToFit);
web.text_areas_are_resizable =
!command_line.HasSwitch(switches::kDisableTextAreaResize);
web.tabs_to_links =
!command_line.HasSwitch(switches::kDisableTabToLinks);
web.author_and_user_styles_enabled =
!command_line.HasSwitch(switches::kDisableAuthorAndUserStyles);
web.developer_extras_enabled =
!command_line.HasSwitch(switches::kDisableDeveloperTools);
}
// Helper macro for setting a WebPreferences variable based on the value of a
// CefBrowserSettings variable.
#define SET_STATE(cef_var, web_var) \
if (cef_var == STATE_ENABLED) \
web_var = true; \
else if (cef_var == STATE_DISABLED) \
web_var = false;
// Use the preferences from WebContentsImpl::GetWebkitPrefs and the
// WebPreferences constructor by default. Only override features that are
// explicitly enabled or disabled.
void BrowserToWebSettings(const CefBrowserSettings& cef, WebPreferences& web) {
SetDefaults(web);
if (cef.standard_font_family.length > 0) {
web.standard_font_family_map[WebPreferences::kCommonScript] =
CefString(&cef.standard_font_family);
@ -48,84 +104,49 @@ void BrowserToWebSettings(const CefBrowserSettings& cef, WebPreferences& web) {
web.minimum_font_size = cef.minimum_font_size;
if (cef.minimum_logical_font_size > 0)
web.minimum_logical_font_size = cef.minimum_logical_font_size;
if (cef.default_encoding.length > 0)
web.default_encoding = CefString(&cef.default_encoding);
if (cef.javascript_disabled)
web.javascript_enabled = false;
if (cef.web_security_disabled)
web.web_security_enabled = false;
if (cef.javascript_open_windows_disallowed)
web.javascript_can_open_windows_automatically = false;
if (cef.image_load_disabled)
web.loads_images_automatically = false;
if (cef.plugins_disabled)
web.plugins_enabled = false;
if (cef.dom_paste_disabled)
web.dom_paste_enabled = false;
if (cef.developer_tools_disabled)
web.developer_extras_enabled = false;
if (cef.site_specific_quirks_disabled)
web.site_specific_quirks_enabled = false;
if (cef.shrink_standalone_images_to_fit)
web.shrinks_standalone_images_to_fit = true;
if (cef.encoding_detector_enabled)
web.uses_universal_detector = true;
if (cef.text_area_resize_disabled)
web.text_areas_are_resizable = false;
if (cef.java_disabled)
web.java_enabled = false;
if (cef.javascript_close_windows_disallowed)
web.allow_scripts_to_close_windows = false;
if (cef.page_cache_disabled)
web.uses_page_cache = false;
if (cef.remote_fonts_disabled)
web.remote_fonts_enabled = true;
if (cef.javascript_access_clipboard_disallowed)
web.javascript_can_access_clipboard = false;
if (cef.xss_auditor_enabled)
web.xss_auditor_enabled = true;
if (cef.local_storage_disabled)
web.local_storage_enabled = false;
if (cef.databases_disabled)
web.databases_enabled = false;
if (cef.application_cache_disabled)
web.application_cache_enabled = false;
if (cef.tab_to_links_disabled)
web.tabs_to_links = false;
if (cef.caret_browsing_enabled)
web.caret_browsing_enabled = true;
if (cef.hyperlink_auditing_disabled)
web.hyperlink_auditing_enabled = true;
if (cef.user_style_sheet_enabled &&
cef.user_style_sheet_location.length > 0) {
if (cef.user_style_sheet_location.length > 0) {
web.user_style_sheet_enabled = true;
web.user_style_sheet_location =
GURL(std::string(CefString(&cef.user_style_sheet_location)));
GURL(CefString(&cef.user_style_sheet_location).ToString());
}
if (cef.author_and_user_styles_disabled)
web.author_and_user_styles_enabled = false;
if (cef.universal_access_from_file_urls_allowed)
web.allow_universal_access_from_file_urls = true;
if (cef.file_access_from_file_urls_allowed)
web.allow_file_access_from_file_urls = true;
SET_STATE(cef.remote_fonts, web.remote_fonts_enabled);
SET_STATE(cef.javascript, web.javascript_enabled);
SET_STATE(cef.javascript_open_windows,
web.javascript_can_open_windows_automatically);
SET_STATE(cef.javascript_close_windows, web.allow_scripts_to_close_windows);
SET_STATE(cef.javascript_access_clipboard,
web.javascript_can_access_clipboard);
SET_STATE(cef.javascript_dom_paste, web.dom_paste_enabled);
SET_STATE(cef.caret_browsing, web.caret_browsing_enabled);
SET_STATE(cef.java, web.java_enabled);
SET_STATE(cef.plugins, web.plugins_enabled);
SET_STATE(cef.universal_access_from_file_urls,
web.allow_universal_access_from_file_urls);
SET_STATE(cef.file_access_from_file_urls,
web.allow_file_access_from_file_urls);
SET_STATE(cef.web_security, web.web_security_enabled);
SET_STATE(cef.image_loading, web.loads_images_automatically);
SET_STATE(cef.image_shrink_standalone_to_fit,
web.shrinks_standalone_images_to_fit);
SET_STATE(cef.text_area_resize, web.text_areas_are_resizable);
SET_STATE(cef.page_cache, web.uses_page_cache);
SET_STATE(cef.tab_to_links, web.tabs_to_links);
SET_STATE(cef.author_and_user_styles, web.author_and_user_styles_enabled);
SET_STATE(cef.local_storage, web.local_storage_enabled);
SET_STATE(cef.databases, web.databases_enabled);
SET_STATE(cef.application_cache, web.application_cache_enabled);
// Never explicitly enable GPU-related functions in this method because the
// GPU blacklist is not being checked here.
if (cef.webgl_disabled) {
if (cef.webgl == STATE_DISABLED)
web.experimental_webgl_enabled = false;
web.gl_multisampling_enabled = false;
}
if (cef.accelerated_compositing_disabled)
if (cef.accelerated_compositing == STATE_DISABLED)
web.accelerated_compositing_enabled = false;
if (cef.accelerated_layers_disabled) {
web.accelerated_compositing_for_3d_transforms_enabled = false;
web.accelerated_compositing_for_animation_enabled = false;
}
if (cef.accelerated_video_disabled)
web.accelerated_compositing_for_video_enabled = false;
if (cef.accelerated_2d_canvas_disabled)
web.accelerated_2d_canvas_enabled = false;
if (cef.accelerated_plugins_disabled)
web.accelerated_compositing_for_plugins_enabled = false;
SET_STATE(cef.developer_tools, web.developer_extras_enabled);
}

View File

@ -404,8 +404,8 @@ void CefContentBrowserClient::AppendExtraCommandLineSwitches(
switches::kLocalesDirPath,
switches::kLogFile,
switches::kLogSeverity,
switches::kReleaseDcheckEnabled,
switches::kPackLoadingDisabled,
switches::kEnableReleaseDcheck,
switches::kDisablePackLoading,
switches::kResourcesDirPath,
};
command_line->CopySwitchesFrom(browser_cmd, kSwitchNames,

View File

@ -7,28 +7,28 @@
namespace switches {
// Log file path.
const char kLogFile[] = "log-file";
const char kLogFile[] = "log-file";
// Severity of messages to log.
const char kLogSeverity[] = "log-severity";
const char kLogSeverity_Verbose[] = "verbose";
const char kLogSeverity_Info[] = "info";
const char kLogSeverity_Warning[] = "warning";
const char kLogSeverity_Error[] = "error";
const char kLogSeverity_ErrorReport[] = "error-report";
const char kLogSeverity_Disable[] = "disable";
const char kLogSeverity[] = "log-severity";
const char kLogSeverity_Verbose[] = "verbose";
const char kLogSeverity_Info[] = "info";
const char kLogSeverity_Warning[] = "warning";
const char kLogSeverity_Error[] = "error";
const char kLogSeverity_ErrorReport[] = "error-report";
const char kLogSeverity_Disable[] = "disable";
// Enable DCHECK for release mode.
const char kReleaseDcheckEnabled[] = "release-dcheck-enabled";
const char kEnableReleaseDcheck[] = "enable-release-dcheck";
// Path to resources directory.
const char kResourcesDirPath[] = "resources-dir-path";
const char kResourcesDirPath[] = "resources-dir-path";
// Path to locales directory.
const char kLocalesDirPath[] = "locales-dir-path";
const char kLocalesDirPath[] = "locales-dir-path";
// Path to locales directory.
const char kPackLoadingDisabled[] = "pack-loading-disabled";
const char kDisablePackLoading[] = "disable-pack-loading";
// Stack size for uncaught exceptions.
const char kUncaughtExceptionStackSize[] = "uncaught-exception-stack-size";
@ -36,4 +36,51 @@ const char kUncaughtExceptionStackSize[] = "uncaught-exception-stack-size";
// Context safety implementation type.
const char kContextSafetyImplementation[] = "context-safety-implementation";
// Default encoding.
const char kDefaultEncoding[] = "default-encoding";
// User style sheet location.
const char kUserStyleSheetLocation[] = "user-style-sheet-location";
// Disable opening of windows via JavaScript.
const char kDisableJavascriptOpenWindows[] =
"disable-javascript-open-windows";
// Disable closing of windows via JavaScript.
const char kDisableJavascriptCloseWindows[] =
"disable-javascript-close-windows";
// Disable clipboard access via JavaScript.
const char kDisableJavascriptAccessClipboard[] =
"disable-javascript-access-clipboard";
// Disable DOM paste via JavaScript execCommand("paste").
const char kDisableJavascriptDomPaste[] = "disable-javascript-dom-paste";
// Enable caret browsing.
const char kEnableCaretBrowsing[] = "enable-caret-browsing";
// Allow universal access from file URLs.
const char kAllowUniversalAccessFromFileUrls[] =
"allow-universal-access-from-files";
// Disable loading of images from the network. A cached image will still be
// rendered if requested.
const char kDisableImageLoading[] = "disable-image-loading";
// Shrink stand-alone images to fit.
const char kImageShrinkStandaloneToFit[] = "image-shrink-standalone-to-fit";
// Disable resizing of text areas.
const char kDisableTextAreaResize[] = "disable-text-area-resize";
// Disable using the tab key to advance focus to links.
const char kDisableTabToLinks[] = "disable-tab-to-links";
// Disable user style sheets.
const char kDisableAuthorAndUserStyles[] = "disable-author-and-user-styles";
// Disable developer tools (WebKit Inspector).
const char kDisableDeveloperTools[] = "disable-developer-tools";
} // namespace switches

View File

@ -18,12 +18,26 @@ extern const char kLogSeverity_Warning[];
extern const char kLogSeverity_Error[];
extern const char kLogSeverity_ErrorReport[];
extern const char kLogSeverity_Disable[];
extern const char kReleaseDcheckEnabled[];
extern const char kEnableReleaseDcheck[];
extern const char kResourcesDirPath[];
extern const char kLocalesDirPath[];
extern const char kPackLoadingDisabled[];
extern const char kDisablePackLoading[];
extern const char kUncaughtExceptionStackSize[];
extern const char kContextSafetyImplementation[];
extern const char kDefaultEncoding[];
extern const char kUserStyleSheetLocation[];
extern const char kDisableJavascriptOpenWindows[];
extern const char kDisableJavascriptCloseWindows[];
extern const char kDisableJavascriptAccessClipboard[];
extern const char kDisableJavascriptDomPaste[];
extern const char kEnableCaretBrowsing[];
extern const char kAllowUniversalAccessFromFileUrls[];
extern const char kDisableImageLoading[];
extern const char kImageShrinkStandaloneToFit[];
extern const char kDisableTextAreaResize[];
extern const char kDisableTabToLinks[];
extern const char kDisableAuthorAndUserStyles[];
extern const char kDisableDeveloperTools[];
} // namespace switches

View File

@ -225,7 +225,7 @@ bool CefMainDelegate::BasicStartupComplete(int* exit_code) {
}
if (settings.release_dcheck_enabled)
command_line->AppendSwitch(switches::kReleaseDcheckEnabled);
command_line->AppendSwitch(switches::kEnableReleaseDcheck);
if (settings.javascript_flags.length > 0) {
command_line->AppendSwitchASCII(switches::kJavaScriptFlags,
@ -233,7 +233,7 @@ bool CefMainDelegate::BasicStartupComplete(int* exit_code) {
}
if (settings.pack_loading_disabled) {
command_line->AppendSwitch(switches::kPackLoadingDisabled);
command_line->AppendSwitch(switches::kDisablePackLoading);
} else {
if (settings.resources_dir_path.length > 0) {
FilePath file_path = FilePath(CefString(&settings.resources_dir_path));
@ -315,7 +315,7 @@ bool CefMainDelegate::BasicStartupComplete(int* exit_code) {
logging::DcheckState dcheck_state =
logging::DISABLE_DCHECK_FOR_NON_OFFICIAL_RELEASE_BUILDS;
if (command_line->HasSwitch(switches::kReleaseDcheckEnabled))
if (command_line->HasSwitch(switches::kEnableReleaseDcheck))
dcheck_state = logging::ENABLE_DCHECK_FOR_NON_OFFICIAL_RELEASE_BUILDS;
logging::InitLogging(log_file.value().c_str(), logging_dest,
@ -333,7 +333,7 @@ void CefMainDelegate::PreSandboxStartup() {
#endif
const CommandLine& command_line = *CommandLine::ForCurrentProcess();
if (command_line.HasSwitch(switches::kPackLoadingDisabled))
if (command_line.HasSwitch(switches::kDisablePackLoading))
content_client_.set_pack_loading_disabled(true);
InitializeResourceBundle();

View File

@ -18,19 +18,6 @@
#include "cefclient/string_util.h"
#include "cefclient/util.h"
namespace {
// Return the int representation of the specified string.
int GetIntValue(const CefString& str) {
if (str.empty())
return 0;
std::string stdStr = str;
return atoi(stdStr.c_str());
}
} // namespace
CefRefPtr<ClientHandler> g_handler;
CefRefPtr<CefCommandLine> g_command_line;
@ -61,8 +48,7 @@ CefRefPtr<CefCommandLine> AppGetCommandLine() {
}
// Returns the application settings based on command line arguments.
void AppGetSettings(CefSettings& settings, CefRefPtr<ClientApp> app) {
ASSERT(app.get());
void AppGetSettings(CefSettings& settings) {
ASSERT(g_command_line.get());
if (!g_command_line.get())
return;
@ -86,89 +72,6 @@ bool AppIsOffScreenRenderingEnabled() {
return g_command_line->HasSwitch(cefclient::kOffScreenRenderingEnabled);
}
// Returns the application browser settings based on command line arguments.
void AppGetBrowserSettings(CefBrowserSettings& settings) {
ASSERT(g_command_line.get());
if (!g_command_line.get())
return;
settings.remote_fonts_disabled =
g_command_line->HasSwitch(cefclient::kRemoteFontsDisabled);
CefString(&settings.default_encoding) =
g_command_line->GetSwitchValue(cefclient::kDefaultEncoding);
settings.encoding_detector_enabled =
g_command_line->HasSwitch(cefclient::kEncodingDetectorEnabled);
settings.javascript_disabled =
g_command_line->HasSwitch(cefclient::kJavascriptDisabled);
settings.javascript_open_windows_disallowed =
g_command_line->HasSwitch(cefclient::kJavascriptOpenWindowsDisallowed);
settings.javascript_close_windows_disallowed =
g_command_line->HasSwitch(cefclient::kJavascriptCloseWindowsDisallowed);
settings.javascript_access_clipboard_disallowed =
g_command_line->HasSwitch(
cefclient::kJavascriptAccessClipboardDisallowed);
settings.dom_paste_disabled =
g_command_line->HasSwitch(cefclient::kDomPasteDisabled);
settings.caret_browsing_enabled =
g_command_line->HasSwitch(cefclient::kCaretBrowsingDisabled);
settings.java_disabled =
g_command_line->HasSwitch(cefclient::kJavaDisabled);
settings.plugins_disabled =
g_command_line->HasSwitch(cefclient::kPluginsDisabled);
settings.universal_access_from_file_urls_allowed =
g_command_line->HasSwitch(cefclient::kUniversalAccessFromFileUrlsAllowed);
settings.file_access_from_file_urls_allowed =
g_command_line->HasSwitch(cefclient::kFileAccessFromFileUrlsAllowed);
settings.web_security_disabled =
g_command_line->HasSwitch(cefclient::kWebSecurityDisabled);
settings.xss_auditor_enabled =
g_command_line->HasSwitch(cefclient::kXssAuditorEnabled);
settings.image_load_disabled =
g_command_line->HasSwitch(cefclient::kImageLoadingDisabled);
settings.shrink_standalone_images_to_fit =
g_command_line->HasSwitch(cefclient::kShrinkStandaloneImagesToFit);
settings.site_specific_quirks_disabled =
g_command_line->HasSwitch(cefclient::kSiteSpecificQuirksDisabled);
settings.text_area_resize_disabled =
g_command_line->HasSwitch(cefclient::kTextAreaResizeDisabled);
settings.page_cache_disabled =
g_command_line->HasSwitch(cefclient::kPageCacheDisabled);
settings.tab_to_links_disabled =
g_command_line->HasSwitch(cefclient::kTabToLinksDisabled);
settings.hyperlink_auditing_disabled =
g_command_line->HasSwitch(cefclient::kHyperlinkAuditingDisabled);
settings.user_style_sheet_enabled =
g_command_line->HasSwitch(cefclient::kUserStyleSheetEnabled);
CefString(&settings.user_style_sheet_location) =
g_command_line->GetSwitchValue(cefclient::kUserStyleSheetLocation);
settings.author_and_user_styles_disabled =
g_command_line->HasSwitch(cefclient::kAuthorAndUserStylesDisabled);
settings.local_storage_disabled =
g_command_line->HasSwitch(cefclient::kLocalStorageDisabled);
settings.databases_disabled =
g_command_line->HasSwitch(cefclient::kDatabasesDisabled);
settings.application_cache_disabled =
g_command_line->HasSwitch(cefclient::kApplicationCacheDisabled);
settings.webgl_disabled =
g_command_line->HasSwitch(cefclient::kWebglDisabled);
settings.accelerated_compositing_disabled =
g_command_line->HasSwitch(cefclient::kAcceleratedCompositingDisabled);
settings.accelerated_layers_disabled =
g_command_line->HasSwitch(cefclient::kAcceleratedLayersDisabled);
settings.accelerated_video_disabled =
g_command_line->HasSwitch(cefclient::kAcceleratedVideoDisabled);
settings.accelerated_2d_canvas_disabled =
g_command_line->HasSwitch(cefclient::kAcceledated2dCanvasDisabled);
settings.accelerated_plugins_disabled =
g_command_line->HasSwitch(cefclient::kAcceleratedPluginsDisabled);
settings.developer_tools_disabled =
g_command_line->HasSwitch(cefclient::kDeveloperToolsDisabled);
}
void RunGetSourceTest(CefRefPtr<CefBrowser> browser) {
class Visitor : public CefStringVisitor {
public:

View File

@ -30,10 +30,7 @@ void AppInitCommandLine(int argc, const char* const* argv);
CefRefPtr<CefCommandLine> AppGetCommandLine();
// Returns the application settings based on command line arguments.
void AppGetSettings(CefSettings& settings, CefRefPtr<ClientApp> app);
// Returns the application browser settings based on command line arguments.
void AppGetBrowserSettings(CefBrowserSettings& settings);
void AppGetSettings(CefSettings& settings);
// Returns true if off-screen rendering is enabled via the command line
// argument.

View File

@ -350,7 +350,7 @@ int main(int argc, char* argv[]) {
CefSettings settings;
// Populate the settings based on command line arguments.
AppGetSettings(settings, app);
AppGetSettings(settings);
// Initialize CEF.
CefInitialize(main_args, settings, app.get());
@ -420,9 +420,6 @@ int main(int argc, char* argv[]) {
CefWindowInfo window_info;
CefBrowserSettings browserSettings;
// Populate the settings based on command line arguments.
AppGetBrowserSettings(browserSettings);
window_info.SetAsChild(vbox);
CefBrowserHost::CreateBrowserSync(

View File

@ -369,9 +369,6 @@ NSButton* MakeButton(NSRect* rect, NSString* title, NSView* parent) {
CefWindowInfo window_info;
CefBrowserSettings settings;
// Populate the settings based on command line arguments.
AppGetBrowserSettings(settings);
window_info.SetAsChild(contentView, 0, 0, kWindowWidth, kWindowHeight);
CefBrowserHost::CreateBrowser(window_info, g_handler.get(),
g_handler->GetStartupURL(), settings);
@ -542,7 +539,7 @@ int main(int argc, char* argv[]) {
CefSettings settings;
// Populate the settings based on command line arguments.
AppGetSettings(settings, app);
AppGetSettings(settings);
// Initialize CEF.
CefInitialize(main_args, settings, app.get());

View File

@ -86,7 +86,7 @@ int APIENTRY wWinMain(HINSTANCE hInstance,
CefSettings settings;
// Populate the settings based on command line arguments.
AppGetSettings(settings, app);
AppGetSettings(settings);
// Initialize CEF.
CefInitialize(main_args, settings, app.get());
@ -308,9 +308,6 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam,
CefWindowInfo info;
CefBrowserSettings settings;
// Populate the settings based on command line arguments.
AppGetBrowserSettings(settings);
if (AppIsOffScreenRenderingEnabled()) {
CefRefPtr<CefCommandLine> cmd_line = AppGetCommandLine();
bool transparent =

View File

@ -1,4 +1,4 @@
// Copyright (c) 2011 The Chromium Embedded Framework Authors. All rights
// Copyright (c) 2013 The Chromium Embedded Framework Authors. All rights
// reserved. Use of this source code is governed by a BSD-style license that
// can be found in the LICENSE file.
@ -8,55 +8,20 @@
namespace cefclient {
const char kUrl[] = "url";
const char kExternalDevTools[] = "external-devtools";
// CEF and Chromium support a wide range of command-line switches. This file
// only contains command-line switches specific to the cefclient application.
// View CEF/Chromium documentation or search for *_switches.cc files in the
// Chromium source code to identify other existing command-line switches.
// Below is a partial listing of relevant *_switches.cc files:
// base/base_switches.cc
// cef/libcef/common/cef_switches.cc
// chrome/common/chrome_switches.cc (not all apply)
// content/public/common/content_switches.cc
// CefSettings attributes.
const char kMultiThreadedMessageLoop[] = "multi-threaded-message-loop";
const char kCachePath[] = "cache-path";
// CefBrowserSettings attributes.
const char kRemoteFontsDisabled[] = "remote-fonts-disabled";
const char kDefaultEncoding[] = "default-encoding";
const char kEncodingDetectorEnabled[] = "encoding-detector-enabled";
const char kJavascriptDisabled[] = "javascript-disabled";
const char kJavascriptOpenWindowsDisallowed[] =
"javascript-open-windows-disallowed";
const char kJavascriptCloseWindowsDisallowed[] =
"javascript-close-windows-disallowed";
const char kJavascriptAccessClipboardDisallowed[] =
"javascript-access-clipboard-disallowed";
const char kDomPasteDisabled[] = "dom-paste-disabled";
const char kCaretBrowsingDisabled[] = "caret-browsing-enabled";
const char kJavaDisabled[] = "java-disabled";
const char kPluginsDisabled[] = "plugins-disabled";
const char kUniversalAccessFromFileUrlsAllowed[] =
"universal-access-from-file-urls-allowed";
const char kFileAccessFromFileUrlsAllowed[] =
"file-access-from-file-urls-allowed";
const char kWebSecurityDisabled[] = "web-security-disabled";
const char kXssAuditorEnabled[] = "xss-auditor-enabled";
const char kImageLoadingDisabled[] = "image-load-disabled";
const char kShrinkStandaloneImagesToFit[] = "shrink-standalone-images-to-fit";
const char kSiteSpecificQuirksDisabled[] = "site-specific-quirks-disabled";
const char kTextAreaResizeDisabled[] = "text-area-resize-disabled";
const char kPageCacheDisabled[] = "page-cache-disabled";
const char kTabToLinksDisabled[] = "tab-to-links-disabled";
const char kHyperlinkAuditingDisabled[] = "hyperlink-auditing-disabled";
const char kUserStyleSheetEnabled[] = "user-style-sheet-enabled";
const char kUserStyleSheetLocation[] = "user-style-sheet-location";
const char kAuthorAndUserStylesDisabled[] = "author-and-user-styles-disabled";
const char kLocalStorageDisabled[] = "local-storage-disabled";
const char kDatabasesDisabled[] = "databases-disabled";
const char kApplicationCacheDisabled[] = "application-cache-disabled";
const char kWebglDisabled[] = "webgl-disabled";
const char kAcceleratedCompositingDisabled[] =
"accelerated-compositing-disabled";
const char kAcceleratedLayersDisabled[] = "accelerated-layers-disabled";
const char kAcceleratedVideoDisabled[] = "accelerated-video-disabled";
const char kAcceledated2dCanvasDisabled[] = "accelerated-2d-canvas-disabled";
const char kAcceleratedPluginsDisabled[] = "accelerated-plugins-disabled";
const char kDeveloperToolsDisabled[] = "developer-tools-disabled";
const char kUrl[] = "url";
const char kExternalDevTools[] = "external-devtools";
const char kOffScreenRenderingEnabled[] = "off-screen-rendering-enabled";
const char kTransparentPaintingEnabled[] = "transparent-painting-enabled";

View File

@ -1,4 +1,4 @@
// Copyright (c) 2011 The Chromium Embedded Framework Authors. All rights
// Copyright (c) 2013 The Chromium Embedded Framework Authors. All rights
// reserved. Use of this source code is governed by a BSD-style license that
// can be found in the LICENSE file.
@ -10,49 +10,10 @@
namespace cefclient {
extern const char kUrl[];
extern const char kExternalDevTools[];
// CefSettings attributes.
extern const char kMultiThreadedMessageLoop[];
extern const char kCachePath[];
// CefBrowserSettings attributes.
extern const char kRemoteFontsDisabled[];
extern const char kDefaultEncoding[];
extern const char kEncodingDetectorEnabled[];
extern const char kJavascriptDisabled[];
extern const char kJavascriptOpenWindowsDisallowed[];
extern const char kJavascriptCloseWindowsDisallowed[];
extern const char kJavascriptAccessClipboardDisallowed[];
extern const char kDomPasteDisabled[];
extern const char kCaretBrowsingDisabled[];
extern const char kJavaDisabled[];
extern const char kPluginsDisabled[];
extern const char kUniversalAccessFromFileUrlsAllowed[];
extern const char kFileAccessFromFileUrlsAllowed[];
extern const char kWebSecurityDisabled[];
extern const char kXssAuditorEnabled[];
extern const char kImageLoadingDisabled[];
extern const char kShrinkStandaloneImagesToFit[];
extern const char kSiteSpecificQuirksDisabled[];
extern const char kTextAreaResizeDisabled[];
extern const char kPageCacheDisabled[];
extern const char kTabToLinksDisabled[];
extern const char kHyperlinkAuditingDisabled[];
extern const char kUserStyleSheetEnabled[];
extern const char kUserStyleSheetLocation[];
extern const char kAuthorAndUserStylesDisabled[];
extern const char kLocalStorageDisabled[];
extern const char kDatabasesDisabled[];
extern const char kApplicationCacheDisabled[];
extern const char kWebglDisabled[];
extern const char kAcceleratedCompositingDisabled[];
extern const char kAcceleratedLayersDisabled[];
extern const char kAcceleratedVideoDisabled[];
extern const char kAcceledated2dCanvasDisabled[];
extern const char kAcceleratedPluginsDisabled[];
extern const char kDeveloperToolsDisabled[];
extern const char kUrl[];
extern const char kExternalDevTools[];
extern const char kOffScreenRenderingEnabled[];
extern const char kTransparentPaintingEnabled[];