mirror of
https://github.com/servo/servo.git
synced 2025-06-24 00:54:32 +01:00
Implement custom element reactions <!-- Please describe your changes on the following line: --> Initial work for implementing custom element reactions: https://html.spec.whatwg.org/multipage/custom-elements.html#custom-element-reactions --- <!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: --> - [X] `./mach build -d` does not report any errors - [X] `./mach test-tidy` does not report any errors - [X] These changes fix #17433 (github issue number if applicable). <!-- Either: --> - [X] There are tests for these changes OR - [ ] These changes do not require tests because _____ <!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.--> <!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. --> <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/17614) <!-- Reviewable:end -->
39 lines
1.9 KiB
Rust
39 lines
1.9 KiB
Rust
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
use script::test::size_of;
|
|
|
|
// Macro so that we can stringify type names
|
|
// I'd really prefer the tests themselves to be run at plugin time,
|
|
// however rustc::middle doesn't have access to the full type data
|
|
macro_rules! sizeof_checker (
|
|
($testname: ident, $t: ident, $known_size: expr) => (
|
|
#[test]
|
|
fn $testname() {
|
|
let new = size_of::$t();
|
|
let old = $known_size;
|
|
if new < old {
|
|
panic!("Your changes have decreased the stack size of commonly used DOM struct {} from {} to {}. \
|
|
Good work! Please update the size in tests/unit/script/size_of.rs.",
|
|
stringify!($t), old, new)
|
|
} else if new > old {
|
|
panic!("Your changes have increased the stack size of commonly used DOM struct {} from {} to {}. \
|
|
These structs are present in large quantities in the DOM, and increasing the size \
|
|
may dramatically affect our memory footprint. Please consider choosing a design which \
|
|
avoids this increase. If you feel that the increase is necessary, \
|
|
update to the new size in tests/unit/script/size_of.rs.",
|
|
stringify!($t), old, new)
|
|
}
|
|
});
|
|
);
|
|
|
|
// Update the sizes here
|
|
sizeof_checker!(size_event_target, EventTarget, 40);
|
|
sizeof_checker!(size_node, Node, 184);
|
|
sizeof_checker!(size_element, Element, 424);
|
|
sizeof_checker!(size_htmlelement, HTMLElement, 440);
|
|
sizeof_checker!(size_div, HTMLDivElement, 440);
|
|
sizeof_checker!(size_span, HTMLSpanElement, 440);
|
|
sizeof_checker!(size_text, Text, 216);
|
|
sizeof_checker!(size_characterdata, CharacterData, 216);
|