9fc608f39ca1a44f0ce67287c9ee5bdb010ca1ba
[WebKit-https.git] / Source / WebKit / chromium / src / WebSettingsImpl.cpp
1 /*
2  * Copyright (C) 2009 Google Inc. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions are
6  * met:
7  *
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
13  * distribution.
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.
17  *
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.
29  */
30
31 #include "config.h"
32 #include "WebSettingsImpl.h"
33
34 #include "FontRenderingMode.h"
35 #include "Settings.h"
36 #include "platform/WebString.h"
37 #include "platform/WebURL.h"
38 #include <wtf/UnusedParam.h>
39
40 #if defined(OS_WIN)
41 #include "RenderThemeChromiumWin.h"
42 #endif
43
44 using namespace WebCore;
45
46 namespace WebKit {
47
48 WebSettingsImpl::WebSettingsImpl(Settings* settings)
49     : m_settings(settings)
50     , m_forceSoftwareCompositing(false)
51     , m_showFPSCounter(false)
52     , m_showPlatformLayerTree(false)
53     , m_showPaintRects(false)
54     , m_renderVSyncEnabled(true)
55     , m_viewportEnabled(false)
56     , m_applyDefaultDeviceScaleFactorInCompositor(false)
57     , m_defaultTileSize(WebSize(256, 256))
58     , m_maxUntiledLayerSize(WebSize(512, 512))
59 {
60     ASSERT(settings);
61 }
62
63 void WebSettingsImpl::setStandardFontFamily(const WebString& font, UScriptCode script)
64 {
65     m_settings->setStandardFontFamily(font, script);
66 }
67
68 void WebSettingsImpl::setFixedFontFamily(const WebString& font, UScriptCode script)
69 {
70     m_settings->setFixedFontFamily(font, script);
71 }
72
73 void WebSettingsImpl::setSerifFontFamily(const WebString& font, UScriptCode script)
74 {
75     m_settings->setSerifFontFamily(font, script);
76 }
77
78 void WebSettingsImpl::setSansSerifFontFamily(const WebString& font, UScriptCode script)
79 {
80     m_settings->setSansSerifFontFamily(font, script);
81 }
82
83 void WebSettingsImpl::setCursiveFontFamily(const WebString& font, UScriptCode script)
84 {
85     m_settings->setCursiveFontFamily(font, script);
86 }
87
88 void WebSettingsImpl::setFantasyFontFamily(const WebString& font, UScriptCode script)
89 {
90     m_settings->setFantasyFontFamily(font, script);
91 }
92
93 void WebSettingsImpl::setPictographFontFamily(const WebString& font, UScriptCode script)
94 {
95     m_settings->setPictographFontFamily(font, script);
96 }
97
98 void WebSettingsImpl::setDefaultFontSize(int size)
99 {
100     m_settings->setDefaultFontSize(size);
101 #if defined(OS_WIN)
102     // RenderTheme is a singleton that needs to know the default font size to
103     // draw some form controls.  We let it know each time the size changes.
104     WebCore::RenderThemeChromiumWin::setDefaultFontSize(size);
105 #endif
106 }
107
108 void WebSettingsImpl::setDefaultFixedFontSize(int size)
109 {
110     m_settings->setDefaultFixedFontSize(size);
111 }
112
113 void WebSettingsImpl::setMinimumFontSize(int size)
114 {
115     m_settings->setMinimumFontSize(size);
116 }
117
118 void WebSettingsImpl::setMinimumLogicalFontSize(int size)
119 {
120     m_settings->setMinimumLogicalFontSize(size);
121 }
122
123 void WebSettingsImpl::setDeviceSupportsTouch(bool deviceSupportsTouch)
124 {
125     m_settings->setDeviceSupportsTouch(deviceSupportsTouch);
126 }
127
128 void WebSettingsImpl::setDeviceSupportsMouse(bool deviceSupportsMouse)
129 {
130     m_settings->setDeviceSupportsMouse(deviceSupportsMouse);
131 }
132
133 bool WebSettingsImpl::deviceSupportsTouch()
134 {
135     return m_settings->deviceSupportsTouch();
136 }
137
138 void WebSettingsImpl::setApplyDefaultDeviceScaleFactorInCompositor(bool applyDefaultDeviceScaleFactorInCompositor)
139 {
140     m_applyDefaultDeviceScaleFactorInCompositor = applyDefaultDeviceScaleFactorInCompositor;
141 }
142
143 void WebSettingsImpl::setTextAutosizingEnabled(bool enabled)
144 {
145 #if ENABLE(TEXT_AUTOSIZING)
146     m_settings->setTextAutosizingEnabled(enabled);
147 #else
148     UNUSED_PARAM(enabled);
149 #endif
150 }
151
152 void WebSettingsImpl::setDefaultTextEncodingName(const WebString& encoding)
153 {
154     m_settings->setDefaultTextEncodingName((String)encoding);
155 }
156
157 void WebSettingsImpl::setJavaScriptEnabled(bool enabled)
158 {
159     m_settings->setScriptEnabled(enabled);
160 }
161
162 void WebSettingsImpl::setWebSecurityEnabled(bool enabled)
163 {
164     m_settings->setWebSecurityEnabled(enabled);
165 }
166
167 void WebSettingsImpl::setJavaScriptCanOpenWindowsAutomatically(bool canOpenWindows)
168 {
169     m_settings->setJavaScriptCanOpenWindowsAutomatically(canOpenWindows);
170 }
171
172 void WebSettingsImpl::setLoadsImagesAutomatically(bool loadsImagesAutomatically)
173 {
174     m_settings->setLoadsImagesAutomatically(loadsImagesAutomatically);
175 }
176
177 void WebSettingsImpl::setImagesEnabled(bool enabled)
178 {
179     m_settings->setImagesEnabled(enabled);
180 }
181
182 void WebSettingsImpl::setPluginsEnabled(bool enabled)
183 {
184     m_settings->setPluginsEnabled(enabled);
185 }
186
187 void WebSettingsImpl::setDOMPasteAllowed(bool enabled)
188 {
189     m_settings->setDOMPasteAllowed(enabled);
190 }
191
192 void WebSettingsImpl::setDeveloperExtrasEnabled(bool enabled)
193 {
194     m_settings->setDeveloperExtrasEnabled(enabled);
195 }
196
197 void WebSettingsImpl::setNeedsSiteSpecificQuirks(bool enabled)
198 {
199     m_settings->setNeedsSiteSpecificQuirks(enabled);
200 }
201
202 void WebSettingsImpl::setShrinksStandaloneImagesToFit(bool shrinkImages)
203 {
204     m_settings->setShrinksStandaloneImagesToFit(shrinkImages);
205 }
206
207 void WebSettingsImpl::setUsesEncodingDetector(bool usesDetector)
208 {
209     m_settings->setUsesEncodingDetector(usesDetector);
210 }
211
212 void WebSettingsImpl::setTextAreasAreResizable(bool areResizable)
213 {
214     m_settings->setTextAreasAreResizable(areResizable);
215 }
216
217 void WebSettingsImpl::setJavaEnabled(bool enabled)
218 {
219     m_settings->setJavaEnabled(enabled);
220 }
221
222 void WebSettingsImpl::setAllowScriptsToCloseWindows(bool allow)
223 {
224     m_settings->setAllowScriptsToCloseWindows(allow);
225 }
226
227 void WebSettingsImpl::setUserStyleSheetLocation(const WebURL& location)
228 {
229     m_settings->setUserStyleSheetLocation(location);
230 }
231
232 void WebSettingsImpl::setAuthorAndUserStylesEnabled(bool enabled)
233 {
234     m_settings->setAuthorAndUserStylesEnabled(enabled);
235 }
236
237 void WebSettingsImpl::setUsesPageCache(bool usesPageCache)
238 {
239     m_settings->setUsesPageCache(usesPageCache);
240 }
241
242 void WebSettingsImpl::setPageCacheSupportsPlugins(bool pageCacheSupportsPlugins)
243 {
244     m_settings->setPageCacheSupportsPlugins(pageCacheSupportsPlugins);
245 }
246
247 void WebSettingsImpl::setDownloadableBinaryFontsEnabled(bool enabled)
248 {
249     m_settings->setDownloadableBinaryFontsEnabled(enabled);
250 }
251
252 void WebSettingsImpl::setJavaScriptCanAccessClipboard(bool enabled)
253 {
254     m_settings->setJavaScriptCanAccessClipboard(enabled);
255 }
256
257 void WebSettingsImpl::setXSSAuditorEnabled(bool enabled)
258 {
259     m_settings->setXSSAuditorEnabled(enabled);
260 }
261
262 void WebSettingsImpl::setDNSPrefetchingEnabled(bool enabled)
263 {
264     m_settings->setDNSPrefetchingEnabled(enabled);
265 }
266
267 void WebSettingsImpl::setFixedElementsLayoutRelativeToFrame(bool fixedElementsLayoutRelativeToFrame)
268 {
269     m_settings->setFixedElementsLayoutRelativeToFrame(fixedElementsLayoutRelativeToFrame);
270 }
271
272 void WebSettingsImpl::setLocalStorageEnabled(bool enabled)
273 {
274     m_settings->setLocalStorageEnabled(enabled);
275 }
276
277 void WebSettingsImpl::setEditableLinkBehaviorNeverLive()
278 {
279     // FIXME: If you ever need more behaviors than this, then we should probably
280     //        define an enum in WebSettings.h and have a switch statement that
281     //        translates.  Until then, this is probably fine, though.
282     m_settings->setEditableLinkBehavior(WebCore::EditableLinkNeverLive);
283 }
284
285 void WebSettingsImpl::setFrameFlatteningEnabled(bool enabled)
286 {
287     m_settings->setFrameFlatteningEnabled(enabled);
288 }
289
290 void WebSettingsImpl::setFontRenderingModeNormal()
291 {
292     // FIXME: If you ever need more behaviors than this, then we should probably
293     //        define an enum in WebSettings.h and have a switch statement that
294     //        translates.  Until then, this is probably fine, though.
295     m_settings->setFontRenderingMode(WebCore::NormalRenderingMode);
296 }
297
298 void WebSettingsImpl::setAllowUniversalAccessFromFileURLs(bool allow)
299 {
300     m_settings->setAllowUniversalAccessFromFileURLs(allow);
301 }
302
303 void WebSettingsImpl::setAllowFileAccessFromFileURLs(bool allow)
304 {
305     m_settings->setAllowFileAccessFromFileURLs(allow);
306 }
307
308 void WebSettingsImpl::setTextDirectionSubmenuInclusionBehaviorNeverIncluded()
309 {
310     // FIXME: If you ever need more behaviors than this, then we should probably
311     //        define an enum in WebSettings.h and have a switch statement that
312     //        translates.  Until then, this is probably fine, though.
313     m_settings->setTextDirectionSubmenuInclusionBehavior(WebCore::TextDirectionSubmenuNeverIncluded);
314 }
315
316 void WebSettingsImpl::setOfflineWebApplicationCacheEnabled(bool enabled)
317 {
318     m_settings->setOfflineWebApplicationCacheEnabled(enabled);
319 }
320
321 void WebSettingsImpl::setWebAudioEnabled(bool enabled)
322 {
323     m_settings->setWebAudioEnabled(enabled);
324 }
325
326 void WebSettingsImpl::setExperimentalWebGLEnabled(bool enabled)
327 {
328     m_settings->setWebGLEnabled(enabled);
329 }
330
331 void WebSettingsImpl::setExperimentalCSSRegionsEnabled(bool enabled)
332 {
333     m_settings->setCSSRegionsEnabled(enabled);
334 }
335
336 void WebSettingsImpl::setExperimentalCSSGridLayoutEnabled(bool enabled)
337 {
338     m_settings->setCSSGridLayoutEnabled(enabled);
339 }
340
341 void WebSettingsImpl::setExperimentalCSSCustomFilterEnabled(bool enabled)
342 {
343     m_settings->setCSSCustomFilterEnabled(enabled);
344 }
345
346 void WebSettingsImpl::setExperimentalCSSVariablesEnabled(bool enabled)
347 {
348     m_settings->setCSSVariablesEnabled(enabled);
349 }
350
351 void WebSettingsImpl::setOpenGLMultisamplingEnabled(bool enabled)
352 {
353     m_settings->setOpenGLMultisamplingEnabled(enabled);
354 }
355
356 void WebSettingsImpl::setPrivilegedWebGLExtensionsEnabled(bool enabled)
357 {
358     m_settings->setPrivilegedWebGLExtensionsEnabled(enabled);
359 }
360
361 void WebSettingsImpl::setRenderVSyncEnabled(bool enabled)
362 {
363     m_renderVSyncEnabled = enabled;
364 }
365
366 void WebSettingsImpl::setWebGLErrorsToConsoleEnabled(bool enabled)
367 {
368     m_settings->setWebGLErrorsToConsoleEnabled(enabled);
369 }
370
371 void WebSettingsImpl::setShowDebugBorders(bool show)
372 {
373     m_settings->setShowDebugBorders(show);
374 }
375
376 void WebSettingsImpl::setShowFPSCounter(bool show)
377 {
378     m_showFPSCounter = show;
379 }
380
381 void WebSettingsImpl::setShowPlatformLayerTree(bool show)
382 {
383     m_showPlatformLayerTree = show;
384 }
385
386 void WebSettingsImpl::setShowPaintRects(bool show)
387 {
388     m_showPaintRects = show;
389 }
390
391 void WebSettingsImpl::setEditingBehavior(EditingBehavior behavior)
392 {
393     m_settings->setEditingBehaviorType(static_cast<WebCore::EditingBehaviorType>(behavior));
394 }
395
396 void WebSettingsImpl::setAcceleratedCompositingEnabled(bool enabled)
397 {
398     m_settings->setAcceleratedCompositingEnabled(enabled);
399     m_settings->setScrollingCoordinatorEnabled(enabled);
400 }
401
402 void WebSettingsImpl::setForceCompositingMode(bool enabled)
403 {
404     m_settings->setForceCompositingMode(enabled);
405 }
406
407 void WebSettingsImpl::setForceSoftwareCompositing(bool enabled)
408 {
409     m_forceSoftwareCompositing = enabled;
410 }
411
412 void WebSettingsImpl::setMockScrollbarsEnabled(bool enabled)
413 {
414     m_settings->setMockScrollbarsEnabled(enabled);
415 }
416
417 void WebSettingsImpl::setAcceleratedCompositingFor3DTransformsEnabled(bool enabled)
418 {
419     m_settings->setAcceleratedCompositingFor3DTransformsEnabled(enabled);
420 }
421
422 void WebSettingsImpl::setAcceleratedCompositingForVideoEnabled(bool enabled)
423 {
424     m_settings->setAcceleratedCompositingForVideoEnabled(enabled);
425 }
426
427 void WebSettingsImpl::setAcceleratedCompositingForPluginsEnabled(bool enabled)
428 {
429     m_settings->setAcceleratedCompositingForPluginsEnabled(enabled);
430 }
431
432 void WebSettingsImpl::setAcceleratedCompositingForCanvasEnabled(bool enabled)
433 {
434     m_settings->setAcceleratedCompositingForCanvasEnabled(enabled);
435 }
436
437 void WebSettingsImpl::setAcceleratedCompositingForAnimationEnabled(bool enabled)
438 {
439     m_settings->setAcceleratedCompositingForAnimationEnabled(enabled);
440 }
441
442 void WebSettingsImpl::setAcceleratedFiltersEnabled(bool enabled)
443 {
444     m_settings->setAcceleratedFiltersEnabled(enabled);
445 }
446
447 void WebSettingsImpl::setAccelerated2dCanvasEnabled(bool enabled)
448 {
449     m_settings->setAccelerated2dCanvasEnabled(enabled);
450 }
451
452 void WebSettingsImpl::setDeferred2dCanvasEnabled(bool enabled)
453 {
454     m_settings->setDeferred2dCanvasEnabled(enabled);
455 }
456
457 void WebSettingsImpl::setAcceleratedCompositingForFixedPositionEnabled(bool enabled)
458 {
459     m_settings->setAcceleratedCompositingForFixedPositionEnabled(enabled);
460 }
461
462 void WebSettingsImpl::setMinimumAccelerated2dCanvasSize(int numPixels)
463 {
464     m_settings->setMinimumAccelerated2dCanvasSize(numPixels);
465 }
466
467 void WebSettingsImpl::setMemoryInfoEnabled(bool enabled)
468 {
469     m_settings->setMemoryInfoEnabled(enabled);
470 }
471
472 void WebSettingsImpl::setHyperlinkAuditingEnabled(bool enabled)
473 {
474     m_settings->setHyperlinkAuditingEnabled(enabled);
475 }
476
477 void WebSettingsImpl::setLayoutFallbackWidth(int width)
478 {
479     m_settings->setLayoutFallbackWidth(width);
480 }
481
482 void WebSettingsImpl::setAsynchronousSpellCheckingEnabled(bool enabled)
483 {
484     m_settings->setAsynchronousSpellCheckingEnabled(enabled);
485 }
486
487 void WebSettingsImpl::setUnifiedTextCheckerEnabled(bool enabled)
488 {
489     m_settings->setUnifiedTextCheckerEnabled(enabled);
490 }
491
492 void WebSettingsImpl::setCaretBrowsingEnabled(bool enabled)
493 {
494     m_settings->setCaretBrowsingEnabled(enabled);
495 }
496
497 void WebSettingsImpl::setInteractiveFormValidationEnabled(bool enabled)
498 {
499     m_settings->setInteractiveFormValidationEnabled(enabled);
500 }
501
502 void WebSettingsImpl::setValidationMessageTimerMagnification(int newValue)
503 {
504     m_settings->setValidationMessageTimerMagnification(newValue);
505 }
506
507 void WebSettingsImpl::setMinimumTimerInterval(double interval)
508 {
509     m_settings->setMinDOMTimerInterval(interval);
510 }
511
512 void WebSettingsImpl::setFullScreenEnabled(bool enabled)
513 {
514 #if ENABLE(FULLSCREEN_API)
515     m_settings->setFullScreenEnabled(enabled);
516 #else
517     UNUSED_PARAM(enabled);
518 #endif
519 }
520
521 void WebSettingsImpl::setAllowDisplayOfInsecureContent(bool enabled)
522 {
523     m_settings->setAllowDisplayOfInsecureContent(enabled);
524 }
525
526 void WebSettingsImpl::setAllowRunningOfInsecureContent(bool enabled)
527 {
528     m_settings->setAllowRunningOfInsecureContent(enabled);
529 }
530
531 void WebSettingsImpl::setPasswordEchoEnabled(bool flag)
532 {
533     m_settings->setPasswordEchoEnabled(flag);
534 }
535
536 void WebSettingsImpl::setPasswordEchoDurationInSeconds(double durationInSeconds)
537 {
538     m_settings->setPasswordEchoDurationInSeconds(durationInSeconds);
539 }
540
541 void WebSettingsImpl::setShouldPrintBackgrounds(bool enabled)
542 {
543     m_settings->setShouldPrintBackgrounds(enabled);
544 }
545
546 void WebSettingsImpl::setEnableScrollAnimator(bool enabled)
547 {
548 #if ENABLE(SMOOTH_SCROLLING)
549     m_settings->setEnableScrollAnimator(enabled);
550 #else
551     UNUSED_PARAM(enabled);
552 #endif
553 }
554
555 bool WebSettingsImpl::scrollAnimatorEnabled() const
556 {
557 #if ENABLE(SMOOTH_SCROLLING)
558     return m_settings->scrollAnimatorEnabled();
559 #else
560     return false;
561 #endif
562 }
563
564 void WebSettingsImpl::setVisualWordMovementEnabled(bool enabled)
565 {
566     m_settings->setVisualWordMovementEnabled(enabled);
567 }
568
569 void WebSettingsImpl::setShouldDisplaySubtitles(bool enabled)
570 {
571 #if ENABLE(VIDEO_TRACK)
572     m_settings->setShouldDisplaySubtitles(enabled);
573 #else
574     UNUSED_PARAM(enabled);
575 #endif
576 }
577
578 void WebSettingsImpl::setShouldDisplayCaptions(bool enabled)
579 {
580 #if ENABLE(VIDEO_TRACK)
581     m_settings->setShouldDisplayCaptions(enabled);
582 #else
583     UNUSED_PARAM(enabled);
584 #endif
585 }
586
587 void WebSettingsImpl::setShouldDisplayTextDescriptions(bool enabled)
588 {
589 #if ENABLE(VIDEO_TRACK)
590     m_settings->setShouldDisplayTextDescriptions(enabled);
591 #else
592     UNUSED_PARAM(enabled);
593 #endif
594 }
595
596 void WebSettingsImpl::setAcceleratedPaintingEnabled(bool enabled)
597 {
598     m_settings->setAcceleratedDrawingEnabled(enabled);
599 }
600
601 void WebSettingsImpl::setMediaPlaybackRequiresUserGesture(bool required)
602 {
603     m_settings->setMediaPlaybackRequiresUserGesture(required);
604 }
605
606 void WebSettingsImpl::setFixedPositionCreatesStackingContext(bool creates)
607 {
608     m_settings->setFixedPositionCreatesStackingContext(creates);
609 }
610
611 void WebSettingsImpl::setViewportEnabled(bool enabled)
612 {
613     m_viewportEnabled = enabled;
614 }
615
616 void WebSettingsImpl::setDefaultTileSize(WebSize size)
617 {
618     m_defaultTileSize = size;
619 }
620
621 void WebSettingsImpl::setMaxUntiledLayerSize(WebSize size)
622 {
623     m_maxUntiledLayerSize = size;
624 }
625
626 void WebSettingsImpl::setSyncXHRInDocumentsEnabled(bool enabled)
627 {
628     m_settings->setSyncXHRInDocumentsEnabled(enabled);
629 }
630
631 void WebSettingsImpl::setCookieEnabled(bool enabled)
632 {
633     m_settings->setCookieEnabled(enabled);
634 }
635
636 } // namespace WebKit