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

Implement support for removing stylesheets from their document #14930

Merged
merged 4 commits into from Jan 24, 2017
Merged
Changes from 1 commit
Commits
File filter...
Filter file types
Jump to…
Jump to file
Failed to load files.

Always

Just for now

Removing style element's styles when elements is removed from dom

  • Loading branch information
Roman Zaynetdinov
Roman Zaynetdinov committed Jan 22, 2017
commit f0c72cb7fd5372220d40cc021867350cafd84fc7
@@ -15,7 +15,7 @@ use dom::document::Document;
use dom::element::{Element, ElementCreator};
use dom::eventtarget::EventTarget;
use dom::htmlelement::HTMLElement;
use dom::node::{ChildrenMutation, Node, document_from_node, window_from_node};
use dom::node::{ChildrenMutation, Node, UnbindContext, document_from_node, window_from_node};
use dom::stylesheet::StyleSheet as DOMStyleSheet;
use dom::virtualmethods::VirtualMethods;
use html5ever_atoms::LocalName;
@@ -161,6 +161,15 @@ impl VirtualMethods for HTMLStyleElement {
self.parse_own_css();
}
}

fn unbind_from_tree(&self, context: &UnbindContext) {
if let Some(ref s) = self.super_type() {
s.unbind_from_tree(context);
}

let doc = document_from_node(self);
doc.invalidate_stylesheets();
}
}

impl StylesheetOwner for HTMLStyleElement {
@@ -6474,6 +6474,18 @@
"url": "/_mozilla/mozilla/remove_link_styles.html"
}
],
"mozilla/remove_style_styles.html": [
{
"path": "mozilla/remove_style_styles.html",
"references": [
[
"/_mozilla/mozilla/remove_style_styles_ref.html",
"=="
]
],
"url": "/_mozilla/mozilla/remove_style_styles.html"
}
],
"mozilla/reparse_style_elements.html": [
{
"path": "mozilla/reparse_style_elements.html",
"url": "/_mozilla/mozilla/remove_link_styles.html"
}
],
"mozilla/remove_style_styles.html": [
{
"path": "mozilla/remove_style_styles.html",
"references": [
[
"/_mozilla/mozilla/remove_style_styles_ref.html",
"=="
]
],
"url": "/_mozilla/mozilla/remove_style_styles.html"
}
],
"mozilla/reparse_style_elements.html": [
{
"path": "mozilla/reparse_style_elements.html",
@@ -0,0 +1,20 @@
<!doctype html>
<meta charset="utf-8">
<title>Removing style element should remove all associated styles</title>
<link rel="match" href="remove_style_styles_ref.html">
<body>
<style>
body {
background-color: red;
}
</style>

This text should be black and the background should not be red.

<script>
// Force restyling
window.getComputedStyle(document.body);
var s = document.querySelector('style');
s.parentNode.removeChild(s);
</script>
</body>
@@ -0,0 +1,5 @@
<!doctype html>
<meta charset="utf-8">
<body>
This text should be black and the background should not be red.
</body>
ProTip! Use n and p to navigate between commits in a pull request.
You can’t perform that action at this time.