AX: AOM: respect the accessibility setting for dispatching the accessible events
authorn_wang@apple.com <n_wang@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 19 Apr 2018 17:36:40 +0000 (17:36 +0000)
committern_wang@apple.com <n_wang@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 19 Apr 2018 17:36:40 +0000 (17:36 +0000)
https://bugs.webkit.org/show_bug.cgi?id=184619

Reviewed by Ryosuke Niwa.

Source/WebCore:

Added accessibilityEventsEnabled as a setting on the page.

Test: accessibility/ios-simulator/accessibility-events-setting.html

* accessibility/AccessibilityObject.cpp:
(WebCore::AccessibilityObject::shouldDispatchAccessibilityEvent const):
* page/Settings.yaml:
* testing/InternalSettings.cpp:
(WebCore::InternalSettings::Backup::Backup):
(WebCore::InternalSettings::Backup::restoreTo):
(WebCore::InternalSettings::setAccessibilityEventsEnabled):
* testing/InternalSettings.h:
* testing/InternalSettings.idl:

Source/WebKit:

Linked libAccessibility on iOS and macOS to use the platform accessibility settings
for allowing dispatching the accessibility events.

* Configurations/WebKit.xcconfig:
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _initializeWithConfiguration:]):
(accessibilityEventsEnabledChangedCallback):
(-[WKWebView _updateAccessibilityEventsEnabled]):
* UIProcess/API/Cocoa/WKWebViewInternal.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::updateAccessibilityEventsEnabled):
* UIProcess/WebPageProxy.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::updateAccessibilityEventsEnabled):
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:

Source/WTF:

* wtf/Platform.h:

LayoutTests:

* accessibility/ios-simulator/accessibility-events-setting-expected.txt: Added.
* accessibility/ios-simulator/accessibility-events-setting.html: Added.
* platform/ios-wk1/TestExpectations:
* platform/ios-wk2/TestExpectations:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@230808 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 files changed:
LayoutTests/ChangeLog
LayoutTests/accessibility/ios-simulator/accessibility-events-setting-expected.txt [new file with mode: 0644]
LayoutTests/accessibility/ios-simulator/accessibility-events-setting.html [new file with mode: 0644]
LayoutTests/platform/ios-wk1/TestExpectations
LayoutTests/platform/ios-wk2/TestExpectations
Source/WTF/ChangeLog
Source/WTF/wtf/Platform.h
Source/WebCore/ChangeLog
Source/WebCore/accessibility/AccessibilityObject.cpp
Source/WebCore/page/Settings.yaml
Source/WebCore/testing/InternalSettings.cpp
Source/WebCore/testing/InternalSettings.h
Source/WebCore/testing/InternalSettings.idl
Source/WebKit/ChangeLog
Source/WebKit/Configurations/WebKit.xcconfig
Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm
Source/WebKit/UIProcess/API/Cocoa/WKWebViewInternal.h
Source/WebKit/UIProcess/WebPageProxy.cpp
Source/WebKit/UIProcess/WebPageProxy.h
Source/WebKit/WebProcess/WebPage/WebPage.cpp
Source/WebKit/WebProcess/WebPage/WebPage.h
Source/WebKit/WebProcess/WebPage/WebPage.messages.in

index ba04ef5..36d6538 100644 (file)
@@ -1,3 +1,15 @@
+2018-04-19  Nan Wang  <n_wang@apple.com>
+
+        AX: AOM: respect the accessibility setting for dispatching the accessible events
+        https://bugs.webkit.org/show_bug.cgi?id=184619
+
+        Reviewed by Ryosuke Niwa.
+
+        * accessibility/ios-simulator/accessibility-events-setting-expected.txt: Added.
+        * accessibility/ios-simulator/accessibility-events-setting.html: Added.
+        * platform/ios-wk1/TestExpectations:
+        * platform/ios-wk2/TestExpectations:
+
 2018-04-19  Tadeu Zagallo  <tzagallo@apple.com>
 
         Fix flakiness in worker-to-worker test
