Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Partial ShadowDOM support #22743

Merged
merged 83 commits into from Apr 29, 2019

Set self as containing_shadow_root for shadow roots

37e88e7
Select commit
cbcf21c
DocumentOrShadowRoot mixin
ferjm Jan 18, 2019
18ae0fc
ShadowRoot interface
ferjm Jan 21, 2019
4304ee2
Partial ShadowRoot implementation of DocumentOrShadowRoot
ferjm Jan 21, 2019
569b4fc
Element attachShadow implementation
ferjm Jan 22, 2019
9022bd3
IS_IN_SHADOW_TREE flag
ferjm Jan 23, 2019
091fcbe
Node shadow root owner
ferjm Jan 23, 2019
ffdc9d2
Expose Element.AttachShadow under dom.shadowdom.enabled pref
ferjm Jan 23, 2019
f3e7073
Test DOM isolation for shadow trees
ferjm Jan 24, 2019
4897584
Unify DocumentOrShadowRoot implementation
ferjm Jan 24, 2019
640fc04
Implement shadow-including root, set node as in doc when connected. M…
ferjm Jan 25, 2019
441357b
Add is_connected flag to node and use it to replace most uses of is_i…
ferjm Jan 27, 2019
ea69bbc
Node retargeting algorithm
ferjm Jan 28, 2019
4740ce5
Make note_dirty_descendants jump around shadow roots
ferjm Jan 28, 2019
df81deb
Set connected flag not only on elements
ferjm Jan 28, 2019
1b03635
Bind/unbind shadow host children to/from tree
ferjm Jan 28, 2019
c48ad0f
Introduce concept of composed parent node
ferjm Jan 29, 2019
d6ddb08
Do not care about shadow roots when getting root element
ferjm Jan 29, 2019
6a85409
Throw NotSupported when trying to deep clone a shadow root
ferjm Jan 29, 2019
f6ba165
Throw when trying to import or adopt a shadow root
ferjm Jan 29, 2019
2e5c058
Implement concept of shadow including tree order
ferjm Jan 30, 2019
be06f1e
Always get browsing context from document
ferjm Jan 30, 2019
7c9e8aa
First bits of shadow dom layout
ferjm Jan 31, 2019
d2e1a3a
Adapt traversals for shadow dom
ferjm Feb 1, 2019
0d6bd24
Move stylesheets related code to DocumentOrShadowRoot
ferjm Feb 4, 2019
3bb50cc
ShadowRoot stylesheet list
ferjm Feb 5, 2019
23b92d5
Remove stylesheets ownership from DocumentOrShadowRoot
ferjm Feb 8, 2019
e9f0e76
Implement TShadowRoot::style_data
ferjm Feb 11, 2019
cd07574
Expose a way to flush shadow root stylesheets from layout
ferjm Feb 12, 2019
18c1b8f
Register/unregister shadow roots in documents when they are connected
ferjm Feb 12, 2019
519cc2c
Invalidate and flush shadow tree stylesheets where needed
ferjm Feb 13, 2019
47872cd
Do not add shadow tree styles to stylist
ferjm Feb 13, 2019
8641866
Fix Document.Element(s)FromPoint
ferjm Feb 14, 2019
07e2f41
Retarget result of shadowRoot.element(s)FromPoint
ferjm Feb 14, 2019
efce282
Return composed parent node. Fixes style sharing panics
ferjm Feb 18, 2019
f097233
Update test expectations and whitelist ShadowRoot interface
ferjm Feb 18, 2019
067acdf
Update size of tests with shadow root size
ferjm Feb 19, 2019
2515966
Fix formatting issues
ferjm Feb 19, 2019
0d2f65b
Shadow DOM layout and style reftest
ferjm Feb 19, 2019
e66438d
Fix the way the IS_CONNECTED flag is set
ferjm Feb 19, 2019
d7b6a6f
Do not set dirty out-of-doc nodes
ferjm Feb 19, 2019
39c96ac
Remove IS_CONNECTED flag when node is removed from the doc
ferjm Feb 20, 2019
57fa6b1
Update expectations for cssom tests
ferjm Feb 20, 2019
00178af
Derive PartialEq for ServoShadowRoot
ferjm Feb 20, 2019
a841c71
Minor layout thread cleanups:
ferjm Feb 20, 2019
2674a3e
Flush shadow roots stylesheets only if they changed
ferjm Feb 21, 2019
3ccd622
Introduce ShadowIncluding enum for tree traversals
ferjm Feb 21, 2019
3dd3815
Make StyleSheetListOwner implement JSTraceable
ferjm Feb 21, 2019
d77b9c6
Add invalidate_stylesheets to StyleSheetsListOwner trait
ferjm Feb 21, 2019
67c90a0
Relax attachShadow restrictions for user agent widgets
ferjm Feb 21, 2019
3e63655
Make ServoShadowRoot.flush_stylesheets unsafe
ferjm Feb 28, 2019
3e53962
Do not send RemoveStyleSheet message for shadow roots
ferjm Feb 28, 2019
8b353ee
Make StylesheetSet an enum instead of a trait object
ferjm Mar 1, 2019
2350f0e
Make StyleSheetListOwner an enum instead of a trait object
ferjm Mar 1, 2019
5426996
Derive MallocSizeOf for QuirksMode
ferjm Mar 1, 2019
ea1fe15
Do not store composed parent node
ferjm Mar 4, 2019
ccf8a43
Document owner_shadow_root
ferjm Mar 4, 2019
740aae0
Register named elements in either the document or shadow tree
ferjm Mar 5, 2019
813b242
Introduce BindContext with in_doc and connected flags
ferjm Mar 5, 2019
6af4729
Introduce NodeRareData and ElementRareData
ferjm Mar 6, 2019
a9019da
Move mutation observers list to NodeRareData
ferjm Mar 6, 2019
c75da61
Add custom elements related stuff into ElementRareData
ferjm Mar 6, 2019
1427c43
Update size of tests after *RareData changes
ferjm Mar 6, 2019
b8925a0
Set IS_CONNECTED flag on host and children instead of on containing s…
ferjm Mar 6, 2019
0313e38
Tweak list of shadow roots attached to doc
ferjm Mar 6, 2019
bdd2f32
Minor tweaks: rename composed_parent_node_ref, remove or update outda…
ferjm Mar 7, 2019
5be6779
Revert style/dom_apis changes
ferjm Mar 7, 2019
5a165c6
Move is_connected function from style to layout, where it is used
ferjm Mar 7, 2019
efbfc0f
Make devtools find node by unique id function include shadow trees
ferjm Mar 7, 2019
0ca4792
Revert changes in sheet_set_methods macro
ferjm Mar 7, 2019
8eba587
Merge Node::shadow_including_inclusive_ancestors into inclusive_ances…
ferjm Mar 7, 2019
890297e
Optimize Node::GetRootNode
ferjm Mar 8, 2019
f606963
Update tests manifest
ferjm Mar 8, 2019
6bf1ca2
Make Node and Element rare_data an Option
ferjm Mar 8, 2019
59c634b
Set dirty descendants if node is connected
ferjm Mar 23, 2019
ccc4f7c
Add dom.shadowdom.enabled to preferences list
ferjm Mar 25, 2019
3f312f7
Set dirty descendants flag only for elements
ferjm Mar 26, 2019
9df1c2f
Revert unnecessary format changes
ferjm Apr 22, 2019
e4f34fd
Rename StylesheetSet to StylesheetSetRef
ferjm Apr 22, 2019
9d52fef
Rename shadow_root_from_node to containing_shadow_root
ferjm Apr 22, 2019
d0b2e82
Move StylesheetSetRef to script
ferjm Apr 22, 2019
9b2eb77
Do not lazy initialize RareData on its getters
ferjm Apr 23, 2019
68bee1c
Final nits; fix custom elements rare data usage; s/owner_s_r/containi…
ferjm Apr 26, 2019
37e88e7
Set self as containing_shadow_root for shadow roots
ferjm Apr 29, 2019
Merged

