diff --git a/crates/js/src/lib.rs b/crates/js/src/lib.rs index 7f463a48b..4db899c1c 100644 --- a/crates/js/src/lib.rs +++ b/crates/js/src/lib.rs @@ -704,7 +704,7 @@ pub(crate) fn menu_item(name: &str) -> Option { fn exec_menu_item(_: &JsValue, args: &[JsValue], ctx: &mut Context) -> JsResult { let item = text(&arg(args, 0), ctx)?; if let Some(r) = menu_item(&item) { - host(ctx)?.borrow_mut().requests.push(r); + host(ctx)?.borrow_mut().request(r); } Ok(JsValue::undefined()) } diff --git a/crates/js/src/tests.rs b/crates/js/src/tests.rs index 06d699bcb..3d3c4ab52 100644 --- a/crates/js/src/tests.rs +++ b/crates/js/src/tests.rs @@ -254,6 +254,13 @@ fn kept_bytes(o: &Outcome) -> usize { o.console.iter().chain(&o.alerts).map(String::len).sum::() + o.requests.iter().map(req).sum::() } +#[test] +fn exec_menu_item_requests_are_capped_like_other_requests() { + let o = go("for (var i = 0; i < 12000; i++) app.execMenuItem('Print');", &Event::field("Mouse Up", "agree", "")); + assert_eq!(o.error, None); + assert_eq!(o.requests.len(), crate::xfa::MAX_EFFECTS); +} + #[test] fn console_alerts_and_requests_are_capped_in_count_and_bytes() { let o = go(