Access key should work on all elements.
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 18 Nov 2011 21:19:14 +0000 (21:19 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 18 Nov 2011 21:19:14 +0000 (21:19 +0000)
https://bugs.webkit.org/show_bug.cgi?id=71854

Patch by Vineet Chaudhary <vineet.chaudhary@motorola.com> on 2011-11-18
Reviewed by Ryosuke Niwa.

Source/WebCore:

All HTML elements can have the accesskey content attribute set.
Specification http://dev.w3.org/html5/spec/Overview.html#the-accesskey-attribute
Adding "accessKey" attribute to HTMLElement.idl file as [Reflect].

Test: fast/forms/access-key-for-all-elements.html

* bindings/objc/PublicDOMInterfaces.h: Moved properties form subclass to base class.
* html/BaseButtonInputType.cpp:
(WebCore::BaseButtonInputType::accessKeyAction): Renamed variable sendToAnyElement to sendMouseEvents.
* html/BaseButtonInputType.h: Ditto
* html/BaseCheckableInputType.cpp:
(WebCore::BaseCheckableInputType::accessKeyAction): Ditto
* html/BaseCheckableInputType.h: Ditto
* html/HTMLAnchorElement.cpp:
(WebCore::HTMLAnchorElement::accessKeyAction): Ditto
* html/HTMLAnchorElement.h: Ditto
* html/HTMLAnchorElement.idl: Removed redundant IDL attribute entries.
* html/HTMLAreaElement.idl: Removed redundant IDL attribute entries.
* html/HTMLButtonElement.cpp:
(WebCore::HTMLButtonElement::accessKeyAction): Renamed variable sendToAnyElement to sendMouseEvents.
* html/HTMLButtonElement.h: Ditto
* html/HTMLButtonElement.idl: Removed redundant IDL attribute entries.
* html/HTMLElement.cpp:
(WebCore::HTMLElement::accessKeyAction): Renamed variable sendToAnyElement to sendMouseEvents.
If the element does not have a defined activation behavior, fire a click event at the element.
* html/HTMLElement.h: Ditto
* html/HTMLElement.idl: Added accessKey IDL attribute.
* html/HTMLInputElement.cpp:
(WebCore::HTMLInputElement::accessKeyAction): Renamed variable sendToAnyElement to sendMouseEvents.
* html/HTMLInputElement.h: Ditto
* html/HTMLInputElement.idl: Removed redundant IDL attribute entries.
* html/HTMLLabelElement.cpp:
(WebCore::HTMLLabelElement::accessKeyAction): Renamed variable sendToAnyElement to sendMouseEvents.
* html/HTMLLabelElement.h: Ditto
* html/HTMLLabelElement.idl: Removed redundant IDL attribute entries.
* html/HTMLLegendElement.cpp:
(WebCore::HTMLLegendElement::accessKeyAction): Renamed variable sendToAnyElement to sendMouseEvents.
* html/HTMLLegendElement.h: Ditto
* html/HTMLLegendElement.idl: Removed redundant IDL attribute entries.
* html/HTMLOptGroupElement.h: Renamed variable sendToAnyElement to sendMouseEvents.
* html/HTMLSelectElement.cpp:
(WebCore::HTMLSelectElement::accessKeyAction): Ditto
* html/HTMLSelectElement.h: Ditto
* html/HTMLTextAreaElement.h: Ditto
* html/HTMLTextAreaElement.idl: Removed redundant IDL attribute entries.
* html/HiddenInputType.h: Renamed variable sendToAnyElement to sendMouseEvents.
* html/InputType.h: Ditto
* html/RangeInputType.cpp:
(WebCore::RangeInputType::accessKeyAction): Ditto
* html/RangeInputType.h: Ditto

LayoutTests:

Added test case to check whether all elements can also have accessKey attribute.

* fast/forms/access-key-expected.txt:
* fast/forms/access-key-for-all-elements-expected.txt: Added.
* fast/forms/access-key-for-all-elements.html: Added.
* fast/forms/access-key.html: Added more test coverage for select and textarea elements.

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

39 files changed:
LayoutTests/ChangeLog
LayoutTests/fast/forms/access-key-expected.txt
LayoutTests/fast/forms/access-key-for-all-elements-expected.txt [new file with mode: 0644]
LayoutTests/fast/forms/access-key-for-all-elements.html [new file with mode: 0644]
LayoutTests/fast/forms/access-key.html
Source/WebCore/ChangeLog
Source/WebCore/bindings/objc/PublicDOMInterfaces.h
Source/WebCore/html/BaseButtonInputType.cpp
Source/WebCore/html/BaseButtonInputType.h
Source/WebCore/html/BaseCheckableInputType.cpp
Source/WebCore/html/BaseCheckableInputType.h
Source/WebCore/html/HTMLAnchorElement.cpp
Source/WebCore/html/HTMLAnchorElement.h
Source/WebCore/html/HTMLAnchorElement.idl
Source/WebCore/html/HTMLAreaElement.idl
Source/WebCore/html/HTMLButtonElement.cpp
Source/WebCore/html/HTMLButtonElement.h
Source/WebCore/html/HTMLButtonElement.idl
Source/WebCore/html/HTMLElement.cpp
Source/WebCore/html/HTMLElement.h
Source/WebCore/html/HTMLElement.idl
Source/WebCore/html/HTMLInputElement.cpp
Source/WebCore/html/HTMLInputElement.h
Source/WebCore/html/HTMLInputElement.idl
Source/WebCore/html/HTMLLabelElement.cpp
Source/WebCore/html/HTMLLabelElement.h
Source/WebCore/html/HTMLLabelElement.idl
Source/WebCore/html/HTMLLegendElement.cpp
Source/WebCore/html/HTMLLegendElement.h
Source/WebCore/html/HTMLLegendElement.idl
Source/WebCore/html/HTMLOptGroupElement.h
Source/WebCore/html/HTMLSelectElement.cpp
Source/WebCore/html/HTMLSelectElement.h
Source/WebCore/html/HTMLTextAreaElement.h
Source/WebCore/html/HTMLTextAreaElement.idl
Source/WebCore/html/HiddenInputType.h
Source/WebCore/html/InputType.h
Source/WebCore/html/RangeInputType.cpp
Source/WebCore/html/RangeInputType.h

index 99ef0a2a8ecb97e990793477909d534f540d50a9..f6400c109db28c5ced2c1e7d9a7074ca05823b89 100755 (executable)
@@ -1,3 +1,17 @@
+2011-11-18  Vineet Chaudhary  <vineet.chaudhary@motorola.com>
+
+        Access key should work on all elements.
+        https://bugs.webkit.org/show_bug.cgi?id=71854
+
+        Reviewed by Ryosuke Niwa.
+
+        Added test case to check whether all elements can also have accessKey attribute.
+
+        * fast/forms/access-key-expected.txt:
+        * fast/forms/access-key-for-all-elements-expected.txt: Added.
+        * fast/forms/access-key-for-all-elements.html: Added.
+        * fast/forms/access-key.html: Added more test coverage for select and textarea elements.
+
 2011-11-18  Adam Klein  <adamk@chromium.org>
 
         Layout Test accessibility/loading-iframe-sends-notification.html is slow on Win dbg
index 327d9363e8294732ab021d2a5cf51570ec35a3e2..b6a637dd757a3ea1bca5f0c6056b5c2b3770a735 100644 (file)
@@ -5,7 +5,7 @@ If this test passes you should see 1 - 9 and a, b and c clicked or focussed.
      
 
 
-   
+     
 1 button focussed
 1 button clicked
 2 input type button focussed
@@ -23,3 +23,6 @@ If this test passes you should see 1 - 9 and a, b and c clicked or focussed.
 a input type associated to label closed before input focussed
 b area 1 clicked
 c area 2 clicked
+d select focussed
+d select clicked
+e textarea focussed
diff --git a/LayoutTests/fast/forms/access-key-for-all-elements-expected.txt b/LayoutTests/fast/forms/access-key-for-all-elements-expected.txt
new file mode 100644 (file)
index 0000000..e4b8856
--- /dev/null
@@ -0,0 +1,617 @@
+This test checks to see if accesskey attributes works on all elements.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+Check for A tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for ABBR tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for ACRONYM tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for ADDRESS tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for APPLET tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for AREA tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for ARTICLE tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for ASIDE tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for AUDIO tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for B tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for BASE tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for BASEFONT tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for BDO tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for BGSOUND tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for BIG tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for BLOCKQUOTE tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for BODY tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for BR tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for CANVAS tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for CAPTION tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for CENTER tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for CITE tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for CODE tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for COL tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for COLGROUP tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for COMMAND tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for DATALIST tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for DD tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for DEL tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for DETAILS tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for DFN tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for DIR tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for DIV tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for DL tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for DT tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for EM tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for EMBED tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for FIELDSET tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for FIGCAPTION tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for FIGURE tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for FONT tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for FOOTER tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for FORM tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for FRAME tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for FRAMESET tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for H1 tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for H2 tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for H3 tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for H4 tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for H5 tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for H6 tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for HEAD tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for HEADER tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for HGROUP tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for HR tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for HTML tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for I tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for IFRAME tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for IMG tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for INS tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for KBD tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for KEYGEN tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for LABEL tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for LAYER tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for LI tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for LINK tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for LISTING tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for MAP tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for MARK tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for MARQUEE tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for MENU tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for META tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for METER tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for NAV tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for NOBR tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for NOEMBED tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for NOFRAMES tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for NOLAYER tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for NOSCRIPT tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for OBJECT tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for OL tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for OUTPUT tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for P tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for PARAM tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for PLAINTEXT tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for PRE tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for PROGRESS tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for Q tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for RP tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for RT tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for RUBY tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for S tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for SAMP tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for SCRIPT tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for SECTION tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for SMALL tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for SOURCE tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for SPAN tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for STRIKE tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for STRONG tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for STYLE tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for SUB tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for SUMMARY tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for SUP tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for TABLE tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for TBODY tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for TD tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for TFOOT tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for TH tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for THEAD tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for TITLE tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for TR tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for TRACK tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for TT tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for U tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for UL tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for VAR tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for VIDEO tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for WBR tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+Check for XMP tag
+PASS testElement.accessKey is defined.
+PASS testElement.accessKey ='k'; testElement.accessKey == 'k' is true
+PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
+
+
+
+
+
+
+
+
diff --git a/LayoutTests/fast/forms/access-key-for-all-elements.html b/LayoutTests/fast/forms/access-key-for-all-elements.html
new file mode 100644 (file)
index 0000000..2353aad
--- /dev/null
@@ -0,0 +1,44 @@
+<!DOCTYPE html>
+<html>
+<head>
+<script src="../js/resources/js-test-pre.js"></script>
+</head>
+<body>
+<script>
+description('This test checks to see if accesskey attributes works on all elements.');
+
+function pressKey(key)
+{
+    if (/\bMac OS X\b/.test(navigator.userAgent))
+        modifiers = ["ctrlKey", "altKey"];
+    else
+        modifiers = ["altKey"];
+    eventSender.keyDown(key, modifiers);
+}
+
+var tagNames = ["a","abbr","acronym","address","applet","area","article","aside","audio","b","base","basefont","bdo","bgsound","big","blockquote",
+    "body","br","canvas","caption","center","cite","code","col","colgroup","command","datalist","dd","del","details","dfn","dir","div","dl","dt",
+    "em","embed","fieldset","figcaption","figure","font","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html",
+    "i","iframe","img","ins","kbd","keygen","label","layer","li","link","listing","map","mark","marquee","menu","meta","meter","nav",
+    "nobr","noembed","noframes","nolayer","noscript","object","ol","output","p","param","plaintext","pre","progress","q","rp","rt","ruby","s",
+    "samp","script","section","small","source","span","strike","strong","style","sub","summary","sup","table","tbody","td","tfoot","th","thead",
+    "title","tr","track","tt","u","ul","var","video","wbr","xmp"];
+
+for (var i = 0 ; i < tagNames.length; i++) {
+    var testElement = document.createElement(tagNames[i]);
+    document.body.appendChild(testElement);
+    var clicked = false;
+    testElement.onclick = function () { clicked = true; }
+    var focused = false;
+    testElement.onfocus = function () { focused = true; }
+    debug('Check for ' + testElement.tagName + ' tag');    
+    shouldBeDefined('testElement.accessKey');
+    shouldBeTrue("testElement.accessKey ='k'; testElement.accessKey == 'k'");
+    shouldBe("pressKey(testElement.accessKey);[clicked, focused]", "[true, false]");
+    debug('');
+}
+</script>
+<script src="../js/resources/js-test-post.js"></script>
+<div id="console"></div>
+</body>
+</html>
index a6a8732af7fec0bc7050e30354cb9b79c8b8faac..21d70f4b8afba7fa705ef4e5934616e1682a966c 100644 (file)
@@ -25,6 +25,8 @@ function test()
         pressKey("a");
         pressKey("b");
         pressKey("c");
+        pressKey("d");
+        pressKey("e");
     }
 }
 </script>
