Changeset 207677 in webkit


Ignore:
Timestamp:
Oct 21, 2016 9:35:09 AM (7 years ago)
Author:
hyatt@apple.com
Message:

[CSS Parser] Add support for @-webkit-region rules
https://bugs.webkit.org/show_bug.cgi?id=163787

Reviewed by Zalan Bujtas.

  • css/StyleRule.cpp:

(WebCore::StyleRuleRegion::StyleRuleRegion):

  • css/StyleRule.h:
  • css/parser/CSSAtRuleID.cpp:

(WebCore::cssAtRuleID):

  • css/parser/CSSAtRuleID.h:
  • css/parser/CSSParserImpl.cpp:

(WebCore::CSSParserImpl::consumeAtRule):
(WebCore::CSSParserImpl::consumePageRule):
(WebCore::CSSParserImpl::consumeRegionRule):

  • css/parser/CSSParserImpl.h:
Location:
trunk/Source/WebCore
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r207676 r207677  
     12016-10-21  Dave Hyatt  <hyatt@apple.com>
     2
     3        [CSS Parser] Add support for @-webkit-region rules
     4        https://bugs.webkit.org/show_bug.cgi?id=163787
     5
     6        Reviewed by Zalan Bujtas.
     7
     8        * css/StyleRule.cpp:
     9        (WebCore::StyleRuleRegion::StyleRuleRegion):
     10        * css/StyleRule.h:
     11        * css/parser/CSSAtRuleID.cpp:
     12        (WebCore::cssAtRuleID):
     13        * css/parser/CSSAtRuleID.h:
     14        * css/parser/CSSParserImpl.cpp:
     15        (WebCore::CSSParserImpl::consumeAtRule):
     16        (WebCore::CSSParserImpl::consumePageRule):
     17        (WebCore::CSSParserImpl::consumeRegionRule):
     18        * css/parser/CSSParserImpl.h:
     19
    1202016-10-21  David Kilzer  <ddkilzer@apple.com>
    221
  • trunk/Source/WebCore/css/StyleRule.cpp

    r205790 r207677  
    372372}
    373373
     374StyleRuleRegion::StyleRuleRegion(CSSSelectorList& selectors, Vector<RefPtr<StyleRuleBase>>& adoptRules)
     375    : StyleRuleGroup(Region, adoptRules)
     376    , m_selectorList(WTFMove(selectors))
     377{
     378}
     379   
    374380StyleRuleRegion::StyleRuleRegion(const StyleRuleRegion& o)
    375381    : StyleRuleGroup(o)
  • trunk/Source/WebCore/css/StyleRule.h

    r205790 r207677  
    237237        return adoptRef(*new StyleRuleRegion(selectors, adoptRules));
    238238    }
    239 
     239   
     240    static Ref<StyleRuleRegion> create(CSSSelectorList& selectors, Vector<RefPtr<StyleRuleBase>>& adoptRules)
     241    {
     242        return adoptRef(*new StyleRuleRegion(selectors, adoptRules));
     243    }
     244   
    240245    const CSSSelectorList& selectorList() const { return m_selectorList; }
    241246
     
    244249private:
    245250    StyleRuleRegion(Vector<std::unique_ptr<CSSParserSelector>>*, Vector<RefPtr<StyleRuleBase>>& adoptRules);
     251    StyleRuleRegion(CSSSelectorList&, Vector<RefPtr<StyleRuleBase>>&);
    246252    StyleRuleRegion(const StyleRuleRegion&);
    247253   
  • trunk/Source/WebCore/css/parser/CSSAtRuleID.cpp

    r205869 r207677  
    5757    if (equalIgnoringASCIICase(name, "apply"))
    5858        return CSSAtRuleApply;
     59#if ENABLE(CSS_REGIONS)
     60    if (equalIgnoringASCIICase(name, "-webkit-region"))
     61        return CSSAtRuleWebkitRegion;
     62#endif
    5963    return CSSAtRuleInvalid;
    6064}
  • trunk/Source/WebCore/css/parser/CSSAtRuleID.h

    r205550 r207677  
    4848    CSSAtRuleWebkitKeyframes = 10,
    4949    CSSAtRuleApply = 11,
     50    CSSAtRuleWebkitRegion = 12
    5051};
    5152
  • trunk/Source/WebCore/css/parser/CSSParserImpl.cpp

    r207479 r207677  
    423423    case CSSAtRulePage:
    424424        return consumePageRule(prelude, block);
     425#if ENABLE(CSS_REGIONS)
     426    case CSSAtRuleWebkitRegion:
     427        return consumeRegionRule(prelude, block);
     428#endif
    425429    default:
    426430        return nullptr; // Parse error, unrecognised at-rule with block
     
    635639    return page;
    636640}
     641
     642#if ENABLE(CSS_REGIONS)
     643RefPtr<StyleRuleRegion> CSSParserImpl::consumeRegionRule(CSSParserTokenRange prelude, CSSParserTokenRange block)
     644{
     645    CSSSelectorList selectorList = CSSSelectorParser::parseSelector(prelude, m_context, m_styleSheet.get());
     646    if (!selectorList.isValid())
     647        return nullptr; // Parse error, invalid selector list
     648
     649    if (m_observerWrapper) {
     650        m_observerWrapper->observer().startRuleHeader(StyleRule::Region, m_observerWrapper->startOffset(prelude));
     651        m_observerWrapper->observer().endRuleHeader(m_observerWrapper->endOffset(prelude));
     652        m_observerWrapper->observer().startRuleBody(m_observerWrapper->previousTokenStartOffset(block));
     653    }
     654   
     655    Vector<RefPtr<StyleRuleBase>> rules;
     656    consumeRuleList(block, RegularRuleList, [&rules](RefPtr<StyleRuleBase> rule) {
     657        rules.append(rule);
     658    });
     659   
     660    if (m_observerWrapper)
     661        m_observerWrapper->observer().endRuleBody(m_observerWrapper->endOffset(block));
     662   
     663    return StyleRuleRegion::create(selectorList, rules);
     664
     665}
     666#endif
    637667
    638668// FIXME-NEWPARSER: Support "apply"
  • trunk/Source/WebCore/css/parser/CSSParserImpl.h

    r205790 r207677  
    124124    RefPtr<StyleRuleKeyframes> consumeKeyframesRule(bool webkitPrefixed, CSSParserTokenRange prelude, CSSParserTokenRange block);
    125125    RefPtr<StyleRulePage> consumePageRule(CSSParserTokenRange prelude, CSSParserTokenRange block);
     126#if ENABLE(CSS_REGIONS)
     127    RefPtr<StyleRuleRegion> consumeRegionRule(CSSParserTokenRange prelude, CSSParserTokenRange block);
     128#endif
    126129    // Updates m_parsedProperties
    127130   
Note: See TracChangeset for help on using the changeset viewer.