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

styleSheet.insertRule('@import url("<url>");', 0) crashes servo #23028

Closed
KwanEsq opened this issue Mar 13, 2019 · 3 comments · Fixed by #23073
Closed

styleSheet.insertRule('@import url("<url>");', 0) crashes servo #23028

KwanEsq opened this issue Mar 13, 2019 · 3 comments · Fixed by #23073
Labels
A-content/css Interacting with CSS from web content (parsing, serializing, introspection) C-has-manual-testcase C-reproduced I-panic Servo encounters a panic.

Comments

@KwanEsq
Copy link
Contributor

KwanEsq commented Mar 13, 2019

With "Expected a stylesheet loader for @import".
Encountered while fixing #23025, had to annotate a wpt as expected: CRASH.
Testcase

@jdm
Copy link
Member

jdm commented Mar 13, 2019

Expected a stylesheet loader for @import (thread ScriptThread PipelineId { namespace_id: PipelineNamespaceId(1), index: PipelineIndex(1) }, at src/libcore/option.rs:1038)
stack backtrace:
   0:        0x10b778b84 - __ZN9backtrace9backtrace5trace17h9f3458ac04360c1aE
                        at /Users/jdm/.cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.9/src/backtrace/mod.rs:42
   1:        0x10b77352c - __ZN9backtrace7capture9Backtrace14new_unresolved17h21921a7295046aa9E
                        at /Users/jdm/.cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.9/src/capture.rs:88
   2:        0x10b77348e - __ZN9backtrace7capture9Backtrace3new17h18226acc03ed089aE
                        at /Users/jdm/.cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.9/src/capture.rs:63
   3:        0x1053a0a25 - __ZN5servo4main28_$u7b$$u7b$closure$u7d$$u7d$17h2b05144528e4d274E
                        at ports/servo/non_android_main.rs:110
   4:        0x10cc0ac10 - __ZN3std9panicking20rust_panic_with_hook17hc96a2ab9717cf47bE
                        at src/libstd/panicking.rs:482
   5:        0x10cc0a65c - __ZN3std9panicking18continue_panic_fmt17h829e4b1e6e9a8f39E
                        at src/libstd/panicking.rs:385
   6:        0x10cc0a548 - _rust_begin_unwind
                        at src/libstd/panicking.rs:312
   7:        0x10cc28271 - __ZN4core9panicking9panic_fmt17heb4299280251fdc5E
                        at src/libcore/panicking.rs:85
   8:        0x10cc282dd - __ZN4core6option13expect_failed17hc3ca1a155ce5eb16E
                        at src/libcore/option.rs:1038
   9:        0x109949bc4 - __ZN38_$LT$core..option..Option$LT$T$GT$$GT$6expect17hafb1b3e18ed81d27E
                        at /rustc/0ea22717a1e01fa535534b85a5347a7e49fc79de/src/libcore/option.rs:312
  10:        0x109c0867a - __ZN147_$LT$style..stylesheets..rule_parser..TopLevelRuleParser$LT$$u27$a$GT$$u20$as$u20$cssparser..rules_and_declarations..AtRuleParser$LT$$u27$i$GT$$GT$18rule_without_block17hf6749902e8870234E
                        at components/style/stylesheets/rule_parser.rs:256
  11:        0x109d4452e - __ZN9cssparser22rules_and_declarations13parse_at_rule17hae4b2ed3611e3291E
                        at /Users/jdm/.cargo/registry/src/github.com-1ecc6299db9ec823/cssparser-0.25.1/src/rules_and_declarations.rs:464
  12:        0x109d48f85 - __ZN9cssparser22rules_and_declarations14parse_one_rule28_$u7b$$u7b$closure$u7d$$u7d$17ha39536f61fb564bcE
                        at /Users/jdm/.cargo/registry/src/github.com-1ecc6299db9ec823/cssparser-0.25.1/src/rules_and_declarations.rs:439
  13:        0x109990004 - __ZN9cssparser6parser6Parser14parse_entirely17h04e8c958d5add908E
                        at /Users/jdm/.cargo/registry/src/github.com-1ecc6299db9ec823/cssparser-0.25.1/src/parser.rs:596
  14:        0x109d4860b - __ZN9cssparser22rules_and_declarations14parse_one_rule17h553cce428f68f13aE
                        at /Users/jdm/.cargo/registry/src/github.com-1ecc6299db9ec823/cssparser-0.25.1/src/rules_and_declarations.rs:420
  15:        0x109d4d8e4 - __ZN5style11stylesheets7CssRule5parse17ha16c98bd801ffacdE
                        at components/style/stylesheets/mod.rs:290
  16:        0x109b9f1bc - __ZN171_$LT$servo_arc..RawOffsetArc$LT$style..shared_lock..Locked$LT$style..stylesheets..rule_list..CssRules$GT$$GT$$u20$as$u20$style..stylesheets..rule_list..CssRulesHelpers$GT$11insert_rule17hb69a792b6eef7490E
                        at components/style/stylesheets/rule_list.rs:172
  17:        0x10644e539 - __ZN6script3dom11cssrulelist11CSSRuleList11insert_rule28_$u7b$$u7b$closure$u7d$$u7d$17h881add36bf36c86eE
                        at components/script/dom/cssrulelist.rs:105
  18:        0x10644e053 - __ZN6script3dom11cssrulelist11CSSRuleList11insert_rule17h0b738d3b968b22ffE
                        at components/script/dom/cssrulelist.rs:104
  19:        0x1085d1921 - __ZN168_$LT$script..dom..cssstylesheet..CSSStyleSheet$u20$as$u20$script..dom..bindings..codegen..Bindings..CSSStyleSheetBinding..CSSStyleSheetBinding..CSSStyleSheetMethods$GT$10InsertRule17h31a0d4ff9b70d046E
                        at components/script/dom/cssstylesheet.rs:114
  20:        0x107b8fc0d - __ZN6script3dom8bindings7codegen8Bindings20CSSStyleSheetBinding20CSSStyleSheetBinding10insertRule28_$u7b$$u7b$closure$u7d$$u7d$17h70c3aa4898dac8daE
                        at /Users/jdm/src/servo/target/debug/build/script-bdaf54420baedd83/out/Bindings/CSSStyleSheetBinding.rs:583
  21:        0x106b557cc - __ZN4core3ops8function6FnOnce9call_once17h0e252d56fed77074E
                        at /rustc/0ea22717a1e01fa535534b85a5347a7e49fc79de/src/libcore/ops/function.rs:231
  22:        0x107cb42a7 - __ZN101_$LT$std..panic..AssertUnwindSafe$LT$F$GT$$u20$as$u20$core..ops..function..FnOnce$LT$$LP$$RP$$GT$$GT$9call_once17h68e8ae590e71403fE
                        at /rustc/0ea22717a1e01fa535534b85a5347a7e49fc79de/src/libstd/panic.rs:309
  23:        0x105eaaa14 - __ZN3std9panicking3try7do_call17h1385c4aa3b50005fE
                        at /rustc/0ea22717a1e01fa535534b85a5347a7e49fc79de/src/libstd/panicking.rs:297
  24:        0x10cc13e9e - ___rust_maybe_catch_panic
                        at src/libpanic_unwind/lib.rs:87
  25:        0x105dc8d32 - __ZN3std9panicking3try17h54650be5263e7f94E
                        at /rustc/0ea22717a1e01fa535534b85a5347a7e49fc79de/src/libstd/panicking.rs:276
  26:        0x107e3d98e - __ZN3std5panic12catch_unwind17hcf1621a00b706a2aE
                        at /rustc/0ea22717a1e01fa535534b85a5347a7e49fc79de/src/libstd/panic.rs:388
  27:        0x1070ccea6 - __ZN5mozjs5panic10wrap_panic17h165df67d5ff7bb49E
                        at /Users/jdm/.cargo/registry/src/github.com-1ecc6299db9ec823/mozjs-0.10.0/src/panic.rs:22
  28:        0x107b8f672 - __ZN6script3dom8bindings7codegen8Bindings20CSSStyleSheetBinding20CSSStyleSheetBinding10insertRule17h1650b180b5dacd0aE
                        at /Users/jdm/src/servo/target/debug/build/script-bdaf54420baedd83/out/Bindings/CSSStyleSheetBinding.rs:554
  29:        0x10bc59c4e - _CallJitMethodOp
                        at src/jsglue.cpp:548
  30:        0x106a1a5df - __ZN6script3dom8bindings5utils12generic_call17h734dbcd7981b83bfE
                        at components/script/dom/bindings/utils.rs:480
  31:        0x106a1a6bb - __ZN6script3dom8bindings5utils14generic_method17h2ad8ca5a5b5276f7E
                        at components/script/dom/bindings/utils.rs:496
  32:        0x10bcd3a41 - __ZN2js23InternalCallOrConstructEP9JSContextRKN2JS8CallArgsENS_14MaybeConstructE
                        at /Users/jdm/.cargo/registry/src/github.com-1ecc6299db9ec823/mozjs_sys-0.61.6/mozjs/js/src/vm/JSContext-inl.h:290
  33:        0x10bccda19 - __ZL9InterpretP9JSContextRN2js8RunStateE
                        at /Users/jdm/.cargo/registry/src/github.com-1ecc6299db9ec823/mozjs_sys-0.61.6/mozjs/js/src/vm/Interpreter.cpp:3086
  34:        0x10bcc3be8 - __ZN2js9RunScriptEP9JSContextRNS_8RunStateE
                        at /Users/jdm/.cargo/registry/src/github.com-1ecc6299db9ec823/mozjs_sys-0.61.6/mozjs/js/src/vm/Interpreter.cpp:418
  35:        0x10bcd44fa - __ZN2js13ExecuteKernelEP9JSContextN2JS6HandleIP8JSScriptEER8JSObjectRKNS2_5ValueENS_16AbstractFramePtrEPS9_
                        at /Users/jdm/.cargo/registry/src/github.com-1ecc6299db9ec823/mozjs_sys-0.61.6/mozjs/js/src/vm/Interpreter.cpp:701
  36:        0x10bcd460c - __ZN2js7ExecuteEP9JSContextN2JS6HandleIP8JSScriptEER8JSObjectPNS2_5ValueE
                        at /Users/jdm/.cargo/registry/src/github.com-1ecc6299db9ec823/mozjs_sys-0.61.6/mozjs/js/src/vm/Interpreter.cpp:733
  37:        0x10c028964 - __ZL8EvaluateP9JSContextN2js9ScopeKindEN2JS6HandleIP8JSObjectEERKNS3_22ReadOnlyCompileOptionsERNS3_18SourceBufferHolderENS3_13MutableHandleINS3_5ValueEEE
                        at /Users/jdm/.cargo/registry/src/github.com-1ecc6299db9ec823/mozjs_sys-0.61.6/mozjs/js/src/jsapi.cpp:4831
  38:        0x10c028a58 - __ZN2JS8EvaluateEP9JSContextRKNS_22ReadOnlyCompileOptionsEPKDsmNS_13MutableHandleINS_5ValueEEE
                        at /Users/jdm/.cargo/registry/src/github.com-1ecc6299db9ec823/mozjs_sys-0.61.6/mozjs/js/src/jsapi.cpp:4910
  39:        0x106eccc0c - __ZN5mozjs4rust8wrappers9Evaluate217h14c49ebc8b748997E
                        at /Users/jdm/.cargo/registry/src/github.com-1ecc6299db9ec823/mozjs-0.10.0/src/rust.rs:1348
  40:        0x107e94f03 - __ZN6script3dom11globalscope11GlobalScope37evaluate_script_on_global_with_result28_$u7b$$u7b$closure$u7d$$u7d$17h55698a0223ce51a9E
                        at components/script/dom/globalscope.rs:550
  41:        0x1064b27f0 - __ZN14profile_traits4time7profile17h635b62f35d7f85b9E
                        at /Users/jdm/src/servo/components/profile_traits/time.rs:142
  42:        0x107e94ac0 - __ZN6script3dom11globalscope11GlobalScope37evaluate_script_on_global_with_result17h80103e73e7dea7a3E
                        at components/script/dom/globalscope.rs:534
  43:        0x1083a3da1 - __ZN6script3dom17htmlscriptelement17HTMLScriptElement20run_a_classic_script17h19e270b6dfe21a8fE
                        at components/script/dom/htmlscriptelement.rs:653
  44:        0x1083a3744 - __ZN6script3dom17htmlscriptelement17HTMLScriptElement7execute17ha3fedc77c6c8f5cbE
                        at components/script/dom/htmlscriptelement.rs:619
  45:        0x1075ee27c - __ZN6script3dom11servoparser11ServoParser43resume_with_pending_parsing_blocking_script17heb7f7dd7bb296162E
                        at components/script/dom/servoparser/mod.rs:296
  46:        0x1078d60ce - __ZN6script3dom8document8Document39process_pending_parsing_blocking_script17h9938c4c55f6f4b85E
                        at components/script/dom/document.rs:2098
  47:        0x1078d3696 - __ZN6script3dom8document8Document11finish_load17h19885ae6c7eec0a2E
                        at components/script/dom/document.rs:1739
  48:        0x1083c161e - __ZN98_$LT$script..stylesheet_loader..StylesheetContext$u20$as$u20$net_traits..FetchResponseListener$GT$20process_response_eof17hdc116e2f1a7dc4c1E
                        at components/script/stylesheet_loader.rs:204
  49:        0x106c79ce8 - __ZN76_$LT$net_traits..FetchResponseMsg$u20$as$u20$net_traits..Action$LT$T$GT$$GT$7process17hc85224be5d4d96aeE
                        at /Users/jdm/src/servo/components/net_traits/lib.rs:262
  50:        0x1065acfd0 - __ZN106_$LT$script..network_listener..ListenerTask$LT$A$C$$u20$Listener$GT$$u20$as$u20$script..task..TaskOnce$GT$8run_once17h13f071ee467c5297E
                        at components/script/network_listener.rs:105
  51:        0x10684fa4f - __ZN81_$LT$script..task..CancellableTask$LT$T$GT$$u20$as$u20$script..task..TaskOnce$GT$8run_once17h6a80e6a79038d117E
                        at components/script/task.rs:122
  52:        0x1068462d3 - __ZN43_$LT$T$u20$as$u20$script..task..TaskBox$GT$7run_box17h8b458d0668eb9529E
                        at components/script/task.rs:64
  53:        0x107eb4e5b - __ZN6script13script_thread12ScriptThread22handle_msg_from_script17hb261e393e473b0eaE
                        at components/script/script_thread.rs:1692
  54:        0x107eae4ff - __ZN6script13script_thread12ScriptThread11handle_msgs28_$u7b$$u7b$closure$u7d$$u7d$17h7b4082f5f013dd9bE
                        at components/script/script_thread.rs:1296
  55:        0x107eaf57c - __ZN6script13script_thread12ScriptThread13profile_event17h503c7ff94ed9042eE
                        at components/script/script_thread.rs:1530
  56:        0x107eac504 - __ZN6script13script_thread12ScriptThread11handle_msgs17h640118ac37e5abf3E
                        at components/script/script_thread.rs:1289
  57:        0x107ea9eec - __ZN6script13script_thread12ScriptThread5start17h9ba116edfdd29c6eE
                        at components/script/script_thread.rs:1134
  58:        0x107ea5324 - __ZN90_$LT$script..script_thread..ScriptThread$u20$as$u20$script_traits..ScriptThreadFactory$GT$6create28_$u7b$$u7b$closure$u7d$$u7d$28_$u7b$$u7b$closure$u7d$$u7d$17h1ae8681a9b859955E
                        at components/script/script_thread.rs:712
  59:        0x108495cba - __ZN14profile_traits3mem12ProfilerChan25run_with_memory_reporting17hd9255fe03e6de3abE
                        at /Users/jdm/src/servo/components/profile_traits/mem.rs:88
  60:        0x107ea5908 - __ZN90_$LT$script..script_thread..ScriptThread$u20$as$u20$script_traits..ScriptThreadFactory$GT$6create28_$u7b$$u7b$closure$u7d$$u7d$17hdecfb14bc6c6c713E
                        at components/script/script_thread.rs:710
  61:        0x1062cf722 - __ZN3std10sys_common9backtrace28__rust_begin_short_backtrace17he6a1db106e3f9307E
                        at /rustc/0ea22717a1e01fa535534b85a5347a7e49fc79de/src/libstd/sys_common/backtrace.rs:136
  62:        0x107a6ea92 - __ZN3std6thread7Builder15spawn_unchecked28_$u7b$$u7b$closure$u7d$$u7d$28_$u7b$$u7b$closure$u7d$$u7d$17h6fa089850ddfe167E
                        at /rustc/0ea22717a1e01fa535534b85a5347a7e49fc79de/src/libstd/thread/mod.rs:469
  63:        0x107c98a62 - __ZN101_$LT$std..panic..AssertUnwindSafe$LT$F$GT$$u20$as$u20$core..ops..function..FnOnce$LT$$LP$$RP$$GT$$GT$9call_once17h11b360c4d32d3de5E
                        at /rustc/0ea22717a1e01fa535534b85a5347a7e49fc79de/src/libstd/panic.rs:309
  64:        0x105ed8292 - __ZN3std9panicking3try7do_call17h5c1646b8dfa31fa9E
                        at /rustc/0ea22717a1e01fa535534b85a5347a7e49fc79de/src/libstd/panicking.rs:297
  65:        0x10cc13e9e - ___rust_maybe_catch_panic
                        at src/libpanic_unwind/lib.rs:87
  66:        0x105da2bb4 - __ZN3std9panicking3try17h351f7e620f348a2fE
                        at /rustc/0ea22717a1e01fa535534b85a5347a7e49fc79de/src/libstd/panicking.rs:276
  67:        0x107e45282 - __ZN3std5panic12catch_unwind17he787c305b597b0d2E
                        at /rustc/0ea22717a1e01fa535534b85a5347a7e49fc79de/src/libstd/panic.rs:388
  68:        0x107a6d05b - __ZN3std6thread7Builder15spawn_unchecked28_$u7b$$u7b$closure$u7d$$u7d$17h6be0a8038ecd560fE
                        at /rustc/0ea22717a1e01fa535534b85a5347a7e49fc79de/src/libstd/thread/mod.rs:468
  69:        0x107a9f6d3 - __ZN50_$LT$F$u20$as$u20$alloc..boxed..FnBox$LT$A$GT$$GT$8call_box17h67b249a3f45ac431E
                        at /rustc/0ea22717a1e01fa535534b85a5347a7e49fc79de/src/liballoc/boxed.rs:749
  70:        0x10cc132cb - __ZN3std3sys4unix6thread6Thread3new12thread_start17hb65474f74178fcb3E
                        at src/libstd/sys_common/thread.rs:14
  71:     0x7fff9257e93a - __pthread_body
  72:     0x7fff9257e886 - __pthread_start

