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*);