[webkit-changes] cvs commit: LayoutTests/fast/css-generated-content
014.html 014-expected.txt
David
hyatt at opensource.apple.com
Mon Oct 24 15:59:41 PDT 2005
hyatt 05/10/24 15:59:40
Modified: . ChangeLog
khtml/css cssstyleselector.cpp
Added: fast/css-generated-content 014.html 014-expected.txt
Log:
Fix for 5485, make sure generated content's "rightmost selector"
check does not apply once you move to another selector in the
compound selector chain.
Reviewed by mjs
* khtml/css/cssstyleselector.cpp:
(khtml::CSSStyleSelector::checkSelector):
Revision Changes Path
1.278 +11 -0 WebCore/ChangeLog
Index: ChangeLog
===================================================================
RCS file: /cvs/root/WebCore/ChangeLog,v
retrieving revision 1.277
retrieving revision 1.278
diff -u -r1.277 -r1.278
--- ChangeLog 24 Oct 2005 22:51:04 -0000 1.277
+++ ChangeLog 24 Oct 2005 22:59:30 -0000 1.278
@@ -1,3 +1,14 @@
+2005-10-24 David Hyatt <hyatt at apple.com>
+
+ Fix for 5485, make sure generated content's "rightmost selector"
+ check does not apply once you move to another selector in the
+ compound selector chain.
+
+ Reviewed by mjs
+
+ * khtml/css/cssstyleselector.cpp:
+ (khtml::CSSStyleSelector::checkSelector):
+
2005-10-24 Mitz Pettel <opendarwin.org at mitzpettel.com>
Reviewed by Darin, committed by beth.
1.214 +1 -1 WebCore/khtml/css/cssstyleselector.cpp
Index: cssstyleselector.cpp
===================================================================
RCS file: /cvs/root/WebCore/khtml/css/cssstyleselector.cpp,v
retrieving revision 1.213
retrieving revision 1.214
diff -u -r1.213 -r1.214
--- cssstyleselector.cpp 23 Oct 2005 15:12:31 -0000 1.213
+++ cssstyleselector.cpp 24 Oct 2005 22:59:37 -0000 1.214
@@ -1100,7 +1100,7 @@
//kdDebug() << "CSSOrderedRule::checkSelector" << endl;
ElementImpl *elem = static_cast<ElementImpl *>(n);
// a selector is invalid if something follows :first-xxx
- if (dynamicPseudo != RenderStyle::NOPSEUDO)
+ if (elem == element && dynamicPseudo != RenderStyle::NOPSEUDO)
return false;
if (!checkOneSelector(sel, elem)) return false;
//kdDebug() << "CSSOrderedRule::checkSelector: passed" << endl;
1.1 LayoutTests/fast/css-generated-content/014.html
Index: 014.html
===================================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>Safari CSS2 :after test</title>
<style type="text/css">
/* the following styles are for general layout purposes;
they are not required for the purposes of this example */
div.box{
border:1px solid #000;
margin:25px 0;
padding:25px;
}
code{
font-weight:bold;
}
pre{
margin-left:20px;
}
pre.error{
color:red;
}
pre.ok{
color:green;
}
</style>
</head>
<body>
<h1>Problem: Safari improperly handles generated content in certain cases when used with multiple class names</h1>
<p><em>When referencing an element by two class names simultaneously, Safari won't generate content (using :before or :after) within the element.</em></p>
<p>Assume we have a <code>div</code> with two class names: <code>box</code> and <code>one</code>. Within that <code>div</code>, we have a <code>p</code> (paragraph) tag, after which we'd like to insert generated content. One way to do so would be the following:</p>
<pre class="error"><code>div.box.one p:after{ content:'generated content here!'; }</code></pre>
<p>But that doesn't work in Safari. However, if you drop one of the class names, as shown below, it works as expected:</p>
<pre class="ok"><code>div.box p:after{ content:'generated content here!'; }</code></pre>
<p>Note also that the bug only applies to content <em>within</em> the classed element — generating content <em>before or after the element itself</em> works fine:</p>
<pre class="ok"><code>div.box.one:after{ content:'generated content here!'; }</code></pre>
<hr />
<!-- all code necessary for the example, including CSS, is below: -->
<h2>Example (view source to see CSS and HTML):</h2>
<style type="text/css">
div.box.one p:after{
content:'generated content';
color:green;
display:block;
}
div.two p:after{
content:'generated content';
color:green;
display:block;
}
</style>
<p>Both boxes below should contain generated content (<span style="color:green;">in green</span>):</p>
<div class="box one">
<h3>Box 1</h3>
<p>This box should contain the text "generated content" in CSS2-compliant browsers (but won't in Safari).</p>
</div>
<div class="box two">
<h3>Box 2</h3>
<p>This box should contain the text "generated content" in CSS2-compliant browsers, including Safari.</p>
</div>
<!-- end example -->
</body>
</html>
1.1 LayoutTests/fast/css-generated-content/014-expected.txt
Index: 014-expected.txt
===================================================================
layer at (0,0) size 785x881
RenderCanvas at (0,0) size 785x600
layer at (0,0) size 785x881
RenderBlock {HTML} at (0,0) size 785x881
RenderBody {BODY} at (8,21) size 769x835
RenderBlock {H1} at (0,0) size 769x74
RenderText {TEXT} at (0,0) size 750x74
text run at (0,0) width 750: "Problem: Safari improperly handles generated content"
text run at (0,37) width 716: "in certain cases when used with multiple class names"
RenderBlock {P} at (0,95) size 769x36
RenderInline {EM} at (0,0) size 755x36
RenderText {TEXT} at (0,0) size 755x36
text run at (0,0) width 755: "When referencing an element by two class names simultaneously, Safari won't generate content (using :before or :after)"
text run at (0,18) width 119: "within the element."
RenderBlock {P} at (0,147) size 769x36
RenderText {TEXT} at (0,0) size 123x18
text run at (0,0) width 123: "Assume we have a "
RenderInline {CODE} at (0,0) size 24x15
RenderText {TEXT} at (123,2) size 24x15
text run at (123,2) width 24: "div"
RenderText {TEXT} at (147,0) size 146x18
text run at (147,0) width 146: " with two class names: "
RenderInline {CODE} at (0,0) size 24x15
RenderText {TEXT} at (293,2) size 24x15
text run at (293,2) width 24: "box"
RenderText {TEXT} at (317,0) size 31x18
text run at (317,0) width 31: " and "
RenderInline {CODE} at (0,0) size 24x15
RenderText {TEXT} at (348,2) size 24x15
text run at (348,2) width 24: "one"
RenderText {TEXT} at (372,0) size 82x18
text run at (372,0) width 82: ". Within that "
RenderInline {CODE} at (0,0) size 24x15
RenderText {TEXT} at (454,2) size 24x15
text run at (454,2) width 24: "div"
RenderText {TEXT} at (478,0) size 76x18
text run at (478,0) width 76: ", we have a "
RenderInline {CODE} at (0,0) size 8x15
RenderText {TEXT} at (554,2) size 8x15
text run at (554,2) width 8: "p"
RenderText {TEXT} at (562,0) size 741x36
text run at (562,0) width 179: " (paragraph) tag, after which"
text run at (0,18) width 501: "we'd like to insert generated content. One way to do so would be the following:"
RenderBlock {PRE} at (20,199) size 749x15 [color=#FF0000]
RenderInline {CODE} at (0,0) size 456x15
RenderText {TEXT} at (0,0) size 456x15
text run at (0,0) width 456: "div.box.one p:after{ content:'generated content here!'; }"
RenderBlock {P} at (0,230) size 769x18
RenderText {TEXT} at (0,0) size 732x18
text run at (0,0) width 732: "But that doesn't work in Safari. However, if you drop one of the class names, as shown below, it works as expected:"
RenderBlock {PRE} at (20,264) size 749x15 [color=#008000]
RenderInline {CODE} at (0,0) size 424x15
RenderText {TEXT} at (0,0) size 424x15
text run at (0,0) width 424: "div.box p:after{ content:'generated content here!'; }"
RenderBlock {P} at (0,295) size 769x36
RenderText {TEXT} at (0,0) size 288x18
text run at (0,0) width 288: "Note also that the bug only applies to content "
RenderInline {EM} at (0,0) size 39x18
RenderText {TEXT} at (288,0) size 39x18
text run at (288,0) width 39: "within"
RenderText {TEXT} at (327,0) size 269x18
text run at (327,0) width 269: " the classed element \x{2014} generating content "
RenderInline {EM} at (0,0) size 763x36
RenderText {TEXT} at (596,0) size 763x36
text run at (596,0) width 167: "before or after the element"
text run at (0,18) width 29: "itself"
RenderText {TEXT} at (29,18) size 75x18
text run at (29,18) width 75: " works fine:"
RenderBlock {PRE} at (20,347) size 749x15 [color=#008000]
RenderInline {CODE} at (0,0) size 440x15
RenderText {TEXT} at (0,0) size 440x15
text run at (0,0) width 440: "div.box.one:after{ content:'generated content here!'; }"
RenderBlock {HR} at (0,375) size 769x2 [border: (1px inset #000000)]
RenderBlock {H2} at (0,396) size 769x28
RenderText {TEXT} at (0,0) size 477x28
text run at (0,0) width 477: "Example (view source to see CSS and HTML):"
RenderBlock {P} at (0,443) size 769x18
RenderText {TEXT} at (0,0) size 335x18
text run at (0,0) width 335: "Both boxes below should contain generated content ("
RenderInline {SPAN} at (0,0) size 51x18 [color=#008000]
RenderText {TEXT} at (335,0) size 51x18
text run at (335,0) width 51: "in green"
RenderText {TEXT} at (386,0) size 9x18
text run at (386,0) width 9: "):"
RenderBlock {DIV} at (0,486) size 769x162 [border: (1px solid #000000)]
RenderBlock {H3} at (26,44) size 717x22
RenderText {TEXT} at (0,0) size 48x22
text run at (0,0) width 48: "Box 1"
RenderBlock {P} at (26,84) size 717x36
RenderBlock (anonymous) at (0,0) size 717x18
RenderText {TEXT} at (0,0) size 650x18
text run at (0,0) width 650: "This box should contain the text \"generated content\" in CSS2-compliant browsers (but won't in Safari)."
RenderBlock (generated) at (0,18) size 717x18 [color=#008000]
RenderText at (0,0) size 111x18
text run at (0,0) width 111: "generated content"
RenderBlock {DIV} at (0,673) size 769x162 [border: (1px solid #000000)]
RenderBlock {H3} at (26,44) size 717x22
RenderText {TEXT} at (0,0) size 48x22
text run at (0,0) width 48: "Box 2"
RenderBlock {P} at (26,84) size 717x36
RenderBlock (anonymous) at (0,0) size 717x18
RenderText {TEXT} at (0,0) size 628x18
text run at (0,0) width 628: "This box should contain the text \"generated content\" in CSS2-compliant browsers, including Safari."
RenderBlock (generated) at (0,18) size 717x18 [color=#008000]
RenderText at (0,0) size 111x18
text run at (0,0) width 111: "generated content"
More information about the webkit-changes
mailing list