Title: [154778] trunk
Revision
154778
Author
[email protected]
Date
2013-08-28 15:19:25 -0700 (Wed, 28 Aug 2013)

Log Message

AX: Cancel button in search field not accessible.
<https://webkit.org/b/120322>

Source/WebCore:

Expose the cancel button that shows in an input element of
type search to accessibility.

Patch by Sam White <[email protected]> on 2013-08-28
Reviewed by Chris Fleizach.

Test: platform/mac/accessibility/search-field-cancel-button.html

* CMakeLists.txt:
* English.lproj/Localizable.strings:
* GNUmakefile.list.am:
* Target.pri:
* WebCore.vcxproj/WebCore.vcxproj:
* WebCore.xcodeproj/project.pbxproj:
* accessibility/AXObjectCache.cpp:
(WebCore::createFromRenderer):
* accessibility/AccessibilityAllInOne.cpp:
* accessibility/AccessibilitySearchFieldButtons.cpp: Added.
(WebCore::AccessibilitySearchFieldCancelButton::create):
(WebCore::AccessibilitySearchFieldCancelButton::AccessibilitySearchFieldCancelButton):
(WebCore::AccessibilitySearchFieldCancelButton::accessibilityDescription):
(WebCore::AccessibilitySearchFieldCancelButton::accessibilityText):
(WebCore::AccessibilitySearchFieldCancelButton::press):
(WebCore::AccessibilitySearchFieldCancelButton::computeAccessibilityIsIgnored):
* accessibility/AccessibilitySearchFieldButtons.h: Added.
* dom/Element.h:
(WebCore::Element::isSearchFieldCancelButtonElement):
* html/shadow/TextControlInnerElements.h:
* platform/LocalizedStrings.cpp:
(WebCore::AXSearchFieldCancelButtonText):
* platform/LocalizedStrings.h:
* platform/efl/LocalizedStringsEfl.cpp:
(WebCore::AXSearchFieldCancelButtonText):
* platform/gtk/LocalizedStringsGtk.cpp:
(WebCore::AXSearchFieldCancelButtonText):
* platform/qt/LocalizedStringsQt.cpp:
(WebCore::AXSearchFieldCancelButtonText):

LayoutTests:

Make sure the cancel button that shows in an input element of
type search is accessible and actionable.

Patch by Sam White <[email protected]> on 2013-08-28
Reviewed by Chris Fleizach.

* platform/mac/accessibility/search-field-cancel-button-expected.txt: Added.
* platform/mac/accessibility/search-field-cancel-button.html: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (154777 => 154778)


--- trunk/LayoutTests/ChangeLog	2013-08-28 20:42:02 UTC (rev 154777)
+++ trunk/LayoutTests/ChangeLog	2013-08-28 22:19:25 UTC (rev 154778)
@@ -1,3 +1,16 @@
+2013-08-28  Sam White  <[email protected]>
+
+        AX: Cancel button in search field not accessible.
+        <https://webkit.org/b/120322>
+
+        Make sure the cancel button that shows in an input element of
+        type search is accessible and actionable.
+
+        Reviewed by Chris Fleizach.
+
+        * platform/mac/accessibility/search-field-cancel-button-expected.txt: Added.
+        * platform/mac/accessibility/search-field-cancel-button.html: Added.
+
 2013-08-28  Ryosuke Niwa  <[email protected]>
 
         REGRESSION(r154586): Past names map should only be used when named item is empty

Added: trunk/LayoutTests/platform/mac/accessibility/search-field-cancel-button-expected.txt (0 => 154778)


--- trunk/LayoutTests/platform/mac/accessibility/search-field-cancel-button-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/platform/mac/accessibility/search-field-cancel-button-expected.txt	2013-08-28 22:19:25 UTC (rev 154778)
@@ -0,0 +1,15 @@
+
+This tests that the search field cancel button is exposed correctly.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS button.description is 'AXDescription: cancel'
+PASS button.role is 'AXRole: AXButton'
+PASS button.roleDescription is 'AXRoleDescription: button'
+PASS document.getElementById('search').value is 'X'
+PASS document.getElementById('search').value is ''
+PASS successfullyParsed is true
+
+TEST COMPLETE
+

