Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(135)

Side by Side Diff: third_party/WebKit/Source/core/css/AffectedByFocusTest.cpp

Issue 2392343005: Reflow comments in core/css (Closed)
Patch Set: Revert clang-format Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | third_party/WebKit/Source/core/css/CSSBorderImageSliceValue.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "core/HTMLNames.h" 5 #include "core/HTMLNames.h"
6 #include "core/dom/Document.h" 6 #include "core/dom/Document.h"
7 #include "core/dom/Element.h" 7 #include "core/dom/Element.h"
8 #include "core/dom/ElementTraversal.h" 8 #include "core/dom/ElementTraversal.h"
9 #include "core/dom/NodeComputedStyle.h" 9 #include "core/dom/NodeComputedStyle.h"
10 #include "core/dom/StyleEngine.h" 10 #include "core/dom/StyleEngine.h"
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
65 element->computedStyle()->affectedByFocus()); 65 element->computedStyle()->affectedByFocus());
66 ASSERT_EQ(expected[i].childrenOrSiblingsAffectedBy, 66 ASSERT_EQ(expected[i].childrenOrSiblingsAffectedBy,
67 element->childrenOrSiblingsAffectedByFocus()); 67 element->childrenOrSiblingsAffectedByFocus());
68 } 68 }
69 69
70 ASSERT(!element && i == expectedCount); 70 ASSERT(!element && i == expectedCount);
71 } 71 }
72 72
73 // A global :focus rule in html.css currently causes every single element to be 73 // A global :focus rule in html.css currently causes every single element to be
74 // affectedByFocus. Check that all elements in a document with no :focus rules 74 // affectedByFocus. Check that all elements in a document with no :focus rules
75 // gets the affectedByFocus set on ComputedStyle and not childrenOrSiblingsAffec tedByFocus. 75 // gets the affectedByFocus set on ComputedStyle and not
76 // childrenOrSiblingsAffectedByFocus.
76 TEST_F(AffectedByFocusTest, UAUniversalFocusRule) { 77 TEST_F(AffectedByFocusTest, UAUniversalFocusRule) {
77 ElementResult expected[] = {{bodyTag, true, false}, 78 ElementResult expected[] = {{bodyTag, true, false},
78 {divTag, true, false}, 79 {divTag, true, false},
79 {divTag, true, false}, 80 {divTag, true, false},
80 {divTag, true, false}, 81 {divTag, true, false},
81 {spanTag, true, false}}; 82 {spanTag, true, false}};
82 83
83 setHtmlInnerHTML( 84 setHtmlInnerHTML(
84 "<body>" 85 "<body>"
85 "<div><div></div></div>" 86 "<div><div></div></div>"
86 "<div><span></span></div>" 87 "<div><span></span></div>"
87 "</body>"); 88 "</body>");
88 89
89 checkElements(expected, sizeof(expected) / sizeof(ElementResult)); 90 checkElements(expected, sizeof(expected) / sizeof(ElementResult));
90 } 91 }
91 92
92 // ":focus div" will mark ascendants of all divs with childrenOrSiblingsAffected ByFocus. 93 // ":focus div" will mark ascendants of all divs with
94 // childrenOrSiblingsAffectedByFocus.
93 TEST_F(AffectedByFocusTest, FocusedAscendant) { 95 TEST_F(AffectedByFocusTest, FocusedAscendant) {
94 ElementResult expected[] = {{bodyTag, true, true}, 96 ElementResult expected[] = {{bodyTag, true, true},
95 {divTag, true, true}, 97 {divTag, true, true},
96 {divTag, true, false}, 98 {divTag, true, false},
97 {divTag, true, false}, 99 {divTag, true, false},
98 {spanTag, true, false}}; 100 {spanTag, true, false}};
99 101
100 setHtmlInnerHTML( 102 setHtmlInnerHTML(
101 "<head>" 103 "<head>"
102 "<style>:focus div { background-color: pink }</style>" 104 "<style>:focus div { background-color: pink }</style>"
103 "</head>" 105 "</head>"
104 "<body>" 106 "<body>"
105 "<div><div></div></div>" 107 "<div><div></div></div>"
106 "<div><span></span></div>" 108 "<div><span></span></div>"
107 "</body>"); 109 "</body>");
108 110
109 checkElements(expected, sizeof(expected) / sizeof(ElementResult)); 111 checkElements(expected, sizeof(expected) / sizeof(ElementResult));
110 } 112 }
111 113
112 // "body:focus div" will mark the body element with childrenOrSiblingsAffectedBy Focus. 114 // "body:focus div" will mark the body element with
115 // childrenOrSiblingsAffectedByFocus.
113 TEST_F(AffectedByFocusTest, FocusedAscendantWithType) { 116 TEST_F(AffectedByFocusTest, FocusedAscendantWithType) {
114 ElementResult expected[] = {{bodyTag, true, true}, 117 ElementResult expected[] = {{bodyTag, true, true},
115 {divTag, true, false}, 118 {divTag, true, false},
116 {divTag, true, false}, 119 {divTag, true, false},
117 {divTag, true, false}, 120 {divTag, true, false},
118 {spanTag, true, false}}; 121 {spanTag, true, false}};
119 122
120 setHtmlInnerHTML( 123 setHtmlInnerHTML(
121 "<head>" 124 "<head>"
122 "<style>body:focus div { background-color: pink }</style>" 125 "<style>body:focus div { background-color: pink }</style>"
123 "</head>" 126 "</head>"
124 "<body>" 127 "<body>"
125 "<div><div></div></div>" 128 "<div><div></div></div>"
126 "<div><span></span></div>" 129 "<div><span></span></div>"
127 "</body>"); 130 "</body>");
128 131
129 checkElements(expected, sizeof(expected) / sizeof(ElementResult)); 132 checkElements(expected, sizeof(expected) / sizeof(ElementResult));
130 } 133 }
131 134
132 // ":not(body):focus div" should not mark the body element with childrenOrSiblin gsAffectedByFocus. 135 // ":not(body):focus div" should not mark the body element with
133 // Note that currently ":focus:not(body)" does not do the same. Then the :focus is 136 // childrenOrSiblingsAffectedByFocus.
134 // checked and the childrenOrSiblingsAffectedByFocus flag set before the negated type selector 137 // Note that currently ":focus:not(body)" does not do the same. Then the :focus
135 // is found. 138 // is checked and the childrenOrSiblingsAffectedByFocus flag set before the
139 // negated type selector is found.
136 TEST_F(AffectedByFocusTest, FocusedAscendantWithNegatedType) { 140 TEST_F(AffectedByFocusTest, FocusedAscendantWithNegatedType) {
137 ElementResult expected[] = {{bodyTag, true, false}, 141 ElementResult expected[] = {{bodyTag, true, false},
138 {divTag, true, true}, 142 {divTag, true, true},
139 {divTag, true, false}, 143 {divTag, true, false},
140 {divTag, true, false}, 144 {divTag, true, false},
141 {spanTag, true, false}}; 145 {spanTag, true, false}};
142 146
143 setHtmlInnerHTML( 147 setHtmlInnerHTML(
144 "<head>" 148 "<head>"
145 "<style>:not(body):focus div { background-color: pink }</style>" 149 "<style>:not(body):focus div { background-color: pink }</style>"
146 "</head>" 150 "</head>"
147 "<body>" 151 "<body>"
148 "<div><div></div></div>" 152 "<div><div></div></div>"
149 "<div><span></span></div>" 153 "<div><span></span></div>"
150 "</body>"); 154 "</body>");
151 155
152 checkElements(expected, sizeof(expected) / sizeof(ElementResult)); 156 checkElements(expected, sizeof(expected) / sizeof(ElementResult));
153 } 157 }
154 158
155 // Checking current behavior for ":focus + div", but this is a BUG or at best 159 // Checking current behavior for ":focus + div", but this is a BUG or at best
156 // sub-optimal. The focused element will also in this case get childrenOrSibling sAffectedByFocus 160 // sub-optimal. The focused element will also in this case get
157 // even if it's really a sibling. Effectively, the whole sub-tree of the focused 161 // childrenOrSiblingsAffectedByFocus even if it's really a sibling. Effectively,
158 // element will have styles recalculated even though none of the children are 162 // the whole sub-tree of the focused element will have styles recalculated even
159 // affected. There are other mechanisms that makes sure the sibling also gets it s 163 // though none of the children are affected. There are other mechanisms that
160 // styles recalculated. 164 // makes sure the sibling also gets its styles recalculated.
161 TEST_F(AffectedByFocusTest, FocusedSibling) { 165 TEST_F(AffectedByFocusTest, FocusedSibling) {
162 ElementResult expected[] = {{bodyTag, true, false}, 166 ElementResult expected[] = {{bodyTag, true, false},
163 {divTag, true, true}, 167 {divTag, true, true},
164 {spanTag, true, false}, 168 {spanTag, true, false},
165 {divTag, true, false}}; 169 {divTag, true, false}};
166 170
167 setHtmlInnerHTML( 171 setHtmlInnerHTML(
168 "<head>" 172 "<head>"
169 "<style>:focus + div { background-color: pink }</style>" 173 "<style>:focus + div { background-color: pink }</style>"
170 "</head>" 174 "</head>"
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
270 274
271 unsigned elementCount = 275 unsigned elementCount =
272 document().styleEngine().styleForElementCount() - startCount; 276 document().styleEngine().styleForElementCount() - startCount;
273 277
274 ASSERT_EQ(2U, elementCount); 278 ASSERT_EQ(2U, elementCount);
275 } 279 }
276 280
277 TEST_F(AffectedByFocusTest, NoInvalidationSetFocusUpdate) { 281 TEST_F(AffectedByFocusTest, NoInvalidationSetFocusUpdate) {
278 // Check that when focussing the outer div in the document below, you get a 282 // Check that when focussing the outer div in the document below, you get a
279 // style recalc for the outer div only. The invalidation set for :focus will 283 // style recalc for the outer div only. The invalidation set for :focus will
280 // include 'a', but the id=d div should be affectedByFocus, not childrenOrSibl ingsAffectedByFocus. 284 // include 'a', but the id=d div should be affectedByFocus, not
285 // childrenOrSiblingsAffectedByFocus.
281 286
282 setHtmlInnerHTML( 287 setHtmlInnerHTML(
283 "<style>#nomatch:focus .a { border: 1px solid lime; }</style>" 288 "<style>#nomatch:focus .a { border: 1px solid lime; }</style>"
284 "<div id=d tabIndex=1>" 289 "<div id=d tabIndex=1>"
285 "<div></div>" 290 "<div></div>"
286 "<div></div>" 291 "<div></div>"
287 "<div></div>" 292 "<div></div>"
288 "<div></div>" 293 "<div></div>"
289 "<div></div>" 294 "<div></div>"
290 "<div></div>" 295 "<div></div>"
(...skipping 10 matching lines...) Expand all
301 document().getElementById("d")->focus(); 306 document().getElementById("d")->focus();
302 document().view()->updateAllLifecyclePhases(); 307 document().view()->updateAllLifecyclePhases();
303 308
304 unsigned elementCount = 309 unsigned elementCount =
305 document().styleEngine().styleForElementCount() - startCount; 310 document().styleEngine().styleForElementCount() - startCount;
306 311
307 ASSERT_EQ(1U, elementCount); 312 ASSERT_EQ(1U, elementCount);
308 } 313 }
309 314
310 } // namespace blink 315 } // namespace blink
OLDNEW
« no previous file with comments | « no previous file | third_party/WebKit/Source/core/css/CSSBorderImageSliceValue.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698