diff --git a/components/script/dom/mediaquerylist.rs b/components/script/dom/mediaquerylist.rs index db96a4760cd..c6e569b5e42 100644 --- a/components/script/dom/mediaquerylist.rs +++ b/components/script/dom/mediaquerylist.rs @@ -138,7 +138,7 @@ impl WeakMediaQueryListVec { /// Evaluate media query lists and report changes /// https://drafts.csswg.org/cssom-view/#evaluate-media-queries-and-report-changes pub fn evaluate_and_report_changes(&self) { - for mql in self.cell.borrow().iter() { + self.cell.borrow_mut().update(|mql| { let mql = mql.root().unwrap(); if let MediaQueryListMatchState::Changed(_) = mql.evaluate_changes() { let event = MediaQueryListEvent::new(&mql.global(), @@ -148,7 +148,7 @@ impl WeakMediaQueryListVec { mql.Matches()); event.upcast::().fire(mql.upcast::()); } - } + }); } } diff --git a/tests/wpt/mozilla/meta/MANIFEST.json b/tests/wpt/mozilla/meta/MANIFEST.json index 99a9304ba6a..98dbd60fcbb 100644 --- a/tests/wpt/mozilla/meta/MANIFEST.json +++ b/tests/wpt/mozilla/meta/MANIFEST.json @@ -8594,6 +8594,12 @@ "url": "/_mozilla/mozilla/localeCompare.html" } ], + "mozilla/media_query_list_gc.html": [ + { + "path": "mozilla/media_query_list_gc.html", + "url": "/_mozilla/mozilla/media_query_list_gc.html" + } + ], "mozilla/mime_sniffing_font_context.html": [ { "path": "mozilla/mime_sniffing_font_context.html", diff --git a/tests/wpt/mozilla/tests/mozilla/media_query_list_gc.html b/tests/wpt/mozilla/tests/mozilla/media_query_list_gc.html new file mode 100644 index 00000000000..36c13b5305e --- /dev/null +++ b/tests/wpt/mozilla/tests/mozilla/media_query_list_gc.html @@ -0,0 +1,13 @@ + + +Should not crash on the resize + + +