Added: trunk/LayoutTests/platform/mac/accessibility/search-field-cancel-button.html (0 => 154778)


--- trunk/LayoutTests/platform/mac/accessibility/search-field-cancel-button.html	                        (rev 0)
+++ trunk/LayoutTests/platform/mac/accessibility/search-field-cancel-button.html	2013-08-28 22:19:25 UTC (rev 154778)
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<html>
+<head>
+<script src=""
+<title>Search Field Cancel Button</title>
+</head>
+<body>
+
+<input id="search" type="search" value="X">
+
+<p id="description"></p>
+<div id="console"></div>
+
+<script>
+    description("This tests that the search field cancel button is exposed correctly.");
+    
+    if (window.accessibilityController) {
+        var button = accessibilityController.accessibleElementById("search").childAtIndex(1);
+        
+        shouldBe("button.description", "'AXDescription: cancel'");
+        shouldBe("button.role", "'AXRole: AXButton'");
+        shouldBe("button.roleDescription", "'AXRoleDescription: button'");
+        
+        // Search field has value before press.
+        shouldBe("document.getElementById('search').value", "'X'");
+        
+        button.press();
+        
+        // Search field has no value after press.
+        shouldBe("document.getElementById('search').value", "''");
+    }
+</script>
+
+<script src=""
+</body>
+</html>

Modified: trunk/Source/WebCore/CMakeLists.txt (154777 => 154778)


--- trunk/Source/WebCore/CMakeLists.txt	2013-08-28 20:42:02 UTC (rev 154777)
+++ trunk/Source/WebCore/CMakeLists.txt	2013-08-28 22:19:25 UTC (rev 154778)
@@ -980,6 +980,7 @@
     accessibility/AccessibilityRenderObject.cpp
     accessibility/AccessibilityScrollbar.cpp
     accessibility/AccessibilityScrollView.cpp
+    accessibility/AccessibilitySearchFieldButtons.cpp
     accessibility/AccessibilitySpinButton.cpp
     accessibility/AccessibilitySlider.cpp
     accessibility/AccessibilitySVGRoot.cpp

Modified: trunk/Source/WebCore/ChangeLog (154777 => 154778)


--- trunk/Source/WebCore/ChangeLog	2013-08-28 20:42:02 UTC (rev 154777)
+++ trunk/Source/WebCore/ChangeLog	2013-08-28 22:19:25 UTC (rev 154778)
@@ -1,3 +1,45 @@
+2013-08-28  Sam White  <[email protected]>
+
+        AX: Cancel button in search field not accessible.
+        <https://webkit.org/b/120322>
+
+        Expose the cancel button that shows in an input element of
+        type search to accessibility.
+
+        Reviewed by Chris Fleizach.
+
+        Test: platform/mac/accessibility/search-field-cancel-button.html
+
+        * CMakeLists.txt:
+        * English.lproj/Localizable.strings:
+        * GNUmakefile.list.am:
+        * Target.pri:
+        * WebCore.vcxproj/WebCore.vcxproj:
+        * WebCore.xcodeproj/project.pbxproj:
+        * accessibility/AXObjectCache.cpp:
+        (WebCore::createFromRenderer):
+        * accessibility/AccessibilityAllInOne.cpp:
+        * accessibility/AccessibilitySearchFieldButtons.cpp: Added.
+        (WebCore::AccessibilitySearchFieldCancelButton::create):
+        (WebCore::AccessibilitySearchFieldCancelButton::AccessibilitySearchFieldCancelButton):
+        (WebCore::AccessibilitySearchFieldCancelButton::accessibilityDescription):
+        (WebCore::AccessibilitySearchFieldCancelButton::accessibilityText):
+        (WebCore::AccessibilitySearchFieldCancelButton::press):
+        (WebCore::AccessibilitySearchFieldCancelButton::computeAccessibilityIsIgnored):
+        * accessibility/AccessibilitySearchFieldButtons.h: Added.
+        * dom/Element.h:
+        (WebCore::Element::isSearchFieldCancelButtonElement):
+        * html/shadow/TextControlInnerElements.h:
+        * platform/LocalizedStrings.cpp:
+        (WebCore::AXSearchFieldCancelButtonText):
+        * platform/LocalizedStrings.h:
+        * platform/efl/LocalizedStringsEfl.cpp:
+        (WebCore::AXSearchFieldCancelButtonText):
+        * platform/gtk/LocalizedStringsGtk.cpp:
+        (WebCore::AXSearchFieldCancelButtonText):
+        * platform/qt/LocalizedStringsQt.cpp:
+        (WebCore::AXSearchFieldCancelButtonText):
+
 2013-08-28  Eric Carlson  <[email protected]>
 
         MediaPlayerPrivateAVFoundationObjC is painting video frames under the video layer

