Home | History | Annotate | Download | only in common
      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 
     13 using blink::WebSettings;
     14 
     15 namespace content {
     16 
     17 // "Zyyy" is the ISO 15924 script code for undetermined script aka Common.
     18 const 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 
     25 COMPILE_ASSERT_MATCHING_ENUMS(EDITING_BEHAVIOR_MAC,
     26                               WebSettings::EditingBehaviorMac);
     27 COMPILE_ASSERT_MATCHING_ENUMS(EDITING_BEHAVIOR_WIN,
     28                               WebSettings::EditingBehaviorWin);
     29 COMPILE_ASSERT_MATCHING_ENUMS(EDITING_BEHAVIOR_UNIX,
     30                               WebSettings::EditingBehaviorUnix);
     31 COMPILE_ASSERT_MATCHING_ENUMS(EDITING_BEHAVIOR_ANDROID,
     32                               WebSettings::EditingBehaviorAndroid);
     33 
     34 COMPILE_ASSERT_MATCHING_ENUMS(V8_CACHE_OPTIONS_OFF,
     35                               WebSettings::V8CacheOptionsOff);
     36 COMPILE_ASSERT_MATCHING_ENUMS(V8_CACHE_OPTIONS_PARSE,
     37                               WebSettings::V8CacheOptionsParse);
     38 COMPILE_ASSERT_MATCHING_ENUMS(V8_CACHE_OPTIONS_CODE,
     39                               WebSettings::V8CacheOptionsCode);
     40 COMPILE_ASSERT_MATCHING_ENUMS(V8_CACHE_OPTIONS_LAST,
     41                               WebSettings::V8CacheOptionsCode);
     42 
     43 WebPreferences::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 
    177 WebPreferences::~WebPreferences() {
    178 }
    179 
    180 }  // namespace content
    181