Partial ShadowDOM support #22743

Set self as containing_shadow_root for shadow roots
37e88e7
Select commit
cbcf21c
DocumentOrShadowRoot mixin
ferjm Jan 18, 2019
18ae0fc
ShadowRoot interface
ferjm Jan 21, 2019
4304ee2
Partial ShadowRoot implementation of DocumentOrShadowRoot
ferjm Jan 21, 2019
569b4fc
Element attachShadow implementation
ferjm Jan 22, 2019
9022bd3
IS_IN_SHADOW_TREE flag
ferjm Jan 23, 2019
091fcbe
Node shadow root owner
ferjm Jan 23, 2019
ffdc9d2
Expose Element.AttachShadow under dom.shadowdom.enabled pref
ferjm Jan 23, 2019
f3e7073
Test DOM isolation for shadow trees
ferjm Jan 24, 2019
4897584
Unify DocumentOrShadowRoot implementation
ferjm Jan 24, 2019
640fc04
Implement shadow-including root, set node as in doc when connected. M…
ferjm Jan 25, 2019
441357b
Add is_connected flag to node and use it to replace most uses of is_i…
ferjm Jan 27, 2019
ea69bbc
Node retargeting algorithm
ferjm Jan 28, 2019
4740ce5
Make note_dirty_descendants jump around shadow roots
ferjm Jan 28, 2019
df81deb
Set connected flag not only on elements
ferjm Jan 28, 2019
1b03635
Bind/unbind shadow host children to/from tree
ferjm Jan 28, 2019
c48ad0f
Introduce concept of composed parent node
ferjm Jan 29, 2019
d6ddb08
Do not care about shadow roots when getting root element
ferjm Jan 29, 2019
6a85409
Throw NotSupported when trying to deep clone a shadow root
ferjm Jan 29, 2019
f6ba165
Throw when trying to import or adopt a shadow root
ferjm Jan 29, 2019
2e5c058
Implement concept of shadow including tree order
ferjm Jan 30, 2019
be06f1e
Always get browsing context from document
ferjm Jan 30, 2019
7c9e8aa
First bits of shadow dom layout
ferjm Jan 31, 2019
d2e1a3a
Adapt traversals for shadow dom
ferjm Feb 1, 2019
0d6bd24
Move stylesheets related code to DocumentOrShadowRoot
ferjm Feb 4, 2019
3bb50cc
ShadowRoot stylesheet list
ferjm Feb 5, 2019
23b92d5
Remove stylesheets ownership from DocumentOrShadowRoot
ferjm Feb 8, 2019
e9f0e76
Implement TShadowRoot::style_data
ferjm Feb 11, 2019
cd07574
Expose a way to flush shadow root stylesheets from layout
ferjm Feb 12, 2019
18c1b8f
Register/unregister shadow roots in documents when they are connected
ferjm Feb 12, 2019
519cc2c
Invalidate and flush shadow tree stylesheets where needed
ferjm Feb 13, 2019
47872cd
Do not add shadow tree styles to stylist
ferjm Feb 13, 2019
8641866
Fix Document.Element(s)FromPoint
ferjm Feb 14, 2019
07e2f41
Retarget result of shadowRoot.element(s)FromPoint
ferjm Feb 14, 2019
efce282
Return composed parent node. Fixes style sharing panics
ferjm Feb 18, 2019
f097233
Update test expectations and whitelist ShadowRoot interface
ferjm Feb 18, 2019
067acdf
Update size of tests with shadow root size
ferjm Feb 19, 2019
2515966
Fix formatting issues
ferjm Feb 19, 2019
0d2f65b
Shadow DOM layout and style reftest
ferjm Feb 19, 2019
e66438d
Fix the way the IS_CONNECTED flag is set
ferjm Feb 19, 2019
d7b6a6f
Do not set dirty out-of-doc nodes
ferjm Feb 19, 2019
39c96ac
Remove IS_CONNECTED flag when node is removed from the doc
ferjm Feb 20, 2019
57fa6b1
Update expectations for cssom tests
ferjm Feb 20, 2019
00178af
Derive PartialEq for ServoShadowRoot
ferjm Feb 20, 2019
a841c71
Minor layout thread cleanups:
ferjm Feb 20, 2019
2674a3e
Flush shadow roots stylesheets only if they changed
ferjm Feb 21, 2019
3ccd622
Introduce ShadowIncluding enum for tree traversals
ferjm Feb 21, 2019
3dd3815
Make StyleSheetListOwner implement JSTraceable
ferjm Feb 21, 2019
d77b9c6
Add invalidate_stylesheets to StyleSheetsListOwner trait
ferjm Feb 21, 2019
67c90a0
Relax attachShadow restrictions for user agent widgets
ferjm Feb 21, 2019
3e63655
Make ServoShadowRoot.flush_stylesheets unsafe
ferjm Feb 28, 2019
3e53962
Do not send RemoveStyleSheet message for shadow roots
ferjm Feb 28, 2019
8b353ee
Make StylesheetSet an enum instead of a trait object
ferjm Mar 1, 2019
2350f0e
Make StyleSheetListOwner an enum instead of a trait object
ferjm Mar 1, 2019
5426996
Derive MallocSizeOf for QuirksMode
ferjm Mar 1, 2019
ea1fe15
Do not store composed parent node
ferjm Mar 4, 2019
ccf8a43
Document owner_shadow_root
ferjm Mar 4, 2019
740aae0
Register named elements in either the document or shadow tree
ferjm Mar 5, 2019
813b242
Introduce BindContext with in_doc and connected flags
ferjm Mar 5, 2019
6af4729
Introduce NodeRareData and ElementRareData
ferjm Mar 6, 2019
a9019da
Move mutation observers list to NodeRareData
ferjm Mar 6, 2019
c75da61
Add custom elements related stuff into ElementRareData
ferjm Mar 6, 2019
1427c43
Update size of tests after *RareData changes
ferjm Mar 6, 2019
b8925a0
Set IS_CONNECTED flag on host and children instead of on containing s…
ferjm Mar 6, 2019
0313e38
Tweak list of shadow roots attached to doc
ferjm Mar 6, 2019
bdd2f32
Minor tweaks: rename composed_parent_node_ref, remove or update outda…
ferjm Mar 7, 2019
5be6779
Revert style/dom_apis changes
ferjm Mar 7, 2019
5a165c6
Move is_connected function from style to layout, where it is used
ferjm Mar 7, 2019
efbfc0f
Make devtools find node by unique id function include shadow trees
ferjm Mar 7, 2019
0ca4792
Revert changes in sheet_set_methods macro
ferjm Mar 7, 2019
8eba587
Merge Node::shadow_including_inclusive_ancestors into inclusive_ances…
ferjm Mar 7, 2019
890297e
Optimize Node::GetRootNode
ferjm Mar 8, 2019
f606963
Update tests manifest
ferjm Mar 8, 2019
6bf1ca2
Make Node and Element rare_data an Option
ferjm Mar 8, 2019
59c634b
Set dirty descendants if node is connected
ferjm Mar 23, 2019
ccc4f7c
Add dom.shadowdom.enabled to preferences list
ferjm Mar 25, 2019
3f312f7
Set dirty descendants flag only for elements
ferjm Mar 26, 2019
9df1c2f
Revert unnecessary format changes
ferjm Apr 22, 2019
e4f34fd
Rename StylesheetSet to StylesheetSetRef
ferjm Apr 22, 2019
9d52fef
Rename shadow_root_from_node to containing_shadow_root
ferjm Apr 22, 2019
d0b2e82
Move StylesheetSetRef to script
ferjm Apr 22, 2019
9b2eb77
Do not lazy initialize RareData on its getters
ferjm Apr 23, 2019
68bee1c
Final nits; fix custom elements rare data usage; s/owner_s_r/containi…
ferjm Apr 26, 2019
37e88e7
Set self as containing_shadow_root for shadow roots
ferjm Apr 29, 2019
Travis CI / Travis CI - Pull Request succeeded Apr 29, 2019 in 41m 27s

