source: webkit/trunk/Source/WebCore/css/StylePropertyShorthand.cpp

Last change on this file was 293622, checked in by Oriol Brufau, 3 years ago

[css-cascade] Sort shorthand properties at the end of CSSPropertyID enum
https://bugs.webkit.org/show_bug.cgi?id=238888

Reviewed by Darin Adler.

Only longhands should matter during the CSS Cascade, so by sorting
shorthands at the end, and ignoring them, we can save some memory and
avoid some iterations.

No test since now there should be no observable change in behavior.

  • css/StylePropertyShorthand.cpp:

(WebCore::isShorthandCSSProperty): Deleted.

  • css/StylePropertyShorthand.h:

(WebCore::isShorthandCSSProperty):
Turn function into a simple constexpr comparison.

  • css/makeprop.pl:

(addProperty):
(sortByDescendingPriorityAndName):
Sort shorthand properties at the end.

  • style/PropertyCascade.h:

Update comment.

  • Property svn:eol-style set to native
File size: 2.5 KB
Line 
1/*
2 * (C) 1999-2003 Lars Knoll ([email protected])
3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2013 Apple Inc. All rights reserved.
4 * Copyright (C) 2013 Intel Corporation. All rights reserved.
5 *
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Library General Public
8 * License as published by the Free Software Foundation; either
9 * version 2 of the License, or (at your option) any later version.
10 *
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Library General Public License for more details.
15 *
16 * You should have received a copy of the GNU Library General Public License
17 * along with this library; see the file COPYING.LIB. If not, write to
18 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
19 * Boston, MA 02110-1301, USA.
20 */
21
22#include "config.h"
23#include "StylePropertyShorthand.h"
24#include "StylePropertyShorthandFunctions.h"
25
26namespace WebCore {
27
28StylePropertyShorthand animationShorthandForParsing()
29{
30 // Animation-name must come last, so that keywords for other properties in the shorthand
31 // preferentially match those properties.
32 static const CSSPropertyID animationPropertiesForParsing[] = {
33 CSSPropertyAnimationDuration,
34 CSSPropertyAnimationTimingFunction,
35 CSSPropertyAnimationDelay,
36 CSSPropertyAnimationIterationCount,
37 CSSPropertyAnimationDirection,
38 CSSPropertyAnimationFillMode,
39 CSSPropertyAnimationPlayState,
40 CSSPropertyAnimationName
41 };
42
43 return StylePropertyShorthand(CSSPropertyAnimation, animationPropertiesForParsing);
44}
45
46StylePropertyShorthand transitionShorthandForParsing()
47{
48 // Similar to animations, we have property after timing-function and delay after
49 // duration.
50 static const CSSPropertyID transitionProperties[] = {
51 CSSPropertyTransitionDuration, CSSPropertyTransitionTimingFunction,
52 CSSPropertyTransitionDelay, CSSPropertyTransitionProperty};
53 return StylePropertyShorthand(CSSPropertyTransition, transitionProperties);
54}
55
56unsigned indexOfShorthandForLonghand(CSSPropertyID shorthandID, const StylePropertyShorthandVector& shorthands)
57{
58 for (unsigned i = 0, size = shorthands.size(); i < size; ++i) {
59 if (shorthands[i].id() == shorthandID)
60 return i;
61 }
62 ASSERT_NOT_REACHED();
63 return 0;
64}
65
66} // namespace WebCore
Note: See TracBrowser for help on using the repository browser.