Home | History | Annotate | Download | only in common
      1 // Copyright (c) 2012 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 // A struct for managing browser's settings that apply to the renderer or its
      6 // webview.  These differ from WebPreferences since they apply to Chromium's
      7 // glue layer rather than applying to just WebKit.
      8 //
      9 // Adding new values to this class probably involves updating
     10 // common/view_messages.h, browser/browser.cc, etc.
     11 
     12 #ifndef CONTENT_PUBLIC_COMMON_RENDERER_PREFERENCES_H_
     13 #define CONTENT_PUBLIC_COMMON_RENDERER_PREFERENCES_H_
     14 
     15 #include <string>
     16 #include <vector>
     17 
     18 #include "content/common/content_export.h"
     19 #include "third_party/skia/include/core/SkColor.h"
     20 
     21 namespace content {
     22 
     23 enum RendererPreferencesHintingEnum {
     24   RENDERER_PREFERENCES_HINTING_SYSTEM_DEFAULT = 0,
     25   RENDERER_PREFERENCES_HINTING_NONE,
     26   RENDERER_PREFERENCES_HINTING_SLIGHT,
     27   RENDERER_PREFERENCES_HINTING_MEDIUM,
     28   RENDERER_PREFERENCES_HINTING_FULL,
     29 };
     30 
     31 enum RendererPreferencesSubpixelRenderingEnum {
     32   RENDERER_PREFERENCES_SUBPIXEL_RENDERING_SYSTEM_DEFAULT = 0,
     33   RENDERER_PREFERENCES_SUBPIXEL_RENDERING_NONE,
     34   RENDERER_PREFERENCES_SUBPIXEL_RENDERING_RGB,
     35   RENDERER_PREFERENCES_SUBPIXEL_RENDERING_BGR,
     36   RENDERER_PREFERENCES_SUBPIXEL_RENDERING_VRGB,
     37   RENDERER_PREFERENCES_SUBPIXEL_RENDERING_VBGR,
     38 };
     39 
     40 enum TapMultipleTargetsStrategy {
     41   TAP_MULTIPLE_TARGETS_STRATEGY_ZOOM = 0,
     42   TAP_MULTIPLE_TARGETS_STRATEGY_POPUP,
     43   TAP_MULTIPLE_TARGETS_STRATEGY_NONE,
     44 
     45   TAP_MULTIPLE_TARGETS_STRATEGY_MAX = TAP_MULTIPLE_TARGETS_STRATEGY_NONE,
     46 };
     47 
     48 struct CONTENT_EXPORT RendererPreferences {
     49   RendererPreferences();
     50   ~RendererPreferences();
     51 
     52   // Whether the renderer's current browser context accept drops from the OS
     53   // that result in navigations away from the current page.
     54   bool can_accept_load_drops;
     55 
     56   // Whether text should be antialiased.
     57   // Currently only used by Linux.
     58   bool should_antialias_text;
     59 
     60   // The level of hinting to use when rendering text.
     61   // Currently only used by Linux.
     62   RendererPreferencesHintingEnum hinting;
     63 
     64   // Whether auto hinter should be used. Currently only used by Linux.
     65   bool use_autohinter;
     66 
     67   // Whether embedded bitmap strikes in fonts should be used.
     68   // Current only used by Linux.
     69   bool use_bitmaps;
     70 
     71   // The type of subpixel rendering to use for text.
     72   // Currently only used by Linux.
     73   RendererPreferencesSubpixelRenderingEnum subpixel_rendering;
     74 
     75   // Whether subpixel positioning should be used, permitting fractional X
     76   // positions for glyphs.  Currently only used by Linux.
     77   bool use_subpixel_positioning;
     78 
     79   // The color of the focus ring. Currently only used on Linux.
     80   SkColor focus_ring_color;
     81 
     82   // The color of different parts of the scrollbar. Currently only used on
     83   // Linux.
     84   SkColor thumb_active_color;
     85   SkColor thumb_inactive_color;
     86   SkColor track_color;
     87 
     88   // The colors used in selection text. Currently only used on Linux and Ash.
     89   SkColor active_selection_bg_color;
     90   SkColor active_selection_fg_color;
     91   SkColor inactive_selection_bg_color;
     92   SkColor inactive_selection_fg_color;
     93 
     94   // Browser wants a look at all non-local top level navigation requests.
     95   bool browser_handles_non_local_top_level_requests;
     96 
     97   // Browser wants a look at all top-level navigation requests.
     98   bool browser_handles_all_top_level_requests;
     99 
    100   // Cursor blink rate in seconds.
    101   // Currently only changed from default on Linux.  Uses |gtk-cursor-blink|
    102   // from GtkSettings.
    103   double caret_blink_interval;
    104 
    105   // Whether or not to set custom colors at all.
    106   bool use_custom_colors;
    107 
    108   // Set to false to not send referrers.
    109   bool enable_referrers;
    110 
    111   // Set to true to indicate that the preference to set DNT to 1 is enabled.
    112   bool enable_do_not_track;
    113 
    114   // Default page zoom level.
    115   double default_zoom_level;
    116 
    117   // The user agent given to WebKit when it requests one and the user agent is
    118   // being overridden for the current navigation.
    119   std::string user_agent_override;
    120 
    121   // The accept-languages of the browser, comma-separated.
    122   std::string accept_languages;
    123 
    124   // Specifies whether the renderer reports frame name changes to the browser
    125   // process.
    126   // TODO(fsamuel): This is a short-term workaround to avoid regressing
    127   // Sunspider. We need to find an efficient way to report changes to frame
    128   // names to the browser process. See http://crbug.com/169110 for more
    129   // information.
    130   bool report_frame_name_changes;
    131 
    132   // Controls deacceleration of touchpad-initiated flings.
    133   std::vector<float> touchpad_fling_profile;
    134 
    135   // Controls deacceleration of touchscreen-initiated flings.
    136   std::vector<float> touchscreen_fling_profile;
    137 
    138   // How to handle a tap gesture touching multiple targets
    139   TapMultipleTargetsStrategy tap_multiple_targets_strategy;
    140 
    141   // Disables rendering default error page when client choses to block a page.
    142   // Corresponds to net::ERR_BLOCKED_BY_CLIENT.
    143   bool disable_client_blocked_error_page;
    144 
    145   // Determines whether plugins are allowed to enter fullscreen mode.
    146   bool plugin_fullscreen_allowed;
    147 
    148   // Whether video-overlay (hole-punching) should be used for the embedded
    149   // encrypted video.  Currently only used by Android.
    150   bool use_video_overlay_for_embedded_encrypted_video;
    151 };
    152 
    153 }  // namespace content
    154 
    155 #endif  // CONTENT_PUBLIC_COMMON_RENDERER_PREFERENCES_H_
    156