⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 286064 in webkit


Ignore:
Timestamp:
Nov 19, 2021, 9:09:32 AM (5 years ago)
Author:
Antti Koivisto
Message:

[CSS Cascade Layers] [Debug] ASSERTION FAILED: m_childRules.isEmpty() when using @import with layer name
https://bugs.webkit.org/show_bug.cgi?id=233283
<rdar://problem/85520733>

Reviewed by Antoine Quint.

Source/WebCore:

CSS parser is allowing rules in illegal order (@import rule following @layer block)

Test: fast/css/layer-illegal-import.html

  • css/parser/CSSParserImpl.cpp:

(WebCore::computeNewAllowedRules):

Only stay in AllowLayerStatementRules state if the new layer is a statement, not a block.

LayoutTests:

  • fast/css/layer-illegal-import-expected.html: Added.
  • fast/css/layer-illegal-import.html: Added.
Location:
trunk
Files:
2 added
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r286063 r286064  
     12021-11-19  Antti Koivisto  <antti@apple.com>
     2
     3        [CSS Cascade Layers] [Debug] ASSERTION FAILED: m_childRules.isEmpty() when using @import with layer name
     4        https://bugs.webkit.org/show_bug.cgi?id=233283
     5        <rdar://problem/85520733>
     6
     7        Reviewed by Antoine Quint.
     8
     9        * fast/css/layer-illegal-import-expected.html: Added.
     10        * fast/css/layer-illegal-import.html: Added.
     11
    1122021-11-19  Antti Koivisto  <antti@apple.com>
    213
  • trunk/Source/WebCore/ChangeLog

    r286063 r286064  
     12021-11-19  Antti Koivisto  <antti@apple.com>
     2
     3        [CSS Cascade Layers] [Debug] ASSERTION FAILED: m_childRules.isEmpty() when using @import with layer name
     4        https://bugs.webkit.org/show_bug.cgi?id=233283
     5        <rdar://problem/85520733>
     6
     7        Reviewed by Antoine Quint.
     8
     9        CSS parser is allowing rules in illegal order (@import rule following @layer block)
     10
     11        Test: fast/css/layer-illegal-import.html
     12
     13        * css/parser/CSSParserImpl.cpp:
     14        (WebCore::computeNewAllowedRules):
     15
     16        Only stay in AllowLayerStatementRules state if the new layer is a statement, not a block.
     17
    1182021-11-19  Antti Koivisto  <antti@apple.com>
    219
  • trunk/Source/WebCore/css/parser/CSSParserImpl.cpp

    r283752 r286064  
    344344    if (!rule || allowedRules == CSSParserImpl::KeyframeRules || allowedRules == CSSParserImpl::CounterStyleRules || allowedRules == CSSParserImpl::NoRules)
    345345        return allowedRules;
     346   
    346347    ASSERT(allowedRules <= CSSParserImpl::RegularRules);
    347     if (allowedRules <= CSSParserImpl::AllowLayerStatementRules && (rule->isCharsetRule() || rule->isLayerRule()))
     348    if (rule->isCharsetRule())
     349        return CSSParserImpl::AllowLayerStatementRules;
     350    if (allowedRules <= CSSParserImpl::AllowLayerStatementRules && rule->isLayerRule() && downcast<StyleRuleLayer>(*rule).isStatement())
    348351        return CSSParserImpl::AllowLayerStatementRules;
    349352    if (rule->isImportRule())
Note: See TracChangeset for help on using the changeset viewer.