@@ -49,6 +51,8 @@ function test()
     <area accesskey="c" shape="rect" coords="6,0,10,10" alt="" href="#" onfocus="log('c area 2 focussed')" onclick="log('c area 2 clicked')">
 </map>
 <img usemap="#mymap" alt="pic" src="#" height="10" width="10">
+<select accesskey="d" onfocus="log('d select focussed')" onclick="log('d select clicked')"></select>
+<textarea accesskey="e" onfocus="log('e textarea focussed')" onclick="log('e textarea clicked')"></textarea>
 </p>
 <hr>
 <ol id="console"></ol>
index 65e1560ee40592c65f17eeb01469b2f82d5d50a9..0fff9cf83c3fb8b7cda74d5fcc0957ba23d0c04e 100644 (file)
@@ -1,3 +1,61 @@
+2011-11-18  Vineet Chaudhary  <vineet.chaudhary@motorola.com>
+
+        Access key should work on all elements.
+        https://bugs.webkit.org/show_bug.cgi?id=71854
+
+        Reviewed by Ryosuke Niwa.
+
+        All HTML elements can have the accesskey content attribute set.
+        Specification http://dev.w3.org/html5/spec/Overview.html#the-accesskey-attribute
+        Adding "accessKey" attribute to HTMLElement.idl file as [Reflect].
+
+        Test: fast/forms/access-key-for-all-elements.html
+
+        * bindings/objc/PublicDOMInterfaces.h: Moved properties form subclass to base class.
+        * html/BaseButtonInputType.cpp: 
+        (WebCore::BaseButtonInputType::accessKeyAction): Renamed variable sendToAnyElement to sendMouseEvents.
+        * html/BaseButtonInputType.h: Ditto
+        * html/BaseCheckableInputType.cpp:
+        (WebCore::BaseCheckableInputType::accessKeyAction): Ditto
+        * html/BaseCheckableInputType.h: Ditto
+        * html/HTMLAnchorElement.cpp:
+        (WebCore::HTMLAnchorElement::accessKeyAction): Ditto
+        * html/HTMLAnchorElement.h: Ditto
+        * html/HTMLAnchorElement.idl: Removed redundant IDL attribute entries.
+        * html/HTMLAreaElement.idl: Removed redundant IDL attribute entries.
+        * html/HTMLButtonElement.cpp:
+        (WebCore::HTMLButtonElement::accessKeyAction): Renamed variable sendToAnyElement to sendMouseEvents.
+        * html/HTMLButtonElement.h: Ditto
+        * html/HTMLButtonElement.idl: Removed redundant IDL attribute entries.
+        * html/HTMLElement.cpp:
+        (WebCore::HTMLElement::accessKeyAction): Renamed variable sendToAnyElement to sendMouseEvents.
+        If the element does not have a defined activation behavior, fire a click event at the element.
+        * html/HTMLElement.h: Ditto
+        * html/HTMLElement.idl: Added accessKey IDL attribute.
+        * html/HTMLInputElement.cpp:
+        (WebCore::HTMLInputElement::accessKeyAction): Renamed variable sendToAnyElement to sendMouseEvents.
+        * html/HTMLInputElement.h: Ditto
+        * html/HTMLInputElement.idl: Removed redundant IDL attribute entries.
+        * html/HTMLLabelElement.cpp:
+        (WebCore::HTMLLabelElement::accessKeyAction): Renamed variable sendToAnyElement to sendMouseEvents.
+        * html/HTMLLabelElement.h: Ditto
+        * html/HTMLLabelElement.idl: Removed redundant IDL attribute entries.
+        * html/HTMLLegendElement.cpp:
+        (WebCore::HTMLLegendElement::accessKeyAction): Renamed variable sendToAnyElement to sendMouseEvents.
+        * html/HTMLLegendElement.h: Ditto
+        * html/HTMLLegendElement.idl: Removed redundant IDL attribute entries.
+        * html/HTMLOptGroupElement.h: Renamed variable sendToAnyElement to sendMouseEvents.
+        * html/HTMLSelectElement.cpp:
+        (WebCore::HTMLSelectElement::accessKeyAction): Ditto
+        * html/HTMLSelectElement.h: Ditto
+        * html/HTMLTextAreaElement.h: Ditto
+        * html/HTMLTextAreaElement.idl: Removed redundant IDL attribute entries.
+        * html/HiddenInputType.h: Renamed variable sendToAnyElement to sendMouseEvents.
+        * html/InputType.h: Ditto
+        * html/RangeInputType.cpp:
+        (WebCore::RangeInputType::accessKeyAction): Ditto
+        * html/RangeInputType.h: Ditto
+
 2011-11-18  Simon Fraser  <simon.fraser@apple.com>
 
         Appearance of compound transform animations under apps linked on SnowLeopard is incorrect
