-
Notifications
You must be signed in to change notification settings - Fork 6.6k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[@scope] Support :visited as scoping roots and limits
This is mostly fixed by taking the StyleScope into account during DetermineLinkMatchType. But also: * The original match_visited flag must be used when calculating the scope activations. (Explanation in comments). * We can not use the cache (StyleScopeFrame) for visited matching, because it would occupy the same space as the unvisited counterpart. This means that using visited-dependent rules in @scope has a performance penalty. Note that privacy issues re. :visited and @scope are already tested by scope-visited-cssom.html. Bug: 1459981 Change-Id: I7c3966cf826a86772fcdf20fbf207f063f97c8b0 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4767964 Commit-Queue: Anders Hartvoll Ruud <andruud@chromium.org> Reviewed-by: Rune Lillesveen <futhark@chromium.org> Cr-Commit-Position: refs/heads/main@{#1185119}
- Loading branch information
Showing
5 changed files
with
409 additions
and
24 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
96 changes: 96 additions & 0 deletions
96
third_party/blink/web_tests/external/wpt/css/css-cascade/scope-visited-ref.html
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,96 @@ | ||
<!DOCTYPE html> | ||
<title>@scope - :visited</title> | ||
<link rel="help" href="https://drafts.csswg.org/css-cascade-6/#scoped-styles"> | ||
<link rel="help" href="https://drafts.csswg.org/selectors-4/#link"> | ||
|
||
<style> | ||
/* The visited background-color magically gets the alpha of the | ||
unvisited color, which by default is rgba(0, 0, 0, 0). Set alpha to | ||
255 so that visited colors also gets this alpha. */ | ||
* { background-color: rgba(255, 255, 255, 255); } | ||
</style> | ||
|
||
<!-- :visited via :scope in subject --> | ||
<div> | ||
<a id=visited href="" style="background-color:coral"> | ||
Visited <span>Span</span> | ||
</a> | ||
</div> | ||
|
||
<!-- :link via :scope in subject --> | ||
<div> | ||
<a id=unvisited href="x" style="background-color:skyblue"> | ||
Unvisited <span>Span</span> | ||
</a> | ||
</div> | ||
|
||
<!-- :visited via :scope in non-subject --> | ||
<div> | ||
<a id=visited href=""> | ||
Visited <span style="background-color:coral">Span</span> | ||
</a> | ||
</div> | ||
|
||
<!-- :link via :scope in non-subject --> | ||
<div> | ||
<a id=unvisited href="x"> | ||
Unvisited <span style="background-color:skyblue">Span</span> | ||
</a> | ||
</div> | ||
|
||
<!-- :visited in scope-end --> | ||
<div> | ||
<main> | ||
Main | ||
<a id=visited href=""> | ||
Visited <span>Span</span> | ||
</a> | ||
</main> | ||
</div> | ||
|
||
<!-- :visited in scope-end, unvisited link --> | ||
<div> | ||
<main> | ||
Main | ||
<a id=unvisited href="x" style="background-color:skyblue"> | ||
Unvisited <span>Span</span> | ||
</a> | ||
</main> | ||
</div> | ||
|
||
<!-- :link in scope-end --> | ||
<div> | ||
<main> | ||
Main | ||
<a id=unvisited href="x"> | ||
Unvisited <span>Span</span> | ||
</a> | ||
</main> | ||
</div> | ||
|
||
<!-- :link in scope-end, visited link --> | ||
<div> | ||
<main> | ||
Main | ||
<a id=visited href="" style="background-color:coral"> | ||
Visited <span>Span</span> | ||
</a> | ||
</main> | ||
</div> | ||
|
||
<!-- :link in scope-end, visited link --> | ||
<div> | ||
<main> | ||
Main | ||
<a id=outer_visited href=""> | ||
Visited1 | ||
</a> | ||
</main> | ||
</div> | ||
<script> | ||
// Insert inner <a> with JS, since the parser can't produce this result. | ||
let inner_a = document.createElement('a'); | ||
inner_a.setAttribute('href', ''); | ||
inner_a.textContent = 'Visited2'; | ||
outer_visited.append(inner_a); | ||
</script> |
Oops, something went wrong.