2010-11-30 Daniel Bates <dbates@rim.com>
Reviewed by David Hyatt.
Focused <area> should use CSS properties of <area> instead of associated <img>
https://bugs.webkit.org/show_bug.cgi?id=49888
Fixes an issue where the CSS properties of an <area> were not used when
the <area> was focused.
Currently, when focusing an <area> (say by pressing option + tab in Mac
Safari) we use the CSS style information for the <img> associated with
the <area>. Instead, we should use the CSS style information for the
focused <area>. In particular, this will make the us honor the outline-
color property of a focused <area> when drawing its focus ring.
Tests: fast/images/imagemap-focus-ring-outline-color-explicitly-inherited-from-map.html
fast/images/imagemap-focus-ring-outline-color-not-inherited-from-map.html
fast/images/imagemap-focus-ring-outline-color.html
* rendering/RenderImage.cpp:
(WebCore::RenderImage::paintFocusRing): Use the style information of
the focused <area> when drawing the focus ring for it.
2010-11-30 Daniel Bates <dbates@rim.com>
Reviewed by David Hyatt.
Focused <area> should use CSS properties of <area> instead of associated <img>
https://bugs.webkit.org/show_bug.cgi?id=49888
Updated the test result for test fast/images/imagemap-focus-ring.html. Added
test to verify that the color of the focus ring for a focused <area> is
the outline-color specified by the :focus pseudo-class .
Also, added tests to ensure that outline-color is not inherited (by default) as per
section 18.4 of the CSS 2.1 spec <http://www.w3.org/TR/CSS2/ui.html#dynamic-outlines>,
unless explicitly inherited.
* fast/images/imagemap-focus-ring-outline-color-explicitly-inherited-from-map.html: Added.
* fast/images/imagemap-focus-ring-outline-color-not-inherited-from-map.html: Added.
* fast/images/imagemap-focus-ring-outline-color.html: Added.
* platform/mac/fast/images/imagemap-focus-ring-expected.checksum: Updated result.
* platform/mac/fast/images/imagemap-focus-ring-expected.png: Ditto.
* platform/mac/fast/images/imagemap-focus-ring-outline-color-expected.checksum: Added.
* platform/mac/fast/images/imagemap-focus-ring-outline-color-expected.png: Added.
* platform/mac/fast/images/imagemap-focus-ring-outline-color-expected.txt: Added.
* platform/mac/fast/images/imagemap-focus-ring-outline-color-explicitly-inherited-from-map-expected.checksum: Added.
* platform/mac/fast/images/imagemap-focus-ring-outline-color-explicitly-inherited-from-map-expected.png: Added.
* platform/mac/fast/images/imagemap-focus-ring-outline-color-explicitly-inherited-from-map-expected.txt: Added.
* platform/mac/fast/images/imagemap-focus-ring-outline-color-not-inherited-from-map-expected.checksum: Added.
* platform/mac/fast/images/imagemap-focus-ring-outline-color-not-inherited-from-map-expected.png: Added.
* platform/mac/fast/images/imagemap-focus-ring-outline-color-not-inherited-from-map-expected.txt: Added.
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@72962 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog
index 45e672b..adc23c3 100644
--- a/LayoutTests/ChangeLog
+++ b/LayoutTests/ChangeLog
@@ -1,3 +1,33 @@
+2010-11-30 Daniel Bates <dbates@rim.com>
+
+ Reviewed by David Hyatt.
+
+ Focused <area> should use CSS properties of <area> instead of associated <img>
+ https://bugs.webkit.org/show_bug.cgi?id=49888
+
+ Updated the test result for test fast/images/imagemap-focus-ring.html. Added
+ test to verify that the color of the focus ring for a focused <area> is
+ the outline-color specified by the :focus pseudo-class .
+
+ Also, added tests to ensure that outline-color is not inherited (by default) as per
+ section 18.4 of the CSS 2.1 spec <http://www.w3.org/TR/CSS2/ui.html#dynamic-outlines>,
+ unless explicitly inherited.
+
+ * fast/images/imagemap-focus-ring-outline-color-explicitly-inherited-from-map.html: Added.
+ * fast/images/imagemap-focus-ring-outline-color-not-inherited-from-map.html: Added.
+ * fast/images/imagemap-focus-ring-outline-color.html: Added.
+ * platform/mac/fast/images/imagemap-focus-ring-expected.checksum: Updated result.
+ * platform/mac/fast/images/imagemap-focus-ring-expected.png: Ditto.
+ * platform/mac/fast/images/imagemap-focus-ring-outline-color-expected.checksum: Added.
+ * platform/mac/fast/images/imagemap-focus-ring-outline-color-expected.png: Added.
+ * platform/mac/fast/images/imagemap-focus-ring-outline-color-expected.txt: Added.
+ * platform/mac/fast/images/imagemap-focus-ring-outline-color-explicitly-inherited-from-map-expected.checksum: Added.
+ * platform/mac/fast/images/imagemap-focus-ring-outline-color-explicitly-inherited-from-map-expected.png: Added.
+ * platform/mac/fast/images/imagemap-focus-ring-outline-color-explicitly-inherited-from-map-expected.txt: Added.
+ * platform/mac/fast/images/imagemap-focus-ring-outline-color-not-inherited-from-map-expected.checksum: Added.
+ * platform/mac/fast/images/imagemap-focus-ring-outline-color-not-inherited-from-map-expected.png: Added.
+ * platform/mac/fast/images/imagemap-focus-ring-outline-color-not-inherited-from-map-expected.txt: Added.
+
2010-11-30 Ojan Vafai <ojan@chromium.org>
[chromium] Update expectations to de-orange the builders.
diff --git a/LayoutTests/fast/images/imagemap-focus-ring-outline-color-explicitly-inherited-from-map.html b/LayoutTests/fast/images/imagemap-focus-ring-outline-color-explicitly-inherited-from-map.html
new file mode 100644
index 0000000..de9103d
--- /dev/null
+++ b/LayoutTests/fast/images/imagemap-focus-ring-outline-color-explicitly-inherited-from-map.html
@@ -0,0 +1,22 @@
+<html>
+<head>
+<style>
+map { outline-color: green; }
+area:focus { outline-color: inherit; }
+</style>
+<script>
+window.onload = function()
+{
+ document.getElementById("area").focus();
+}
+</script>
+</head>
+<body>
+<p>Assuming the port-specific theme draws focus rings, this test can be used to ensure that the focus ring color for an <area> can be explicitly inherited from <map>. This test PASSED if a green-colored focus ring is drawn around the <area> in the imagemap (below).</p>
+<map name="imagemap">
+ <area id="area" shape="rect" coords="0,0,128,128" href="#dummy"/>
+</map>
+<img src="imagemap.jpg" width="128" height="128" usemap="#imagemap" />
+</body>
+</head>
+</html>
diff --git a/LayoutTests/fast/images/imagemap-focus-ring-outline-color-not-inherited-from-map.html b/LayoutTests/fast/images/imagemap-focus-ring-outline-color-not-inherited-from-map.html
new file mode 100644
index 0000000..e3bd236
--- /dev/null
+++ b/LayoutTests/fast/images/imagemap-focus-ring-outline-color-not-inherited-from-map.html
@@ -0,0 +1,21 @@
+<html>
+<head>
+<style>
+map { outline-color: red; }
+</style>
+<script>
+window.onload = function()
+{
+ document.getElementById("area").focus();
+}
+</script>
+</head>
+<body>
+<p>Assuming the port-specific theme draws focus rings, this test can be used to ensure that the focus ring color is not inherited for an <area> (by default) as per <a href="http://www.w3.org/TR/CSS2/ui.html#dynamic-outlines">section 18.4 "Dynamic outlines: the 'outline' property" of the CSS2.1 spec</a>. This test FAILED if a red-colored focus ring is drawn around the <area> in the imagemap (below).</p>
+<map name="imagemap">
+ <area id="area" shape="rect" coords="0,0,128,128" href="#dummy"/>
+</map>
+<img src="imagemap.jpg" width="128" height="128" usemap="#imagemap" />
+</body>
+</head>
+</html>
diff --git a/LayoutTests/fast/images/imagemap-focus-ring-outline-color.html b/LayoutTests/fast/images/imagemap-focus-ring-outline-color.html
new file mode 100644
index 0000000..d513be2
--- /dev/null
+++ b/LayoutTests/fast/images/imagemap-focus-ring-outline-color.html
@@ -0,0 +1,21 @@
+<html>
+<head>
+<style>
+area:focus { outline-color: green; }
+</style>
+<script>
+window.onload = function()
+{
+ document.getElementById("area").focus();
+}
+</script>
+</head>
+<body>
+<p>Assuming the port-specific theme draws focus rings, this test can be used to ensure that a focus ring is drawn for an <area>. This test PASSED if a green-colored focus ring is drawn around the <area> in the imagemap (below).</p>
+<map name="imagemap">
+ <area id="area" shape="rect" coords="0,0,128,128" href="#dummy"/>
+</map>
+<img src="imagemap.jpg" width="128" height="128" usemap="#imagemap" />
+</body>
+</head>
+</html>
diff --git a/LayoutTests/platform/mac/fast/images/imagemap-focus-ring-expected.checksum b/LayoutTests/platform/mac/fast/images/imagemap-focus-ring-expected.checksum
index 767dbe0..3c44ffe 100644
--- a/LayoutTests/platform/mac/fast/images/imagemap-focus-ring-expected.checksum
+++ b/LayoutTests/platform/mac/fast/images/imagemap-focus-ring-expected.checksum
@@ -1 +1 @@
-c4ec4eae0407f510da84a6a2242f1322
\ No newline at end of file
+942b35ab0339372d6c4da944161be0e7
\ No newline at end of file
diff --git a/LayoutTests/platform/mac/fast/images/imagemap-focus-ring-expected.png b/LayoutTests/platform/mac/fast/images/imagemap-focus-ring-expected.png
index 8930283..3da4b40 100644
--- a/LayoutTests/platform/mac/fast/images/imagemap-focus-ring-expected.png
+++ b/LayoutTests/platform/mac/fast/images/imagemap-focus-ring-expected.png
Binary files differ
diff --git a/LayoutTests/platform/mac/fast/images/imagemap-focus-ring-outline-color-expected.checksum b/LayoutTests/platform/mac/fast/images/imagemap-focus-ring-outline-color-expected.checksum
new file mode 100644
index 0000000..ae371ea
--- /dev/null
+++ b/LayoutTests/platform/mac/fast/images/imagemap-focus-ring-outline-color-expected.checksum
@@ -0,0 +1 @@
+34542356965831f59d8902d19e94b26f
\ No newline at end of file
diff --git a/LayoutTests/platform/mac/fast/images/imagemap-focus-ring-outline-color-expected.png b/LayoutTests/platform/mac/fast/images/imagemap-focus-ring-outline-color-expected.png
new file mode 100644
index 0000000..5aafe65
--- /dev/null
+++ b/LayoutTests/platform/mac/fast/images/imagemap-focus-ring-outline-color-expected.png
Binary files differ
diff --git a/LayoutTests/platform/mac/fast/images/imagemap-focus-ring-outline-color-expected.txt b/LayoutTests/platform/mac/fast/images/imagemap-focus-ring-outline-color-expected.txt
new file mode 100644
index 0000000..67bd44e
--- /dev/null
+++ b/LayoutTests/platform/mac/fast/images/imagemap-focus-ring-outline-color-expected.txt
@@ -0,0 +1,16 @@
+layer at (0,0) size 800x600
+ RenderView at (0,0) size 800x600
+layer at (0,0) size 800x600
+ RenderBlock {HTML} at (0,0) size 800x600
+ RenderBody {BODY} at (8,8) size 784x584
+ RenderBlock {P} at (0,0) size 784x36
+ RenderText {#text} at (0,0) size 776x36
+ text run at (0,0) width 776: "Assuming the port-specific theme draws focus rings, this test can be used to ensure that a focus ring is drawn for an <area>."
+ text run at (0,18) width 642: "This test PASSED if a green-colored focus ring is drawn around the <area> in the imagemap (below)."
+ RenderBlock (anonymous) at (0,52) size 784x128
+ RenderInline {MAP} at (0,0) size 0x0
+ RenderText {#text} at (0,0) size 0x0
+ RenderText {#text} at (0,0) size 0x0
+ RenderText {#text} at (0,0) size 0x0
+ RenderImage {IMG} at (0,0) size 128x128
+ RenderText {#text} at (0,0) size 0x0
diff --git a/LayoutTests/platform/mac/fast/images/imagemap-focus-ring-outline-color-explicitly-inherited-from-map-expected.checksum b/LayoutTests/platform/mac/fast/images/imagemap-focus-ring-outline-color-explicitly-inherited-from-map-expected.checksum
new file mode 100644
index 0000000..4550fd5
--- /dev/null
+++ b/LayoutTests/platform/mac/fast/images/imagemap-focus-ring-outline-color-explicitly-inherited-from-map-expected.checksum
@@ -0,0 +1 @@
+de5081183e5a8aeb05247d4d99307d87
\ No newline at end of file
diff --git a/LayoutTests/platform/mac/fast/images/imagemap-focus-ring-outline-color-explicitly-inherited-from-map-expected.png b/LayoutTests/platform/mac/fast/images/imagemap-focus-ring-outline-color-explicitly-inherited-from-map-expected.png
new file mode 100644
index 0000000..e74be91
--- /dev/null
+++ b/LayoutTests/platform/mac/fast/images/imagemap-focus-ring-outline-color-explicitly-inherited-from-map-expected.png
Binary files differ
diff --git a/LayoutTests/platform/mac/fast/images/imagemap-focus-ring-outline-color-explicitly-inherited-from-map-expected.txt b/LayoutTests/platform/mac/fast/images/imagemap-focus-ring-outline-color-explicitly-inherited-from-map-expected.txt
new file mode 100644
index 0000000..fec65f1
--- /dev/null
+++ b/LayoutTests/platform/mac/fast/images/imagemap-focus-ring-outline-color-explicitly-inherited-from-map-expected.txt
@@ -0,0 +1,17 @@
+layer at (0,0) size 800x600
+ RenderView at (0,0) size 800x600
+layer at (0,0) size 800x600
+ RenderBlock {HTML} at (0,0) size 800x600
+ RenderBody {BODY} at (8,8) size 784x584
+ RenderBlock {P} at (0,0) size 784x54
+ RenderText {#text} at (0,0) size 769x54
+ text run at (0,0) width 762: "Assuming the port-specific theme draws focus rings, this test can be used to ensure that the focus ring color for an <area>"
+ text run at (0,18) width 769: "can be explicitly inherited from <map>. This test PASSED if a green-colored focus ring is drawn around the <area> in the"
+ text run at (0,36) width 122: "imagemap (below)."
+ RenderBlock (anonymous) at (0,70) size 784x128
+ RenderInline {MAP} at (0,0) size 0x0
+ RenderText {#text} at (0,0) size 0x0
+ RenderText {#text} at (0,0) size 0x0
+ RenderText {#text} at (0,0) size 0x0
+ RenderImage {IMG} at (0,0) size 128x128
+ RenderText {#text} at (0,0) size 0x0
diff --git a/LayoutTests/platform/mac/fast/images/imagemap-focus-ring-outline-color-not-inherited-from-map-expected.checksum b/LayoutTests/platform/mac/fast/images/imagemap-focus-ring-outline-color-not-inherited-from-map-expected.checksum
new file mode 100644
index 0000000..7be5562
--- /dev/null
+++ b/LayoutTests/platform/mac/fast/images/imagemap-focus-ring-outline-color-not-inherited-from-map-expected.checksum
@@ -0,0 +1 @@
+c6c9e1e279354d77e34722d88dd09e13
\ No newline at end of file
diff --git a/LayoutTests/platform/mac/fast/images/imagemap-focus-ring-outline-color-not-inherited-from-map-expected.png b/LayoutTests/platform/mac/fast/images/imagemap-focus-ring-outline-color-not-inherited-from-map-expected.png
new file mode 100644
index 0000000..9ee1287
--- /dev/null
+++ b/LayoutTests/platform/mac/fast/images/imagemap-focus-ring-outline-color-not-inherited-from-map-expected.png
Binary files differ
diff --git a/LayoutTests/platform/mac/fast/images/imagemap-focus-ring-outline-color-not-inherited-from-map-expected.txt b/LayoutTests/platform/mac/fast/images/imagemap-focus-ring-outline-color-not-inherited-from-map-expected.txt
new file mode 100644
index 0000000..081b4ff
--- /dev/null
+++ b/LayoutTests/platform/mac/fast/images/imagemap-focus-ring-outline-color-not-inherited-from-map-expected.txt
@@ -0,0 +1,22 @@
+layer at (0,0) size 800x600
+ RenderView at (0,0) size 800x600
+layer at (0,0) size 800x600
+ RenderBlock {HTML} at (0,0) size 800x600
+ RenderBody {BODY} at (8,8) size 784x584
+ RenderBlock {P} at (0,0) size 784x54
+ RenderText {#text} at (0,0) size 770x36
+ text run at (0,0) width 770: "Assuming the port-specific theme draws focus rings, this test can be used to ensure that the focus ring color is not inherited"
+ text run at (0,18) width 207: "for an <area> (by default) as per "
+ RenderInline {A} at (0,0) size 467x18 [color=#0000EE]
+ RenderText {#text} at (207,18) size 467x18
+ text run at (207,18) width 467: "section 18.4 \"Dynamic outlines: the 'outline' property\" of the CSS2.1 spec"
+ RenderText {#text} at (674,18) size 735x36
+ text run at (674,18) width 61: ". This test"
+ text run at (0,36) width 567: "FAILED if a red-colored focus ring is drawn around the <area> in the imagemap (below)."
+ RenderBlock (anonymous) at (0,70) size 784x128
+ RenderInline {MAP} at (0,0) size 0x0
+ RenderText {#text} at (0,0) size 0x0
+ RenderText {#text} at (0,0) size 0x0
+ RenderText {#text} at (0,0) size 0x0
+ RenderImage {IMG} at (0,0) size 128x128
+ RenderText {#text} at (0,0) size 0x0
diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index 310671f..e79174a 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,27 @@
+2010-11-30 Daniel Bates <dbates@rim.com>
+
+ Reviewed by David Hyatt.
+
+ Focused <area> should use CSS properties of <area> instead of associated <img>
+ https://bugs.webkit.org/show_bug.cgi?id=49888
+
+ Fixes an issue where the CSS properties of an <area> were not used when
+ the <area> was focused.
+
+ Currently, when focusing an <area> (say by pressing option + tab in Mac
+ Safari) we use the CSS style information for the <img> associated with
+ the <area>. Instead, we should use the CSS style information for the
+ focused <area>. In particular, this will make the us honor the outline-
+ color property of a focused <area> when drawing its focus ring.
+
+ Tests: fast/images/imagemap-focus-ring-outline-color-explicitly-inherited-from-map.html
+ fast/images/imagemap-focus-ring-outline-color-not-inherited-from-map.html
+ fast/images/imagemap-focus-ring-outline-color.html
+
+ * rendering/RenderImage.cpp:
+ (WebCore::RenderImage::paintFocusRing): Use the style information of
+ the focused <area> when drawing the focus ring for it.
+
2010-11-30 Tony Chang <tony@chromium.org>
Reviewed by James Robinson.
diff --git a/WebCore/rendering/RenderImage.cpp b/WebCore/rendering/RenderImage.cpp
index 376ffef..34799f4 100644
--- a/WebCore/rendering/RenderImage.cpp
+++ b/WebCore/rendering/RenderImage.cpp
@@ -357,8 +357,9 @@
HTMLAreaElement* areaElement = static_cast<HTMLAreaElement*>(areas->item(k));
if (focusedNode != areaElement)
continue;
-
- paintInfo.context->drawFocusRing(areaElement->getPath(this), style->outlineWidth(), style->outlineOffset(), style->visitedDependentColor(CSSPropertyOutlineColor));
+
+ RenderStyle* styleToUse = areaElement->computedStyle();
+ paintInfo.context->drawFocusRing(areaElement->getPath(this), styleToUse->outlineWidth(), styleToUse->outlineOffset(), styleToUse->visitedDependentColor(CSSPropertyOutlineColor));
break;
}
}