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 99ef0a2..f6400c1 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 327d936..b6a637d 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 a6a8732..21d70f4 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 65e1560..0fff9cf 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 de59c1f..2112aa2 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 4d26c75..11546ed 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 9463d76..fac5ddc 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 e1cd35d..70f539d 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 2350def..eb35c4e 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 bc52fc9..8201d4f 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 8b12e8b..0fe22a5 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 a1beb6d..5669a28 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 3358c05..a14a470 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 f16c5b4..54c907d 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 0d64f06..374eb3e 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 63c471b..ff7dab7 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 9225d96..f32d6d3 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 100b37f..50baee7 100644 (file)
@@ -74,7 +74,7 @@ public:
 
     void click();
 
-    virtual void accessKeyAction(bool sendToAnyElement);
+    virtual void accessKeyAction(bool sendMouseEvents);
 
     bool ieForbidsInsertHTML() const;
 
index f467a04..714b4fe 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 0f6f415..05a09b9 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 8bad5d7..8eb6dfc 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 d3a1ed7..edd65f0 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 f2361f0..318fe88 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 2b09e17..2f84978 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 c946bc4..9460418 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 f998118..61d2db3 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 732ef33..24d8fce 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 750f32a..8cda34f 100644 (file)
@@ -22,7 +22,6 @@ module html {
 
     interface HTMLLegendElement : HTMLElement {
         readonly attribute HTMLFormElement form;
-        attribute [Reflect] DOMString accessKey;
         attribute [Reflect] DOMString align;
     };
 
index be01c8b..3d8dd17 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 084ec42..2910d86 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 ccd7a5a..0d74e7b 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 4fdf152..f455da7 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 8031d24..f12c21d 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 f518638..7adb5d3 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 8416ddb..c13fa08 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 e1d2cb8..acfe1cc 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 beaf632..c9c52a1 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;