Modified: trunk/Source/WebCore/English.lproj/Localizable.strings (154777 => 154778)


--- trunk/Source/WebCore/English.lproj/Localizable.strings	2013-08-28 20:42:02 UTC (rev 154777)
+++ trunk/Source/WebCore/English.lproj/Localizable.strings	2013-08-28 22:19:25 UTC (rev 154778)
@@ -619,6 +619,9 @@
 /* accessibility help text for play button */
 "begin playback" = "begin playback";
 
+/* accessibility description for a search field cancel button */
+"cancel" = "cancel";
+
 /* Verb stating the action that will occur when an unchecked checkbox is clicked, as used by accessibility */
 "check" = "check";
 

Modified: trunk/Source/WebCore/GNUmakefile.list.am (154777 => 154778)


--- trunk/Source/WebCore/GNUmakefile.list.am	2013-08-28 20:42:02 UTC (rev 154777)
+++ trunk/Source/WebCore/GNUmakefile.list.am	2013-08-28 22:19:25 UTC (rev 154778)
@@ -2254,6 +2254,8 @@
 	Source/WebCore/accessibility/AccessibilityScrollbar.h \
 	Source/WebCore/accessibility/AccessibilityScrollView.cpp \
 	Source/WebCore/accessibility/AccessibilityScrollView.h \
+	Source/WebCore/accessibility/AccessibilitySearchFieldButtons.cpp \
+	Source/WebCore/accessibility/AccessibilitySearchFieldButtons.h \
 	Source/WebCore/accessibility/AccessibilitySlider.cpp \
 	Source/WebCore/accessibility/AccessibilitySlider.h \
 	Source/WebCore/accessibility/AccessibilitySpinButton.cpp \

Modified: trunk/Source/WebCore/Target.pri (154777 => 154778)


--- trunk/Source/WebCore/Target.pri	2013-08-28 20:42:02 UTC (rev 154777)
+++ trunk/Source/WebCore/Target.pri	2013-08-28 22:19:25 UTC (rev 154778)
@@ -54,6 +54,7 @@
     accessibility/AccessibilityRenderObject.cpp \
     accessibility/AccessibilityScrollbar.cpp \
     accessibility/AccessibilityScrollView.cpp \
+    accessibility/AccessibilitySearchFieldButtons.cpp \
     accessibility/AccessibilitySlider.cpp \
     accessibility/AccessibilitySpinButton.cpp \
     accessibility/AccessibilityARIAGrid.cpp \

Modified: trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj (154777 => 154778)


--- trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj	2013-08-28 20:42:02 UTC (rev 154777)
+++ trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj	2013-08-28 22:19:25 UTC (rev 154778)
@@ -7014,6 +7014,20 @@
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Production|Win32'">true</ExcludedFromBuild>
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Production|x64'">true</ExcludedFromBuild>
     </ClCompile>
+    <ClCompile Include="..\accessibility\AccessibilitySearchFieldButtons.cpp">
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|x64'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Production|Win32'">true</ExcludedFromBuild>
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Production|x64'">true</ExcludedFromBuild>
+    </ClCompile>
     <ClCompile Include="..\accessibility\AccessibilitySlider.cpp">
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
@@ -19002,6 +19016,7 @@
     <ClInclude Include="..\accessibility\AccessibilityRenderObject.h" />
     <ClInclude Include="..\accessibility\AccessibilityScrollbar.h" />
     <ClInclude Include="..\accessibility\AccessibilityScrollView.h" />