@jdm jdm added A-content/css Interacting with CSS from web content (parsing, serializing, introspection) C-has-manual-testcase I-panic Servo encounters a panic. C-reproduced labels Mar 13, 2019
@jdm
Copy link
Member

jdm commented Mar 20, 2019

To solve this:

  • expose a public getter on CSSStyleSheet to return the stylesheet's owner
  • in CSSRuleList::insert_rule, use the new getter to pass a non-None value as an argument to arc.insert_rule
  • add a test for this that verifies that the new stylesheet is actually loaded

@jdm
Copy link
Member

jdm commented Mar 20, 2019

Code: components/script/dom/cssstylesheet.rs, components/script/dom/cssrulelist.rs

bors-servo pushed a commit that referenced this issue Mar 21, 2019
Work in Progress

<!-- Please describe your changes on the following line: -->

- [x] expose a public getter on CSSStyleSheet to return the stylesheet's owner
- [x] in CSSRuleList::insert_rule, use the new getter to pass a non-None value as an argument to arc.insert_rule
- [ ] add a test for this that verifies that the new stylesheet is actually loaded
---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [ ] `./mach build -d` does not report any errors
- [ ] `./mach test-tidy` does not report any errors
- [ ] These changes fix #23028

<!-- Either: -->
- [ ] 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/23073)
<!-- Reviewable:end -->
bors-servo pushed a commit that referenced this issue Mar 22, 2019
Expose public getter to stylesheet's owner

