Title: [112134] trunk
Revision
112134
Author
commit-qu...@webkit.org
Date
2012-03-26 11:51:52 -0700 (Mon, 26 Mar 2012)

Log Message

An <area> element remains focusable even though its associated <img> is not rendered.
https://bugs.webkit.org/show_bug.cgi?id=71788

Patch by Antaryami Pandia <antaryami.pan...@motorola.com> on 2012-03-26
Reviewed by Andy Estes.

Source/WebCore:

HTMLAreaElement::isFocusable() needs to consider the display and
visibility state.

Test: fast/events/tab-test-not-visible-imagemap.html

* html/HTMLAreaElement.cpp:
(WebCore::HTMLAreaElement::imageElement):
(WebCore::HTMLAreaElement::isFocusable):
* html/HTMLAreaElement.h: Make imageElement() const.
(HTMLAreaElement):

LayoutTests:

Test sequential focus navigation.

* fast/events/tab-test-not-visible-imagemap-expected.txt: Added.
* fast/events/tab-test-not-visible-imagemap.html: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (112133 => 112134)


--- trunk/LayoutTests/ChangeLog	2012-03-26 18:44:26 UTC (rev 112133)
+++ trunk/LayoutTests/ChangeLog	2012-03-26 18:51:52 UTC (rev 112134)
@@ -1,3 +1,15 @@
+2012-03-26  Antaryami Pandia  <antaryami.pan...@motorola.com>
+
+        An <area> element remains focusable even though its associated <img> is not rendered.
+        https://bugs.webkit.org/show_bug.cgi?id=71788
+
+        Reviewed by Andy Estes.
+
+        Test sequential focus navigation.
+
+        * fast/events/tab-test-not-visible-imagemap-expected.txt: Added.
+        * fast/events/tab-test-not-visible-imagemap.html: Added.
+
 2012-03-26  Ojan Vafai  <o...@chromium.org>
 
         Trim the set of flaky css3/selectors3/xml tests on SnowLeopard to

Added: trunk/LayoutTests/fast/events/tab-test-not-visible-imagemap-expected.txt (0 => 112134)


--- trunk/LayoutTests/fast/events/tab-test-not-visible-imagemap-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/fast/events/tab-test-not-visible-imagemap-expected.txt	2012-03-26 18:51:52 UTC (rev 112134)
@@ -0,0 +1,15 @@
+
+
+
+Test that tabbing does not focus area element when its associated image is not rendered.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS document.activeElement.id is 'input1'
+PASS document.activeElement.id is 'input2'
+PASS document.activeElement.id is 'input3'
+PASS successfullyParsed is true
+
+TEST COMPLETE
+

Added: trunk/LayoutTests/fast/events/tab-test-not-visible-imagemap.html (0 => 112134)


--- trunk/LayoutTests/fast/events/tab-test-not-visible-imagemap.html	                        (rev 0)
+++ trunk/LayoutTests/fast/events/tab-test-not-visible-imagemap.html	2012-03-26 18:51:52 UTC (rev 112134)
@@ -0,0 +1,64 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<script src=""
+<body id="body">
+
+<form>
+<table>
+<tbody>
+    <tr><td><input id="input1" type="text"/></td></tr>
+    <tr style="display: none"><td>
+
+    <map name="mymap">
+        <area id="area1" shape="circle" coords="70,84,51" href=""
+        <area id="area2" shape="rect" coords="25,180,125,280" href=""
+        <area id="area3" shape="poly" coords="153,106,186,225,340,193,315,81,304,167" href=""
+        <area id="area4" shape="rect" coords="420,19,478,278" nohref>
+        <area id="area5" shape="circle" coords="220,150,100" href=""
+        <area id="area6" shape="default" coords="0,0,500,300" href=""
+        <area id="area7" shape="rect" coords="1, 1, 10, 10" tabindex=-1 href=""
+    </map>
+
+    <img src="" width="500" height="300" alt="Image Map" usemap="" ismap>
+
+    </td></tr>
+    <tr><td><input id ="input2" type="text"/></td></tr>
+
+    <tr style="visibility: hidden"><td>
+
+    <map name="map">
+        <area id="area8" shape="rect" coords=coords="5,48,247,97" href=""
+    </map>
+
+    <img src="" width="500" height="300" alt="Image Map" usemap="" ismap>
+
+    </td></tr>
+    <tr><td><input id ="input3" type="text"/></td></tr>
+
+</tbody>
+</table>
+</form>
+
+
+<p id="description"></p>
+<div id="console"></div>
+
+<script>
+
+    description("Test that tabbing does not focus area element when its associated image is not rendered.");
+
+    eventSender.keyDown('\t');
+    shouldBe("document.activeElement.id", "'input1'");
+
+    eventSender.keyDown('\t');
+    shouldBe("document.activeElement.id", "'input2'");
+
+    eventSender.keyDown('\t');
+    shouldBe("document.activeElement.id", "'input3'");
+
+</script>
+
+<script src=""
+</body>
+</html>

