Torne (Richard Coles) | 5267f70 | 2013-06-11 10:57:24 +0100 | [diff] [blame] | 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 WebSettings_h |
| 32 | #define WebSettings_h |
| 33 | |
| 34 | #include "../platform/WebCommon.h" |
| 35 | #include "../platform/WebSize.h" |
| 36 | #include <unicode/uscript.h> |
| 37 | |
Torne (Richard Coles) | 51b2906 | 2013-11-28 11:56:03 +0000 | [diff] [blame] | 38 | namespace blink { |
Torne (Richard Coles) | 5267f70 | 2013-06-11 10:57:24 +0100 | [diff] [blame] | 39 | |
| 40 | class WebString; |
| 41 | class WebURL; |
| 42 | |
| 43 | // WebSettings is owned by the WebView and allows code to modify the settings for |
| 44 | // the WebView's page without any knowledge of WebCore itself. For the most part, |
| 45 | // these functions have a 1:1 mapping with the methods in WebCore/page/Settings.h. |
| 46 | class WebSettings { |
| 47 | public: |
| 48 | enum EditingBehavior { |
| 49 | EditingBehaviorMac, |
| 50 | EditingBehaviorWin, |
| 51 | EditingBehaviorUnix, |
| 52 | EditingBehaviorAndroid |
| 53 | }; |
| 54 | |
Torne (Richard Coles) | 51b2906 | 2013-11-28 11:56:03 +0000 | [diff] [blame] | 55 | virtual bool mainFrameResizesAreOrientationChanges() const = 0; |
Torne (Richard Coles) | 5267f70 | 2013-06-11 10:57:24 +0100 | [diff] [blame] | 56 | virtual bool scrollAnimatorEnabled() const = 0; |
| 57 | virtual bool touchEditingEnabled() const = 0; |
| 58 | virtual bool viewportEnabled() const = 0; |
Torne (Richard Coles) | 51b2906 | 2013-11-28 11:56:03 +0000 | [diff] [blame] | 59 | virtual bool viewportMetaEnabled() const = 0; |
Torne (Richard Coles) | 5267f70 | 2013-06-11 10:57:24 +0100 | [diff] [blame] | 60 | virtual void setAccelerated2dCanvasEnabled(bool) = 0; |
Torne (Richard Coles) | f79f16f | 2013-10-31 11:16:44 +0000 | [diff] [blame] | 61 | virtual void setAccelerated2dCanvasMSAASampleCount(int) = 0; |
Torne (Richard Coles) | 5267f70 | 2013-06-11 10:57:24 +0100 | [diff] [blame] | 62 | virtual void setAcceleratedCompositingEnabled(bool) = 0; |
| 63 | virtual void setAcceleratedCompositingFor3DTransformsEnabled(bool) = 0; |
| 64 | virtual void setAcceleratedCompositingForAnimationEnabled(bool) = 0; |
| 65 | virtual void setAcceleratedCompositingForCanvasEnabled(bool) = 0; |
Ben Murdoch | 591b958 | 2013-07-10 11:41:44 +0100 | [diff] [blame] | 66 | virtual void setAcceleratedCompositingForFiltersEnabled(bool) = 0; |
Ben Murdoch | e69819b | 2013-07-17 14:56:49 +0100 | [diff] [blame] | 67 | virtual void setAcceleratedCompositingForFixedPositionEnabled(bool) = 0; |
| 68 | virtual void setAcceleratedCompositingForFixedRootBackgroundEnabled(bool) = 0; |
Torne (Richard Coles) | d5428f3 | 2014-03-18 10:21:16 +0000 | [diff] [blame] | 69 | virtual void setAcceleratedCompositingForGpuRasterizationHintEnabled(bool) = 0; |
Torne (Richard Coles) | 5267f70 | 2013-06-11 10:57:24 +0100 | [diff] [blame] | 70 | virtual void setAcceleratedCompositingForOverflowScrollEnabled(bool) = 0; |
Torne (Richard Coles) | c0e19a6 | 2013-08-30 15:15:11 +0100 | [diff] [blame] | 71 | virtual void setCompositorDrivenAcceleratedScrollingEnabled(bool) = 0; |
Torne (Richard Coles) | 5267f70 | 2013-06-11 10:57:24 +0100 | [diff] [blame] | 72 | virtual void setAcceleratedCompositingForTransitionEnabled(bool) = 0; |
| 73 | virtual void setAcceleratedCompositingForPluginsEnabled(bool) = 0; |
| 74 | virtual void setAcceleratedCompositingForScrollableFramesEnabled(bool) = 0; |
| 75 | virtual void setAcceleratedCompositingForVideoEnabled(bool) = 0; |
| 76 | virtual void setAcceleratedFiltersEnabled(bool) = 0; |
| 77 | virtual void setAllowDisplayOfInsecureContent(bool) = 0; |
| 78 | virtual void setAllowFileAccessFromFileURLs(bool) = 0; |
| 79 | virtual void setAllowCustomScrollbarInMainFrame(bool) = 0; |
| 80 | virtual void setAllowRunningOfInsecureContent(bool) = 0; |
| 81 | virtual void setAllowScriptsToCloseWindows(bool) = 0; |
| 82 | virtual void setAllowUniversalAccessFromFileURLs(bool) = 0; |
| 83 | virtual void setAntialiased2dCanvasEnabled(bool) = 0; |
| 84 | virtual void setAsynchronousSpellCheckingEnabled(bool) = 0; |
| 85 | virtual void setAutoZoomFocusedNodeToLegibleScale(bool) = 0; |
Torne (Richard Coles) | 5267f70 | 2013-06-11 10:57:24 +0100 | [diff] [blame] | 86 | virtual void setCaretBrowsingEnabled(bool) = 0; |
Torne (Richard Coles) | 51b2906 | 2013-11-28 11:56:03 +0000 | [diff] [blame] | 87 | virtual void setClobberUserAgentInitialScaleQuirk(bool) = 0; |
Torne (Richard Coles) | 5267f70 | 2013-06-11 10:57:24 +0100 | [diff] [blame] | 88 | virtual void setCompositedScrollingForFramesEnabled(bool) = 0; |
Torne (Richard Coles) | 1e20218 | 2013-10-18 15:46:42 +0100 | [diff] [blame] | 89 | virtual void setCompositorTouchHitTesting(bool) = 0; |
Torne (Richard Coles) | 5267f70 | 2013-06-11 10:57:24 +0100 | [diff] [blame] | 90 | virtual void setCookieEnabled(bool) = 0; |
Torne (Richard Coles) | d5428f3 | 2014-03-18 10:21:16 +0000 | [diff] [blame] | 91 | virtual void setNavigateOnDragDrop(bool) = 0; |
Torne (Richard Coles) | 5267f70 | 2013-06-11 10:57:24 +0100 | [diff] [blame] | 92 | virtual void setCursiveFontFamily(const WebString&, UScriptCode = USCRIPT_COMMON) = 0; |
| 93 | virtual void setDNSPrefetchingEnabled(bool) = 0; |
| 94 | virtual void setDOMPasteAllowed(bool) = 0; |
| 95 | virtual void setDefaultFixedFontSize(int) = 0; |
| 96 | virtual void setDefaultFontSize(int) = 0; |
| 97 | virtual void setDefaultTextEncodingName(const WebString&) = 0; |
| 98 | virtual void setDefaultVideoPosterURL(const WebString&) = 0; |
| 99 | void setDeferred2dCanvasEnabled(bool) { } // temporary stub |
Torne (Richard Coles) | 0938029 | 2014-02-21 12:17:33 +0000 | [diff] [blame] | 100 | virtual void setDeferredFiltersEnabled(bool) = 0; |
Torne (Richard Coles) | 5267f70 | 2013-06-11 10:57:24 +0100 | [diff] [blame] | 101 | virtual void setDeferredImageDecodingEnabled(bool) = 0; |
Torne (Richard Coles) | 19cde67 | 2013-11-06 12:28:04 +0000 | [diff] [blame] | 102 | virtual void setDeviceScaleAdjustment(float) = 0; |
Torne (Richard Coles) | 5267f70 | 2013-06-11 10:57:24 +0100 | [diff] [blame] | 103 | virtual void setDeviceSupportsMouse(bool) = 0; |
| 104 | virtual void setDeviceSupportsTouch(bool) = 0; |
| 105 | virtual void setDoubleTapToZoomEnabled(bool) = 0; |
| 106 | virtual void setDownloadableBinaryFontsEnabled(bool) = 0; |
| 107 | virtual void setEditableLinkBehaviorNeverLive() = 0; |
| 108 | virtual void setEditingBehavior(EditingBehavior) = 0; |
| 109 | virtual void setEnableScrollAnimator(bool) = 0; |
| 110 | virtual void setEnableTouchAdjustment(bool) = 0; |
Torne (Richard Coles) | 521d96e | 2013-06-19 11:58:24 +0100 | [diff] [blame] | 111 | virtual void setRegionBasedColumnsEnabled(bool) = 0; |
Torne (Richard Coles) | 5267f70 | 2013-06-11 10:57:24 +0100 | [diff] [blame] | 112 | virtual void setExperimentalWebGLEnabled(bool) = 0; |
| 113 | virtual void setExperimentalWebSocketEnabled(bool) = 0; |
Torne (Richard Coles) | 5267f70 | 2013-06-11 10:57:24 +0100 | [diff] [blame] | 114 | virtual void setFantasyFontFamily(const WebString&, UScriptCode = USCRIPT_COMMON) = 0; |
| 115 | virtual void setFixedFontFamily(const WebString&, UScriptCode = USCRIPT_COMMON) = 0; |
| 116 | virtual void setFixedPositionCreatesStackingContext(bool) = 0; |
Torne (Richard Coles) | 5267f70 | 2013-06-11 10:57:24 +0100 | [diff] [blame] | 117 | virtual void setForceCompositingMode(bool) = 0; |
| 118 | virtual void setFullScreenEnabled(bool) = 0; |
| 119 | virtual void setGestureTapHighlightEnabled(bool) = 0; |
| 120 | virtual void setHyperlinkAuditingEnabled(bool) = 0; |
Torne (Richard Coles) | 06f816c | 2013-09-26 13:25:12 +0100 | [diff] [blame] | 121 | virtual void setIgnoreMainFrameOverflowHiddenQuirk(bool) = 0; |
Torne (Richard Coles) | 5267f70 | 2013-06-11 10:57:24 +0100 | [diff] [blame] | 122 | virtual void setImagesEnabled(bool) = 0; |
| 123 | virtual void setJavaEnabled(bool) = 0; |
| 124 | virtual void setJavaScriptCanAccessClipboard(bool) = 0; |
| 125 | virtual void setJavaScriptCanOpenWindowsAutomatically(bool) = 0; |
| 126 | virtual void setJavaScriptEnabled(bool) = 0; |
Torne (Richard Coles) | 51b2906 | 2013-11-28 11:56:03 +0000 | [diff] [blame] | 127 | virtual void setLayerSquashingEnabled(bool) = 0; |
Torne (Richard Coles) | 5267f70 | 2013-06-11 10:57:24 +0100 | [diff] [blame] | 128 | virtual void setLayoutFallbackWidth(int) = 0; |
| 129 | virtual void setLoadsImagesAutomatically(bool) = 0; |
| 130 | virtual void setLoadWithOverviewMode(bool) = 0; |
| 131 | virtual void setLocalStorageEnabled(bool) = 0; |
Torne (Richard Coles) | 1e20218 | 2013-10-18 15:46:42 +0100 | [diff] [blame] | 132 | virtual void setMainFrameClipsContent(bool) = 0; |
Torne (Richard Coles) | 51b2906 | 2013-11-28 11:56:03 +0000 | [diff] [blame] | 133 | virtual void setMainFrameResizesAreOrientationChanges(bool) = 0; |
Torne (Richard Coles) | bfe3590 | 2013-10-22 16:41:51 +0100 | [diff] [blame] | 134 | virtual void setMaxTouchPoints(int) = 0; |
Torne (Richard Coles) | 5267f70 | 2013-06-11 10:57:24 +0100 | [diff] [blame] | 135 | virtual void setMediaPlaybackRequiresUserGesture(bool) = 0; |
Torne (Richard Coles) | 8abfc58 | 2013-09-12 12:10:38 +0100 | [diff] [blame] | 136 | virtual void setMediaFullscreenRequiresUserGesture(bool) = 0; |
Torne (Richard Coles) | 5267f70 | 2013-06-11 10:57:24 +0100 | [diff] [blame] | 137 | virtual void setMinimumAccelerated2dCanvasSize(int) = 0; |
| 138 | virtual void setMinimumFontSize(int) = 0; |
| 139 | virtual void setMinimumLogicalFontSize(int) = 0; |
| 140 | virtual void setMockScrollbarsEnabled(bool) = 0; |
| 141 | virtual void setNeedsSiteSpecificQuirks(bool) = 0; |
| 142 | virtual void setOfflineWebApplicationCacheEnabled(bool) = 0; |
| 143 | virtual void setOpenGLMultisamplingEnabled(bool) = 0; |
| 144 | virtual void setPasswordEchoDurationInSeconds(double) = 0; |
| 145 | virtual void setPasswordEchoEnabled(bool) = 0; |
| 146 | virtual void setPerTilePaintingEnabled(bool) = 0; |
| 147 | virtual void setPictographFontFamily(const WebString&, UScriptCode = USCRIPT_COMMON) = 0; |
Ben Murdoch | 591b958 | 2013-07-10 11:41:44 +0100 | [diff] [blame] | 148 | virtual void setPinchOverlayScrollbarThickness(int) = 0; |
| 149 | virtual void setPinchVirtualViewportEnabled(bool) = 0; |
Torne (Richard Coles) | 5267f70 | 2013-06-11 10:57:24 +0100 | [diff] [blame] | 150 | virtual void setPluginsEnabled(bool) = 0; |
| 151 | virtual void setPrivilegedWebGLExtensionsEnabled(bool) = 0; |
| 152 | virtual void setRenderVSyncNotificationEnabled(bool) = 0; |
Torne (Richard Coles) | 1e20218 | 2013-10-18 15:46:42 +0100 | [diff] [blame] | 153 | virtual void setReportScreenSizeInPhysicalPixelsQuirk(bool) = 0; |
Torne (Richard Coles) | 5267f70 | 2013-06-11 10:57:24 +0100 | [diff] [blame] | 154 | virtual void setSansSerifFontFamily(const WebString&, UScriptCode = USCRIPT_COMMON) = 0; |
| 155 | virtual void setSelectTrailingWhitespaceEnabled(bool) = 0; |
| 156 | virtual void setSelectionIncludesAltImageText(bool) = 0; |
| 157 | virtual void setSerifFontFamily(const WebString&, UScriptCode = USCRIPT_COMMON) = 0; |
| 158 | virtual void setShouldPrintBackgrounds(bool) = 0; |
Torne (Richard Coles) | 0938029 | 2014-02-21 12:17:33 +0000 | [diff] [blame] | 159 | virtual void setShouldClearDocumentBackground(bool) = 0; |
Torne (Richard Coles) | 5267f70 | 2013-06-11 10:57:24 +0100 | [diff] [blame] | 160 | virtual void setShouldRespectImageOrientation(bool) = 0; |
Torne (Richard Coles) | 5267f70 | 2013-06-11 10:57:24 +0100 | [diff] [blame] | 161 | virtual void setShowFPSCounter(bool) = 0; |
| 162 | virtual void setShowPaintRects(bool) = 0; |
| 163 | virtual void setShrinksStandaloneImagesToFit(bool) = 0; |
| 164 | virtual void setSmartInsertDeleteEnabled(bool) = 0; |
Ben Murdoch | 591b958 | 2013-07-10 11:41:44 +0100 | [diff] [blame] | 165 | // Spatial navigation feature, when enabled, improves the experience |
| 166 | // of keyboard-controlling the web pages which originally were not designed |
| 167 | // for keyboard navigation. It allows to use arrow keys to move focus between |
| 168 | // the adjacent HTML elements. As a side effect, it extends the criteria for |
| 169 | // elements to be focusable to include any element which has click or keyboard |
| 170 | // event handlers specified. User can also trigger click handlers for such |
| 171 | // elements using SPACE or ENTER keys. |
Torne (Richard Coles) | 5267f70 | 2013-06-11 10:57:24 +0100 | [diff] [blame] | 172 | virtual void setSpatialNavigationEnabled(bool) = 0; |
| 173 | virtual void setStandardFontFamily(const WebString&, UScriptCode = USCRIPT_COMMON) = 0; |
| 174 | virtual void setSupportDeprecatedTargetDensityDPI(bool) = 0; |
| 175 | virtual void setSupportsMultipleWindows(bool) = 0; |
| 176 | virtual void setSyncXHRInDocumentsEnabled(bool) = 0; |
| 177 | virtual void setTextAreasAreResizable(bool) = 0; |
| 178 | virtual void setTextAutosizingEnabled(bool) = 0; |
Torne (Richard Coles) | 51b2906 | 2013-11-28 11:56:03 +0000 | [diff] [blame] | 179 | virtual void setAccessibilityFontScaleFactor(float) = 0; |
Torne (Richard Coles) | 5267f70 | 2013-06-11 10:57:24 +0100 | [diff] [blame] | 180 | virtual void setThreadedHTMLParser(bool) = 0; |
| 181 | virtual void setTouchDragDropEnabled(bool) = 0; |
| 182 | virtual void setTouchEditingEnabled(bool) = 0; |
| 183 | virtual void setUnifiedTextCheckerEnabled(bool) = 0; |
| 184 | virtual void setUnsafePluginPastingEnabled(bool) = 0; |
Torne (Richard Coles) | 5267f70 | 2013-06-11 10:57:24 +0100 | [diff] [blame] | 185 | virtual void setUsesEncodingDetector(bool) = 0; |
Torne (Richard Coles) | c0e19a6 | 2013-08-30 15:15:11 +0100 | [diff] [blame] | 186 | virtual void setUseLegacyBackgroundSizeShorthandBehavior(bool) = 0; |
| 187 | virtual void setUseSolidColorScrollbars(bool) = 0; |
Torne (Richard Coles) | 5267f70 | 2013-06-11 10:57:24 +0100 | [diff] [blame] | 188 | virtual void setUseWideViewport(bool) = 0; |
| 189 | virtual void setValidationMessageTimerMagnification(int) = 0; |
| 190 | virtual void setViewportEnabled(bool) = 0; |
Torne (Richard Coles) | 51b2906 | 2013-11-28 11:56:03 +0000 | [diff] [blame] | 191 | virtual void setViewportMetaEnabled(bool) = 0; |
Torne (Richard Coles) | 8abfc58 | 2013-09-12 12:10:38 +0100 | [diff] [blame] | 192 | virtual void setViewportMetaLayoutSizeQuirk(bool) = 0; |
Torne (Richard Coles) | bfe3590 | 2013-10-22 16:41:51 +0100 | [diff] [blame] | 193 | virtual void setViewportMetaMergeContentQuirk(bool) = 0; |
Torne (Richard Coles) | 51b2906 | 2013-11-28 11:56:03 +0000 | [diff] [blame] | 194 | virtual void setViewportMetaNonUserScalableQuirk(bool) = 0; |
Torne (Richard Coles) | 8abfc58 | 2013-09-12 12:10:38 +0100 | [diff] [blame] | 195 | virtual void setViewportMetaZeroValuesQuirk(bool) = 0; |
Torne (Richard Coles) | 5267f70 | 2013-06-11 10:57:24 +0100 | [diff] [blame] | 196 | virtual void setVisualWordMovementEnabled(bool) = 0; |
| 197 | virtual void setWebAudioEnabled(bool) = 0; |
| 198 | virtual void setWebGLErrorsToConsoleEnabled(bool) = 0; |
| 199 | virtual void setWebSecurityEnabled(bool) = 0; |
Torne (Richard Coles) | 8abfc58 | 2013-09-12 12:10:38 +0100 | [diff] [blame] | 200 | virtual void setWideViewportQuirkEnabled(bool) = 0; |
Torne (Richard Coles) | 5267f70 | 2013-06-11 10:57:24 +0100 | [diff] [blame] | 201 | virtual void setXSSAuditorEnabled(bool) = 0; |
| 202 | |
Torne (Richard Coles) | 5267f70 | 2013-06-11 10:57:24 +0100 | [diff] [blame] | 203 | protected: |
| 204 | ~WebSettings() { } |
| 205 | }; |
| 206 | |
Torne (Richard Coles) | 51b2906 | 2013-11-28 11:56:03 +0000 | [diff] [blame] | 207 | } // namespace blink |
Torne (Richard Coles) | 5267f70 | 2013-06-11 10:57:24 +0100 | [diff] [blame] | 208 | |
| 209 | #endif |