Home | History | Annotate | Download | only in web
      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 #ifndef WebSettingsImpl_h
     32 #define WebSettingsImpl_h
     33 
     34 #include "WebSettings.h"
     35 
     36 namespace WebCore {
     37 class Settings;
     38 }
     39 
     40 namespace WebKit {
     41 
     42 class WebSettingsImpl : public WebSettings {
     43 public:
     44     explicit WebSettingsImpl(WebCore::Settings*);
     45     virtual ~WebSettingsImpl() { }
     46 
     47     virtual bool deviceSupportsTouch();
     48     virtual bool scrollAnimatorEnabled() const;
     49     virtual bool touchEditingEnabled() const;
     50     virtual bool viewportEnabled() const { return m_viewportEnabled; }
     51     virtual void setAccelerated2dCanvasEnabled(bool);
     52     virtual void setAcceleratedCompositingEnabled(bool);
     53     virtual void setAcceleratedCompositingFor3DTransformsEnabled(bool);
     54     virtual void setAcceleratedCompositingForAnimationEnabled(bool);
     55     virtual void setAcceleratedCompositingForCanvasEnabled(bool);
     56     virtual void setAcceleratedCompositingForFiltersEnabled(bool);
     57     virtual void setAcceleratedCompositingForFixedPositionEnabled(bool);
     58     virtual void setAcceleratedCompositingForOverflowScrollEnabled(bool);
     59     virtual void setAcceleratedCompositingForTransitionEnabled(bool);
     60     virtual void setAcceleratedCompositingForFixedRootBackgroundEnabled(bool);
     61     virtual void setAcceleratedCompositingForPluginsEnabled(bool);
     62     virtual void setAcceleratedCompositingForScrollableFramesEnabled(bool);
     63     virtual void setAcceleratedCompositingForVideoEnabled(bool);
     64     virtual void setAcceleratedFiltersEnabled(bool);
     65     virtual void setAllowDisplayOfInsecureContent(bool);
     66     virtual void setAllowFileAccessFromFileURLs(bool);
     67     virtual void setAllowCustomScrollbarInMainFrame(bool);
     68     virtual void setAllowRunningOfInsecureContent(bool);
     69     virtual void setAllowScriptsToCloseWindows(bool);
     70     virtual void setAllowUniversalAccessFromFileURLs(bool);
     71     virtual void setAntialiased2dCanvasEnabled(bool);
     72     virtual void setAsynchronousSpellCheckingEnabled(bool);
     73     virtual void setAuthorAndUserStylesEnabled(bool);
     74     virtual void setAutoZoomFocusedNodeToLegibleScale(bool);
     75     virtual void setCaretBrowsingEnabled(bool);
     76     virtual void setCompositedScrollingForFramesEnabled(bool);
     77     virtual void setCompositorTouchHitTesting(bool);
     78     virtual void setCookieEnabled(bool);
     79     virtual void setCursiveFontFamily(const WebString&, UScriptCode = USCRIPT_COMMON);
     80     virtual void setDNSPrefetchingEnabled(bool);
     81     virtual void setDOMPasteAllowed(bool);
     82     virtual void setDefaultFixedFontSize(int);
     83     virtual void setDefaultFontSize(int);
     84     virtual void setDefaultTextEncodingName(const WebString&);
     85     virtual void setDefaultVideoPosterURL(const WebString&);
     86     virtual void setDeferred2dCanvasEnabled(bool);
     87     virtual void setDeferredImageDecodingEnabled(bool);
     88     virtual void setDeviceSupportsMouse(bool);
     89     virtual void setDeviceSupportsTouch(bool);
     90     virtual void setDoubleTapToZoomEnabled(bool);
     91     virtual void setDownloadableBinaryFontsEnabled(bool);
     92     virtual void setEditableLinkBehaviorNeverLive();
     93     virtual void setEditingBehavior(EditingBehavior);
     94     virtual void setEnableScrollAnimator(bool);
     95     virtual void setEnableTouchAdjustment(bool);
     96     virtual void setExperimentalCSSCustomFilterEnabled(bool);
     97     virtual void setRegionBasedColumnsEnabled(bool);
     98     virtual void setCSSStickyPositionEnabled(bool);
     99     virtual void setExperimentalWebGLEnabled(bool);
    100     virtual void setExperimentalWebSocketEnabled(bool);
    101     virtual void setFantasyFontFamily(const WebString&, UScriptCode = USCRIPT_COMMON);
    102     virtual void setFixedFontFamily(const WebString&, UScriptCode = USCRIPT_COMMON);
    103     virtual void setFixedPositionCreatesStackingContext(bool);
    104     virtual void setForceCompositingMode(bool);
    105     virtual void setFullScreenEnabled(bool);
    106     virtual void setGestureTapHighlightEnabled(bool);
    107     virtual void setHyperlinkAuditingEnabled(bool);
    108     virtual void setIgnoreMainFrameOverflowHiddenQuirk(bool);
    109     virtual void setImagesEnabled(bool);
    110     virtual void setJavaEnabled(bool);
    111     virtual void setJavaScriptCanAccessClipboard(bool);
    112     virtual void setJavaScriptCanOpenWindowsAutomatically(bool);
    113     virtual void setJavaScriptEnabled(bool);
    114     virtual void setLayoutFallbackWidth(int);
    115     virtual void setLoadsImagesAutomatically(bool);
    116     virtual void setLoadWithOverviewMode(bool);
    117     virtual void setLocalStorageEnabled(bool);
    118     virtual void setMediaPlaybackRequiresUserGesture(bool);
    119     virtual void setMemoryInfoEnabled(bool);
    120     virtual void setMinimumAccelerated2dCanvasSize(int);
    121     virtual void setMinimumFontSize(int);
    122     virtual void setMinimumLogicalFontSize(int);
    123     virtual void setMockScrollbarsEnabled(bool);
    124     virtual void setNeedsSiteSpecificQuirks(bool);
    125     virtual void setOfflineWebApplicationCacheEnabled(bool);
    126     virtual void setOpenGLMultisamplingEnabled(bool);
    127     virtual void setPasswordEchoDurationInSeconds(double);
    128     virtual void setPasswordEchoEnabled(bool);
    129     virtual void setPerTilePaintingEnabled(bool);
    130     virtual void setPictographFontFamily(const WebString&, UScriptCode = USCRIPT_COMMON);
    131     virtual void setPinchOverlayScrollbarThickness(int);
    132     virtual void setPinchVirtualViewportEnabled(bool);
    133     virtual void setPluginsEnabled(bool);
    134     virtual void setPrivilegedWebGLExtensionsEnabled(bool);
    135     virtual void setRenderVSyncNotificationEnabled(bool);
    136     virtual void setReportScreenSizeInPhysicalPixelsQuirk(bool);
    137     virtual void setSansSerifFontFamily(const WebString&, UScriptCode = USCRIPT_COMMON);
    138     virtual void setSelectTrailingWhitespaceEnabled(bool);
    139     virtual void setSelectionIncludesAltImageText(bool);
    140     virtual void setSerifFontFamily(const WebString&, UScriptCode = USCRIPT_COMMON);
    141     virtual void setShouldDisplayCaptions(bool);
    142     virtual void setShouldDisplaySubtitles(bool);
    143     virtual void setShouldDisplayTextDescriptions(bool);
    144     virtual void setShouldPrintBackgrounds(bool);
    145     virtual void setShouldClearDocumentBackground(bool);
    146     virtual void setShouldRespectImageOrientation(bool);
    147     virtual void setShowFPSCounter(bool);
    148     virtual void setShowPaintRects(bool);
    149     virtual void setShrinksStandaloneImagesToFit(bool);
    150     virtual void setSmartInsertDeleteEnabled(bool);
    151     virtual void setSpatialNavigationEnabled(bool);
    152     virtual void setStandardFontFamily(const WebString&, UScriptCode = USCRIPT_COMMON);
    153     virtual void setSupportDeprecatedTargetDensityDPI(bool);
    154     virtual void setSupportsMultipleWindows(bool);
    155     virtual void setSyncXHRInDocumentsEnabled(bool);
    156     virtual void setTextAreasAreResizable(bool);
    157     virtual void setTextAutosizingEnabled(bool);
    158     virtual void setTextAutosizingFontScaleFactor(float);
    159     virtual void setTouchDragDropEnabled(bool);
    160     virtual void setTouchEditingEnabled(bool);
    161     virtual void setThreadedHTMLParser(bool);
    162     virtual void setUnifiedTextCheckerEnabled(bool);
    163     virtual void setUnsafePluginPastingEnabled(bool);
    164     virtual void setUserStyleSheetLocation(const WebURL&);
    165     virtual void setUsesEncodingDetector(bool);
    166     virtual void setUseLegacyBackgroundSizeShorthandBehavior(bool);
    167     virtual void setUseWideViewport(bool);
    168     virtual void setValidationMessageTimerMagnification(int);
    169     virtual void setViewportEnabled(bool);
    170     virtual void setViewportMetaLayoutSizeQuirk(bool);
    171     virtual void setViewportMetaMergeQuirk(bool);
    172     virtual void setViewportMetaZeroValuesQuirk(bool);
    173     virtual void setVisualWordMovementEnabled(bool);
    174     virtual void setWebAudioEnabled(bool);
    175     virtual void setWebGLErrorsToConsoleEnabled(bool);
    176     virtual void setWebSecurityEnabled(bool);
    177     virtual void setWideViewportQuirkEnabled(bool);
    178     virtual void setXSSAuditorEnabled(bool);
    179 
    180     bool showFPSCounter() const { return m_showFPSCounter; }
    181     bool showPaintRects() const { return m_showPaintRects; }
    182     bool renderVSyncNotificationEnabled() const { return m_renderVSyncNotificationEnabled; }
    183     bool autoZoomFocusedNodeToLegibleScale() const { return m_autoZoomFocusedNodeToLegibleScale; }
    184     bool gestureTapHighlightEnabled() const { return m_gestureTapHighlightEnabled; }
    185     bool doubleTapToZoomEnabled() const { return m_doubleTapToZoomEnabled; }
    186     bool perTilePaintingEnabled() const { return m_perTilePaintingEnabled; }
    187     bool supportDeprecatedTargetDensityDPI() const { return m_supportDeprecatedTargetDensityDPI; }
    188     bool viewportMetaLayoutSizeQuirk() const { return m_viewportMetaLayoutSizeQuirk; }
    189     int pinchOverlayScrollbarThickness() const { return m_pinchOverlayScrollbarThickness; }
    190 
    191 private:
    192     WebCore::Settings* m_settings;
    193     bool m_showFPSCounter;
    194     bool m_showPaintRects;
    195     bool m_renderVSyncNotificationEnabled;
    196     bool m_viewportEnabled;
    197     bool m_gestureTapHighlightEnabled;
    198     bool m_autoZoomFocusedNodeToLegibleScale;
    199     bool m_deferredImageDecodingEnabled;
    200     bool m_doubleTapToZoomEnabled;
    201     bool m_perTilePaintingEnabled;
    202     bool m_supportDeprecatedTargetDensityDPI;
    203     // This quirk is to maintain compatibility with Android apps built on
    204     // the Android SDK prior to and including version 18. Presumably, this
    205     // can be removed any time after 2015. See http://crbug.com/277369.
    206     bool m_viewportMetaLayoutSizeQuirk;
    207     int m_pinchOverlayScrollbarThickness;
    208 };
    209 
    210 } // namespace WebKit
    211 
    212 #endif
    213