diff --git a/LayoutTests/accessibility/ios-simulator/accessibility-events-setting-expected.txt b/LayoutTests/accessibility/ios-simulator/accessibility-events-setting-expected.txt
new file mode 100644 (file)
index 0000000..91dfa1d
--- /dev/null
@@ -0,0 +1,13 @@
+Click
+This tests that dispatching accessibility events is controled by iOS settings.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS receivedAXEvent is true
+PASS receivedAXEvent is false
+PASS receivedAXEvent is true
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/accessibility/ios-simulator/accessibility-events-setting.html b/LayoutTests/accessibility/ios-simulator/accessibility-events-setting.html
new file mode 100644 (file)
index 0000000..4c01809
--- /dev/null
@@ -0,0 +1,52 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+<script src="../../resources/js-test-pre.js"></script>
+<script src="../../resources/accessibility-helper.js"></script>
+</head>
+<body>
+
+<button id="button">Click</button>
+
+<p id="description"></p>
+<div id="console"></div>
+
+<script>
+    description("This tests that dispatching accessibility events is controled by iOS settings.");
+    if (window.accessibilityController) {
+        jsTestIsAsync = true;
+        var node = document.getElementById("button");
+        var axNode = accessibilityController.accessibleElementById("button");
+        var receivedAXEvent;
+        node.onaccessibleclick = function() {
+            receivedAXEvent = true;
+        };
+
+        // By default, accessibility events setting is enabled.
+        receivedAXEvent = false;
+        axNode.syncPress();
+        shouldBeTrue("receivedAXEvent");
+
+        // Disable the setting.
+        window.internals.settings.setAccessibilityEventsEnabled(false);
+        setTimeout(function() {
+            receivedAXEvent = false;
+            axNode.syncPress();
+            shouldBeFalse("receivedAXEvent");
+
+            // Re-enable the setting.
+            window.internals.settings.setAccessibilityEventsEnabled(true);
+            setTimeout(function() {
+                receivedAXEvent = false;
+                axNode.syncPress();
+                shouldBeTrue("receivedAXEvent");
+                finishJSTest();
+            }, 30);
+
+        }, 30);
+    }
+
+</script>
+<script src="../../resources/js-test-post.js"></script>
+</body>
+</html>
index d4a350b..3362bd5 100644 (file)
@@ -104,6 +104,7 @@ fast/zooming/uiscript-zooming.html [ Failure ]
 
 # Not supported on WK1
 accessibility/ios-simulator/speak-selection-content.html [ Skip ]
+accessibility/ios-simulator/accessibility-events-setting.html [ Skip ]
 
 # FIXME: Tests that fail due to lack of textInputController <rdar://problem/5106287>
 editing/inserting/insert-composition-whitespace.html [ Failure ]
