Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(316)

Issue 1544893003: Don't add rule features across ::content. (Closed)

Created:
4 years, 12 months ago by rune
Modified:
4 years, 11 months ago
Reviewers:
Eric Willigers
CC:
chromium-reviews, blink-reviews-css, dglazkov+blink, apavlov+blink_chromium.org, darktears, blink-reviews, rwlbuis
Base URL:
https://chromium.googlesource.com/chromium/src.git@master
Target Ref:
refs/pending/heads/master
Project:
chromium
Visibility:
Public.

Description

Don't add rule features across ::content. When we see a ::content selector, we mark the invalidation sets for the selectors left of ::content as insertion-point-crossing. For such invalidation sets, we mark insertion points for subtree style recalc, which means that we don't need to look at the selector features right of ::content selectors for invalidations. For instance for: .a ::content .b .c The invalidation set for '.b' contains '.c', and the invalidation set for '.a' contains '.c' and has the insertion-point-crossing flag set. Adding 'c' is however unnecessary since ::content already causes a subtree style recalc. Also, this may cause unnecessary invalidations in '.a's scope if there are in-scope '.c' descendants of '.a'. This CL avoids adding invalidation set features like '.c' to the invalidation set for '.a' as illustrated above. Now invalidation sets may have the insertion-point-crossing flag set while otherwise being empty, and they should not be considered empty as we need to traverse and mark all insertion points for such sets. Committed: https://crrev.com/5324c1bd08a36f5cb1a6149882cd6ff1725491aa Cr-Commit-Position: refs/heads/master@{#368064}

Patch Set 1 #

Patch Set 2 : Fixed :host-context regression #

Total comments: 2

Patch Set 3 : Rebased #

Patch Set 4 : Remove unused method #

Unified diffs Side-by-side diffs Delta from patch set Stats (+68 lines, -20 lines) Patch
A third_party/WebKit/LayoutTests/fast/css/invalidation/content-pseudo.html View 1 chunk +23 lines, -0 lines 0 comments Download
A third_party/WebKit/LayoutTests/fast/css/invalidation/content-pseudo-expected.txt View 1 chunk +13 lines, -0 lines 0 comments Download
M third_party/WebKit/Source/core/css/RuleFeature.h View 1 1 chunk +8 lines, -16 lines 0 comments Download
M third_party/WebKit/Source/core/css/RuleFeature.cpp View 1 2 chunks +7 lines, -3 lines 0 comments Download
M third_party/WebKit/Source/core/css/RuleFeatureSetTest.cpp View 1 2 3 1 chunk +16 lines, -0 lines 0 comments Download
M third_party/WebKit/Source/core/css/invalidation/InvalidationSet.h View 1 chunk +1 line, -1 line 0 comments Download

Messages

Total messages: 18 (8 generated)
commit-bot: I haz the power
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1544893003/1 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1544893003/1
4 years, 12 months ago (2015-12-22 22:14:03 UTC) #2
rune
Not correct when insertion-point-crossing is set by :host-context
4 years, 12 months ago (2015-12-22 22:28:09 UTC) #4
commit-bot: I haz the power
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1544893003/20001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1544893003/20001
4 years, 12 months ago (2015-12-22 22:57:09 UTC) #6
commit-bot: I haz the power
Dry run: This issue passed the CQ dry run.
4 years, 12 months ago (2015-12-23 00:12:53 UTC) #8
rune
ptal
4 years, 11 months ago (2016-01-05 08:46:45 UTC) #10
Eric Willigers
lgtm with nit https://codereview.chromium.org/1544893003/diff/20001/third_party/WebKit/Source/core/css/RuleFeatureSetTest.cpp File third_party/WebKit/Source/core/css/RuleFeatureSetTest.cpp (right): https://codereview.chromium.org/1544893003/diff/20001/third_party/WebKit/Source/core/css/RuleFeatureSetTest.cpp#newcode116 third_party/WebKit/Source/core/css/RuleFeatureSetTest.cpp:116: void expectNoClassInvalidation(const AtomicString& className, InvalidationSetVector& invalidationSets) ...
4 years, 11 months ago (2016-01-07 03:50:01 UTC) #11
rune
https://codereview.chromium.org/1544893003/diff/20001/third_party/WebKit/Source/core/css/RuleFeatureSetTest.cpp File third_party/WebKit/Source/core/css/RuleFeatureSetTest.cpp (right): https://codereview.chromium.org/1544893003/diff/20001/third_party/WebKit/Source/core/css/RuleFeatureSetTest.cpp#newcode116 third_party/WebKit/Source/core/css/RuleFeatureSetTest.cpp:116: void expectNoClassInvalidation(const AtomicString& className, InvalidationSetVector& invalidationSets) On 2016/01/07 03:50:00, ...
4 years, 11 months ago (2016-01-07 09:55:18 UTC) #12
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1544893003/60001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1544893003/60001
4 years, 11 months ago (2016-01-07 09:55:43 UTC) #15
commit-bot: I haz the power
Committed patchset #4 (id:60001)
4 years, 11 months ago (2016-01-07 13:08:56 UTC) #16
commit-bot: I haz the power
4 years, 11 months ago (2016-01-07 13:09:46 UTC) #18
Message was sent while issue was closed.
Patchset 4 (id:??) landed as
https://crrev.com/5324c1bd08a36f5cb1a6149882cd6ff1725491aa
Cr-Commit-Position: refs/heads/master@{#368064}

Powered by Google App Engine
This is Rietveld 408576698