<!-- Please describe your changes on the following line: -->

- [x] expose a public getter on CSSStyleSheet to return the stylesheet's owner
- [x] in CSSRuleList::insert_rule, use the new getter to pass a non-None value as an argument to arc.insert_rule
- [x] add a test for this that verifies that the new stylesheet is actually loaded
---
<!-- 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 #23028

<!-- Either: -->
- [x] There are tests for these changes

<!-- 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/23073)
<!-- Reviewable:end -->
bors-servo pushed a commit that referenced this issue Mar 22, 2019
Expose public getter to stylesheet's owner

<!-- Please describe your changes on the following line: -->

- [x] expose a public getter on CSSStyleSheet to return the stylesheet's owner
- [x] in CSSRuleList::insert_rule, use the new getter to pass a non-None value as an argument to arc.insert_rule
- [x] add a test for this that verifies that the new stylesheet is actually loaded
---
<!-- 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 #23028

<!-- Either: -->
- [x] There are tests for these changes

<!-- 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/23073)
<!-- Reviewable:end -->
bors-servo pushed a commit that referenced this issue Mar 22, 2019
Expose public getter to stylesheet's owner

<!-- Please describe your changes on the following line: -->

- [x] expose a public getter on CSSStyleSheet to return the stylesheet's owner
- [x] in CSSRuleList::insert_rule, use the new getter to pass a non-None value as an argument to arc.insert_rule
- [x] add a test for this that verifies that the new stylesheet is actually loaded
---
<!-- 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 #23028

<!-- Either: -->
- [x] There are tests for these changes

<!-- 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/23073)
<!-- Reviewable:end -->
bors-servo pushed a commit that referenced this issue Mar 22, 2019
Expose public getter to stylesheet's owner

<!-- Please describe your changes on the following line: -->

- [x] expose a public getter on CSSStyleSheet to return the stylesheet's owner
- [x] in CSSRuleList::insert_rule, use the new getter to pass a non-None value as an argument to arc.insert_rule
- [x] add a test for this that verifies that the new stylesheet is actually loaded
---
<!-- 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 #23028

<!-- Either: -->
- [x] There are tests for these changes

<!-- 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/23073)
<!-- Reviewable:end -->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-content/css Interacting with CSS from web content (parsing, serializing, introspection) C-has-manual-testcase C-reproduced I-panic Servo encounters a panic.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants