1// Copyright 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "content/public/common/web_preferences.h"
6
7#include "base/basictypes.h"
8#include "base/strings/string_util.h"
9#include "base/strings/utf_string_conversions.h"
10#include "third_party/WebKit/public/web/WebSettings.h"
11#include "third_party/icu/source/common/unicode/uchar.h"
12
13using blink::WebSettings;
14
15namespace content {
16
17// "Zyyy" is the ISO 15924 script code for undetermined script aka Common.
18const char kCommonScript[] = "Zyyy";
19
20#define COMPILE_ASSERT_MATCHING_ENUMS(content_name, blink_name)         \
21    COMPILE_ASSERT(                                                     \
22        static_cast<int>(content_name) == static_cast<int>(blink_name), \
23        mismatching_enums)
24
25COMPILE_ASSERT_MATCHING_ENUMS(EDITING_BEHAVIOR_MAC,
26                              WebSettings::EditingBehaviorMac);
27COMPILE_ASSERT_MATCHING_ENUMS(EDITING_BEHAVIOR_WIN,
28                              WebSettings::EditingBehaviorWin);
29COMPILE_ASSERT_MATCHING_ENUMS(EDITING_BEHAVIOR_UNIX,
30                              WebSettings::EditingBehaviorUnix);
31COMPILE_ASSERT_MATCHING_ENUMS(EDITING_BEHAVIOR_ANDROID,
32                              WebSettings::EditingBehaviorAndroid);
33
34COMPILE_ASSERT_MATCHING_ENUMS(V8_CACHE_OPTIONS_OFF,
35                              WebSettings::V8CacheOptionsOff);
36COMPILE_ASSERT_MATCHING_ENUMS(V8_CACHE_OPTIONS_PARSE,
37                              WebSettings::V8CacheOptionsParse);
38COMPILE_ASSERT_MATCHING_ENUMS(V8_CACHE_OPTIONS_CODE,
39                              WebSettings::V8CacheOptionsCode);
40COMPILE_ASSERT_MATCHING_ENUMS(V8_CACHE_OPTIONS_LAST,
41                              WebSettings::V8CacheOptionsCode);
42
43WebPreferences::WebPreferences()
44    : default_font_size(16),
45      default_fixed_font_size(13),
46      minimum_font_size(0),
47      minimum_logical_font_size(6),
48      default_encoding("ISO-8859-1"),
49      javascript_enabled(true),
50      web_security_enabled(true),
51      javascript_can_open_windows_automatically(true),
52      loads_images_automatically(true),
53      images_enabled(true),
54      plugins_enabled(true),
55      dom_paste_enabled(false),  // enables execCommand("paste")
56      shrinks_standalone_images_to_fit(true),
57      uses_universal_detector(false),  // Disabled: page cycler regression
58      text_areas_are_resizable(true),
59      java_enabled(true),
60      allow_scripts_to_close_windows(false),
61      remote_fonts_enabled(true),
62      javascript_can_access_clipboard(false),
63      xslt_enabled(true),
64      xss_auditor_enabled(true),
65      dns_prefetching_enabled(true),
66      local_storage_enabled(false),
67      databases_enabled(false),
68      application_cache_enabled(false),
69      tabs_to_links(true),
70      caret_browsing_enabled(false),
71      hyperlink_auditing_enabled(true),
72      is_online(true),
73      connection_type(net::NetworkChangeNotifier::CONNECTION_NONE),
74      allow_universal_access_from_file_urls(false),
75      allow_file_access_from_file_urls(false),
76      webaudio_enabled(false),
77      experimental_webgl_enabled(false),
78      pepper_3d_enabled(false),
79      flash_3d_enabled(true),
80      flash_stage3d_enabled(false),
81      flash_stage3d_baseline_enabled(false),
82      gl_multisampling_enabled(true),
83      privileged_webgl_extensions_enabled(false),
84      webgl_errors_to_console_enabled(true),
85      mock_scrollbars_enabled(false),
86      layer_squashing_enabled(true),
87      asynchronous_spell_checking_enabled(true),
88      unified_textchecker_enabled(false),
89      accelerated_2d_canvas_enabled(false),
90      minimum_accelerated_2d_canvas_size(257 * 256),
91      antialiased_2d_canvas_disabled(false),
92      accelerated_2d_canvas_msaa_sample_count(0),
93      accelerated_filters_enabled(false),
94      deferred_filters_enabled(false),
95      container_culling_enabled(false),
96      allow_displaying_insecure_content(true),
97      allow_running_insecure_content(false),
98      password_echo_enabled(false),
99      should_print_backgrounds(false),
100      should_clear_document_background(true),
101      enable_scroll_animator(false),
102      region_based_columns_enabled(false),
103      touch_enabled(false),
104      device_supports_touch(false),
105      device_supports_mouse(true),
106      touch_adjustment_enabled(true),
107      pointer_events_max_touch_points(0),
108      sync_xhr_in_documents_enabled(true),
109      deferred_image_decoding_enabled(false),
110      should_respect_image_orientation(false),
111      number_of_cpu_cores(1),
112#if defined(OS_MACOSX)
113      editing_behavior(EDITING_BEHAVIOR_MAC),
114#elif defined(OS_WIN)
115      editing_behavior(EDITING_BEHAVIOR_WIN),
116#elif defined(OS_ANDROID)
117      editing_behavior(EDITING_BEHAVIOR_ANDROID),
118#elif defined(OS_POSIX)
119      editing_behavior(EDITING_BEHAVIOR_UNIX),
120#else
121      editing_behavior(EDITING_BEHAVIOR_MAC),
122#endif
123      supports_multiple_windows(true),
124      viewport_enabled(false),
125      viewport_meta_enabled(false),
126      main_frame_resizes_are_orientation_changes(false),
127      initialize_at_minimum_page_scale(true),
128#if defined(OS_MACOSX)
129      smart_insert_delete_enabled(true),
130#else
131      smart_insert_delete_enabled(false),
132#endif
133      spatial_navigation_enabled(false),
134      pinch_virtual_viewport_enabled(false),
135      pinch_overlay_scrollbar_thickness(0),
136      use_solid_color_scrollbars(false),
137      navigate_on_drag_drop(true),
138      v8_cache_options(V8_CACHE_OPTIONS_OFF),
139      v8_script_streaming_enabled(false),
140      cookie_enabled(true),
141      pepper_accelerated_video_decode_enabled(false)
142#if defined(OS_ANDROID)
143      ,
144      text_autosizing_enabled(true),
145      font_scale_factor(1.0f),
146      device_scale_adjustment(1.0f),
147      force_enable_zoom(false),
148      disallow_fullscreen_for_non_media_elements(false),
149      fullscreen_supported(true),
150      double_tap_to_zoom_enabled(true),
151      user_gesture_required_for_media_playback(true),
152      support_deprecated_target_density_dpi(false),
153      use_legacy_background_size_shorthand_behavior(false),
154      wide_viewport_quirk(false),
155      use_wide_viewport(true),
156      force_zero_layout_height(false),
157      viewport_meta_layout_size_quirk(false),
158      viewport_meta_merge_content_quirk(false),
159      viewport_meta_non_user_scalable_quirk(false),
160      viewport_meta_zero_values_quirk(false),
161      clobber_user_agent_initial_scale_quirk(false),
162      ignore_main_frame_overflow_hidden_quirk(false),
163      report_screen_size_in_physical_pixels_quirk(false)
164#endif
165{
166  standard_font_family_map[kCommonScript] =
167      base::ASCIIToUTF16("Times New Roman");
168  fixed_font_family_map[kCommonScript] = base::ASCIIToUTF16("Courier New");
169  serif_font_family_map[kCommonScript] = base::ASCIIToUTF16("Times New Roman");
170  sans_serif_font_family_map[kCommonScript] = base::ASCIIToUTF16("Arial");
171  cursive_font_family_map[kCommonScript] = base::ASCIIToUTF16("Script");
172  fantasy_font_family_map[kCommonScript] = base::ASCIIToUTF16("Impact");
173  pictograph_font_family_map[kCommonScript] =
174      base::ASCIIToUTF16("Times New Roman");
175}
176
177WebPreferences::~WebPreferences() {
178}
179
180}  // namespace content
181