index de59c1f0102a28d5f08046d6d2333998da8f520c..2112aa265c535f272f8c21f048775916799dcfc6 100644 (file)
 @end
 
 @interface DOMHTMLAnchorElement : DOMHTMLElement WEBKIT_VERSION_1_3
-@property(copy) NSString *accessKey;
 @property(copy) NSString *charset;
 @property(copy) NSString *coords;
 @property(copy) NSString *href;
 @end
 
 @interface DOMHTMLAreaElement : DOMHTMLElement WEBKIT_VERSION_1_3
-@property(copy) NSString *accessKey;
 @property(copy) NSString *alt;
 @property(copy) NSString *coords;
 @property(copy) NSString *href;
 
 @interface DOMHTMLButtonElement : DOMHTMLElement WEBKIT_VERSION_1_3
 @property(readonly, retain) DOMHTMLFormElement *form;
-@property(copy) NSString *accessKey;
 @property BOOL disabled;
 @property(copy) NSString *name;
 @property(readonly, copy) NSString *type;
 @end
 
 @interface DOMHTMLElement : DOMElement WEBKIT_VERSION_1_3
+@property(copy) NSString *accessKey;
 @property(copy) NSString *title;
 @property(copy) NSString *idName;
 @property(copy) NSString *lang;
 @property BOOL defaultChecked;
 @property(readonly, retain) DOMHTMLFormElement *form;
 @property(copy) NSString *accept;
