Changeset 223688 in webkit


Ignore:
Timestamp:
Oct 19, 2017 6:11:05 AM (7 years ago)
Author:
Antti Koivisto
Message:

Overlapping text on all CSS fonts specs
https://bugs.webkit.org/show_bug.cgi?id=177585
<rdar://problem/34704078>

Reviewed by Daniel Bates.

Source/WebCore:

We were resetting StyleResolver::overrideDocumentElementStyle too early when resolving slot elements.
This resulted in 'rem' units being miscomputed.

Reduction by Zalan.

Test: fast/html/details-line-height-overlap.html

  • style/StyleTreeResolver.cpp:

(WebCore::Style::TreeResolver::Scope::Scope):
(WebCore::Style::TreeResolver::Scope::~Scope):

Only reset overrideDocumentElementStyle when destroying the scope.

(WebCore::Style::TreeResolver::pushScope):
(WebCore::Style::TreeResolver::pushEnclosingScope):
(WebCore::Style::TreeResolver::popScope):

A scope can show up multiple times in scope stack.

  • style/StyleTreeResolver.h:

LayoutTests:

  • fast/html/details-line-height-overlap-expected.html: Added.
  • fast/html/details-line-height-overlap.html: Added.
  • platform/ios/fast/shadow-dom/copy-shadow-tree-expected.txt:
Location:
trunk
Files:
2 added
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r223678 r223688  
     12017-10-19  Antti Koivisto  <antti@apple.com>
     2
     3        Overlapping text on all CSS fonts specs
     4        https://bugs.webkit.org/show_bug.cgi?id=177585
     5        <rdar://problem/34704078>
     6
     7        Reviewed by Daniel Bates.
     8
     9        * fast/html/details-line-height-overlap-expected.html: Added.
     10        * fast/html/details-line-height-overlap.html: Added.
     11        * platform/ios/fast/shadow-dom/copy-shadow-tree-expected.txt:
     12
    1132017-10-18  Ryosuke Niwa  <rniwa@webkit.org>
    214
  • trunk/LayoutTests/platform/ios/fast/shadow-dom/copy-shadow-tree-expected.txt

    r211450 r223688  
    11layer at (0,0) size 800x600
    22  RenderView at (0,0) size 800x600
    3 layer at (0,0) size 800x140
    4   RenderBlock {HTML} at (0,0) size 800x140
     3layer at (0,0) size 800x148
     4  RenderBlock {HTML} at (0,0) size 800x148
    55    RenderBody {BODY} at (8,16) size 784x116
    66      RenderBlock {P} at (0,0) size 784x40
  • trunk/Source/WebCore/ChangeLog

    r223687 r223688  
     12017-10-19  Antti Koivisto  <antti@apple.com>
     2
     3        Overlapping text on all CSS fonts specs
     4        https://bugs.webkit.org/show_bug.cgi?id=177585
     5        <rdar://problem/34704078>
     6
     7        Reviewed by Daniel Bates.
     8
     9        We were resetting StyleResolver::overrideDocumentElementStyle too early when resolving slot elements.
     10        This resulted in 'rem' units being miscomputed.
     11
     12        Reduction by Zalan.
     13
     14        Test: fast/html/details-line-height-overlap.html
     15
     16        * style/StyleTreeResolver.cpp:
     17        (WebCore::Style::TreeResolver::Scope::Scope):
     18        (WebCore::Style::TreeResolver::Scope::~Scope):
     19
     20            Only reset overrideDocumentElementStyle when destroying the scope.
     21
     22        (WebCore::Style::TreeResolver::pushScope):
     23        (WebCore::Style::TreeResolver::pushEnclosingScope):
     24        (WebCore::Style::TreeResolver::popScope):
     25
     26            A scope can show up multiple times in scope stack.
     27
     28        * style/StyleTreeResolver.h:
     29
    1302017-10-19  Ryosuke Niwa  <rniwa@webkit.org>
    231
  • trunk/Source/WebCore/css/StyleResolver.h

    r222259 r223688  
    154154    const MediaQueryEvaluator& mediaQueryEvaluator() const { return m_mediaQueryEvaluator; }
    155155
     156    RenderStyle* overrideDocumentElementStyle() const { return m_overrideDocumentElementStyle; }
    156157    void setOverrideDocumentElementStyle(RenderStyle* style) { m_overrideDocumentElementStyle = style; }
    157158
  • trunk/Source/WebCore/style/StyleTreeResolver.cpp

    r223604 r223688  
    7676    , enclosingScope(&enclosingScope)
    7777{
     78    styleResolver.setOverrideDocumentElementStyle(enclosingScope.styleResolver.overrideDocumentElementStyle());
     79}
     80
     81TreeResolver::Scope::~Scope()
     82{
     83    styleResolver.setOverrideDocumentElementStyle(nullptr);
    7884}
    7985
     
    94100{
    95101    m_scopeStack.append(adoptRef(*new Scope(shadowRoot, scope())));
    96     scope().styleResolver.setOverrideDocumentElementStyle(m_documentElementStyle.get());
    97102}
    98103
     
    101106    ASSERT(scope().enclosingScope);
    102107    m_scopeStack.append(*scope().enclosingScope);
    103     scope().styleResolver.setOverrideDocumentElementStyle(m_documentElementStyle.get());
    104108}
    105109
    106110void TreeResolver::popScope()
    107111{
    108     scope().styleResolver.setOverrideDocumentElementStyle(nullptr);
    109112    return m_scopeStack.removeLast();
    110113}
  • trunk/Source/WebCore/style/StyleTreeResolver.h

    r223604 r223688  
    6969        Scope(Document&);
    7070        Scope(ShadowRoot&, Scope& enclosingScope);
     71        ~Scope();
    7172    };
    7273
Note: See TracChangeset for help on using the changeset viewer.