From 1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c Mon Sep 17 00:00:00 2001 From: Lorry Tar Creator Date: Tue, 27 Jun 2017 06:07:23 +0000 Subject: webkitgtk-2.16.5 --- Source/WebCore/css/RuleFeature.h | 50 +++++++++++++++++++++++++--------------- 1 file changed, 32 insertions(+), 18 deletions(-) (limited to 'Source/WebCore/css/RuleFeature.h') diff --git a/Source/WebCore/css/RuleFeature.h b/Source/WebCore/css/RuleFeature.h index 58122e027..d240a850a 100644 --- a/Source/WebCore/css/RuleFeature.h +++ b/Source/WebCore/css/RuleFeature.h @@ -1,6 +1,6 @@ /* * Copyright (C) 1999 Lars Knoll (knoll@kde.org) - * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserved. + * Copyright (C) 2003-2011, 2014 Apple Inc. All rights reserved. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public @@ -19,18 +19,19 @@ * */ -#ifndef RuleFeature_h -#define RuleFeature_h +#pragma once +#include "CSSSelector.h" #include #include #include #include +#include namespace WebCore { +class RuleData; class StyleRule; -class CSSSelector; struct RuleFeature { RuleFeature(StyleRule* rule, unsigned selectorIndex, bool hasDocumentSecurityOrigin) @@ -45,25 +46,38 @@ struct RuleFeature { }; struct RuleFeatureSet { - RuleFeatureSet() - : usesFirstLineRules(false) - , usesBeforeAfterRules(false) - { } - void add(const RuleFeatureSet&); void clear(); + void shrinkToFit(); + void collectFeatures(const RuleData&); - void collectFeaturesFromSelector(const CSSSelector*); - - HashSet idsInRules; - HashSet classesInRules; - HashSet attrsInRules; + HashSet idsInRules; + HashSet idsMatchingAncestorsInRules; + HashSet classesInRules; + HashSet attributeCanonicalLocalNamesInRules; + HashSet attributeLocalNamesInRules; Vector siblingRules; Vector uncommonAttributeRules; - bool usesFirstLineRules; - bool usesBeforeAfterRules; + HashMap>> ancestorClassRules; + + struct AttributeRules { + WTF_MAKE_FAST_ALLOCATED; + public: + using SelectorKey = std::pair>; + HashMap selectors; + Vector features; + }; + HashMap> ancestorAttributeRulesForHTML; + bool usesFirstLineRules { false }; + bool usesFirstLetterRules { false }; + +private: + struct SelectorFeatures { + bool hasSiblingSelector { false }; + Vector classesMatchingAncestors; + Vector attributeSelectorsMatchingAncestors; + }; + void recursivelyCollectFeaturesFromSelector(SelectorFeatures&, const CSSSelector&, bool matchesAncestor = false); }; } // namespace WebCore - -#endif // RuleFeature_h -- cgit v1.2.1