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

Side by Side Diff: third_party/WebKit/Source/core/css/ComputedStyleCSSValueMapping.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: Getting back the FullScreen fix, missed during the rebase. Created 4 years, 4 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) 2004 Zack Rusin <zack@kde.org> 2 * Copyright (C) 2004 Zack Rusin <zack@kde.org>
3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All rights reserved. 3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All rights reserved.
4 * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org> 4 * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org>
5 * Copyright (C) 2007 Nicholas Shanks <webkit@nickshanks.com> 5 * Copyright (C) 2007 Nicholas Shanks <webkit@nickshanks.com>
6 * Copyright (C) 2011 Sencha, Inc. All rights reserved. 6 * Copyright (C) 2011 Sencha, Inc. All rights reserved.
7 * Copyright (C) 2015 Google Inc. All rights reserved. 7 * Copyright (C) 2015 Google Inc. All rights reserved.
8 * 8 *
9 * This library is free software; you can redistribute it and/or 9 * This library is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU Lesser General Public 10 * modify it under the terms of the GNU Lesser General Public
(...skipping 423 matching lines...) Expand 10 before | Expand all | Expand 10 after
434 direction = CSSPrimitiveValue::createIdentifier(CSSValueLeft); 434 direction = CSSPrimitiveValue::createIdentifier(CSSValueLeft);
435 break; 435 break;
436 case ReflectionRight: 436 case ReflectionRight:
437 direction = CSSPrimitiveValue::createIdentifier(CSSValueRight); 437 direction = CSSPrimitiveValue::createIdentifier(CSSValueRight);
438 break; 438 break;
439 } 439 }
440 440
441 return CSSReflectValue::create(direction, offset, valueForNinePieceImage(ref lection->mask(), style)); 441 return CSSReflectValue::create(direction, offset, valueForNinePieceImage(ref lection->mask(), style));
442 } 442 }
443 443
444 static ItemPosition resolveAlignmentAuto(ItemPosition position, const ComputedSt yle* style) 444 static CSSValueList* valueForItemPositionWithOverflowAlignment(const StyleSelfAl ignmentData& data)
445 {
446 if (position != ItemPositionAuto)
447 return position;
448
449 if (!RuntimeEnabledFeatures::cssGridLayoutEnabled())
450 return ItemPositionStretch;
451
452 return isFlexOrGrid(style) ? ItemPositionStretch : ItemPositionStart;
453 }
454
455 static CSSValueList* valueForItemPositionWithOverflowAlignment(ItemPosition item Position, OverflowAlignment overflowAlignment, ItemPositionType positionType)
456 { 445 {
457 CSSValueList* result = CSSValueList::createSpaceSeparated(); 446 CSSValueList* result = CSSValueList::createSpaceSeparated();
458 if (positionType == LegacyPosition) 447 if (data.positionType() == LegacyPosition)
459 result->append(*CSSPrimitiveValue::createIdentifier(CSSValueLegacy)); 448 result->append(*CSSPrimitiveValue::createIdentifier(CSSValueLegacy));
460 result->append(*CSSPrimitiveValue::create(itemPosition)); 449 // To avoid needing to copy the RareNonInheritedData, we repurpose the 'auto ' flag to not just mean 'auto' prior to running the StyleAdjuster but also mean 'normal' after running it.
461 if (itemPosition >= ItemPositionCenter && overflowAlignment != OverflowAlign mentDefault) 450 result->append(*CSSPrimitiveValue::create(data.position() == ItemPositionAut o ? ItemPositionNormal : data.position()));
462 result->append(*CSSPrimitiveValue::create(overflowAlignment)); 451 if (data.position() >= ItemPositionCenter && data.overflow() != OverflowAlig nmentDefault)
452 result->append(*CSSPrimitiveValue::create(data.overflow()));
463 ASSERT(result->length() <= 2); 453 ASSERT(result->length() <= 2);
464 return result; 454 return result;
465 } 455 }
466 456
467 static CSSValueList* valuesForGridShorthand(const StylePropertyShorthand& shorth and, const ComputedStyle& style, const LayoutObject* layoutObject, Node* styledN ode, bool allowVisitedStyle) 457 static CSSValueList* valuesForGridShorthand(const StylePropertyShorthand& shorth and, const ComputedStyle& style, const LayoutObject* layoutObject, Node* styledN ode, bool allowVisitedStyle)
468 { 458 {
469 CSSValueList* list = CSSValueList::createSlashSeparated(); 459 CSSValueList* list = CSSValueList::createSlashSeparated();
470 for (size_t i = 0; i < shorthand.length(); ++i) { 460 for (size_t i = 0; i < shorthand.length(); ++i) {
471 const CSSValue* value = ComputedStyleCSSValueMapping::get(shorthand.prop erties()[i], style, layoutObject, styledNode, allowVisitedStyle); 461 const CSSValue* value = ComputedStyleCSSValueMapping::get(shorthand.prop erties()[i], style, layoutObject, styledNode, allowVisitedStyle);
472 ASSERT(value); 462 ASSERT(value);
(...skipping 1412 matching lines...) Expand 10 before | Expand all | Expand 10 after
1885 } 1875 }
1886 case CSSPropertyDirection: 1876 case CSSPropertyDirection:
1887 return CSSPrimitiveValue::create(style.direction()); 1877 return CSSPrimitiveValue::create(style.direction());
1888 case CSSPropertyDisplay: 1878 case CSSPropertyDisplay:
1889 return CSSPrimitiveValue::create(style.display()); 1879 return CSSPrimitiveValue::create(style.display());
1890 case CSSPropertyEmptyCells: 1880 case CSSPropertyEmptyCells:
1891 return CSSPrimitiveValue::create(style.emptyCells()); 1881 return CSSPrimitiveValue::create(style.emptyCells());
1892 case CSSPropertyAlignContent: 1882 case CSSPropertyAlignContent:
1893 return valueForContentPositionAndDistributionWithOverflowAlignment(style .alignContent()); 1883 return valueForContentPositionAndDistributionWithOverflowAlignment(style .alignContent());
1894 case CSSPropertyAlignItems: 1884 case CSSPropertyAlignItems:
1895 return valueForItemPositionWithOverflowAlignment(resolveAlignmentAuto(st yle.alignItemsPosition(), &style), style.alignItemsOverflowAlignment(), NonLegac yPosition); 1885 return valueForItemPositionWithOverflowAlignment(style.alignItems());
1896 case CSSPropertyAlignSelf: { 1886 case CSSPropertyAlignSelf:
1897 ItemPosition position = style.alignSelfPosition(); 1887 return valueForItemPositionWithOverflowAlignment(style.alignSelf());
1898 if (position == ItemPositionAuto) {
1899 // TODO(lajava): This code doesn't work for ShadowDOM (see Node::par entComputedStyle)
1900 const ComputedStyle* parentStyle = styledNode->parentNode() ? styled Node->parentNode()->ensureComputedStyle() : nullptr;
1901 position = parentStyle ? ComputedStyle::resolveAlignment(*parentStyl e, style, resolveAlignmentAuto(parentStyle->alignItemsPosition(), parentStyle)) : ItemPositionStart;
1902 }
1903 return valueForItemPositionWithOverflowAlignment(position, style.alignSe lfOverflowAlignment(), NonLegacyPosition);
1904 }
1905 case CSSPropertyFlex: 1888 case CSSPropertyFlex:
1906 return valuesForShorthandProperty(flexShorthand(), style, layoutObject, styledNode, allowVisitedStyle); 1889 return valuesForShorthandProperty(flexShorthand(), style, layoutObject, styledNode, allowVisitedStyle);
1907 case CSSPropertyFlexBasis: 1890 case CSSPropertyFlexBasis:
1908 return zoomAdjustedPixelValueForLength(style.flexBasis(), style); 1891 return zoomAdjustedPixelValueForLength(style.flexBasis(), style);
1909 case CSSPropertyFlexDirection: 1892 case CSSPropertyFlexDirection:
1910 return CSSPrimitiveValue::create(style.flexDirection()); 1893 return CSSPrimitiveValue::create(style.flexDirection());
1911 case CSSPropertyFlexFlow: 1894 case CSSPropertyFlexFlow:
1912 return valuesForShorthandProperty(flexFlowShorthand(), style, layoutObje ct, styledNode, allowVisitedStyle); 1895 return valuesForShorthandProperty(flexFlowShorthand(), style, layoutObje ct, styledNode, allowVisitedStyle);
1913 case CSSPropertyFlexGrow: 1896 case CSSPropertyFlexGrow:
1914 return CSSPrimitiveValue::create(style.flexGrow(), CSSPrimitiveValue::Un itType::Number); 1897 return CSSPrimitiveValue::create(style.flexGrow(), CSSPrimitiveValue::Un itType::Number);
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
2049 return CSSStringValue::create(style.hyphenationString()); 2032 return CSSStringValue::create(style.hyphenationString());
2050 case CSSPropertyImageRendering: 2033 case CSSPropertyImageRendering:
2051 return CSSPrimitiveValue::create(style.imageRendering()); 2034 return CSSPrimitiveValue::create(style.imageRendering());
2052 case CSSPropertyImageOrientation: 2035 case CSSPropertyImageOrientation:
2053 if (style.respectImageOrientation() == RespectImageOrientation) 2036 if (style.respectImageOrientation() == RespectImageOrientation)
2054 return CSSPrimitiveValue::createIdentifier(CSSValueFromImage); 2037 return CSSPrimitiveValue::createIdentifier(CSSValueFromImage);
2055 return CSSPrimitiveValue::create(0, CSSPrimitiveValue::UnitType::Degrees ); 2038 return CSSPrimitiveValue::create(0, CSSPrimitiveValue::UnitType::Degrees );
2056 case CSSPropertyIsolation: 2039 case CSSPropertyIsolation:
2057 return CSSPrimitiveValue::create(style.isolation()); 2040 return CSSPrimitiveValue::create(style.isolation());
2058 case CSSPropertyJustifyItems: 2041 case CSSPropertyJustifyItems:
2059 return valueForItemPositionWithOverflowAlignment(resolveAlignmentAuto(st yle.justifyItemsPosition(), &style), style.justifyItemsOverflowAlignment(), styl e.justifyItemsPositionType()); 2042 return valueForItemPositionWithOverflowAlignment(style.justifyItems());
2060 case CSSPropertyJustifySelf: { 2043 case CSSPropertyJustifySelf:
2061 Node* parent = styledNode->parentNode(); 2044 return valueForItemPositionWithOverflowAlignment(style.justifySelf());
2062 return valueForItemPositionWithOverflowAlignment(resolveAlignmentAuto(st yle.justifySelfPosition(), parent ? parent->ensureComputedStyle() : nullptr), st yle.justifySelfOverflowAlignment(), NonLegacyPosition);
2063 }
2064 case CSSPropertyLeft: 2045 case CSSPropertyLeft:
2065 return valueForPositionOffset(style, CSSPropertyLeft, layoutObject); 2046 return valueForPositionOffset(style, CSSPropertyLeft, layoutObject);
2066 case CSSPropertyLetterSpacing: 2047 case CSSPropertyLetterSpacing:
2067 if (!style.letterSpacing()) 2048 if (!style.letterSpacing())
2068 return CSSPrimitiveValue::createIdentifier(CSSValueNormal); 2049 return CSSPrimitiveValue::createIdentifier(CSSValueNormal);
2069 return zoomAdjustedPixelValue(style.letterSpacing(), style); 2050 return zoomAdjustedPixelValue(style.letterSpacing(), style);
2070 case CSSPropertyWebkitLineClamp: 2051 case CSSPropertyWebkitLineClamp:
2071 if (style.lineClamp().isNone()) 2052 if (style.lineClamp().isNone())
2072 return CSSPrimitiveValue::createIdentifier(CSSValueNone); 2053 return CSSPrimitiveValue::createIdentifier(CSSValueNone);
2073 return CSSPrimitiveValue::create(style.lineClamp().value(), style.lineCl amp().isPercentage() ? CSSPrimitiveValue::UnitType::Percentage : CSSPrimitiveVal ue::UnitType::Number); 2054 return CSSPrimitiveValue::create(style.lineClamp().value(), style.lineCl amp().isPercentage() ? CSSPrimitiveValue::UnitType::Percentage : CSSPrimitiveVal ue::UnitType::Number);
(...skipping 947 matching lines...) Expand 10 before | Expand all | Expand 10 after
3021 case CSSPropertyAll: 3002 case CSSPropertyAll:
3022 return nullptr; 3003 return nullptr;
3023 default: 3004 default:
3024 break; 3005 break;
3025 } 3006 }
3026 ASSERT_NOT_REACHED(); 3007 ASSERT_NOT_REACHED();
3027 return nullptr; 3008 return nullptr;
3028 } 3009 }
3029 3010
3030 } // namespace blink 3011 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/css/CSSProperties.in ('k') | third_party/WebKit/Source/core/css/parser/CSSPropertyParser.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698