Build Passed

The build passed, just like the previous build.

Details

This is a pull request build.

It is running a build against the merge commit, after merging #22743 [WIP] Partial ShadowDOM support: ShadowRoot.
Any changes that have been made to the master branch before the build ran are also included.

Jobs and Stages

This build has two jobs, running in parallel.

Job ENV OS State
44979.1 Linux passed
44979.2 \["CC=gcc-6 CXX=g++-6 CCACHE=\/usr\/bin\/ccache RUSTFLAGS=-Dwarnings CARGO\_INCREMENTAL=0"\] Linux passed

Build Configuration

Build Option Setting
Language Python
Operating System Linux (Trusty)
Python Version 2.7
Build Configuration
{
  "dist": "trusty",
  "group": "stable",
  "matrix": {
    "include": [
      {
        "dist": "trusty",
        "sudo": false,
        "cache": false,
        "script": [
          "./mach test-tidy --no-progress --all",
          "./mach test-tidy --no-progress --self-test",
          "python ./etc/memory_reports_over_time.py --test",
          "bash etc/ci/check_no_panic.sh"
        ],
        "before_install": [
          "curl https://sh.rustup.rs -sSf | sh -s -- --default-toolchain none -y",
          "pip install virtualenv",
          "source ~/.profile"
        ]
      },
      {
        "env": "CC=gcc-6 CXX=g++-6 CCACHE=/usr/bin/ccache RUSTFLAGS=-Dwarnings CARGO_INCREMENTAL=0",
        "dist": "xenial",
        "sudo": 9000,
        "cache": {
          "directories": [
            ".servo",
            "$HOME/.cargo",
            "$HOME/.rustup",
            "$HOME/.ccache"
          ]
        },
        "addons": {
          "apt": {
            "sources": [
              "ubuntu-toolchain-r-test"
            ],
            "packages": [
              "autoconf2.13",
              "cmake",
              "gcc-6",
              "g++-6",
              "gperf",
              "libosmesa6-dev",
              "libglu1-mesa-dev",
              "libgles2-mesa-dev",
              "python-virtualenv",
              "xorg-dev",
              "ccache",
              "libdbus-glib-1-dev",
              "libedit-dev",
              "libglib2.0-dev"
            ]
          }
        },
        "script": [
          "./mach build -d --verbose -p servo",
          "./mach test-unit",
          "./mach clean",
          "bash etc/ci/lockfile_changed.sh"
        ],
        "before_cache": [
          "./mach clean-nightlies --keep 2 --force",
          "./mach clean-cargo-cache --keep 2 --force",
          "rm -rf $HOME/.cargo/registry",
          "rm -rf $HOME/.servo/target"
        ],
        "before_install": [
          "sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y",
          "sudo add-apt-repository 'deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-3.9 main' -y",
          "sudo apt-get update -q",
          "sudo apt-get install clang-3.9 llvm-3.9-dev llvm-3.9-runtime libunwind8-dev -y",
          "pip install virtualenv",
          "curl -L http://servo-deps.s3.amazonaws.com/gstreamer/gstreamer-1.14-x86_64-linux-gnu.20190213.tar.gz | tar xz",
          "sed -i \"s;prefix=/opt/gst;prefix=$PWD/gst;g\" $PWD/gst/lib/pkgconfig/*.pc",
          "export PKG_CONFIG_PATH=$PWD/gst/lib/pkgconfig",
          "export GST_PLUGIN_SYSTEM_PATH=$PWD/gst/lib/gstreamer-1.0",
          "export GST_PLUGIN_SCANNER=$PWD/gst/libexec/gstreamer-1.0/gst-plugin-scanner",
          "export PATH=$PATH:$PWD/gst/bin",
          "export LD_LIBRARY_PATH=$PWD/gst/lib:$LD_LIBRARY_PATH",
          "export LLVM_CONFIG=llvm-config-3.9",
          "curl https://sh.rustup.rs -sSf | sh -s -- --default-toolchain none -y",
          "source ~/.profile"
        ]
      }
    ],
    "fast_finish": true
  },
  "python": 2.7,
  ".result": "configured",
  "branches": {
    "only": [
      "master"
    ]
  },
  "language": "python"
}
You can’t perform that action at this time.