-@property(copy) NSString *accessKey;
 @property(copy) NSString *align;
 @property(copy) NSString *alt;
 @property BOOL checked;
 
 @interface DOMHTMLLabelElement : DOMHTMLElement WEBKIT_VERSION_1_3
 @property(readonly, retain) DOMHTMLFormElement *form;
-@property(copy) NSString *accessKey;
 @property(copy) NSString *htmlFor;
 @end
 
 @interface DOMHTMLLegendElement : DOMHTMLElement WEBKIT_VERSION_1_3
 @property(readonly, retain) DOMHTMLFormElement *form;
-@property(copy) NSString *accessKey;
 @property(copy) NSString *align;
 @end
 
 @interface DOMHTMLTextAreaElement : DOMHTMLElement WEBKIT_VERSION_1_3
 @property(copy) NSString *defaultValue;
 @property(readonly, retain) DOMHTMLFormElement *form;
-@property(copy) NSString *accessKey;
 @property int cols;
 @property BOOL disabled;
 @property(copy) NSString *name;
index 4d26c75331492376eeb2edc581b250c24466b814..11546eddda79cd3ded4dca1ad02c05f20c4d644a 100644 (file)
@@ -86,13 +86,13 @@ RenderObject* BaseButtonInputType::createRenderer(RenderArena* arena, RenderStyl
 }
 
 // FIXME: Could share this with BaseCheckableInputType and RangeInputType if we had a common base class.