+    <ClInclude Include="..\accessibility\AccessibilitySearchFieldButtons.h" />
     <ClInclude Include="..\accessibility\AccessibilitySlider.h" />
     <ClInclude Include="..\accessibility\AccessibilitySpinButton.h" />
     <ClInclude Include="..\accessibility\AccessibilitySVGRoot.h" />

Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (154777 => 154778)


--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj	2013-08-28 20:42:02 UTC (rev 154777)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj	2013-08-28 22:19:25 UTC (rev 154778)
@@ -1039,6 +1039,7 @@
 		4150F9F212B6E0E70008C860 /* SliderThumbElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4150F9F012B6E0E70008C860 /* SliderThumbElement.cpp */; };
 		4157AF8012F1FB0400A8C6F5 /* MediaControlsApple.h in Headers */ = {isa = PBXBuildFile; fileRef = 4157AF7E12F1FB0400A8C6F5 /* MediaControlsApple.h */; };
 		4157AF8112F1FB0400A8C6F5 /* MediaControlsApple.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4157AF7F12F1FB0400A8C6F5 /* MediaControlsApple.cpp */; };
+		415B3A6E17CBE267000FCCE8 /* AccessibilitySearchFieldButtons.h in Headers */ = {isa = PBXBuildFile; fileRef = 415B3A6A17CBE172000FCCE8 /* AccessibilitySearchFieldButtons.h */; };
 		4162A450101145AE00DFF3ED /* DedicatedWorkerGlobalScope.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4162A44D101145AE00DFF3ED /* DedicatedWorkerGlobalScope.cpp */; };
 		4162A451101145AE00DFF3ED /* DedicatedWorkerGlobalScope.h in Headers */ = {isa = PBXBuildFile; fileRef = 4162A44E101145AE00DFF3ED /* DedicatedWorkerGlobalScope.h */; };
 		4162A454101145E300DFF3ED /* JSDedicatedWorkerGlobalScopeCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4162A453101145E300DFF3ED /* JSDedicatedWorkerGlobalScopeCustom.cpp */; };
@@ -7340,6 +7341,8 @@
 		4150F9F012B6E0E70008C860 /* SliderThumbElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SliderThumbElement.cpp; sourceTree = "<group>"; };
 		4157AF7E12F1FB0400A8C6F5 /* MediaControlsApple.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaControlsApple.h; sourceTree = "<group>"; };
 		4157AF7F12F1FB0400A8C6F5 /* MediaControlsApple.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MediaControlsApple.cpp; sourceTree = "<group>"; };
+		415B3A6917CBE172000FCCE8 /* AccessibilitySearchFieldButtons.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AccessibilitySearchFieldButtons.cpp; sourceTree = "<group>"; };
+		415B3A6A17CBE172000FCCE8 /* AccessibilitySearchFieldButtons.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AccessibilitySearchFieldButtons.h; sourceTree = "<group>"; };
 		4162A44D101145AE00DFF3ED /* DedicatedWorkerGlobalScope.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DedicatedWorkerGlobalScope.cpp; path = workers/DedicatedWorkerGlobalScope.cpp; sourceTree = "<group>"; };
 		4162A44E101145AE00DFF3ED /* DedicatedWorkerGlobalScope.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DedicatedWorkerGlobalScope.h; path = workers/DedicatedWorkerGlobalScope.h; sourceTree = "<group>"; };
 		4162A44F101145AE00DFF3ED /* DedicatedWorkerGlobalScope.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = DedicatedWorkerGlobalScope.idl; path = workers/DedicatedWorkerGlobalScope.idl; sourceTree = "<group>"; };
@@ -13691,6 +13694,8 @@
 				93C4F6E91108F9A50099D0DB /* AccessibilityScrollbar.h */,
 				2981CAA8131822EC00D12F2A /* AccessibilityScrollView.cpp */,
 				29489FC512C00F0300D83F0F /* AccessibilityScrollView.h */,
