1868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
53551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "content/public/renderer/web_preferences.h"
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/utf_string_conversions.h"
83551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "third_party/WebKit/public/platform/WebString.h"
93551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "third_party/WebKit/public/platform/WebURL.h"
107d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "third_party/WebKit/public/web/WebKit.h"
117d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "third_party/WebKit/public/web/WebNetworkStateNotifier.h"
127d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "third_party/WebKit/public/web/WebRuntimeFeatures.h"
137d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "third_party/WebKit/public/web/WebSettings.h"
147d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "third_party/WebKit/public/web/WebView.h"
15ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#include "third_party/icu/source/common/unicode/uchar.h"
16ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#include "third_party/icu/source/common/unicode/uscript.h"
17868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "webkit/common/webpreferences.h"
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
19f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebNetworkStateNotifier;
20f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebRuntimeFeatures;
21f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebSettings;
22f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebString;
23f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebURL;
24f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebView;
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
263551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)namespace content {
273551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace {
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
30f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)typedef void (*SetFontFamilyWrapper)(blink::WebSettings*,
313551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)                                     const base::string16&,
323551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)                                     UScriptCode);
33868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void setStandardFontFamilyWrapper(WebSettings* settings,
35c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                                  const base::string16& font,
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                  UScriptCode script) {
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  settings->setStandardFontFamily(font, script);
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void setFixedFontFamilyWrapper(WebSettings* settings,
41c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                               const base::string16& font,
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                               UScriptCode script) {
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  settings->setFixedFontFamily(font, script);
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void setSerifFontFamilyWrapper(WebSettings* settings,
47c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                               const base::string16& font,
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                               UScriptCode script) {
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  settings->setSerifFontFamily(font, script);
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void setSansSerifFontFamilyWrapper(WebSettings* settings,
53c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                                   const base::string16& font,
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                   UScriptCode script) {
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  settings->setSansSerifFontFamily(font, script);
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void setCursiveFontFamilyWrapper(WebSettings* settings,
59c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                                 const base::string16& font,
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                 UScriptCode script) {
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  settings->setCursiveFontFamily(font, script);
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void setFantasyFontFamilyWrapper(WebSettings* settings,
65c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                                 const base::string16& font,
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                 UScriptCode script) {
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  settings->setFantasyFontFamily(font, script);
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void setPictographFontFamilyWrapper(WebSettings* settings,
713551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)                                    const base::string16& font,
723551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)                                    UScriptCode script) {
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  settings->setPictographFontFamily(font, script);
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// If |scriptCode| is a member of a family of "similar" script codes, returns
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// the script code in that family that is used by WebKit for font selection
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// purposes.  For example, USCRIPT_KATAKANA_OR_HIRAGANA and USCRIPT_JAPANESE are
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// considered equivalent for the purposes of font selection.  WebKit uses the
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// script code USCRIPT_KATAKANA_OR_HIRAGANA.  So, if |scriptCode| is
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// USCRIPT_JAPANESE, the function returns USCRIPT_KATAKANA_OR_HIRAGANA.  WebKit
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// uses different scripts than the ones in Chrome pref names because the version
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// of ICU included on certain ports does not have some of the newer scripts.  If
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// |scriptCode| is not a member of such a family, returns |scriptCode|.
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)UScriptCode GetScriptForWebSettings(UScriptCode scriptCode) {
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  switch (scriptCode) {
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  case USCRIPT_HIRAGANA:
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  case USCRIPT_KATAKANA:
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  case USCRIPT_JAPANESE:
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return USCRIPT_KATAKANA_OR_HIRAGANA;
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  case USCRIPT_KOREAN:
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return USCRIPT_HANGUL;
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  default:
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return scriptCode;
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
98c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)void ApplyFontsFromMap(const webkit_glue::ScriptFontFamilyMap& map,
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                       SetFontFamilyWrapper setter,
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                       WebSettings* settings) {
101c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  for (webkit_glue::ScriptFontFamilyMap::const_iterator it = map.begin();
1023551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)       it != map.end();
1033551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)       ++it) {
1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int32 script = u_getPropertyValueEnum(UCHAR_SCRIPT, (it->first).c_str());
1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if (script >= 0 && script < USCRIPT_CODE_LIMIT) {
1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      UScriptCode code = static_cast<UScriptCode>(script);
1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      (*setter)(settings, it->second, GetScriptForWebSettings(code));
1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace
1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
114c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)void ApplyWebPreferences(const WebPreferences& prefs, WebView* web_view) {
1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  WebSettings* settings = web_view->settings();
116c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  ApplyFontsFromMap(prefs.standard_font_family_map,
117c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                    setStandardFontFamilyWrapper, settings);
118c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  ApplyFontsFromMap(prefs.fixed_font_family_map,
119c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                    setFixedFontFamilyWrapper, settings);
120c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  ApplyFontsFromMap(prefs.serif_font_family_map,
121c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                    setSerifFontFamilyWrapper, settings);
122c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  ApplyFontsFromMap(prefs.sans_serif_font_family_map,
123c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                    setSansSerifFontFamilyWrapper, settings);
124c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  ApplyFontsFromMap(prefs.cursive_font_family_map,
125c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                    setCursiveFontFamilyWrapper, settings);
126c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  ApplyFontsFromMap(prefs.fantasy_font_family_map,
127c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                    setFantasyFontFamilyWrapper, settings);
128c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  ApplyFontsFromMap(prefs.pictograph_font_family_map,
129c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)                    setPictographFontFamilyWrapper, settings);
130c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  settings->setDefaultFontSize(prefs.default_font_size);
131c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  settings->setDefaultFixedFontSize(prefs.default_fixed_font_size);
132c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  settings->setMinimumFontSize(prefs.minimum_font_size);
133c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  settings->setMinimumLogicalFontSize(prefs.minimum_logical_font_size);
134c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  settings->setDefaultTextEncodingName(ASCIIToUTF16(prefs.default_encoding));
135c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  settings->setJavaScriptEnabled(prefs.javascript_enabled);
136c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  settings->setWebSecurityEnabled(prefs.web_security_enabled);
1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  settings->setJavaScriptCanOpenWindowsAutomatically(
138c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      prefs.javascript_can_open_windows_automatically);
139c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  settings->setLoadsImagesAutomatically(prefs.loads_images_automatically);
140c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  settings->setImagesEnabled(prefs.images_enabled);
141c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  settings->setPluginsEnabled(prefs.plugins_enabled);
142c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  settings->setDOMPasteAllowed(prefs.dom_paste_enabled);
143c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  settings->setNeedsSiteSpecificQuirks(prefs.site_specific_quirks_enabled);
144c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  settings->setShrinksStandaloneImagesToFit(
145c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      prefs.shrinks_standalone_images_to_fit);
146c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  settings->setUsesEncodingDetector(prefs.uses_universal_detector);
147c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  settings->setTextAreasAreResizable(prefs.text_areas_are_resizable);
148c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  settings->setAllowScriptsToCloseWindows(prefs.allow_scripts_to_close_windows);
149c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  settings->setDownloadableBinaryFontsEnabled(prefs.remote_fonts_enabled);
150c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  settings->setJavaScriptCanAccessClipboard(
151c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      prefs.javascript_can_access_clipboard);
1524e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  WebRuntimeFeatures::enableXSLT(prefs.xslt_enabled);
153c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  settings->setXSSAuditorEnabled(prefs.xss_auditor_enabled);
154c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  settings->setDNSPrefetchingEnabled(prefs.dns_prefetching_enabled);
155c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  settings->setLocalStorageEnabled(prefs.local_storage_enabled);
156c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  settings->setSyncXHRInDocumentsEnabled(prefs.sync_xhr_in_documents_enabled);
157c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  WebRuntimeFeatures::enableDatabase(prefs.databases_enabled);
158c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  settings->setOfflineWebApplicationCacheEnabled(
159c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      prefs.application_cache_enabled);
160c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  settings->setCaretBrowsingEnabled(prefs.caret_browsing_enabled);
161c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  settings->setHyperlinkAuditingEnabled(prefs.hyperlink_auditing_enabled);
162c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  settings->setCookieEnabled(prefs.cookie_enabled);
1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // This setting affects the behavior of links in an editable region:
1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // clicking the link should select it rather than navigate to it.
1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Safari uses the same default. It is unlikley an embedder would want to
1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // change this, since it would break existing rich text editors.
1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  settings->setEditableLinkBehaviorNeverLive();
1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
170c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  settings->setJavaEnabled(prefs.java_enabled);
1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // By default, allow_universal_access_from_file_urls is set to false and thus
1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // we mitigate attacks from local HTML files by not granting file:// URLs
1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // universal access. Only test shell will enable this.
1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  settings->setAllowUniversalAccessFromFileURLs(
176c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      prefs.allow_universal_access_from_file_urls);
177c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  settings->setAllowFileAccessFromFileURLs(
178c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      prefs.allow_file_access_from_file_urls);
1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Enable the web audio API if requested on the command line.
181c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  settings->setWebAudioEnabled(prefs.webaudio_enabled);
1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Enable experimental WebGL support if requested on command line
1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // and support is compiled in.
185c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  settings->setExperimentalWebGLEnabled(prefs.experimental_webgl_enabled);
1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Disable GL multisampling if requested on command line.
188c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  settings->setOpenGLMultisamplingEnabled(prefs.gl_multisampling_enabled);
1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Enable privileged WebGL extensions for Chrome extensions or if requested
1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // on command line.
1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  settings->setPrivilegedWebGLExtensionsEnabled(
193c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      prefs.privileged_webgl_extensions_enabled);
1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Enable WebGL errors to the JS console if requested.
196c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  settings->setWebGLErrorsToConsoleEnabled(
197c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      prefs.webgl_errors_to_console_enabled);
1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Enables accelerated compositing for overflow scroll.
2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  settings->setAcceleratedCompositingForOverflowScrollEnabled(
201c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      prefs.accelerated_compositing_for_overflow_scroll_enabled);
2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Enables accelerated compositing for scrollable frames if requested on
2042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // command line.
2052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  settings->setAcceleratedCompositingForScrollableFramesEnabled(
206c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      prefs.accelerated_compositing_for_scrollable_frames_enabled);
2072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
2082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Enables composited scrolling for frames if requested on command line.
2092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  settings->setCompositedScrollingForFramesEnabled(
210c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      prefs.composited_scrolling_for_frames_enabled);
2112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
2122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Uses the mock theme engine for scrollbars.
213c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  settings->setMockScrollbarsEnabled(prefs.mock_scrollbars_enabled);
2142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
215f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  settings->setLayerSquashingEnabled(prefs.layer_squashing_enabled);
216f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
217c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  settings->setThreadedHTMLParser(prefs.threaded_html_parser);
2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Display visualization of what has changed on the screen using an
2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // overlay of rects, if requested on the command line.
221c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  settings->setShowPaintRects(prefs.show_paint_rects);
2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Enable gpu-accelerated compositing if requested on the command line.
224c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  settings->setAcceleratedCompositingEnabled(
225c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      prefs.accelerated_compositing_enabled);
2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Enable gpu-accelerated 2d canvas if requested on the command line.
228c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  settings->setAccelerated2dCanvasEnabled(prefs.accelerated_2d_canvas_enabled);
2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  settings->setMinimumAccelerated2dCanvasSize(
231c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      prefs.minimum_accelerated_2d_canvas_size);
2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Disable antialiasing for 2d canvas if requested on the command line.
234c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  settings->setAntialiased2dCanvasEnabled(
235c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      !prefs.antialiased_2d_canvas_disabled);
2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2371e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  // Set MSAA sample count for 2d canvas if requested on the command line (or
2381e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  // default value if not).
2391e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  settings->setAccelerated2dCanvasMSAASampleCount(
2401e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)      prefs.accelerated_2d_canvas_msaa_sample_count);
2411e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Enable gpu-accelerated filters if requested on the command line.
243c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  settings->setAcceleratedFiltersEnabled(prefs.accelerated_filters_enabled);
2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Enable gesture tap highlight if requested on the command line.
246c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  settings->setGestureTapHighlightEnabled(prefs.gesture_tap_highlight_enabled);
2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Enabling accelerated layers from the command line enabled accelerated
2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // 3D CSS, Video, and Animations.
2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  settings->setAcceleratedCompositingFor3DTransformsEnabled(
251c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      prefs.accelerated_compositing_for_3d_transforms_enabled);
2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  settings->setAcceleratedCompositingForVideoEnabled(
253c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      prefs.accelerated_compositing_for_video_enabled);
2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  settings->setAcceleratedCompositingForAnimationEnabled(
255c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      prefs.accelerated_compositing_for_animation_enabled);
2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Enabling accelerated plugins if specified from the command line.
2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  settings->setAcceleratedCompositingForPluginsEnabled(
259c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      prefs.accelerated_compositing_for_plugins_enabled);
2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // WebGL and accelerated 2D canvas are always gpu composited.
2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  settings->setAcceleratedCompositingForCanvasEnabled(
263c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      prefs.experimental_webgl_enabled || prefs.accelerated_2d_canvas_enabled);
2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Enable memory info reporting to page if requested on the command line.
266c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  settings->setMemoryInfoEnabled(prefs.memory_info_enabled);
2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  settings->setAsynchronousSpellCheckingEnabled(
269c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      prefs.asynchronous_spell_checking_enabled);
270c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  settings->setUnifiedTextCheckerEnabled(prefs.unified_textchecker_enabled);
2715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
272c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  for (webkit_glue::WebInspectorPreferences::const_iterator it =
273c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)           prefs.inspector_settings.begin();
2743551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)       it != prefs.inspector_settings.end();
2753551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)       ++it) {
2765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    web_view->setInspectorSetting(WebString::fromUTF8(it->first),
2775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                  WebString::fromUTF8(it->second));
2783551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  }
2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Tabs to link is not part of the settings. WebCore calls
2815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // ChromeClient::tabsToLinks which is part of the glue code.
282c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  web_view->setTabsToLinks(prefs.tabs_to_links);
2835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
284c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  settings->setFullScreenEnabled(prefs.fullscreen_enabled);
285c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  settings->setAllowDisplayOfInsecureContent(
286c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      prefs.allow_displaying_insecure_content);
287c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  settings->setAllowRunningOfInsecureContent(
288c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      prefs.allow_running_insecure_content);
289c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  settings->setPasswordEchoEnabled(prefs.password_echo_enabled);
290c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  settings->setShouldPrintBackgrounds(prefs.should_print_backgrounds);
291d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles)  settings->setShouldClearDocumentBackground(
292d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles)      prefs.should_clear_document_background);
293c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  settings->setEnableScrollAnimator(prefs.enable_scroll_animator);
294c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  settings->setVisualWordMovementEnabled(prefs.visual_word_movement_enabled);
295c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
2967d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  settings->setRegionBasedColumnsEnabled(prefs.region_based_columns_enabled);
297c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
298c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  WebRuntimeFeatures::enableLazyLayout(prefs.lazy_layout_enabled);
299c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  WebRuntimeFeatures::enableTouch(prefs.touch_enabled);
3001e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  settings->setMaxTouchPoints(prefs.pointer_events_max_touch_points);
301c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  settings->setDeviceSupportsTouch(prefs.device_supports_touch);
302c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  settings->setDeviceSupportsMouse(prefs.device_supports_mouse);
303c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  settings->setEnableTouchAdjustment(prefs.touch_adjustment_enabled);
3045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  settings->setFixedPositionCreatesStackingContext(
306c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      prefs.fixed_position_creates_stacking_context);
3075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
308c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  settings->setDeferredImageDecodingEnabled(
309c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      prefs.deferred_image_decoding_enabled);
310c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  settings->setShouldRespectImageOrientation(
311c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      prefs.should_respect_image_orientation);
3122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
3132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  settings->setUnsafePluginPastingEnabled(false);
3142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  settings->setEditingBehavior(
315c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      static_cast<WebSettings::EditingBehavior>(prefs.editing_behavior));
3162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
317c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  settings->setSupportsMultipleWindows(prefs.supports_multiple_windows);
3182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
319c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  settings->setViewportEnabled(prefs.viewport_enabled);
3200f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)  settings->setLoadWithOverviewMode(prefs.initialize_at_minimum_page_scale);
321f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  settings->setViewportMetaEnabled(prefs.viewport_meta_enabled);
322f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  settings->setMainFrameResizesAreOrientationChanges(
323f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      prefs.main_frame_resizes_are_orientation_changes);
3242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
325c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  settings->setSmartInsertDeleteEnabled(prefs.smart_insert_delete_enabled);
326c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
327c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  settings->setSpatialNavigationEnabled(prefs.spatial_navigation_enabled);
328c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
329c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  settings->setSelectionIncludesAltImageText(true);
3305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_ANDROID)
3322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  settings->setAllowCustomScrollbarInMainFrame(false);
333c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  settings->setTextAutosizingEnabled(prefs.text_autosizing_enabled);
334f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  settings->setAccessibilityFontScaleFactor(prefs.font_scale_factor);
3350f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)  settings->setDeviceScaleAdjustment(prefs.device_scale_adjustment);
336558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch  web_view->setIgnoreViewportTagScaleLimits(prefs.force_enable_zoom);
3375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  settings->setAutoZoomFocusedNodeToLegibleScale(true);
338c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  settings->setDoubleTapToZoomEnabled(prefs.double_tap_to_zoom_enabled);
3395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  settings->setMediaPlaybackRequiresUserGesture(
340c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      prefs.user_gesture_required_for_media_playback);
341d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)  settings->setMediaFullscreenRequiresUserGesture(
342d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)      prefs.user_gesture_required_for_media_fullscreen);
3432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  settings->setDefaultVideoPosterURL(
344c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)        ASCIIToUTF16(prefs.default_video_poster_url.spec()));
345c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  settings->setSupportDeprecatedTargetDensityDPI(
346c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      prefs.support_deprecated_target_density_dpi);
34758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  settings->setUseLegacyBackgroundSizeShorthandBehavior(
34858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)      prefs.use_legacy_background_size_shorthand_behavior);
349d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)  settings->setWideViewportQuirkEnabled(prefs.wide_viewport_quirk);
350c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  settings->setUseWideViewport(prefs.use_wide_viewport);
35158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  settings->setViewportMetaLayoutSizeQuirk(
35258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)      prefs.viewport_meta_layout_size_quirk);
3531e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  settings->setViewportMetaMergeContentQuirk(
3541e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)      prefs.viewport_meta_merge_content_quirk);
355f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  settings->setViewportMetaNonUserScalableQuirk(
356f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      prefs.viewport_meta_non_user_scalable_quirk);
35758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  settings->setViewportMetaZeroValuesQuirk(
35858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)      prefs.viewport_meta_zero_values_quirk);
359f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  settings->setClobberUserAgentInitialScaleQuirk(
360f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      prefs.clobber_user_agent_initial_scale_quirk);
36168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  settings->setIgnoreMainFrameOverflowHiddenQuirk(
36268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)      prefs.ignore_main_frame_overflow_hidden_quirk);
3638bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  settings->setReportScreenSizeInPhysicalPixelsQuirk(
3648bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)      prefs.report_screen_size_in_physical_pixels_quirk);
3654e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  settings->setMainFrameClipsContent(false);
3664e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  settings->setShrinksStandaloneImagesToFit(false);
3675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
3685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
369c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  WebNetworkStateNotifier::setOnLine(prefs.is_online);
37090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  settings->setExperimentalWebSocketEnabled(
37190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)      prefs.experimental_websocket_enabled);
37290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  settings->setPinchVirtualViewportEnabled(
37390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)      prefs.pinch_virtual_viewport_enabled);
374eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
375eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  settings->setPinchOverlayScrollbarThickness(
376eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch      prefs.pinch_overlay_scrollbar_thickness);
37758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  settings->setUseSolidColorScrollbars(prefs.use_solid_color_scrollbars);
3784e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  settings->setCompositorTouchHitTesting(prefs.compositor_touch_hit_testing);
3795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
3805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3813551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)}  // namespace content
382