-void BaseButtonInputType::accessKeyAction(bool sendToAnyElement)
+void BaseButtonInputType::accessKeyAction(bool sendMouseEvents)
 {
-    InputType::accessKeyAction(sendToAnyElement);
+    InputType::accessKeyAction(sendMouseEvents);
 
-    // Send mouse button events if the caller specified sendToAnyElement.
+    // Send mouse button events if the caller specified sendMouseEvents.
     // FIXME: The comment above is no good. It says what we do, but not why.
-    element()->dispatchSimulatedClick(0, sendToAnyElement);
+    element()->dispatchSimulatedClick(0, sendMouseEvents);
 }
 
 bool BaseButtonInputType::storesValueSeparateFromAttribute()
index 9463d76ebd49dedd8e82a9c79c2626094242bfa4..fac5ddcfa85362a21db24ce2d4fcc58215de94f8 100644 (file)
@@ -46,7 +46,7 @@ private:
     virtual void handleKeypressEvent(KeyboardEvent*);
     virtual void handleKeyupEvent(KeyboardEvent*);
     virtual RenderObject* createRenderer(RenderArena*, RenderStyle*) const;
-    virtual void accessKeyAction(bool sendToAnyElement);
+    virtual void accessKeyAction(bool sendMouseEvents);
     virtual bool storesValueSeparateFromAttribute();
     virtual void setValue(const String&, bool, bool);
 };
index e1cd35d4f7a160f1860961c7541d6ed5ad74228e..70f539d803f4a797dc0d978c235d94ede120110b 100644 (file)
@@ -85,13 +85,13 @@ bool BaseCheckableInputType::canSetStringValue() const
 }
 
 // FIXME: Could share this with BaseButtonInputType and RangeInputType if we had a common base class.
-void BaseCheckableInputType::accessKeyAction(bool sendToAnyElement)
+void BaseCheckableInputType::accessKeyAction(bool sendMouseEvents)
 {
-    InputType::accessKeyAction(sendToAnyElement);
+    InputType::accessKeyAction(sendMouseEvents);
 
-    // Send mouse button events if the caller specified sendToAnyElement.
+    // Send mouse button events if the caller specified sendMouseEvents.
     // FIXME: The comment above is no good. It says what we do, but not why.
-    element()->dispatchSimulatedClick(0, sendToAnyElement);
+    element()->dispatchSimulatedClick(0, sendMouseEvents);
 }
 
 String BaseCheckableInputType::fallbackValue() const
index 2350defa6677ecfd120978ef185312b17759d585..eb35c4e53321938e2c3577239947a9cd7e0531fb 100644 (file)
@@ -47,7 +47,7 @@ private:
     virtual bool appendFormData(FormDataList&, bool) const;
     virtual void handleKeypressEvent(KeyboardEvent*);
     virtual bool canSetStringValue() const;
-    virtual void accessKeyAction(bool sendToAnyElement);
+    virtual void accessKeyAction(bool sendMouseEvents);
     virtual String fallbackValue() const OVERRIDE;
     virtual bool storesValueSeparateFromAttribute();
     virtual void setValue(const String&, bool, bool);
index bc52fc95e580f19aaa8b9fe26a214cf2802c36c2..8201d4f08b70d8832e6f0906c581381e36d798a9 100644 (file)
@@ -230,10 +230,10 @@ void HTMLAnchorElement::parseMappedAttribute(Attribute* attr)
         HTMLElement::parseMappedAttribute(attr);
 }
 
-void HTMLAnchorElement::accessKeyAction(bool sendToAnyElement)
+void HTMLAnchorElement::accessKeyAction(bool sendMouseEvents)
 {
-    // send the mouse button events if the caller specified sendToAnyElement
-    dispatchSimulatedClick(0, sendToAnyElement);
+    // send the mouse button events if the caller specified sendMouseEvents
+    dispatchSimulatedClick(0, sendMouseEvents);
 }
 
 bool HTMLAnchorElement::isURLAttribute(Attribute *attr) const
index 8b12e8b9474e3e618e224f4d87ad7e0d3748a7aa..0fe22a549e7f7efa3e8ab90a38797221a06a66b0 100644 (file)
@@ -104,7 +104,7 @@ private:
     virtual bool isKeyboardFocusable(KeyboardEvent*) const;
     virtual void defaultEventHandler(Event*);
     virtual void setActive(bool active = true, bool pause = false);
-    virtual void accessKeyAction(bool fullAction);
+    virtual void accessKeyAction(bool sendMouseEvents);
     virtual bool isURLAttribute(Attribute*) const;
     virtual bool canStartSelection() const;
     virtual String target() const;