+				415B3A6917CBE172000FCCE8 /* AccessibilitySearchFieldButtons.cpp */,
+				415B3A6A17CBE172000FCCE8 /* AccessibilitySearchFieldButtons.h */,
 				2981CAA9131822EC00D12F2A /* AccessibilitySlider.cpp */,
 				0709FC4D1025DEE30059CDBA /* AccessibilitySlider.h */,
 				29D7BCF51444AF580070619C /* AccessibilitySpinButton.cpp */,
@@ -21610,6 +21615,7 @@
 				31C0FF490E4CEFDD007D6FE5 /* DOMWebKitAnimationEvent.h in Headers */,
 				31C0FF4B0E4CEFDD007D6FE5 /* DOMWebKitAnimationEventInternal.h in Headers */,
 				A2E8AE4016A498CF006BB3AA /* DOMWebKitCSSFilterRule.h in Headers */,
+				415B3A6E17CBE267000FCCE8 /* AccessibilitySearchFieldButtons.h in Headers */,
 				A2E8AE4216A498CF006BB3AA /* DOMWebKitCSSFilterRuleInternal.h in Headers */,
 				31060379143281CD00ABF4BA /* DOMWebKitCSSFilterValue.h in Headers */,
 				3106037B143281CD00ABF4BA /* DOMWebKitCSSFilterValueInternal.h in Headers */,

Modified: trunk/Source/WebCore/accessibility/AXObjectCache.cpp (154777 => 154778)


--- trunk/Source/WebCore/accessibility/AXObjectCache.cpp	2013-08-28 20:42:02 UTC (rev 154777)
+++ trunk/Source/WebCore/accessibility/AXObjectCache.cpp	2013-08-28 22:19:25 UTC (rev 154778)
@@ -48,6 +48,7 @@
 #include "AccessibilitySVGRoot.h"
 #include "AccessibilityScrollView.h"
 #include "AccessibilityScrollbar.h"
+#include "AccessibilitySearchFieldButtons.h"
 #include "AccessibilitySlider.h"
 #include "AccessibilitySpinButton.h"
 #include "AccessibilityTable.h"
@@ -276,6 +277,10 @@
         return AccessibilitySVGRoot::create(renderer);
 #endif
     