index aec5f6a..ebba7cc 100644 (file)
@@ -1128,6 +1128,8 @@ webkit.org/b/155201 storage/domstorage/events/basic-body-attribute.html [ Pass F
 # Forcing always allow user scalable is not supported on certain OS version.
 webkit.org/b/155056 fast/viewport/ios/force-always-user-scalable.html [ Skip ]
 
+# Setting accessibility events enabled is not supported on certain OS version.
+webkit.org/b/184619 accessibility/ios-simulator/accessibility-events-setting.html [ Skip ]
 
 webkit.org/b/155495 compositing/visible-rect/animated-from-none.html [ Pass Failure ]
 webkit.org/b/155495 legacy-animation-engine/compositing/visible-rect/animated-from-none.html [ Pass Failure ]
index 009164b..b10abfb 100644 (file)
@@ -1,3 +1,12 @@
+2018-04-19  Nan Wang  <n_wang@apple.com>
+
+        AX: AOM: respect the accessibility setting for dispatching the accessible events
+        https://bugs.webkit.org/show_bug.cgi?id=184619
+
+        Reviewed by Ryosuke Niwa.
+
+        * wtf/Platform.h:
+
 2018-04-18  Ross Kirsling  <ross.kirsling@sony.com>
 
         [Win] Layout Test js/date-constructor.html is failing
index 290f6de..236adb2 100644 (file)
 #define HAVE_AVCONTENTKEYSESSION 1
 #endif
 
+#if (PLATFORM(IOS) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 120000) || (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101400)
+#define ENABLE_ACCESSIBILITY_EVENTS 1
+#endif
+
 #endif /* WTF_Platform_h */
index 19bc248..19222a3 100644 (file)
@@ -1,3 +1,24 @@
+2018-04-19  Nan Wang  <n_wang@apple.com>
+
+        AX: AOM: respect the accessibility setting for dispatching the accessible events
+        https://bugs.webkit.org/show_bug.cgi?id=184619
+
+        Reviewed by Ryosuke Niwa.
+
+        Added accessibilityEventsEnabled as a setting on the page.
+
+        Test: accessibility/ios-simulator/accessibility-events-setting.html
+
+        * accessibility/AccessibilityObject.cpp:
+        (WebCore::AccessibilityObject::shouldDispatchAccessibilityEvent const):
+        * page/Settings.yaml:
+        * testing/InternalSettings.cpp:
+        (WebCore::InternalSettings::Backup::Backup):
+        (WebCore::InternalSettings::Backup::restoreTo):
+        (WebCore::InternalSettings::setAccessibilityEventsEnabled):
+        * testing/InternalSettings.h:
+        * testing/InternalSettings.idl:
+
 2018-04-18  Jer Noble  <jer.noble@apple.com>
 
         Fix build when WK_ALTERNATE_FRAMEWORKS_DIR is set to non-empty value
index a607dce..1928172 100644 (file)
@@ -2157,7 +2157,11 @@ const AtomicString& AccessibilityObject::getAttribute(const QualifiedName& attri
 
 bool AccessibilityObject::shouldDispatchAccessibilityEvent() const
 {
-    return RuntimeEnabledFeatures::sharedFeatures().accessibilityObjectModelEnabled();
+    bool shouldDispatch = RuntimeEnabledFeatures::sharedFeatures().accessibilityObjectModelEnabled();
+#if ENABLE(ACCESSIBILITY_EVENTS)
+    return shouldDispatch &= this->page()->settings().accessibilityEventsEnabled();
+#endif
+    return shouldDispatch;
 }
 
 bool AccessibilityObject::dispatchAccessibilityEvent(Event& event) const
index d89b4ea..70dde49 100644 (file)
@@ -730,3 +730,7 @@ resourceLoadStatisticsDebugMode:
 clientCoordinatesRelativeToLayoutViewport:
   initial: false
   onChange: setNeedsRecalcStyleInAllFrames
+
+accessibilityEventsEnabled:
+  initial: true
+  conditional: ACCESSIBILITY_EVENTS
index 5175da1..6b17e87 100644 (file)
@@ -93,6 +93,9 @@ InternalSettings::Backup::Backup(Settings& settings)
     , m_inlineMediaPlaybackRequiresPlaysInlineAttribute(settings.inlineMediaPlaybackRequiresPlaysInlineAttribute())
     , m_deferredCSSParserEnabled(settings.deferredCSSParserEnabled())
     , m_inputEventsEnabled(settings.inputEventsEnabled())
+#if ENABLE(ACCESSIBILITY_EVENTS)
+    , m_accessibilityEventsEnabled(settings.accessibilityEventsEnabled())
+#endif
     , m_userInterfaceDirectionPolicy(settings.userInterfaceDirectionPolicy())
     , m_systemLayoutDirection(settings.systemLayoutDirection())
     , m_pdfImageCachingPolicy(settings.pdfImageCachingPolicy())
@@ -200,6 +203,9 @@ void InternalSettings::Backup::restoreTo(Settings& settings)
     RenderTheme::singleton().setShouldMockBoldSystemFontForAccessibility(m_shouldMockBoldSystemFontForAccessibility);
     FontCache::singleton().setShouldMockBoldSystemFontForAccessibility(m_shouldMockBoldSystemFontForAccessibility);
     settings.setFrameFlattening(m_frameFlattening);
+#if ENABLE(ACCESSIBILITY_EVENTS)
+    settings.setAccessibilityEventsEnabled(m_accessibilityEventsEnabled);
+#endif
 
 #if ENABLE(INDEXED_DATABASE_IN_WORKERS)
     RuntimeEnabledFeatures::sharedFeatures().setIndexedDBWorkersEnabled(m_indexedDBWorkersEnabled);
@@ -876,6 +882,18 @@ ExceptionOr<void> InternalSettings::setCustomPasteboardDataEnabled(bool enabled)
     return { };
 }
 
+ExceptionOr<void> InternalSettings::setAccessibilityEventsEnabled(bool enabled)
+{
+    if (!m_page)
+        return Exception { InvalidAccessError };
+#if ENABLE(ACCESSIBILITY_EVENTS)
+    settings().setAccessibilityEventsEnabled(enabled);
+#else
+    UNUSED_PARAM(enabled);
+#endif
+    return { };
+}
+
 static InternalSettings::ForcedAccessibilityValue settingsToInternalSettingsValue(Settings::ForcedAccessibilityValue value)
 {
     switch (value) {
index 4cc29fe..38e0719 100644 (file)
@@ -100,6 +100,7 @@ public:
     ExceptionOr<void> setShouldMockBoldSystemFontForAccessibility(bool);
     ExceptionOr<void> setShouldManageAudioSessionCategory(bool);
     ExceptionOr<void> setCustomPasteboardDataEnabled(bool);
+    ExceptionOr<void> setAccessibilityEventsEnabled(bool);
 
     using FrameFlatteningValue = FrameFlattening;
     ExceptionOr<void> setFrameFlattening(FrameFlatteningValue);
@@ -189,7 +190,9 @@ private:
         bool m_inlineMediaPlaybackRequiresPlaysInlineAttribute;
         bool m_deferredCSSParserEnabled;
         bool m_inputEventsEnabled;
-
+#if ENABLE(ACCESSIBILITY_EVENTS)
+        bool m_accessibilityEventsEnabled;
+#endif
         UserInterfaceDirectionPolicy m_userInterfaceDirectionPolicy;
         TextDirection m_systemLayoutDirection;
         PDFImageCachingPolicy m_pdfImageCachingPolicy;
index ee5b475..c9856a7 100644 (file)
@@ -111,5 +111,7 @@ enum FontLoadTimingOverride { "Block", "Swap", "Failure" };
     [MayThrowException] void setCustomPasteboardDataEnabled(boolean enabled);
 
     [EnabledAtRuntime=WebAnimations] boolean cssAnimationsAndCSSTransitionsBackedByWebAnimationsEnabled();
+
+    [MayThrowException] void setAccessibilityEventsEnabled(boolean enabled);
 };
 
index 704da36..c08ecb7 100644 (file)
@@ -1,3 +1,27 @@
+2018-04-19  Nan Wang  <n_wang@apple.com>
+
+        AX: AOM: respect the accessibility setting for dispatching the accessible events
+        https://bugs.webkit.org/show_bug.cgi?id=184619
+
+        Reviewed by Ryosuke Niwa.
+
+        Linked libAccessibility on iOS and macOS to use the platform accessibility settings
+        for allowing dispatching the accessibility events.
+
+        * Configurations/WebKit.xcconfig:
+        * UIProcess/API/Cocoa/WKWebView.mm:
+        (-[WKWebView _initializeWithConfiguration:]):
+        (accessibilityEventsEnabledChangedCallback):
+        (-[WKWebView _updateAccessibilityEventsEnabled]):
+        * UIProcess/API/Cocoa/WKWebViewInternal.h:
+        * UIProcess/WebPageProxy.cpp:
+        (WebKit::WebPageProxy::updateAccessibilityEventsEnabled):
+        * UIProcess/WebPageProxy.h:
+        * WebProcess/WebPage/WebPage.cpp:
+        (WebKit::WebPage::updateAccessibilityEventsEnabled):
+        * WebProcess/WebPage/WebPage.h:
+        * WebProcess/WebPage/WebPage.messages.in:
+
 2018-04-18  Chris Dumez  <cdumez@apple.com>
 
         Rename WindowProxyController to WindowProxy
index 4a23386..045889c 100644 (file)
@@ -39,8 +39,13 @@ DYLIB_INSTALL_NAME_BASE_YES = $(DYLIB_INSTALL_NAME_BASE);
 
 LIBRARY_SEARCH_PATHS = $(inherited) "$(LIBWEBRTC_LIBRARY_DIR)";
 
-WK_ACCESSIBILITY_LDFLAGS = $(WK_ACCESSIBILITY_LDFLAGS_$(WK_COCOA_TOUCH));
-WK_ACCESSIBILITY_LDFLAGS_cocoatouch = -lAccessibility;
+WK_ACCESSIBILITY_LDFLAGS = $(WK_ACCESSIBILITY_LDFLAGS_$(WK_PLATFORM_NAME));
+WK_ACCESSIBILITY_LDFLAGS_iphoneos = -lAccessibility;
+WK_ACCESSIBILITY_LDFLAGS_iphonesimulator = $(WK_ACCESSIBILITY_LDFLAGS_iphoneos);
+WK_ACCESSIBILITY_LDFLAGS_watchos = $(WK_ACCESSIBILITY_LDFLAGS_iphoneos);
+WK_ACCESSIBILITY_LDFLAGS_appletvos = $(WK_ACCESSIBILITY_LDFLAGS_iphoneos);
+WK_ACCESSIBILITY_LDFLAGS_macosx = $(WK_ACCESSIBILITY_LDFLAGS$(WK_MACOS_1014));
+WK_ACCESSIBILITY_LDFLAGS_MACOS_SINCE_1014 = -lAccessibility;
 
 WK_APPKIT_LDFLAGS = $(WK_APPKIT_LDFLAGS_$(WK_PLATFORM_NAME));
 WK_APPKIT_LDFLAGS_macosx = -framework AppKit;
index 9c5d478..b41f264 100644 (file)
 #import <pal/spi/cg/CoreGraphicsSPI.h>
 #import <pal/spi/cocoa/QuartzCoreSPI.h>
 
-#if __has_include(<AccessibilitySupport.h>)
-#include <AccessibilitySupport.h>
-#else
-extern "C" {
-CFStringRef kAXSAllowForceWebScalingEnabledNotification;
-}
-#endif
-
 #define RELEASE_LOG_IF_ALLOWED(...) RELEASE_LOG_IF(_page && _page->isAlwaysOnLoggingAllowed(), ViewState, __VA_ARGS__)
 
 @interface UIScrollView (UIScrollViewInternal)
@@ -214,6 +206,17 @@ static const uint32_t firstSDKVersionWithLinkPreviewEnabledByDefault = 0xA0000;
 #endif // HAVE(TOUCH_BAR)
 #endif // PLATFORM(MAC)
 
+#if ENABLE(ACCESSIBILITY_EVENTS)
+#if __has_include(<AccessibilitySupport.h>)
+#include <AccessibilitySupport.h>
+#else
+extern "C" {
+CFStringRef kAXSWebAccessibilityEventsEnabledNotification;
+Boolean _AXSWebAccessibilityEventsEnabled();
+}
+#endif
+#endif
+
 static HashMap<WebKit::WebPageProxy*, WKWebView *>& pageToViewMap()
 {
     static NeverDestroyed<HashMap<WebKit::WebPageProxy*, WKWebView *>> map;
@@ -695,6 +698,11 @@ static void validate(WKWebViewConfiguration *configuration)
     _impl->setRequiresUserActionForEditingControlsManager([configuration _requiresUserActionForEditingControlsManager]);
 #endif
 
+#if ENABLE(ACCESSIBILITY_EVENTS)
+    CFNotificationCenterAddObserver(CFNotificationCenterGetDarwinNotifyCenter(), (__bridge const void *)(self), accessibilityEventsEnabledChangedCallback, kAXSWebAccessibilityEventsEnabledNotification, 0, CFNotificationSuspensionBehaviorDeliverImmediately);
+    [self _updateAccessibilityEventsEnabled];
+#endif
+
     _page->setBackgroundExtendsBeyondPage(true);
 
     if (NSString *applicationNameForUserAgent = configuration.applicationNameForUserAgent)
@@ -3053,6 +3061,20 @@ static bool scrollViewCanScroll(UIScrollView *scrollView)
 
 #endif // PLATFORM(IOS)
 
+#if ENABLE(ACCESSIBILITY_EVENTS)
+static void accessibilityEventsEnabledChangedCallback(CFNotificationCenterRef, void* observer, CFStringRef, const void*, CFDictionaryRef)
+{
+    ASSERT(observer);
+    WKWebView* webview = static_cast<WKWebView*>(observer);
+    [webview _updateAccessibilityEventsEnabled];
+}
+
+- (void)_updateAccessibilityEventsEnabled
+{
+    _page->updateAccessibilityEventsEnabled(_AXSWebAccessibilityEventsEnabled());
+}
+#endif
+
 #pragma mark OS X-specific methods
 
 #if PLATFORM(MAC)
index da57ca3..fc195dc 100644 (file)
@@ -149,6 +149,10 @@ struct PrintInfo;
 @property (nonatomic, readonly) UIEdgeInsets _computedUnobscuredSafeAreaInset;
 #endif
 
+#if ENABLE(ACCESSIBILITY_EVENTS)
+- (void)_updateAccessibilityEventsEnabled;
+#endif
+
 #if ENABLE(ATTACHMENT_ELEMENT)
 - (void)_didRemoveAttachment:(NSString *)identifier;
 - (void)_didInsertAttachment:(NSString *)identifier withSource:(NSString *)source;
index a01ed81..dab6cd5 100644 (file)
@@ -2754,6 +2754,16 @@ void WebPageProxy::accessibilitySettingsDidChange()
     m_process->send(Messages::WebPage::AccessibilitySettingsDidChange(), m_pageID);
 }
 
+#if ENABLE(ACCESSIBILITY_EVENTS)
+void WebPageProxy::updateAccessibilityEventsEnabled(bool enabled)
+{
+    if (!isValid())
+        return;
+
+    m_process->send(Messages::WebPage::UpdateAccessibilityEventsEnabled(enabled), m_pageID);
+}
+#endif
+
 void WebPageProxy::setUseFixedLayout(bool fixed)
 {
     if (!isValid())
index 87a0b59..d561be5 100644 (file)
@@ -745,6 +745,9 @@ public:
     void setCustomDeviceScaleFactor(float);
     void windowScreenDidChange(WebCore::PlatformDisplayID);
     void accessibilitySettingsDidChange();
+#if ENABLE(ACCESSIBILITY_EVENTS)
+    void updateAccessibilityEventsEnabled(bool);
+#endif
 
     void setUseFixedLayout(bool);
     void setFixedLayoutSize(const WebCore::IntSize&);
index 00bc17d..89fae1a 100644 (file)
@@ -1733,6 +1733,13 @@ void WebPage::accessibilitySettingsDidChange()
     m_page->accessibilitySettingsDidChange();
 }
 
+#if ENABLE(ACCESSIBILITY_EVENTS)
+void WebPage::updateAccessibilityEventsEnabled(bool enabled)
+{
+    m_page->settings().setAccessibilityEventsEnabled(enabled);
+}
+#endif
+
 void WebPage::setUseFixedLayout(bool fixed)
 {
     // Do not overwrite current settings if initially setting it to false.
index 5300b7e..8e775cd 100644 (file)
@@ -429,6 +429,9 @@ public:
     void windowScreenDidChange(uint32_t);
 
     void accessibilitySettingsDidChange();
+#if ENABLE(ACCESSIBILITY_EVENTS)
+    void updateAccessibilityEventsEnabled(bool);
+#endif
 
     void scalePage(double scale, const WebCore::IntPoint& origin);
     void scalePageInViewCoordinates(double scale, WebCore::IntPoint centerInViewCoordinates);
index cc70a9a..a3c716f 100644 (file)
@@ -208,6 +208,9 @@ messages -> WebPage LegacyReceiver {
     WindowScreenDidChange(uint32_t displayID)
 
     AccessibilitySettingsDidChange()
+#if ENABLE(ACCESSIBILITY_EVENTS)
+    UpdateAccessibilityEventsEnabled(bool enabled)
+#endif
 
     ScalePage(double scale, WebCore::IntPoint origin)
     ScalePageInViewCoordinates(double scale, WebCore::IntPoint centerInViewCoordinates)