index a1beb6d79bc3d27c200dd984070043ec8b0ef0ef..5669a281cd7e928df43532c0f8b2866914f519c2 100644 (file)
@@ -21,7 +21,6 @@
 module html {
 
     interface HTMLAnchorElement : HTMLElement {
-        attribute [Reflect] DOMString accessKey;
         attribute [Reflect] DOMString charset;
         attribute [Reflect] DOMString coords;
         attribute [Conditional=DOWNLOAD_ATTRIBUTE, Reflect] DOMString download;
index 3358c051a59826931c0985be730e003eca4efd5f..a14a4701f364f917478f6c4a8f99034d1506fadb 100644 (file)
@@ -21,7 +21,6 @@
 module html {
 
     interface HTMLAreaElement : HTMLElement {
-        attribute [Reflect] DOMString accessKey;
         attribute [Reflect] DOMString alt;
         attribute [Reflect] DOMString coords;
         attribute [Reflect, URL] DOMString href;
index f16c5b40edd00b8fd1cd686ed99f55571c8c6683..54c907dc0b4ecfce4db36c10b4528851d19e8ec5 100644 (file)
@@ -162,11 +162,11 @@ bool HTMLButtonElement::appendFormData(FormDataList& formData, bool)
     return true;
 }
 
-void HTMLButtonElement::accessKeyAction(bool sendToAnyElement)
+void HTMLButtonElement::accessKeyAction(bool sendMouseEvents)
 {
     focus();
-    // send the mouse button events iff the caller specified sendToAnyElement
-    dispatchSimulatedClick(0, sendToAnyElement);
+    // Send the mouse button events if the caller specified sendMouseEvents
+    dispatchSimulatedClick(0, sendMouseEvents);
 }
 
 bool HTMLButtonElement::isURLAttribute(Attribute* attr) const
index 0d64f0679803888487d534b27f9874c94e6b1361..374eb3e97eee4c1e69d3a4cd6a50b228ed56872f 100644 (file)
@@ -53,7 +53,7 @@ private:
     virtual bool isActivatedSubmit() const;
     virtual void setActivatedSubmit(bool flag);
 
-    virtual void accessKeyAction(bool sendToAnyElement);
+    virtual void accessKeyAction(bool sendMouseEvents);
     virtual bool isURLAttribute(Attribute*) const;
 
     virtual bool canStartSelection() const { return false; }
index 63c471bb308136b0046d4e86db6155e162a7dae7..ff7dab7ba77449f0d4612f701b448a99ba44da9e 100644 (file)
@@ -30,7 +30,6 @@ module html {
         attribute [Reflect] DOMString formTarget;
         readonly attribute ValidityState validity;
 
-        attribute [Reflect] DOMString accessKey;
         attribute [Reflect] boolean disabled;
         attribute [Reflect] boolean autofocus;
         attribute [Reflect] DOMString name;
index 9225d9692d8ea3a5cc9f87ea09677db7a8103210..f32d6d3c8261d8a73b8c389b246fc44534a7df85 100644 (file)
@@ -774,17 +774,9 @@ void HTMLElement::click()
     dispatchSimulatedClick(0, false, false);
 }
 
-// accessKeyAction is used by the accessibility support code
-// to send events to elements that our JavaScript caller does
-// does not.  The elements JS is interested in have subclasses
-// that override this method to direct the click appropriately.
-// Here in the base class, then, we only send the click if
-// the caller wants it to go to any HTMLElement, and we say
-// to send the mouse events in addition to the click.
-void HTMLElement::accessKeyAction(bool sendToAnyElement)
-{
-    if (sendToAnyElement)
-        dispatchSimulatedClick(0, true);
+void HTMLElement::accessKeyAction(bool sendMouseEvents)
+{
+    dispatchSimulatedClick(0, sendMouseEvents);
 }
 
 String HTMLElement::title() const
index 100b37fb744cf7c1a9f94ba04e4f15d0a7f6d37d..50baee7e17b04eba0d8e242bda65a89832d7367c 100644 (file)
@@ -74,7 +74,7 @@ public:
 
     void click();
 
-    virtual void accessKeyAction(bool sendToAnyElement);
+    virtual void accessKeyAction(bool sendMouseEvents);
 
     bool ieForbidsInsertHTML() const;
 
index f467a0474d3e8e76bc7ad717dd6ae809c141745f..714b4fe73efe6178ba15dec2a5db1517c5bdf233 100644 (file)
@@ -37,6 +37,7 @@ module html {
                  attribute boolean           draggable;
                  attribute [Reflect] DOMString webkitdropzone;
                  attribute [Reflect] boolean hidden;
+                 attribute [Reflect] DOMString accessKey;
 
         // Extensions
                  attribute [ConvertNullToNullString] DOMString innerHTML
index 0f6f41597f569a04d51f1464f692ee4293e0d5fb..05a09b9cc7a9d44d171348ab6584673043880e72 100644 (file)
@@ -699,9 +699,9 @@ bool HTMLInputElement::canHaveSelection() const
     return isTextField();
 }
 
-void HTMLInputElement::accessKeyAction(bool sendToAnyElement)
+void HTMLInputElement::accessKeyAction(bool sendMouseEvents)
 {
-    m_inputType->accessKeyAction(sendToAnyElement);
+    m_inputType->accessKeyAction(sendMouseEvents);
 }
 
 bool HTMLInputElement::mapToEntry(const QualifiedName& attrName, MappedAttributeEntry& result) const
index 8bad5d75226377e9cce146d4c54e667887d470dd..8eb6dfce745638d31b5679ea73d5a9fbae4319f3 100644 (file)
@@ -272,7 +272,7 @@ private:
 
     virtual bool canStartSelection() const;
 
-    virtual void accessKeyAction(bool sendToAnyElement);
+    virtual void accessKeyAction(bool sendMouseEvents);
 
     virtual bool mapToEntry(const QualifiedName& attrName, MappedAttributeEntry& result) const;
     virtual void parseMappedAttribute(Attribute*);
index d3a1ed7bf7ae6dc20a60e343abdd16a99451d0f6..edd65f0b4a4ff5c9ab782982f41174ced358a743 100644 (file)
@@ -31,7 +31,6 @@ module html {
         attribute [Reflect] DOMString formTarget;
         readonly attribute ValidityState validity;
         attribute [Reflect] DOMString accept;
-        attribute [Reflect] DOMString accessKey;
         attribute [Reflect] DOMString align;
         attribute [Reflect] DOMString alt;
         attribute boolean checked;
index f2361f03aa881d6fa153e926299dd579f5c15e76..318fe88da2cb3ac1905c9b83fa51e1c9c7cad9aa 100644 (file)
@@ -146,12 +146,12 @@ void HTMLLabelElement::focus(bool)
         element->focus();
 }
 
-void HTMLLabelElement::accessKeyAction(bool sendToAnyElement)
+void HTMLLabelElement::accessKeyAction(bool sendMouseEvents)
 {
     if (HTMLElement* element = control())
-        element->accessKeyAction(sendToAnyElement);
+        element->accessKeyAction(sendMouseEvents);
     else
-        HTMLElement::accessKeyAction(sendToAnyElement);
+        HTMLElement::accessKeyAction(sendMouseEvents);
 }
 
 void HTMLLabelElement::parseMappedAttribute(Attribute* attribute)
index 2b09e1707e9f7f188ef2ab03af56c89e8a775f86..2f8497839278c45eff34be383c97a09cbd444201 100644 (file)
@@ -40,7 +40,7 @@ private:
 
     virtual bool isFocusable() const;
 
-    virtual void accessKeyAction(bool sendToAnyElement);
+    virtual void accessKeyAction(bool sendMouseEvents);
 
     // Overridden to update the hover/active state of the corresponding control.
     virtual void setActive(bool = true, bool pause = false);
index c946bc40e963ad8394f04edfcb2e6bef7029b302..9460418cdf0a78a8f1f9d97d775003ca45f00ac3 100644 (file)
@@ -22,7 +22,6 @@ module html {
 
     interface HTMLLabelElement : HTMLElement {
         readonly attribute HTMLFormElement form;
-        attribute [Reflect] DOMString accessKey;
         attribute [Reflect=for] DOMString htmlFor;
         readonly attribute HTMLElement control;
     };
index f998118bf7497ead504eb39396799f5da8f59831..61d2db31b35802a5c639fe744183407d7f4bfb0a 100644 (file)
@@ -87,10 +87,10 @@ void HTMLLegendElement::focus(bool)
         control->focus(false);
 }
 
-void HTMLLegendElement::accessKeyAction(bool sendToAnyElement)
+void HTMLLegendElement::accessKeyAction(bool sendMouseEvents)
 {
     if (HTMLFormControlElement* control = associatedControl())
-        control->accessKeyAction(sendToAnyElement);
+        control->accessKeyAction(sendMouseEvents);
 }
     
 } // namespace
index 732ef33dc04931f00ee59714389c1c028839868d..24d8fce827bee26acebae3cc9fa4d4f4fc4999b8 100644 (file)
@@ -40,7 +40,7 @@ private:
 
     virtual bool supportsFocus() const;
     virtual const AtomicString& formControlType() const;
-    virtual void accessKeyAction(bool sendToAnyElement);
+    virtual void accessKeyAction(bool sendMouseEvents);
     virtual void focus(bool restorePreviousSelection = true);
 };
 
index 750f32a4c1f2bba1301bddcee8d36d93931c83b4..8cda34f583da74b53175677d3232d2968832ced0 100644 (file)
@@ -22,7 +22,6 @@ module html {
 
     interface HTMLLegendElement : HTMLElement {
         readonly attribute HTMLFormElement form;
-        attribute [Reflect] DOMString accessKey;
         attribute [Reflect] DOMString align;
     };
 
index be01c8bf4745311891d6b473b3e3f2df85dab1a6..3d8dd17535f668c4d07f771a5c67923a9e9b0562 100644 (file)
@@ -52,7 +52,7 @@ private:
 
     virtual void childrenChanged(bool changedByParser = false, Node* beforeChange = 0, Node* afterChange = 0, int childCountDelta = 0);
 
-    virtual void accessKeyAction(bool sendToAnyElement);
+    virtual void accessKeyAction(bool sendMouseEvents);
     
     virtual RenderStyle* nonRendererRenderStyle() const;
     
index 084ec42020148317773d13cbf67fe1f7b0559a33..2910d860dcdf8202710ebd44cd434c8db67c90fc 100644 (file)
@@ -347,10 +347,10 @@ void HTMLSelectElement::optionElementChildrenChanged()
         renderer()->document()->axObjectCache()->childrenChanged(renderer());
 }
 
-void HTMLSelectElement::accessKeyAction(bool sendToAnyElement)
+void HTMLSelectElement::accessKeyAction(bool sendMouseEvents)
 {
     focus();
-    dispatchSimulatedClick(0, sendToAnyElement);
+    dispatchSimulatedClick(0, sendMouseEvents);
 }
 
 void HTMLSelectElement::setMultiple(bool multiple)
index ccd7a5a9962de75be4026bee24461991a2b6f5ef..0d74e7bffb42aa30296afd8e88cbe2e587425b20 100644 (file)
@@ -74,7 +74,7 @@ public:
 
     const Vector<HTMLElement*>& listItems() const;
 
-    virtual void accessKeyAction(bool sendToAnyElement);
+    virtual void accessKeyAction(bool sendMouseEvents);
     void accessKeySetSelectedIndex(int);
 
     void setMultiple(bool);
index 4fdf1525a7378dfadd448f174ab1d86d729665cd..f455da7fd5dea41bdc8d3007b5dbbeb8c32fcafe 100644 (file)
@@ -101,7 +101,7 @@ private:
     virtual bool isKeyboardFocusable(KeyboardEvent*) const;
     virtual void updateFocusAppearance(bool restorePreviousSelection);
 
-    virtual void accessKeyAction(bool sendToAnyElement);
+    virtual void accessKeyAction(bool sendMouseEvents);
 
     virtual bool shouldUseInputMethod();
 
index 8031d24baffcc508e0488834a085c9b7df060f2e..f12c21d6753a027ed78308580be530dbb5e18c12 100644 (file)
@@ -25,7 +25,6 @@ module html {
         attribute [ConvertNullToNullString] DOMString defaultValue;
         readonly attribute HTMLFormElement form;
         readonly attribute ValidityState validity;
-        attribute [Reflect] DOMString accessKey;
         attribute long cols;
         attribute [Reflect] boolean disabled;
         attribute [Reflect] boolean autofocus;
index f5186385def999c13cc58bb3c7fbe1a51243286c..7adb5d3ac4ef4ff7b2f1b5a31a7d4353372ac1e3 100644 (file)
@@ -44,7 +44,7 @@ private:
     virtual const AtomicString& formControlType() const;
     virtual bool supportsValidation() const;
     virtual RenderObject* createRenderer(RenderArena*, RenderStyle*) const;
-    virtual void accessKeyAction(bool sendToAnyElement);
+    virtual void accessKeyAction(bool sendMouseEvents);
     virtual bool rendererIsNeeded();
     virtual bool storesValueSeparateFromAttribute();
     virtual bool isHiddenType() const;
index 8416ddb9c662e12005128d10e69751c58d482c86..c13fa0833f5c3cc28910d34c9eb3be1edbc2ed36 100644 (file)
@@ -184,7 +184,7 @@ public:
     virtual bool isKeyboardFocusable() const;
     virtual bool shouldUseInputMethod() const;
     virtual void handleBlurEvent();
-    virtual void accessKeyAction(bool sendToAnyElement);
+    virtual void accessKeyAction(bool sendMouseEvents);
     virtual bool canBeSuccessfulSubmitButton();
 
 
index e1d2cb84e2ae1cf231464f376ef6ef157dad6503..acfe1cca524783f1257703fe2f10b3cc23baf014 100644 (file)
@@ -266,13 +266,13 @@ String RangeInputType::serialize(double value) const
 }
 
 // FIXME: Could share this with BaseButtonInputType and BaseCheckableInputType if we had a common base class.
-void RangeInputType::accessKeyAction(bool sendToAnyElement)
+void RangeInputType::accessKeyAction(bool sendMouseEvents)
 {
-    InputType::accessKeyAction(sendToAnyElement);
+    InputType::accessKeyAction(sendMouseEvents);
 
-    // Send mouse button events if the caller specified sendToAnyElement.
+    // Send mouse button events if the caller specified sendMouseEvents.
     // FIXME: The comment above is no good. It says what we do, but not why.
-    element()->dispatchSimulatedClick(0, sendToAnyElement);
+    element()->dispatchSimulatedClick(0, sendMouseEvents);
 }
 
 void RangeInputType::minOrMaxAttributeChanged()
index beaf63206ae3e5383552a5bb369996be0eb67e1b..c9c52a1663d0c577525c3b291464e5369e84e27b 100644 (file)
@@ -64,7 +64,7 @@ private:
     virtual void createShadowSubtree();
     virtual double parseToDouble(const String&, double) const;
     virtual String serialize(double) const;
-    virtual void accessKeyAction(bool sendToAnyElement);
+    virtual void accessKeyAction(bool sendMouseEvents);
     virtual void minOrMaxAttributeChanged();
     virtual void setValue(const String&, bool valueChanged, bool sendChangeEvent);
     virtual String fallbackValue() const OVERRIDE;