Modified: trunk/Source/WebCore/ChangeLog (112133 => 112134)


--- trunk/Source/WebCore/ChangeLog	2012-03-26 18:44:26 UTC (rev 112133)
+++ trunk/Source/WebCore/ChangeLog	2012-03-26 18:51:52 UTC (rev 112134)
@@ -1,3 +1,21 @@
+2012-03-26  Antaryami Pandia  <antaryami.pan...@motorola.com>
+
+        An <area> element remains focusable even though its associated <img> is not rendered.
+        https://bugs.webkit.org/show_bug.cgi?id=71788
+
+        Reviewed by Andy Estes.
+
+        HTMLAreaElement::isFocusable() needs to consider the display and
+        visibility state.
+
+        Test: fast/events/tab-test-not-visible-imagemap.html
+
+        * html/HTMLAreaElement.cpp:
+        (WebCore::HTMLAreaElement::imageElement):
+        (WebCore::HTMLAreaElement::isFocusable):
+        * html/HTMLAreaElement.h: Make imageElement() const.
+        (HTMLAreaElement):
+
 2012-03-26  Anton Muhin  <ant...@chromium.org>
 
         Fix a typo in IDL

Modified: trunk/Source/WebCore/html/HTMLAreaElement.cpp (112133 => 112134)


--- trunk/Source/WebCore/html/HTMLAreaElement.cpp	2012-03-26 18:44:26 UTC (rev 112133)
+++ trunk/Source/WebCore/html/HTMLAreaElement.cpp	2012-03-26 18:51:52 UTC (rev 112134)
@@ -179,7 +179,7 @@
     return path;
 }
 
-HTMLImageElement* HTMLAreaElement::imageElement()
+HTMLImageElement* HTMLAreaElement::imageElement() const
 {
     Node* mapElement = parentNode();
     if (!mapElement || !mapElement->hasTagName(mapTag))
@@ -200,6 +200,10 @@
 
 bool HTMLAreaElement::isFocusable() const
 {
+    HTMLImageElement* image = imageElement();
+    if (!image || !image->renderer() || image->renderer()->style()->visibility() != VISIBLE)
+        return false;
+
     return supportsFocus() && Element::tabIndex() >= 0;
 }
     

Modified: trunk/Source/WebCore/html/HTMLAreaElement.h (112133 => 112134)


--- trunk/Source/WebCore/html/HTMLAreaElement.h	2012-03-26 18:44:26 UTC (rev 112133)
+++ trunk/Source/WebCore/html/HTMLAreaElement.h	2012-03-26 18:51:52 UTC (rev 112134)
@@ -45,7 +45,7 @@
     Path computePath(RenderObject*) const;
 
     // The parent map's image.
-    HTMLImageElement* imageElement();
+    HTMLImageElement* imageElement() const;
     
 private:
     HTMLAreaElement(const QualifiedName&, Document*);
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to