+    // Search field buttons
+    if (node && node->isElementNode() && toElement(node)->isSearchFieldCancelButtonElement())
+        return AccessibilitySearchFieldCancelButton::create(renderer);
+    
     if (renderer->isBoxModelObject()) {
         RenderBoxModelObject* cssBox = toRenderBoxModelObject(renderer);
         if (cssBox->isListBox())

Modified: trunk/Source/WebCore/accessibility/AccessibilityAllInOne.cpp (154777 => 154778)


--- trunk/Source/WebCore/accessibility/AccessibilityAllInOne.cpp	2013-08-28 20:42:02 UTC (rev 154777)
+++ trunk/Source/WebCore/accessibility/AccessibilityAllInOne.cpp	2013-08-28 22:19:25 UTC (rev 154778)
@@ -41,6 +41,7 @@
 #include "AccessibilitySVGRoot.cpp"
 #include "AccessibilityScrollView.cpp"
 #include "AccessibilityScrollbar.cpp"
+#include "AccessibilitySearchFieldButtons.cpp"
 #include "AccessibilitySlider.cpp"
 #include "AccessibilityTable.cpp"
 #include "AccessibilityTableCell.cpp"

Added: trunk/Source/WebCore/accessibility/AccessibilitySearchFieldButtons.cpp (0 => 154778)


--- trunk/Source/WebCore/accessibility/AccessibilitySearchFieldButtons.cpp	                        (rev 0)
+++ trunk/Source/WebCore/accessibility/AccessibilitySearchFieldButtons.cpp	2013-08-28 22:19:25 UTC (rev 154778)
@@ -0,0 +1,72 @@
+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1.  Redistributions of source code must retain the above copyright
+ *     notice, this list of conditions and the following disclaimer.
+ * 2.  Redistributions in binary form must reproduce the above copyright
+ *     notice, this list of conditions and the following disclaimer in the
+ *     documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "AccessibilitySearchFieldButtons.h"
+
+#include "LocalizedStrings.h"
+#include "RenderObject.h"
+
+namespace WebCore {
+
+PassRefPtr<AccessibilitySearchFieldCancelButton> AccessibilitySearchFieldCancelButton::create(RenderObject* renderer)
+{
+    return adoptRef(new AccessibilitySearchFieldCancelButton(renderer));
+}
+
+AccessibilitySearchFieldCancelButton::AccessibilitySearchFieldCancelButton(RenderObject* renderer)
+    : AccessibilityRenderObject(renderer)
+{
+}
+
+String AccessibilitySearchFieldCancelButton::accessibilityDescription() const
+{
+    return AXSearchFieldCancelButtonText();
+}
+
+void AccessibilitySearchFieldCancelButton::accessibilityText(Vector<AccessibilityText>& textOrder)
+{
+    textOrder.append(AccessibilityText(accessibilityDescription(), AlternativeText));
+}
+
+bool AccessibilitySearchFieldCancelButton::press() const
+{
+    Node* node = this->node();
+    if (!node || !node->isElementNode())
+        return false;
+    
+    Element* element = toElement(node);
+    // The default event handler on SearchFieldCancelButtonElement requires hover.
+    element->setHovered(true);
+    element->accessKeyAction(true);
+    return true;
+}
+
+bool AccessibilitySearchFieldCancelButton::computeAccessibilityIsIgnored() const
+{
+    return accessibilityIsIgnoredByDefault();
+}
+
+} // namespace WebCore

Added: trunk/Source/WebCore/accessibility/AccessibilitySearchFieldButtons.h (0 => 154778)


--- trunk/Source/WebCore/accessibility/AccessibilitySearchFieldButtons.h	                        (rev 0)
+++ trunk/Source/WebCore/accessibility/AccessibilitySearchFieldButtons.h	2013-08-28 22:19:25 UTC (rev 154778)
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2013 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1.  Redistributions of source code must retain the above copyright
+ *     notice, this list of conditions and the following disclaimer.
+ * 2.  Redistributions in binary form must reproduce the above copyright
+ *     notice, this list of conditions and the following disclaimer in the
+ *     documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef AccessibilitySearchFieldButtons_h
+#define AccessibilitySearchFieldButtons_h
+
+#include "AccessibilityRenderObject.h"
+
+namespace WebCore {
+
+class AccessibilitySearchFieldCancelButton FINAL : public AccessibilityRenderObject {
+public:
+    static PassRefPtr<AccessibilitySearchFieldCancelButton> create(RenderObject*);
+    
+    virtual String accessibilityDescription() const OVERRIDE;
+    virtual void accessibilityText(Vector<AccessibilityText>&) OVERRIDE;
+    virtual bool press() const OVERRIDE;
+    virtual AccessibilityRole roleValue() const OVERRIDE { return ButtonRole; }
+
+protected:
+    virtual bool computeAccessibilityIsIgnored() const OVERRIDE;
+
+private:
+    explicit AccessibilitySearchFieldCancelButton(RenderObject*);
+};
+
+} // namespace WebCore
+
+#endif // AccessibilitySearchFieldButtons_h

Modified: trunk/Source/WebCore/dom/Element.h (154777 => 154778)


--- trunk/Source/WebCore/dom/Element.h	2013-08-28 20:42:02 UTC (rev 154777)
+++ trunk/Source/WebCore/dom/Element.h	2013-08-28 22:19:25 UTC (rev 154778)
@@ -469,6 +469,7 @@
     virtual bool isInRange() const { return false; }
     virtual bool isOutOfRange() const { return false; }
     virtual bool isFrameElementBase() const { return false; }
+    virtual bool isSearchFieldCancelButtonElement() const { return false; }
 
     virtual bool canContainRangeEndPoint() const { return true; }
 

Modified: trunk/Source/WebCore/html/shadow/TextControlInnerElements.h (154777 => 154778)


--- trunk/Source/WebCore/html/shadow/TextControlInnerElements.h	2013-08-28 20:42:02 UTC (rev 154777)
+++ trunk/Source/WebCore/html/shadow/TextControlInnerElements.h	2013-08-28 22:19:25 UTC (rev 154778)
@@ -86,6 +86,7 @@
     static PassRefPtr<SearchFieldCancelButtonElement> create(Document*);
 
     virtual void defaultEventHandler(Event*);
+    virtual bool isSearchFieldCancelButtonElement() const OVERRIDE { return true; }
     virtual bool willRespondToMouseClickEvents() OVERRIDE;
 
 private:

Modified: trunk/Source/WebCore/platform/LocalizedStrings.cpp (154777 => 154778)


--- trunk/Source/WebCore/platform/LocalizedStrings.cpp	2013-08-28 20:42:02 UTC (rev 154777)
+++ trunk/Source/WebCore/platform/LocalizedStrings.cpp	2013-08-28 22:19:25 UTC (rev 154778)
@@ -604,7 +604,12 @@
 {
     return WEB_UI_STRING("file upload button", "accessibility role description for a file upload button");
 }
-    
+
+String AXSearchFieldCancelButtonText()
+{
+    return WEB_UI_STRING("cancel", "accessibility description for a search field cancel button");
+}
+
 String AXButtonActionVerb()
 {
     return WEB_UI_STRING("press", "Verb stating the action that will occur when a button is pressed, as used by accessibility");

Modified: trunk/Source/WebCore/platform/LocalizedStrings.h (154777 => 154778)


--- trunk/Source/WebCore/platform/LocalizedStrings.h	2013-08-28 20:42:02 UTC (rev 154777)
+++ trunk/Source/WebCore/platform/LocalizedStrings.h	2013-08-28 22:19:25 UTC (rev 154778)
@@ -163,6 +163,7 @@
     String AXDescriptionListDetailText();
     String AXFooterRoleDescriptionText();
     String AXFileUploadButtonText();
+    String AXSearchFieldCancelButtonText();
     
     String AXButtonActionVerb();
     String AXRadioButtonActionVerb();

Modified: trunk/Source/WebCore/platform/efl/LocalizedStringsEfl.cpp (154777 => 154778)


--- trunk/Source/WebCore/platform/efl/LocalizedStringsEfl.cpp	2013-08-28 20:42:02 UTC (rev 154777)
+++ trunk/Source/WebCore/platform/efl/LocalizedStringsEfl.cpp	2013-08-28 22:19:25 UTC (rev 154778)
@@ -403,6 +403,11 @@
     return String::fromUTF8("footer");
 }
 
+String AXSearchFieldCancelButtonText()
+{
+    return String::fromUTF8("cancel");
+}
+
 String AXButtonActionVerb()
 {
     return String::fromUTF8("press");

Modified: trunk/Source/WebCore/platform/gtk/LocalizedStringsGtk.cpp (154777 => 154778)


--- trunk/Source/WebCore/platform/gtk/LocalizedStringsGtk.cpp	2013-08-28 20:42:02 UTC (rev 154777)
+++ trunk/Source/WebCore/platform/gtk/LocalizedStringsGtk.cpp	2013-08-28 22:19:25 UTC (rev 154778)
@@ -452,6 +452,11 @@
     return String::fromUTF8(_("footer"));
 }
 
+String AXSearchFieldCancelButtonText()
+{
+    return String::fromUTF8(_("cancel"));
+}
+
 String AXButtonActionVerb()
 {
     return String::fromUTF8(_("press"));

Modified: trunk/Source/WebCore/platform/qt/LocalizedStringsQt.cpp (154777 => 154778)


--- trunk/Source/WebCore/platform/qt/LocalizedStringsQt.cpp	2013-08-28 20:42:02 UTC (rev 154777)
+++ trunk/Source/WebCore/platform/qt/LocalizedStringsQt.cpp	2013-08-28 22:19:25 UTC (rev 154778)
@@ -423,6 +423,12 @@
     return String();
 }
 
+String AXSearchFieldCancelButtonText()
+{
+    notImplemented();
+    return String();
+}
+
 String AXButtonActionVerb()
 {
     notImplemented();
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to