2 * Copyright (C) 2009 Google Inc. All rights reserved.
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are
8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above
11 * copyright notice, this list of conditions and the following disclaimer
12 * in the documentation and/or other materials provided with the
14 * * Neither the name of Google Inc. nor the names of its
15 * contributors may be used to endorse or promote products derived from
16 * this software without specific prior written permission.
18 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
21 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34 #include "../platform/WebCommon.h"
35 #include "../platform/WebSize.h"
36 #include <unicode/uscript.h>
42 // WebSettings is owned by the WebView and allows code to modify the settings for
43 // the WebView's page without any knowledge of WebCore itself. For the most part,
44 // these functions have a 1:1 mapping with the methods in WebCore/page/Settings.h.
47 enum ImageAnimationPolicy
{
48 ImageAnimationPolicyAllowed
,
49 ImageAnimationPolicyAnimateOnce
,
50 ImageAnimationPolicyNoAnimation
53 enum EditingBehavior
{
57 EditingBehaviorAndroid
61 V8CacheOptionsDefault
,
67 // Bit field values indicating available pointer types. Identical to
68 // blink::PointerType enums, enforced by compile-time assertions in
69 // AssertMatchingEnums.cpp.
70 // TODO(mustaq): Move this into public/platform, like WebBlendMode.
72 PointerTypeNone
= 1 << 0,
73 PointerTypeCoarse
= 1 << 1,
74 PointerTypeFine
= 1 << 2
77 // Bit field values indicating available hover types. Identical to
78 // blink::HoverType enums, enforced by compile-time assertions in
79 // AssertMatchingEnums.cpp.
81 HoverTypeNone
= 1 << 0,
82 // Indicates that the primary pointing system can hover, but it requires
83 // a significant action on the user's part. e.g. hover on "long press".
84 HoverTypeOnDemand
= 1 << 1,
85 HoverTypeHover
= 1 << 2
88 // Selection strategy defines how the selection granularity changes when the
89 // selection extent is moved.
90 enum class SelectionStrategyType
{
91 // Always uses character granularity.
93 // "Expand by word, shrink by character" selection strategy.
94 // Uses character granularity when selection is shrinking. If the
95 // selection is expanding, granularity doesn't change until a word
96 // boundary is passed, after which the granularity switches to "word".
100 // Defines user preference for text track kind.
101 enum class TextTrackKindUserPreference
{
102 // Display only tracks marked as default
104 // If available, display captions track in preferred language, else display subtitles.
106 // If available, display subtitles track in preferred language, else display captions.
110 // Sets value of a setting by its string identifier from Settings.in and
111 // string representation of value. An enum's string representation is the
112 // string representation of the integer value of the enum.
113 virtual void setFromStrings(const WebString
& name
, const WebString
& value
) = 0;
115 virtual bool mainFrameResizesAreOrientationChanges() const = 0;
116 virtual bool shrinksViewportContentToFit() const = 0;
117 virtual bool viewportEnabled() const = 0;
118 virtual void setAccelerated2dCanvasEnabled(bool) = 0;
119 virtual void setAccelerated2dCanvasMSAASampleCount(int) = 0;
120 virtual void setAcceleratedCompositingEnabled(bool) = 0;
121 virtual void setPreferCompositingToLCDTextEnabled(bool) = 0;
122 // Not implemented yet, see http://crbug.com/178119
123 virtual void setAcceleratedCompositingForTransitionEnabled(bool) { }
124 // If set to true, allows frames with an https origin to display passive
125 // contents at an insecure URL. Otherwise, disallows it. The
126 // FrameLoaderClient set to the frame may override the value set by this
128 virtual void setAccessibilityEnabled(bool) = 0;
129 virtual void setAccessibilityPasswordValuesEnabled(bool) = 0;
130 virtual void setAllowDisplayOfInsecureContent(bool) = 0;
131 virtual void setAllowFileAccessFromFileURLs(bool) = 0;
132 virtual void setAllowCustomScrollbarInMainFrame(bool) = 0;
133 // If set to true, allows frames with an https origin to run active
134 // contents at an insecure URL. This includes WebSockets. Otherwise,
135 // disallows it. The FrameLoaderClient set to the frame may override the
136 // value set by this method.
137 virtual void setAllowRunningOfInsecureContent(bool) = 0;
138 virtual void setAllowScriptsToCloseWindows(bool) = 0;
139 virtual void setAllowUniversalAccessFromFileURLs(bool) = 0;
140 virtual void setAntialiased2dCanvasEnabled(bool) = 0;
141 virtual void setAntialiasedClips2dCanvasEnabled(bool) = 0;
142 virtual void setAsynchronousSpellCheckingEnabled(bool) = 0;
143 virtual void setAutoplayExperimentMode(const WebString
&) = 0;
144 virtual void setAutoZoomFocusedNodeToLegibleScale(bool) = 0;
145 virtual void setCaretBrowsingEnabled(bool) = 0;
146 virtual void setClobberUserAgentInitialScaleQuirk(bool) = 0;
147 virtual void setCookieEnabled(bool) = 0;
148 virtual void setNavigateOnDragDrop(bool) = 0;
149 virtual void setCursiveFontFamily(const WebString
&, UScriptCode
= USCRIPT_COMMON
) = 0;
150 virtual void setDNSPrefetchingEnabled(bool) = 0;
151 virtual void setDOMPasteAllowed(bool) = 0;
152 virtual void setDefaultFixedFontSize(int) = 0;
153 virtual void setDefaultFontSize(int) = 0;
154 virtual void setDefaultTextEncodingName(const WebString
&) = 0;
155 virtual void setDefaultVideoPosterURL(const WebString
&) = 0;
156 void setDeferred2dCanvasEnabled(bool) { } // temporary stub
157 virtual void setDeviceScaleAdjustment(float) = 0;
158 virtual void setDeviceSupportsMouse(bool) = 0;
159 virtual void setDeviceSupportsTouch(bool) = 0;
160 virtual void setDisableReadingFromCanvas(bool) = 0;
161 virtual void setDoubleTapToZoomEnabled(bool) = 0;
162 virtual void setDownloadableBinaryFontsEnabled(bool) = 0;
163 virtual void setEditingBehavior(EditingBehavior
) = 0;
164 virtual void setEnableScrollAnimator(bool) = 0;
165 virtual void setEnableTouchAdjustment(bool) = 0;
166 virtual bool multiTargetTapNotificationEnabled() = 0;
167 virtual void setMultiTargetTapNotificationEnabled(bool) = 0;
168 virtual void setExperimentalWebGLEnabled(bool) = 0;
169 virtual void setFantasyFontFamily(const WebString
&, UScriptCode
= USCRIPT_COMMON
) = 0;
170 virtual void setFixedFontFamily(const WebString
&, UScriptCode
= USCRIPT_COMMON
) = 0;
171 virtual void setReportWheelOverscroll(bool) = 0;
172 virtual void setForceZeroLayoutHeight(bool) = 0;
173 virtual void setFullscreenSupported(bool) = 0;
174 virtual void setHidePinchScrollbarsNearMinScale(bool) = 0;
175 virtual void setHyperlinkAuditingEnabled(bool) = 0;
176 virtual void setIgnoreMainFrameOverflowHiddenQuirk(bool) = 0;
177 virtual void setImageAnimationPolicy(ImageAnimationPolicy
) = 0;
178 virtual void setImagesEnabled(bool) = 0;
179 virtual void setInlineTextBoxAccessibilityEnabled(bool) = 0;
180 virtual void setInvertViewportScrollOrder(bool) = 0;
181 virtual void setJavaScriptCanAccessClipboard(bool) = 0;
182 virtual void setJavaScriptCanOpenWindowsAutomatically(bool) = 0;
183 virtual void setJavaScriptEnabled(bool) = 0;
184 void setLayerSquashingEnabled(bool) { }
185 virtual void setLoadsImagesAutomatically(bool) = 0;
186 virtual void setLoadWithOverviewMode(bool) = 0;
187 virtual void setLocalStorageEnabled(bool) = 0;
188 virtual void setMainFrameClipsContent(bool) = 0;
189 virtual void setMainFrameResizesAreOrientationChanges(bool) = 0;
190 virtual void setMaxTouchPoints(int) = 0;
191 virtual void setMediaControlsOverlayPlayButtonEnabled(bool) = 0;
192 virtual void setMediaPlaybackRequiresUserGesture(bool) = 0;
193 virtual void setMinimumAccelerated2dCanvasSize(int) = 0;
194 virtual void setMinimumFontSize(int) = 0;
195 virtual void setMinimumLogicalFontSize(int) = 0;
196 virtual void setMockScrollbarsEnabled(bool) = 0;
197 virtual void setOfflineWebApplicationCacheEnabled(bool) = 0;
198 virtual void setOpenGLMultisamplingEnabled(bool) = 0;
199 virtual void setPasswordEchoDurationInSeconds(double) = 0;
200 virtual void setPasswordEchoEnabled(bool) = 0;
201 virtual void setPerTilePaintingEnabled(bool) = 0;
202 virtual void setPictographFontFamily(const WebString
&, UScriptCode
= USCRIPT_COMMON
) = 0;
203 virtual void setPinchOverlayScrollbarThickness(int) = 0;
204 virtual void setPluginsEnabled(bool) = 0;
205 virtual void setAvailablePointerTypes(int) = 0;
206 virtual void setPrimaryPointerType(PointerType
) = 0;
207 virtual void setAvailableHoverTypes(int) = 0;
208 virtual void setPrimaryHoverType(HoverType
) = 0;
209 virtual void setPreferHiddenVolumeControls(bool) = 0;
210 virtual void setRenderVSyncNotificationEnabled(bool) = 0;
211 virtual void setReportScreenSizeInPhysicalPixelsQuirk(bool) = 0;
212 virtual void setRootLayerScrolls(bool) = 0;
213 virtual void setRubberBandingOnCompositorThread(bool) = 0;
214 virtual void setSansSerifFontFamily(const WebString
&, UScriptCode
= USCRIPT_COMMON
) = 0;
215 virtual void setSelectTrailingWhitespaceEnabled(bool) = 0;
216 virtual void setSelectionIncludesAltImageText(bool) = 0;
217 virtual void setSelectionStrategy(SelectionStrategyType
) = 0;
218 virtual void setSerifFontFamily(const WebString
&, UScriptCode
= USCRIPT_COMMON
) = 0;
219 virtual void setShouldPrintBackgrounds(bool) = 0;
220 virtual void setShouldClearDocumentBackground(bool) = 0;
221 virtual void setShouldRespectImageOrientation(bool) = 0;
222 virtual void setShowContextMenuOnMouseUp(bool) = 0;
223 virtual void setShowFPSCounter(bool) = 0;
224 virtual void setShowPaintRects(bool) = 0;
225 virtual void setShrinksViewportContentToFit(bool) = 0;
226 virtual void setSmartInsertDeleteEnabled(bool) = 0;
227 // Spatial navigation feature, when enabled, improves the experience
228 // of keyboard-controlling the web pages which originally were not designed
229 // for keyboard navigation. It allows to use arrow keys to move focus between
230 // the adjacent HTML elements. As a side effect, it extends the criteria for
231 // elements to be focusable to include any element which has click or keyboard
232 // event handlers specified. User can also trigger click handlers for such
233 // elements using SPACE or ENTER keys.
234 virtual void setSpatialNavigationEnabled(bool) = 0;
235 virtual void setStandardFontFamily(const WebString
&, UScriptCode
= USCRIPT_COMMON
) = 0;
236 virtual void setStrictMixedContentChecking(bool) = 0;
237 virtual void setStrictMixedContentCheckingForPlugin(bool) = 0;
238 virtual void setStrictPowerfulFeatureRestrictions(bool) = 0;
239 virtual void setStrictlyBlockBlockableMixedContent(bool) = 0;
240 virtual void setSupportDeprecatedTargetDensityDPI(bool) = 0;
241 virtual void setSupportsMultipleWindows(bool) = 0;
242 virtual void setSyncXHRInDocumentsEnabled(bool) = 0;
243 virtual void setTextAreasAreResizable(bool) = 0;
244 virtual void setTextAutosizingEnabled(bool) = 0;
245 virtual void setAccessibilityFontScaleFactor(float) = 0;
246 virtual void setTextTrackKindUserPreference(TextTrackKindUserPreference
) = 0;
247 virtual void setTextTrackBackgroundColor(const WebString
&) = 0;
248 virtual void setTextTrackFontFamily(const WebString
&) = 0;
249 virtual void setTextTrackFontStyle(const WebString
&) = 0;
250 virtual void setTextTrackFontVariant(const WebString
&) = 0;
251 virtual void setTextTrackTextColor(const WebString
&) = 0;
252 virtual void setTextTrackTextShadow(const WebString
&) = 0;
253 virtual void setTextTrackTextSize(const WebString
&) = 0;
254 virtual void setThreadedScrollingEnabled(bool) = 0;
255 virtual void setTouchDragDropEnabled(bool) = 0;
256 virtual void setTouchEditingEnabled(bool) = 0;
257 virtual void setUnifiedTextCheckerEnabled(bool) = 0;
258 virtual void setUnsafePluginPastingEnabled(bool) = 0;
259 virtual void setUseLegacyBackgroundSizeShorthandBehavior(bool) = 0;
260 virtual void setUseMobileViewportStyle(bool) = 0;
261 virtual void setUseSolidColorScrollbars(bool) = 0;
262 virtual void setUseWideViewport(bool) = 0;
263 virtual void setUsesEncodingDetector(bool) = 0;
264 virtual void setV8CacheOptions(V8CacheOptions
) = 0;
265 virtual void setValidationMessageTimerMagnification(int) = 0;
266 virtual void setViewportEnabled(bool) = 0;
267 virtual void setViewportMetaEnabled(bool) = 0;
268 virtual void setViewportMetaLayoutSizeQuirk(bool) = 0;
269 virtual void setViewportMetaMergeContentQuirk(bool) = 0;
270 virtual void setViewportMetaNonUserScalableQuirk(bool) = 0;
271 virtual void setViewportMetaZeroValuesQuirk(bool) = 0;
272 virtual void setWebAudioEnabled(bool) = 0;
273 virtual void setWebGLErrorsToConsoleEnabled(bool) = 0;
274 virtual void setWebSecurityEnabled(bool) = 0;
275 virtual void setWideViewportQuirkEnabled(bool) = 0;
276 virtual void setXSSAuditorEnabled(bool) = 0;