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

Side by Side Diff: third_party/WebKit/Source/core/style/ComputedStyle.cpp

Issue 1709963002: [css-align] New CSS Value 'normal' for Self Alignment (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Unskipped some repaint tests and rebaselined. Created 4 years, 7 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 1999 Antti Koivisto (koivisto@kde.org) 2 * Copyright (C) 1999 Antti Koivisto (koivisto@kde.org)
3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserved. 3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserved.
4 * Copyright (C) 2011 Adobe Systems Incorporated. All rights reserved. 4 * Copyright (C) 2011 Adobe Systems Incorporated. All rights reserved.
5 * 5 *
6 * This library is free software; you can redistribute it and/or 6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Library General Public 7 * modify it under the terms of the GNU Library General Public
8 * License as published by the Free Software Foundation; either 8 * License as published by the Free Software Foundation; either
9 * version 2 of the License, or (at your option) any later version. 9 * version 2 of the License, or (at your option) any later version.
10 * 10 *
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
179 { 179 {
180 if ((!oldStyle && newStyle) || (oldStyle && !newStyle)) 180 if ((!oldStyle && newStyle) || (oldStyle && !newStyle))
181 return Reattach; 181 return Reattach;
182 182
183 if (!oldStyle && !newStyle) 183 if (!oldStyle && !newStyle)
184 return NoChange; 184 return NoChange;
185 185
186 if (oldStyle->display() != newStyle->display() 186 if (oldStyle->display() != newStyle->display()
187 || oldStyle->hasPseudoStyle(PseudoIdFirstLetter) != newStyle->hasPseudoS tyle(PseudoIdFirstLetter) 187 || oldStyle->hasPseudoStyle(PseudoIdFirstLetter) != newStyle->hasPseudoS tyle(PseudoIdFirstLetter)
188 || !oldStyle->contentDataEquivalent(newStyle) 188 || !oldStyle->contentDataEquivalent(newStyle)
189 || oldStyle->hasTextCombine() != newStyle->hasTextCombine() 189 || oldStyle->hasTextCombine() != newStyle->hasTextCombine())
190 || oldStyle->justifyItems() != newStyle->justifyItems()) // TODO (lajava ): We must avoid this Reattach.
191 return Reattach; 190 return Reattach;
192 191
193 if (oldStyle->inheritedNotEqual(*newStyle)) 192 if (oldStyle->inheritedNotEqual(*newStyle)
193 || oldStyle->alignItems() != newStyle->alignItems()
194 || oldStyle->justifyItems() != newStyle->justifyItems())
194 return Inherit; 195 return Inherit;
195 196
196 if (*oldStyle == *newStyle) 197 if (*oldStyle == *newStyle)
197 return diffPseudoStyles(*oldStyle, *newStyle); 198 return diffPseudoStyles(*oldStyle, *newStyle);
198 199
199 if (oldStyle->hasExplicitlyInheritedProperties()) 200 if (oldStyle->hasExplicitlyInheritedProperties())
200 return Inherit; 201 return Inherit;
201 202
202 return NoInherit; 203 return NoInherit;
203 } 204 }
204 205
205 ItemPosition ComputedStyle::resolveAlignment(const ComputedStyle& parentStyle, c onst ComputedStyle& childStyle, ItemPosition resolvedAutoPositionForLayoutObject ) 206 static const StyleSelfAlignmentData resolvedSelfAlignment(const StyleSelfAlignme ntData& value, ItemPosition normalValueBehavior)
206 { 207 {
207 // The auto keyword computes to the parent's align-items computed value, or to "stretch", if not set or "auto". 208 // To avoid needing to copy the RareNonInheritedData, we could repurporse th e 'auto' flag to not just mean 'auto' prior to running the StyleAdjuster but als o mean 'normal' after running it.
208 if (childStyle.alignSelfPosition() == ItemPositionAuto) 209 if (value.position() == ItemPositionNormal || value.position() == ItemPositi onAuto)
209 return (parentStyle.alignItemsPosition() == ItemPositionAuto) ? resolved AutoPositionForLayoutObject : parentStyle.alignItemsPosition(); 210 return {normalValueBehavior, OverflowAlignmentDefault};
210 return childStyle.alignSelfPosition(); 211 return value;
211 } 212 }
212 213
213 const StyleSelfAlignmentData ComputedStyle::resolvedAlignment(const ComputedStyl e& parentStyle, ItemPosition resolvedAutoPositionForLayoutObject) const 214 const StyleSelfAlignmentData ComputedStyle::resolvedAlignItems(ItemPosition norm alValueBehaviour) const
214 { 215 {
215 // The auto keyword computes to the parent's align-items computed value, or to "stretch", if not set or "auto". 216 return resolvedSelfAlignment(alignItems(), normalValueBehaviour);
216 if (alignSelfPosition() == ItemPositionAuto) {
217 if (parentStyle.alignItemsPosition() == ItemPositionAuto)
218 return {resolvedAutoPositionForLayoutObject, OverflowAlignmentDefaul t};
219 return parentStyle.alignItems();
220 }
221 return alignSelf();
222 } 217 }
223 218
224 ItemPosition ComputedStyle::resolveJustification(const ComputedStyle& parentStyl e, const ComputedStyle& childStyle, ItemPosition resolvedAutoPositionForLayoutOb ject) 219 const StyleSelfAlignmentData ComputedStyle::resolvedAlignSelf(const ComputedStyl e& parentStyle, ItemPosition normalValueBehaviour) const
225 { 220 {
226 if (childStyle.justifySelfPosition() == ItemPositionAuto) 221 // The auto keyword computes to the parent's align-items computed value.
227 return (parentStyle.justifyItemsPosition() == ItemPositionAuto) ? resolv edAutoPositionForLayoutObject : parentStyle.justifyItemsPosition(); 222 // We will return the behaviour of 'normal' value if needed, which is specif ic of each layout model.
228 return childStyle.justifySelfPosition(); 223 if (alignSelfPosition() == ItemPositionAuto)
Timothy Loh 2016/05/23 05:45:39 I think this branch is no longer needed (or correc
jfernandez 2016/05/25 18:26:49 I think you're right. However, we'd may need this
224 return parentStyle.resolvedAlignItems(normalValueBehaviour);
225 return resolvedSelfAlignment(alignSelf(), normalValueBehaviour);
226 }
227
228 const StyleSelfAlignmentData ComputedStyle::resolvedJustifyItems(ItemPosition no rmalValueBehaviour) const
229 {
230 return resolvedSelfAlignment(justifyItems(), normalValueBehaviour);
231 }
232
233
234 const StyleSelfAlignmentData ComputedStyle::resolvedJustifySelf(const ComputedSt yle& parentStyle, ItemPosition normalValueBehaviour) const
235 {
236 // The auto keyword computes to the parent's justify-items computed value.
237 // We will return the behaviour of 'normal' value if needed, which is specif ic of each layout model.
238 if (justifySelfPosition() == ItemPositionAuto)
Timothy Loh 2016/05/23 05:45:39 this one too
jfernandez 2016/05/25 18:26:49 Done.
239 return parentStyle.resolvedJustifyItems(normalValueBehaviour);
240 return resolvedSelfAlignment(justifySelf(), normalValueBehaviour);
229 } 241 }
230 242
231 static inline ContentPosition resolvedContentAlignmentPosition(const StyleConten tAlignmentData& value, const StyleContentAlignmentData& normalValueBehavior) 243 static inline ContentPosition resolvedContentAlignmentPosition(const StyleConten tAlignmentData& value, const StyleContentAlignmentData& normalValueBehavior)
232 { 244 {
233 return (value.position() == ContentPositionNormal && value.distribution() == ContentDistributionDefault) ? normalValueBehavior.position() : value.position() ; 245 return (value.position() == ContentPositionNormal && value.distribution() == ContentDistributionDefault) ? normalValueBehavior.position() : value.position() ;
234 } 246 }
235 247
236 static inline ContentDistributionType resolvedContentAlignmentDistribution(const StyleContentAlignmentData& value, const StyleContentAlignmentData& normalValueB ehavior) 248 static inline ContentDistributionType resolvedContentAlignmentDistribution(const StyleContentAlignmentData& value, const StyleContentAlignmentData& normalValueB ehavior)
237 { 249 {
238 return (value.position() == ContentPositionNormal && value.distribution() == ContentDistributionDefault) ? normalValueBehavior.distribution() : value.distri bution(); 250 return (value.position() == ContentPositionNormal && value.distribution() == ContentDistributionDefault) ? normalValueBehavior.distribution() : value.distri bution();
(...skipping 1567 matching lines...) Expand 10 before | Expand all | Expand 10 after
1806 if (!shadowList) 1818 if (!shadowList)
1807 return false; 1819 return false;
1808 for (size_t i = shadowList->shadows().size(); i--; ) { 1820 for (size_t i = shadowList->shadows().size(); i--; ) {
1809 if (shadowList->shadows()[i].color().isCurrentColor()) 1821 if (shadowList->shadows()[i].color().isCurrentColor())
1810 return true; 1822 return true;
1811 } 1823 }
1812 return false; 1824 return false;
1813 } 1825 }
1814 1826
1815 } // namespace blink 1827 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698