Changeset 195088 in webkit


Ignore:
Timestamp:
Jan 14, 2016 7:31:52 PM (8 years ago)
Author:
mmaxfield@apple.com
Message:

Mixing Content Blocking of fonts and display:none rules causes battery drain
https://bugs.webkit.org/show_bug.cgi?id=153051
<rdar://problem/23187709>

Reviewed by Alex Christensen.

Source/WebCore:

If we have applied a rule before and we are not applying it again, don't
resolve the style again.

Test: http/tests/contentextensions/font-display-none-repeated-layout.html

  • contentextensions/ContentExtensionStyleSheet.cpp:

(WebCore::ContentExtensions::ContentExtensionStyleSheet::addDisplayNoneSelector):

  • contentextensions/ContentExtensionStyleSheet.h:
  • dom/ExtensionStyleSheets.cpp:

(WebCore::ExtensionStyleSheets::addDisplayNoneSelector):

LayoutTests:

Make sure that layoutCount does not skyrocket.

  • http/tests/contentextensions/font-display-none-repeated-layout-expected.txt: Added.
  • http/tests/contentextensions/font-display-none-repeated-layout.html: Added.
  • http/tests/contentextensions/font-display-none-repeated-layout.html.json: Added.
Location:
trunk
Files:
3 added
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r195087 r195088  
     12016-01-14  Myles C. Maxfield  <mmaxfield@apple.com>
     2
     3        Mixing Content Blocking of fonts and display:none rules causes battery drain
     4        https://bugs.webkit.org/show_bug.cgi?id=153051
     5        <rdar://problem/23187709>
     6
     7        Reviewed by Alex Christensen.
     8
     9        Make sure that layoutCount does not skyrocket.
     10
     11        * http/tests/contentextensions/font-display-none-repeated-layout-expected.txt: Added.
     12        * http/tests/contentextensions/font-display-none-repeated-layout.html: Added.
     13        * http/tests/contentextensions/font-display-none-repeated-layout.html.json: Added.
     14
    1152016-01-14  Ryosuke Niwa  <rniwa@webkit.org>
    216
  • trunk/Source/WebCore/ChangeLog

    r195087 r195088  
     12016-01-14  Myles C. Maxfield  <mmaxfield@apple.com>
     2
     3        Mixing Content Blocking of fonts and display:none rules causes battery drain
     4        https://bugs.webkit.org/show_bug.cgi?id=153051
     5        <rdar://problem/23187709>
     6
     7        Reviewed by Alex Christensen.
     8
     9        If we have applied a rule before and we are not applying it again, don't
     10        resolve the style again.
     11
     12        Test: http/tests/contentextensions/font-display-none-repeated-layout.html
     13
     14        * contentextensions/ContentExtensionStyleSheet.cpp:
     15        (WebCore::ContentExtensions::ContentExtensionStyleSheet::addDisplayNoneSelector):
     16        * contentextensions/ContentExtensionStyleSheet.h:
     17        * dom/ExtensionStyleSheets.cpp:
     18        (WebCore::ExtensionStyleSheets::addDisplayNoneSelector):
     19
    1202016-01-14  Ryosuke Niwa  <rniwa@webkit.org>
    221
  • trunk/Source/WebCore/contentextensions/ContentExtensionStyleSheet.cpp

    r188388 r195088  
    4444}
    4545
    46 void ContentExtensionStyleSheet::addDisplayNoneSelector(const String& selector, uint32_t selectorID)
     46bool ContentExtensionStyleSheet::addDisplayNoneSelector(const String& selector, uint32_t selectorID)
    4747{
    4848    ASSERT(selectorID != std::numeric_limits<uint32_t>::max());
    4949
    5050    if (!m_addedSelectorIDs.add(selectorID).isNewEntry)
    51         return;
     51        return false;
    5252
    5353    StringBuilder css;
     
    5757    css.append('}');
    5858    m_styleSheet->contents().parseString(css.toString());
     59    return true;
    5960}
    6061
  • trunk/Source/WebCore/contentextensions/ContentExtensionStyleSheet.h

    r183195 r195088  
    4747    }
    4848
    49     void addDisplayNoneSelector(const String& selector, uint32_t selectorID);
     49    bool addDisplayNoneSelector(const String& selector, uint32_t selectorID);
    5050
    5151    CSSStyleSheet& styleSheet() { return m_styleSheet.get(); }
  • trunk/Source/WebCore/dom/ExtensionStyleSheets.cpp

    r194496 r195088  
    180180    }
    181181
    182     result.iterator->value->addDisplayNoneSelector(selector, selectorID);
    183     m_styleResolverChangedTimer.startOneShot(0);
     182    if (result.iterator->value->addDisplayNoneSelector(selector, selectorID))
     183        m_styleResolverChangedTimer.startOneShot(0);
    184184}
    185185
Note: See TracChangeset for help on using the changeset viewer.