18f9ac37138eb2a132d31aaa211e6d4e00b75854
[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_compositeToTextureEnabled(false)
51     , m_showFPSCounter(false)
52     , m_showPlatformLayerTree(false)
53 {
54     ASSERT(settings);
55 }
56
57 void WebSettingsImpl::setStandardFontFamily(const WebString& font, UScriptCode script)
58 {
59     m_settings->setStandardFontFamily(font, script);
60 }
61
62 void WebSettingsImpl::setFixedFontFamily(const WebString& font, UScriptCode script)
63 {
64     m_settings->setFixedFontFamily(font, script);
65 }
66
67 void WebSettingsImpl::setSerifFontFamily(const WebString& font, UScriptCode script)
68 {
69     m_settings->setSerifFontFamily(font, script);
70 }
71
72 void WebSettingsImpl::setSansSerifFontFamily(const WebString& font, UScriptCode script)
73 {
74     m_settings->setSansSerifFontFamily(font, script);
75 }
76
77 void WebSettingsImpl::setCursiveFontFamily(const WebString& font, UScriptCode script)
78 {
79     m_settings->setCursiveFontFamily(font, script);
80 }
81
82 void WebSettingsImpl::setFantasyFontFamily(const WebString& font, UScriptCode script)
83 {
84     m_settings->setFantasyFontFamily(font, script);
85 }
86
87 void WebSettingsImpl::setDefaultFontSize(int size)
88 {
89     m_settings->setDefaultFontSize(size);
90 #if defined(OS_WIN)
91     // RenderTheme is a singleton that needs to know the default font size to
92     // draw some form controls.  We let it know each time the size changes.
93     WebCore::RenderThemeChromiumWin::setDefaultFontSize(size);
94 #endif
95 }
96
97 void WebSettingsImpl::setDefaultFixedFontSize(int size)
98 {
99     m_settings->setDefaultFixedFontSize(size);
100 }
101
102 void WebSettingsImpl::setMinimumFontSize(int size)
103 {
104     m_settings->setMinimumFontSize(size);
105 }
106
107 void WebSettingsImpl::setMinimumLogicalFontSize(int size)
108 {
109     m_settings->setMinimumLogicalFontSize(size);
110 }
111
112 void WebSettingsImpl::setDefaultDeviceScaleFactor(int defaultDeviceScaleFactor)
113 {
114     m_settings->setDefaultDeviceScaleFactor(defaultDeviceScaleFactor);
115 }
116
117 void WebSettingsImpl::setDefaultTextEncodingName(const WebString& encoding)
118 {
119     m_settings->setDefaultTextEncodingName((String)encoding);
120 }
121
122 void WebSettingsImpl::setJavaScriptEnabled(bool enabled)
123 {
124     m_settings->setScriptEnabled(enabled);
125 }
126
127 void WebSettingsImpl::setWebSecurityEnabled(bool enabled)
128 {
129     m_settings->setWebSecurityEnabled(enabled);
130 }
131
132 void WebSettingsImpl::setJavaScriptCanOpenWindowsAutomatically(bool canOpenWindows)
133 {
134     m_settings->setJavaScriptCanOpenWindowsAutomatically(canOpenWindows);
135 }
136
137 void WebSettingsImpl::setLoadsImagesAutomatically(bool loadsImagesAutomatically)
138 {
139     m_settings->setLoadsImagesAutomatically(loadsImagesAutomatically);
140 }
141
142 void WebSettingsImpl::setImagesEnabled(bool enabled)
143 {
144     m_settings->setImagesEnabled(enabled);
145 }
146
147 void WebSettingsImpl::setPluginsEnabled(bool enabled)
148 {
149     m_settings->setPluginsEnabled(enabled);
150 }
151
152 void WebSettingsImpl::setDOMPasteAllowed(bool enabled)
153 {
154     m_settings->setDOMPasteAllowed(enabled);
155 }
156
157 void WebSettingsImpl::setDeveloperExtrasEnabled(bool enabled)
158 {
159     m_settings->setDeveloperExtrasEnabled(enabled);
160 }
161
162 void WebSettingsImpl::setNeedsSiteSpecificQuirks(bool enabled)
163 {
164     m_settings->setNeedsSiteSpecificQuirks(enabled);
165 }
166
167 void WebSettingsImpl::setShrinksStandaloneImagesToFit(bool shrinkImages)
168 {
169     m_settings->setShrinksStandaloneImagesToFit(shrinkImages);
170 }
171
172 void WebSettingsImpl::setUsesEncodingDetector(bool usesDetector)
173 {
174     m_settings->setUsesEncodingDetector(usesDetector);
175 }
176
177 void WebSettingsImpl::setTextAreasAreResizable(bool areResizable)
178 {
179     m_settings->setTextAreasAreResizable(areResizable);
180 }
181
182 void WebSettingsImpl::setJavaEnabled(bool enabled)
183 {
184     m_settings->setJavaEnabled(enabled);
185 }
186
187 void WebSettingsImpl::setAllowScriptsToCloseWindows(bool allow)
188 {
189     m_settings->setAllowScriptsToCloseWindows(allow);
190 }
191
192 void WebSettingsImpl::setUserStyleSheetLocation(const WebURL& location)
193 {
194     m_settings->setUserStyleSheetLocation(location);
195 }
196
197 void WebSettingsImpl::setAuthorAndUserStylesEnabled(bool enabled)
198 {
199     m_settings->setAuthorAndUserStylesEnabled(enabled);
200 }
201
202 void WebSettingsImpl::setUsesPageCache(bool usesPageCache)
203 {
204     m_settings->setUsesPageCache(usesPageCache);
205 }
206
207 void WebSettingsImpl::setPageCacheSupportsPlugins(bool pageCacheSupportsPlugins)
208 {
209     m_settings->setPageCacheSupportsPlugins(pageCacheSupportsPlugins);
210 }
211
212 void WebSettingsImpl::setDownloadableBinaryFontsEnabled(bool enabled)
213 {
214     m_settings->setDownloadableBinaryFontsEnabled(enabled);
215 }
216
217 void WebSettingsImpl::setJavaScriptCanAccessClipboard(bool enabled)
218 {
219     m_settings->setJavaScriptCanAccessClipboard(enabled);
220 }
221
222 void WebSettingsImpl::setXSSAuditorEnabled(bool enabled)
223 {
224     m_settings->setXSSAuditorEnabled(enabled);
225 }
226
227 void WebSettingsImpl::setDNSPrefetchingEnabled(bool enabled)
228 {
229     m_settings->setDNSPrefetchingEnabled(enabled);
230 }
231
232 void WebSettingsImpl::setFixedElementsLayoutRelativeToFrame(bool fixedElementsLayoutRelativeToFrame)
233 {
234     m_settings->setFixedElementsLayoutRelativeToFrame(fixedElementsLayoutRelativeToFrame);
235 }
236
237 void WebSettingsImpl::setLocalStorageEnabled(bool enabled)
238 {
239     m_settings->setLocalStorageEnabled(enabled);
240 }
241
242 void WebSettingsImpl::setEditableLinkBehaviorNeverLive()
243 {
244     // FIXME: If you ever need more behaviors than this, then we should probably
245     //        define an enum in WebSettings.h and have a switch statement that
246     //        translates.  Until then, this is probably fine, though.
247     m_settings->setEditableLinkBehavior(WebCore::EditableLinkNeverLive);
248 }
249
250 void WebSettingsImpl::setFrameFlatteningEnabled(bool enabled)
251 {
252     m_settings->setFrameFlatteningEnabled(enabled);
253 }
254
255 void WebSettingsImpl::setFontRenderingModeNormal()
256 {
257     // FIXME: If you ever need more behaviors than this, then we should probably
258     //        define an enum in WebSettings.h and have a switch statement that
259     //        translates.  Until then, this is probably fine, though.
260     m_settings->setFontRenderingMode(WebCore::NormalRenderingMode);
261 }
262
263 void WebSettingsImpl::setAllowUniversalAccessFromFileURLs(bool allow)
264 {
265     m_settings->setAllowUniversalAccessFromFileURLs(allow);
266 }
267
268 void WebSettingsImpl::setAllowFileAccessFromFileURLs(bool allow)
269 {
270     m_settings->setAllowFileAccessFromFileURLs(allow);
271 }
272
273 void WebSettingsImpl::setTextDirectionSubmenuInclusionBehaviorNeverIncluded()
274 {
275     // FIXME: If you ever need more behaviors than this, then we should probably
276     //        define an enum in WebSettings.h and have a switch statement that
277     //        translates.  Until then, this is probably fine, though.
278     m_settings->setTextDirectionSubmenuInclusionBehavior(WebCore::TextDirectionSubmenuNeverIncluded);
279 }
280
281 void WebSettingsImpl::setOfflineWebApplicationCacheEnabled(bool enabled)
282 {
283     m_settings->setOfflineWebApplicationCacheEnabled(enabled);
284 }
285
286 void WebSettingsImpl::setWebAudioEnabled(bool enabled)
287 {
288     m_settings->setWebAudioEnabled(enabled);
289 }
290
291 void WebSettingsImpl::setExperimentalWebGLEnabled(bool enabled)
292 {
293     m_settings->setWebGLEnabled(enabled);
294 }
295
296 void WebSettingsImpl::setExperimentalCSSRegionsEnabled(bool enabled)
297 {
298     m_settings->setCSSRegionsEnabled(enabled);
299 }
300
301 void WebSettingsImpl::setExperimentalCSSCustomFilterEnabled(bool enabled)
302 {
303     m_settings->setCSSCustomFilterEnabled(enabled);
304 }
305
306 void WebSettingsImpl::setOpenGLMultisamplingEnabled(bool enabled)
307 {
308     m_settings->setOpenGLMultisamplingEnabled(enabled);
309 }
310
311 void WebSettingsImpl::setPrivilegedWebGLExtensionsEnabled(bool enabled)
312 {
313     m_settings->setPrivilegedWebGLExtensionsEnabled(enabled);
314 }
315
316 void WebSettingsImpl::setWebGLErrorsToConsoleEnabled(bool enabled)
317 {
318     m_settings->setWebGLErrorsToConsoleEnabled(enabled);
319 }
320
321 void WebSettingsImpl::setShowDebugBorders(bool show)
322 {
323     m_settings->setShowDebugBorders(show);
324 }
325
326 void WebSettingsImpl::setShowFPSCounter(bool show)
327 {
328     m_showFPSCounter = show;
329 }
330
331 void WebSettingsImpl::setShowPlatformLayerTree(bool show)
332 {
333     m_showPlatformLayerTree = show;
334 }
335
336 void WebSettingsImpl::setEditingBehavior(EditingBehavior behavior)
337 {
338     m_settings->setEditingBehaviorType(static_cast<WebCore::EditingBehaviorType>(behavior));
339 }
340
341 void WebSettingsImpl::setAcceleratedCompositingEnabled(bool enabled)
342 {
343     m_settings->setAcceleratedCompositingEnabled(enabled);
344     m_settings->setScrollingCoordinatorEnabled(enabled);
345 }
346
347 void WebSettingsImpl::setForceCompositingMode(bool enabled)
348 {
349     m_settings->setForceCompositingMode(enabled);
350 }
351
352 void WebSettingsImpl::setMockScrollbarsEnabled(bool enabled)
353 {
354     m_settings->setMockScrollbarsEnabled(enabled);
355 }
356
357 void WebSettingsImpl::setCompositeToTextureEnabled(bool enabled)
358 {
359     m_compositeToTextureEnabled = enabled;
360 }
361
362 void WebSettingsImpl::setAcceleratedCompositingFor3DTransformsEnabled(bool enabled)
363 {
364     m_settings->setAcceleratedCompositingFor3DTransformsEnabled(enabled);
365 }
366
367 void WebSettingsImpl::setAcceleratedCompositingForVideoEnabled(bool enabled)
368 {
369     m_settings->setAcceleratedCompositingForVideoEnabled(enabled);
370 }
371
372 void WebSettingsImpl::setAcceleratedCompositingForPluginsEnabled(bool enabled)
373 {
374     m_settings->setAcceleratedCompositingForPluginsEnabled(enabled);
375 }
376
377 void WebSettingsImpl::setAcceleratedCompositingForCanvasEnabled(bool enabled)
378 {
379     m_settings->setAcceleratedCompositingForCanvasEnabled(enabled);
380 }
381
382 void WebSettingsImpl::setAcceleratedCompositingForAnimationEnabled(bool enabled)
383 {
384     m_settings->setAcceleratedCompositingForAnimationEnabled(enabled);
385 }
386
387 void WebSettingsImpl::setAcceleratedFiltersEnabled(bool enabled)
388 {
389     m_settings->setAcceleratedFiltersEnabled(enabled);
390 }
391
392 void WebSettingsImpl::setAccelerated2dCanvasEnabled(bool enabled)
393 {
394     m_settings->setAccelerated2dCanvasEnabled(enabled);
395 }
396
397 void WebSettingsImpl::setDeferred2dCanvasEnabled(bool enabled)
398 {
399     m_settings->setDeferred2dCanvasEnabled(enabled);
400 }
401
402 void WebSettingsImpl::setAcceleratedCompositingForFixedPositionEnabled(bool enabled)
403 {
404     m_settings->setAcceleratedCompositingForFixedPositionEnabled(enabled);
405 }
406
407 void WebSettingsImpl::setMinimumAccelerated2dCanvasSize(int numPixels)
408 {
409     m_settings->setMinimumAccelerated2dCanvasSize(numPixels);
410 }
411
412 void WebSettingsImpl::setMemoryInfoEnabled(bool enabled)
413 {
414     m_settings->setMemoryInfoEnabled(enabled);
415 }
416
417 void WebSettingsImpl::setHyperlinkAuditingEnabled(bool enabled)
418 {
419     m_settings->setHyperlinkAuditingEnabled(enabled);
420 }
421
422 void WebSettingsImpl::setLayoutFallbackWidth(int width)
423 {
424     m_settings->setLayoutFallbackWidth(width);
425 }
426
427 void WebSettingsImpl::setAsynchronousSpellCheckingEnabled(bool enabled)
428 {
429     m_settings->setAsynchronousSpellCheckingEnabled(enabled);
430 }
431
432 void WebSettingsImpl::setUnifiedTextCheckerEnabled(bool enabled)
433 {
434     m_settings->setUnifiedTextCheckerEnabled(enabled);
435 }
436
437 void WebSettingsImpl::setCaretBrowsingEnabled(bool enabled)
438 {
439     m_settings->setCaretBrowsingEnabled(enabled);
440 }
441
442 void WebSettingsImpl::setInteractiveFormValidationEnabled(bool enabled)
443 {
444     m_settings->setInteractiveFormValidationEnabled(enabled);
445 }
446
447 void WebSettingsImpl::setValidationMessageTimerMagnification(int newValue)
448 {
449     m_settings->setValidationMessageTimerMagnification(newValue);
450 }
451
452 void WebSettingsImpl::setMinimumTimerInterval(double interval)
453 {
454     m_settings->setMinDOMTimerInterval(interval);
455 }
456
457 void WebSettingsImpl::setFullScreenEnabled(bool enabled)
458 {
459 #if ENABLE(FULLSCREEN_API)
460     m_settings->setFullScreenEnabled(enabled);
461 #else
462     UNUSED_PARAM(enabled);
463 #endif
464 }
465
466 void WebSettingsImpl::setAllowDisplayOfInsecureContent(bool enabled)
467 {
468     m_settings->setAllowDisplayOfInsecureContent(enabled);
469 }
470
471 void WebSettingsImpl::setAllowRunningOfInsecureContent(bool enabled)
472 {
473     m_settings->setAllowRunningOfInsecureContent(enabled);
474 }
475
476 void WebSettingsImpl::setPasswordEchoEnabled(bool flag)
477 {
478     m_settings->setPasswordEchoEnabled(flag);
479 }
480
481 void WebSettingsImpl::setPasswordEchoDurationInSeconds(double durationInSeconds)
482 {
483     m_settings->setPasswordEchoDurationInSeconds(durationInSeconds);
484 }
485
486 void WebSettingsImpl::setShouldPrintBackgrounds(bool enabled)
487 {
488     m_settings->setShouldPrintBackgrounds(enabled);
489 }
490
491 void WebSettingsImpl::setEnableScrollAnimator(bool enabled)
492 {
493 #if ENABLE(SMOOTH_SCROLLING)
494     m_settings->setEnableScrollAnimator(enabled);
495 #else
496     UNUSED_PARAM(enabled);
497 #endif
498 }
499
500 void WebSettingsImpl::setHixie76WebSocketProtocolEnabled(bool enabled)
501 {
502 #if ENABLE(WEB_SOCKETS)
503     m_settings->setUseHixie76WebSocketProtocol(enabled);
504 #else
505     UNUSED_PARAM(enabled);
506 #endif
507 }
508
509 void WebSettingsImpl::setVisualWordMovementEnabled(bool enabled)
510 {
511     m_settings->setVisualWordMovementEnabled(enabled);
512 }
513
514 void WebSettingsImpl::setShouldDisplaySubtitles(bool enabled)
515 {
516 #if ENABLE(VIDEO_TRACK)
517     m_settings->setShouldDisplaySubtitles(enabled);
518 #else
519     UNUSED_PARAM(enabled);
520 #endif
521 }
522
523 void WebSettingsImpl::setShouldDisplayCaptions(bool enabled)
524 {
525 #if ENABLE(VIDEO_TRACK)
526     m_settings->setShouldDisplayCaptions(enabled);
527 #else
528     UNUSED_PARAM(enabled);
529 #endif
530 }
531
532 void WebSettingsImpl::setShouldDisplayTextDescriptions(bool enabled)
533 {
534 #if ENABLE(VIDEO_TRACK)
535     m_settings->setShouldDisplayTextDescriptions(enabled);
536 #else
537     UNUSED_PARAM(enabled);
538 #endif
539 }
540
541 void WebSettingsImpl::setAcceleratedPaintingEnabled(bool enabled)
542 {
543     m_settings->setAcceleratedDrawingEnabled(enabled);
544 }
545
546 void WebSettingsImpl::setPerTilePaintingEnabled(bool enabled)
547 {
548     m_settings->setPerTileDrawingEnabled(enabled);
549 }
550
551 void WebSettingsImpl::setPartialSwapEnabled(bool enabled)
552 {
553     m_settings->setPartialSwapEnabled(enabled);
554 }
555
556 void WebSettingsImpl::setThreadedAnimationEnabled(bool enabled)
557 {
558     m_settings->setThreadedAnimationEnabled(enabled);
559 }
560
561 } // namespace WebKit