Add support of setPasswordEchoEnabled and setPasswordEchoDuration for password echo...
[WebKit-https.git] / Source / WebCore / page / Settings.h
1 /*
2  * Copyright (C) 2003, 2006, 2007, 2008, 2009, 2011 Apple Inc. All rights reserved.
3  *           (C) 2006 Graham Dennis (graham.dennis@gmail.com)
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  * 1. Redistributions of source code must retain the above copyright
9  *    notice, this list of conditions and the following disclaimer.
10  * 2. Redistributions in binary form must reproduce the above copyright
11  *    notice, this list of conditions and the following disclaimer in the
12  *    documentation and/or other materials provided with the distribution.
13  *
14  * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
15  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
17  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
18  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
20  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
21  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
22  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
24  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
25  */
26
27 #ifndef Settings_h
28 #define Settings_h
29
30 #include "EditingBehaviorTypes.h"
31 #include "FontRenderingMode.h"
32 #include "KURL.h"
33 #include "Timer.h"
34 #include <wtf/HashMap.h>
35 #include <wtf/text/AtomicString.h>
36 #include <wtf/text/AtomicStringHash.h>
37 #include <wtf/unicode/Unicode.h>
38
39 namespace WebCore {
40
41     class Page;
42
43     enum EditableLinkBehavior {
44         EditableLinkDefaultBehavior,
45         EditableLinkAlwaysLive,
46         EditableLinkOnlyLiveWithShiftKey,
47         EditableLinkLiveWhenNotFocused,
48         EditableLinkNeverLive
49     };
50
51     enum TextDirectionSubmenuInclusionBehavior {
52         TextDirectionSubmenuNeverIncluded,
53         TextDirectionSubmenuAutomaticallyIncluded,
54         TextDirectionSubmenuAlwaysIncluded
55     };
56
57     // UScriptCode uses -1 and 0 for UScriptInvalidCode and UScriptCommon.
58     // We need to use -2 and -3 for empty value and deleted value.
59     struct UScriptCodeHashTraits : WTF::GenericHashTraits<int> {
60         static const bool emptyValueIsZero = false;
61         static int emptyValue() { return -2; }
62         static void constructDeletedValue(int& slot) { slot = -3; }
63         static bool isDeletedValue(int value) { return value == -3; }
64     };
65
66     typedef HashMap<int, AtomicString, DefaultHash<int>::Hash, UScriptCodeHashTraits> ScriptFontFamilyMap;
67
68     class Settings {
69         WTF_MAKE_NONCOPYABLE(Settings); WTF_MAKE_FAST_ALLOCATED;
70     public:
71         Settings(Page*);
72
73         void setStandardFontFamily(const AtomicString&, UScriptCode = USCRIPT_COMMON);
74         const AtomicString& standardFontFamily(UScriptCode = USCRIPT_COMMON) const;
75
76         void setFixedFontFamily(const AtomicString&, UScriptCode = USCRIPT_COMMON);
77         const AtomicString& fixedFontFamily(UScriptCode = USCRIPT_COMMON) const;
78
79         void setSerifFontFamily(const AtomicString&, UScriptCode = USCRIPT_COMMON);
80         const AtomicString& serifFontFamily(UScriptCode = USCRIPT_COMMON) const;
81
82         void setSansSerifFontFamily(const AtomicString&, UScriptCode = USCRIPT_COMMON);
83         const AtomicString& sansSerifFontFamily(UScriptCode = USCRIPT_COMMON) const;
84
85         void setCursiveFontFamily(const AtomicString&, UScriptCode = USCRIPT_COMMON);
86         const AtomicString& cursiveFontFamily(UScriptCode = USCRIPT_COMMON) const;
87
88         void setFantasyFontFamily(const AtomicString&, UScriptCode = USCRIPT_COMMON);
89         const AtomicString& fantasyFontFamily(UScriptCode = USCRIPT_COMMON) const;
90
91         void setPictographFontFamily(const AtomicString&, UScriptCode = USCRIPT_COMMON);
92         const AtomicString& pictographFontFamily(UScriptCode = USCRIPT_COMMON) const;
93
94         void setMinimumFontSize(int);
95         int minimumFontSize() const { return m_minimumFontSize; }
96
97         void setMinimumLogicalFontSize(int);
98         int minimumLogicalFontSize() const { return m_minimumLogicalFontSize; }
99
100         void setDefaultFontSize(int);
101         int defaultFontSize() const { return m_defaultFontSize; }
102
103         void setDefaultFixedFontSize(int);
104         int defaultFixedFontSize() const { return m_defaultFixedFontSize; }
105
106         // Unlike areImagesEnabled, this only suppresses the network load of
107         // the image URL.  A cached image will still be rendered if requested.
108         void setLoadsImagesAutomatically(bool);
109         bool loadsImagesAutomatically() const { return m_loadsImagesAutomatically; }
110
111         // This setting only affects site icon image loading if loadsImagesAutomatically setting is false and this setting is true.
112         // All other permutations still heed loadsImagesAutomatically setting.
113         void setLoadsSiteIconsIgnoringImageLoadingSetting(bool);
114         bool loadsSiteIconsIgnoringImageLoadingSetting() const { return m_loadsSiteIconsIgnoringImageLoadingSetting; }
115
116         void setJavaScriptEnabled(bool);
117         // Instead of calling isJavaScriptEnabled directly, please consider calling
118         // ScriptController::canExecuteScripts, which takes things like the
119         // HTML sandbox attribute into account.
120         bool isJavaScriptEnabled() const { return m_isJavaScriptEnabled; }
121
122         void setWebSecurityEnabled(bool);
123         bool isWebSecurityEnabled() const { return m_isWebSecurityEnabled; }
124
125         void setAllowUniversalAccessFromFileURLs(bool);
126         bool allowUniversalAccessFromFileURLs() const { return m_allowUniversalAccessFromFileURLs; }
127
128         void setAllowFileAccessFromFileURLs(bool);
129         bool allowFileAccessFromFileURLs() const { return m_allowFileAccessFromFileURLs; }
130
131         void setJavaScriptCanOpenWindowsAutomatically(bool);
132         bool javaScriptCanOpenWindowsAutomatically() const { return m_javaScriptCanOpenWindowsAutomatically; }
133
134         void setJavaScriptCanAccessClipboard(bool);
135         bool javaScriptCanAccessClipboard() const { return m_javaScriptCanAccessClipboard; }
136
137         void setSpatialNavigationEnabled(bool);
138         bool isSpatialNavigationEnabled() const { return m_isSpatialNavigationEnabled; }
139
140         void setJavaEnabled(bool);
141         bool isJavaEnabled() const { return m_isJavaEnabled; }
142
143         void setImagesEnabled(bool);
144         bool areImagesEnabled() const { return m_areImagesEnabled; }
145
146         void setMediaEnabled(bool);
147         bool isMediaEnabled() const { return m_isMediaEnabled; }
148
149         void setPluginsEnabled(bool);
150         bool arePluginsEnabled() const { return m_arePluginsEnabled; }
151
152         void setLocalStorageEnabled(bool);
153         bool localStorageEnabled() const { return m_localStorageEnabled; }
154
155 #if ENABLE(DOM_STORAGE)
156         // Allow clients concerned with memory consumption to set a quota on session storage
157         // since the memory used won't be released until the Page is destroyed.
158         // Default is noQuota.
159         void setSessionStorageQuota(unsigned);
160         unsigned sessionStorageQuota() const { return m_sessionStorageQuota; }
161 #endif
162
163         // When this option is set, WebCore will avoid storing any record of browsing activity
164         // that may persist on disk or remain displayed when the option is reset.
165         // This option does not affect the storage of such information in RAM.
166         // The following functions respect this setting:
167         //  - HTML5/DOM Storage
168         //  - Icon Database
169         //  - Console Messages
170         //  - MemoryCache
171         //  - Application Cache
172         //  - Back/Forward Page History
173         //  - Page Search Results
174         //  - HTTP Cookies
175         //  - Plug-ins (that support NPNVprivateModeBool)
176         void setPrivateBrowsingEnabled(bool);
177         bool privateBrowsingEnabled() const { return m_privateBrowsingEnabled; }
178
179         void setCaretBrowsingEnabled(bool);
180         bool caretBrowsingEnabled() const { return m_caretBrowsingEnabled; }
181
182         void setDefaultTextEncodingName(const String&);
183         const String& defaultTextEncodingName() const { return m_defaultTextEncodingName; }
184         
185         void setUsesEncodingDetector(bool);
186         bool usesEncodingDetector() const { return m_usesEncodingDetector; }
187
188         void setDNSPrefetchingEnabled(bool);
189         bool dnsPrefetchingEnabled() const { return m_dnsPrefetchingEnabled; }
190
191         void setUserStyleSheetLocation(const KURL&);
192         const KURL& userStyleSheetLocation() const { return m_userStyleSheetLocation; }
193
194         void setShouldPrintBackgrounds(bool);
195         bool shouldPrintBackgrounds() const { return m_shouldPrintBackgrounds; }
196
197         void setTextAreasAreResizable(bool);
198         bool textAreasAreResizable() const { return m_textAreasAreResizable; }
199
200         void setEditableLinkBehavior(EditableLinkBehavior);
201         EditableLinkBehavior editableLinkBehavior() const { return m_editableLinkBehavior; }
202
203         void setTextDirectionSubmenuInclusionBehavior(TextDirectionSubmenuInclusionBehavior);
204         TextDirectionSubmenuInclusionBehavior textDirectionSubmenuInclusionBehavior() const { return m_textDirectionSubmenuInclusionBehavior; }
205
206 #if ENABLE(DASHBOARD_SUPPORT)
207         void setUsesDashboardBackwardCompatibilityMode(bool);
208         bool usesDashboardBackwardCompatibilityMode() const { return m_usesDashboardBackwardCompatibilityMode; }
209 #endif
210         
211         void setNeedsAdobeFrameReloadingQuirk(bool);
212         bool needsAcrobatFrameReloadingQuirk() const { return m_needsAdobeFrameReloadingQuirk; }
213
214         void setNeedsKeyboardEventDisambiguationQuirks(bool);
215         bool needsKeyboardEventDisambiguationQuirks() const { return m_needsKeyboardEventDisambiguationQuirks; }
216
217         void setTreatsAnyTextCSSLinkAsStylesheet(bool);
218         bool treatsAnyTextCSSLinkAsStylesheet() const { return m_treatsAnyTextCSSLinkAsStylesheet; }
219
220         void setNeedsLeopardMailQuirks(bool);
221         bool needsLeopardMailQuirks() const { return m_needsLeopardMailQuirks; }
222
223         void setDOMPasteAllowed(bool);
224         bool isDOMPasteAllowed() const { return m_isDOMPasteAllowed; }
225         
226         static void setDefaultMinDOMTimerInterval(double); // Interval specified in seconds.
227         static double defaultMinDOMTimerInterval();
228         
229         void setMinDOMTimerInterval(double); // Per-page; initialized to default value.
230         double minDOMTimerInterval();
231
232         void setUsesPageCache(bool);
233         bool usesPageCache() const { return m_usesPageCache; }
234
235         void setShrinksStandaloneImagesToFit(bool);
236         bool shrinksStandaloneImagesToFit() const { return m_shrinksStandaloneImagesToFit; }
237
238         void setShowsURLsInToolTips(bool);
239         bool showsURLsInToolTips() const { return m_showsURLsInToolTips; }
240
241         void setShowsToolTipOverTruncatedText(bool);
242         bool showsToolTipOverTruncatedText() const { return m_showsToolTipOverTruncatedText; }
243
244         void setFTPDirectoryTemplatePath(const String&);
245         const String& ftpDirectoryTemplatePath() const { return m_ftpDirectoryTemplatePath; }
246         
247         void setForceFTPDirectoryListings(bool);
248         bool forceFTPDirectoryListings() const { return m_forceFTPDirectoryListings; }
249         
250         void setDeveloperExtrasEnabled(bool);
251         bool developerExtrasEnabled() const { return m_developerExtrasEnabled; }
252
253         void setFrameFlatteningEnabled(bool);
254         bool frameFlatteningEnabled() const { return m_frameFlatteningEnabled; }
255
256         void setAuthorAndUserStylesEnabled(bool);
257         bool authorAndUserStylesEnabled() const { return m_authorAndUserStylesEnabled; }
258         
259         void setFontRenderingMode(FontRenderingMode mode);
260         FontRenderingMode fontRenderingMode() const;
261
262         void setNeedsSiteSpecificQuirks(bool);
263         bool needsSiteSpecificQuirks() const { return m_needsSiteSpecificQuirks; }
264
265 #if ENABLE(WEB_ARCHIVE)
266         void setWebArchiveDebugModeEnabled(bool);
267         bool webArchiveDebugModeEnabled() const { return m_webArchiveDebugModeEnabled; }
268 #endif
269
270         void setLocalFileContentSniffingEnabled(bool);
271         bool localFileContentSniffingEnabled() const { return m_localFileContentSniffingEnabled; }
272
273         void setLocalStorageDatabasePath(const String&);
274         const String& localStorageDatabasePath() const { return m_localStorageDatabasePath; }
275
276         void setApplicationChromeMode(bool);
277         bool inApplicationChromeMode() const { return m_inApplicationChromeMode; }
278
279         void setOfflineWebApplicationCacheEnabled(bool);
280         bool offlineWebApplicationCacheEnabled() const { return m_offlineWebApplicationCacheEnabled; }
281
282         void setShouldPaintCustomScrollbars(bool);
283         bool shouldPaintCustomScrollbars() const { return m_shouldPaintCustomScrollbars; }
284         
285         void setEnforceCSSMIMETypeInNoQuirksMode(bool);
286         bool enforceCSSMIMETypeInNoQuirksMode() { return m_enforceCSSMIMETypeInNoQuirksMode; }
287
288         void setMaximumDecodedImageSize(size_t size) { m_maximumDecodedImageSize = size; }
289         size_t maximumDecodedImageSize() const { return m_maximumDecodedImageSize; }
290
291 #if USE(SAFARI_THEME)
292         // Windows debugging pref (global) for switching between the Aqua look and a native windows look.
293         static void setShouldPaintNativeControls(bool);
294         static bool shouldPaintNativeControls() { return gShouldPaintNativeControls; }
295 #endif
296
297         void setAllowScriptsToCloseWindows(bool);
298         bool allowScriptsToCloseWindows() const { return m_allowScriptsToCloseWindows; }
299
300         void setEditingBehaviorType(EditingBehaviorType behavior) { m_editingBehaviorType = behavior; }
301         EditingBehaviorType editingBehaviorType() const { return static_cast<EditingBehaviorType>(m_editingBehaviorType); }
302
303         void setDownloadableBinaryFontsEnabled(bool);
304         bool downloadableBinaryFontsEnabled() const { return m_downloadableBinaryFontsEnabled; }
305
306         void setXSSAuditorEnabled(bool);
307         bool xssAuditorEnabled() const { return m_xssAuditorEnabled; }
308
309         void setCanvasUsesAcceleratedDrawing(bool);
310         bool canvasUsesAcceleratedDrawing() const { return m_canvasUsesAcceleratedDrawing; }
311
312         void setAcceleratedDrawingEnabled(bool);
313         bool acceleratedDrawingEnabled() const { return m_acceleratedDrawingEnabled; }
314         
315         void setAcceleratedCompositingEnabled(bool);
316         bool acceleratedCompositingEnabled() const { return m_acceleratedCompositingEnabled; }
317
318         void setAcceleratedCompositingFor3DTransformsEnabled(bool);
319         bool acceleratedCompositingFor3DTransformsEnabled() const { return m_acceleratedCompositingFor3DTransformsEnabled; }
320
321         void setAcceleratedCompositingForVideoEnabled(bool);
322         bool acceleratedCompositingForVideoEnabled() const { return m_acceleratedCompositingForVideoEnabled; }
323
324         void setAcceleratedCompositingForPluginsEnabled(bool);
325         bool acceleratedCompositingForPluginsEnabled() const { return m_acceleratedCompositingForPluginsEnabled; }
326
327         void setAcceleratedCompositingForCanvasEnabled(bool);
328         bool acceleratedCompositingForCanvasEnabled() const { return m_acceleratedCompositingForCanvasEnabled; }
329
330         void setAcceleratedCompositingForAnimationEnabled(bool);
331         bool acceleratedCompositingForAnimationEnabled() const { return m_acceleratedCompositingForAnimationEnabled; }
332
333         void setShowDebugBorders(bool);
334         bool showDebugBorders() const { return m_showDebugBorders; }
335
336         void setShowRepaintCounter(bool);
337         bool showRepaintCounter() const { return m_showRepaintCounter; }
338
339         void setExperimentalNotificationsEnabled(bool);
340         bool experimentalNotificationsEnabled() const { return m_experimentalNotificationsEnabled; }
341
342 #if PLATFORM(WIN) || (OS(WINDOWS) && PLATFORM(WX))
343         static void setShouldUseHighResolutionTimers(bool);
344         static bool shouldUseHighResolutionTimers() { return gShouldUseHighResolutionTimers; }
345 #endif
346
347         void setWebAudioEnabled(bool);
348         bool webAudioEnabled() const { return m_webAudioEnabled; }
349
350         void setWebGLEnabled(bool);
351         bool webGLEnabled() const { return m_webGLEnabled; }
352
353         void setOpenGLMultisamplingEnabled(bool);
354         bool openGLMultisamplingEnabled() const { return m_openGLMultisamplingEnabled; }
355
356         void setAccelerated2dCanvasEnabled(bool);
357         bool accelerated2dCanvasEnabled() const { return m_acceleratedCanvas2dEnabled; }
358
359         void setLegacyAccelerated2dCanvasEnabled(bool);
360         bool legacyAccelerated2dCanvasEnabled() const { return m_legacyAcceleratedCanvas2dEnabled; }
361
362         // Number of pixels below which 2D canvas is rendered in software
363         // even if hardware acceleration is enabled.
364         // Hardware acceleration is useful for large canvases where it can avoid the
365         // pixel bandwidth between the CPU and GPU. But GPU acceleration comes at
366         // a price - extra back-buffer and texture copy. Small canvases are also
367         // widely used for stylized fonts. Anti-aliasing text in hardware at that
368         // scale is generally slower. So below a certain size it is better to
369         // draw canvas in software.
370         void setMinimumAccelerated2dCanvasSize(int);
371         int minimumAccelerated2dCanvasSize() const { return m_minimumAccelerated2dCanvasSize; }
372
373         void setLoadDeferringEnabled(bool);
374         bool loadDeferringEnabled() const { return m_loadDeferringEnabled; }
375         
376         void setTiledBackingStoreEnabled(bool);
377         bool tiledBackingStoreEnabled() const { return m_tiledBackingStoreEnabled; }
378
379         void setPaginateDuringLayoutEnabled(bool flag) { m_paginateDuringLayoutEnabled = flag; }
380         bool paginateDuringLayoutEnabled() const { return m_paginateDuringLayoutEnabled; }
381
382 #if ENABLE(FULLSCREEN_API)
383         void setFullScreenEnabled(bool flag) { m_fullScreenAPIEnabled = flag; }
384         bool fullScreenEnabled() const  { return m_fullScreenAPIEnabled; }
385 #endif
386
387 #if USE(AVFOUNDATION)
388         static void setAVFoundationEnabled(bool flag) { gAVFoundationEnabled = flag; }
389         static bool isAVFoundationEnabled() { return gAVFoundationEnabled; }
390 #endif
391
392         void setAsynchronousSpellCheckingEnabled(bool flag) { m_asynchronousSpellCheckingEnabled = flag; }
393         bool asynchronousSpellCheckingEnabled() const  { return m_asynchronousSpellCheckingEnabled; }
394
395         void setMemoryInfoEnabled(bool flag) { m_memoryInfoEnabled = flag; }
396         bool memoryInfoEnabled() const { return m_memoryInfoEnabled; }
397
398         // This setting will be removed when an HTML5 compatibility issue is
399         // resolved and WebKit implementation of interactive validation is
400         // completed. See http://webkit.org/b/40520, http://webkit.org/b/40747,
401         // and http://webkit.org/b/40908
402         void setInteractiveFormValidationEnabled(bool flag) { m_interactiveFormValidation = flag; }
403         bool interactiveFormValidationEnabled() const { return m_interactiveFormValidation; }
404
405         // Sets the maginication value for validation message timer.
406         // If the maginication value is N, a validation message disappears
407         // automatically after <message length> * N / 1000 seconds. If N is
408         // equal to or less than 0, a validation message doesn't disappears
409         // automaticaly. The default value is 50.
410         void setValidationMessageTimerMagnification(int newValue) { m_validationMessageTimerMagnification = newValue; }
411         int validationMessageTimerMaginification() const { return m_validationMessageTimerMagnification; }
412         
413         void setUsePreHTML5ParserQuirks(bool flag) { m_usePreHTML5ParserQuirks = flag; }
414         bool usePreHTML5ParserQuirks() const { return m_usePreHTML5ParserQuirks; }
415
416         static const unsigned defaultMaximumHTMLParserDOMTreeDepth = 512;
417         void setMaximumHTMLParserDOMTreeDepth(unsigned maximumHTMLParserDOMTreeDepth) { m_maximumHTMLParserDOMTreeDepth = maximumHTMLParserDOMTreeDepth; }
418         unsigned maximumHTMLParserDOMTreeDepth() const { return m_maximumHTMLParserDOMTreeDepth; }
419
420         void setHyperlinkAuditingEnabled(bool flag) { m_hyperlinkAuditingEnabled = flag; }
421         bool hyperlinkAuditingEnabled() const { return m_hyperlinkAuditingEnabled; }
422
423         void setCrossOriginCheckInGetMatchedCSSRulesDisabled(bool flag) { m_crossOriginCheckInGetMatchedCSSRulesDisabled = flag; }
424         bool crossOriginCheckInGetMatchedCSSRulesDisabled() const { return m_crossOriginCheckInGetMatchedCSSRulesDisabled; }
425         
426         void setLayoutFallbackWidth(int width) { m_layoutFallbackWidth = width; }
427         int layoutFallbackWidth() const { return m_layoutFallbackWidth; }
428
429         void setDeviceWidth(int width) { m_deviceWidth = width; }
430         int deviceWidth() const { return m_deviceWidth; }
431
432         void setDeviceHeight(int height) { m_deviceHeight = height; }
433         int deviceHeight() const { return m_deviceHeight; }
434
435         void setDeviceDPI(int deviceDPI) { m_deviceDPI = deviceDPI; }
436         int deviceDPI() const { return m_deviceDPI; }
437
438         void setForceCompositingMode(bool flag) { m_forceCompositingMode = flag; }
439         bool forceCompositingMode() { return m_forceCompositingMode; }
440         
441         void setShouldInjectUserScriptsInInitialEmptyDocument(bool flag) { m_shouldInjectUserScriptsInInitialEmptyDocument = flag; }
442         bool shouldInjectUserScriptsInInitialEmptyDocument() { return m_shouldInjectUserScriptsInInitialEmptyDocument; }
443
444         void setAllowDisplayOfInsecureContent(bool flag) { m_allowDisplayOfInsecureContent = flag; }
445         bool allowDisplayOfInsecureContent() const { return m_allowDisplayOfInsecureContent; }
446         void setAllowRunningOfInsecureContent(bool flag) { m_allowRunningOfInsecureContent = flag; }
447         bool allowRunningOfInsecureContent() const { return m_allowRunningOfInsecureContent; }
448
449 #if ENABLE(SMOOTH_SCROLLING)
450         void setEnableScrollAnimator(bool flag) { m_scrollAnimatorEnabled = flag; }
451         bool scrollAnimatorEnabled() const { return m_scrollAnimatorEnabled; }
452 #endif
453 #if ENABLE(WEB_SOCKETS)
454         void setUseHixie76WebSocketProtocol(bool flag) { m_useHixie76WebSocketProtocol = flag; }
455         bool useHixie76WebSocketProtocol() { return m_useHixie76WebSocketProtocol; }
456 #endif
457
458         void setMediaPlaybackRequiresUserGesture(bool flag) { m_mediaPlaybackRequiresUserGesture = flag; };
459         bool mediaPlaybackRequiresUserGesture() const { return m_mediaPlaybackRequiresUserGesture; }
460
461         void setMediaPlaybackAllowsInline(bool flag) { m_mediaPlaybackAllowsInline = flag; };
462         bool mediaPlaybackAllowsInline() const { return m_mediaPlaybackAllowsInline; }
463
464         void setPasswordEchoEnabled(bool flag) { m_passwordEchoEnabled = flag; }
465         bool passwordEchoEnabled() const { return m_passwordEchoEnabled; }
466
467         void setPasswordEchoDurationInSeconds(double durationInSeconds) { m_passwordEchoDurationInSeconds = durationInSeconds; }
468         double passwordEchoDurationInSeconds() const { return m_passwordEchoDurationInSeconds; }
469
470     private:
471         Page* m_page;
472
473         String m_defaultTextEncodingName;
474         String m_ftpDirectoryTemplatePath;
475         String m_localStorageDatabasePath;
476         KURL m_userStyleSheetLocation;
477         ScriptFontFamilyMap m_standardFontFamilyMap;
478         ScriptFontFamilyMap m_serifFontFamilyMap;
479         ScriptFontFamilyMap m_fixedFontFamilyMap;
480         ScriptFontFamilyMap m_sansSerifFontFamilyMap;
481         ScriptFontFamilyMap m_cursiveFontFamilyMap;
482         ScriptFontFamilyMap m_fantasyFontFamilyMap;
483         ScriptFontFamilyMap m_pictographFontFamilyMap;
484         EditableLinkBehavior m_editableLinkBehavior;
485         TextDirectionSubmenuInclusionBehavior m_textDirectionSubmenuInclusionBehavior;
486         double m_passwordEchoDurationInSeconds;
487         int m_minimumFontSize;
488         int m_minimumLogicalFontSize;
489         int m_defaultFontSize;
490         int m_defaultFixedFontSize;
491         int m_validationMessageTimerMagnification;
492         int m_minimumAccelerated2dCanvasSize;
493         int m_layoutFallbackWidth;
494         int m_deviceDPI;
495         size_t m_maximumDecodedImageSize;
496         int m_deviceWidth;
497         int m_deviceHeight;
498 #if ENABLE(DOM_STORAGE)
499         unsigned m_sessionStorageQuota;
500 #endif
501         unsigned m_editingBehaviorType;
502         unsigned m_maximumHTMLParserDOMTreeDepth;
503         bool m_isSpatialNavigationEnabled : 1;
504         bool m_isJavaEnabled : 1;
505         bool m_loadsImagesAutomatically : 1;
506         bool m_loadsSiteIconsIgnoringImageLoadingSetting : 1;
507         bool m_privateBrowsingEnabled : 1;
508         bool m_caretBrowsingEnabled : 1;
509         bool m_areImagesEnabled : 1;
510         bool m_isMediaEnabled : 1;
511         bool m_arePluginsEnabled : 1;
512         bool m_localStorageEnabled : 1;
513         bool m_isJavaScriptEnabled : 1;
514         bool m_isWebSecurityEnabled : 1;
515         bool m_allowUniversalAccessFromFileURLs: 1;
516         bool m_allowFileAccessFromFileURLs: 1;
517         bool m_javaScriptCanOpenWindowsAutomatically : 1;
518         bool m_javaScriptCanAccessClipboard : 1;
519         bool m_shouldPrintBackgrounds : 1;
520         bool m_textAreasAreResizable : 1;
521 #if ENABLE(DASHBOARD_SUPPORT)
522         bool m_usesDashboardBackwardCompatibilityMode : 1;
523 #endif
524         bool m_needsAdobeFrameReloadingQuirk : 1;
525         bool m_needsKeyboardEventDisambiguationQuirks : 1;
526         bool m_treatsAnyTextCSSLinkAsStylesheet : 1;
527         bool m_needsLeopardMailQuirks : 1;
528         bool m_isDOMPasteAllowed : 1;
529         bool m_shrinksStandaloneImagesToFit : 1;
530         bool m_usesPageCache: 1;
531         bool m_showsURLsInToolTips : 1;
532         bool m_showsToolTipOverTruncatedText : 1;
533         bool m_forceFTPDirectoryListings : 1;
534         bool m_developerExtrasEnabled : 1;
535         bool m_authorAndUserStylesEnabled : 1;
536         bool m_needsSiteSpecificQuirks : 1;
537         unsigned m_fontRenderingMode : 1;
538         bool m_frameFlatteningEnabled : 1;
539         bool m_webArchiveDebugModeEnabled : 1;
540         bool m_localFileContentSniffingEnabled : 1;
541         bool m_inApplicationChromeMode : 1;
542         bool m_offlineWebApplicationCacheEnabled : 1;
543         bool m_shouldPaintCustomScrollbars : 1;
544         bool m_enforceCSSMIMETypeInNoQuirksMode : 1;
545         bool m_usesEncodingDetector : 1;
546         bool m_allowScriptsToCloseWindows : 1;
547         bool m_canvasUsesAcceleratedDrawing : 1;
548         bool m_acceleratedDrawingEnabled : 1;
549         bool m_downloadableBinaryFontsEnabled : 1;
550         bool m_xssAuditorEnabled : 1;
551         bool m_acceleratedCompositingEnabled : 1;
552         bool m_acceleratedCompositingFor3DTransformsEnabled : 1;
553         bool m_acceleratedCompositingForVideoEnabled : 1;
554         bool m_acceleratedCompositingForPluginsEnabled : 1;
555         bool m_acceleratedCompositingForCanvasEnabled : 1;
556         bool m_acceleratedCompositingForAnimationEnabled : 1;
557         bool m_showDebugBorders : 1;
558         bool m_showRepaintCounter : 1;
559         bool m_experimentalNotificationsEnabled : 1;
560         bool m_webGLEnabled : 1;
561         bool m_openGLMultisamplingEnabled : 1;
562         bool m_webAudioEnabled : 1;
563         bool m_acceleratedCanvas2dEnabled : 1;
564         bool m_legacyAcceleratedCanvas2dEnabled : 1;
565         bool m_loadDeferringEnabled : 1;
566         bool m_tiledBackingStoreEnabled : 1;
567         bool m_paginateDuringLayoutEnabled : 1;
568         bool m_dnsPrefetchingEnabled : 1;
569 #if ENABLE(FULLSCREEN_API)
570         bool m_fullScreenAPIEnabled : 1;
571 #endif
572         bool m_asynchronousSpellCheckingEnabled: 1;
573         bool m_memoryInfoEnabled: 1;
574         bool m_interactiveFormValidation: 1;
575         bool m_usePreHTML5ParserQuirks: 1;
576         bool m_hyperlinkAuditingEnabled : 1;
577         bool m_crossOriginCheckInGetMatchedCSSRulesDisabled : 1;
578         bool m_forceCompositingMode : 1;
579         bool m_shouldInjectUserScriptsInInitialEmptyDocument : 1;
580         bool m_allowDisplayOfInsecureContent : 1;
581         bool m_allowRunningOfInsecureContent : 1;
582 #if ENABLE(SMOOTH_SCROLLING)
583         bool m_scrollAnimatorEnabled : 1;
584 #endif
585 #if ENABLE(WEB_SOCKETS)
586         bool m_useHixie76WebSocketProtocol : 1;
587 #endif
588         bool m_mediaPlaybackRequiresUserGesture : 1;
589         bool m_mediaPlaybackAllowsInline : 1;
590         bool m_passwordEchoEnabled : 1;
591
592         Timer<Settings> m_loadsImagesAutomaticallyTimer;
593         void loadsImagesAutomaticallyTimerFired(Timer<Settings>*);
594
595 #if USE(AVFOUNDATION)
596         static bool gAVFoundationEnabled;
597 #endif
598
599 #if USE(SAFARI_THEME)
600         static bool gShouldPaintNativeControls;
601 #endif
602 #if PLATFORM(WIN) || (OS(WINDOWS) && PLATFORM(WX))
603         static bool gShouldUseHighResolutionTimers;
604 #endif
605     };
606
607 } // namespace WebCore
608
609 #endif // Settings_h