···2626-use stylo_atoms::Atom;
27272828 use crate::document_loader::{LoadBlocker, LoadType};
2929- use crate::dom::attr::Attr;
3029 use crate::dom::bindings::cell::DomRefCell;
3130+use crate::dom::bindings::codegen::Bindings::EmbeddedWebViewBinding::ScreenshotOptions;
3231 use crate::dom::bindings::codegen::Bindings::HTMLIFrameElementBinding::HTMLIFrameElementMethods;
···4241+use crate::dom::console::Console;
4342 use crate::dom::document::Document;
4443 use crate::dom::domtokenlist::DOMTokenList;
4444+ use crate::dom::element::attributes::storage::AttrRef;
4545 use crate::dom::element::{AttributeMutation, Element, reflect_referrer_policy_attribute};
4646+use crate::dom::embedder::Embedder;
4747 use crate::dom::eventtarget::EventTarget;
···527527 }
528528529529 impl VirtualMethods for HTMLIFrameElement {
530530-@@ -1138,9 +1566,54 @@
530530+@@ -1143,9 +1571,54 @@
531531 // may be in a different script thread. Instead, we check to see if the parent
532532 // is in a document tree and has a browsing context, which is what causes
533533 // the child browsing context to be created.
···584584 }
585585 },
586586 local_name!("loading") => {
587587-@@ -1205,6 +1678,23 @@
587587+@@ -1210,6 +1683,23 @@
588588589589 debug!("<iframe> running post connection steps");
590590···608608 // Step 1. Create a new child navigable for insertedNode.
609609 self.create_nested_browsing_context(cx);
610610611611-@@ -1227,8 +1717,22 @@
611611+@@ -1232,8 +1722,22 @@
612612 fn unbind_from_tree(&self, cx: &mut JSContext, context: &UnbindContext) {
613613 self.super_type().unwrap().unbind_from_tree(cx, context);
614614
+4-2
patches/components/script/dom/navigator.rs.patch
···6464 use crate::dom::serviceworkercontainer::ServiceWorkerContainer;
6565 use crate::dom::servointernals::ServoInternals;
6666 use crate::dom::storagemanager::StorageManager;
6767-@@ -66,6 +75,8 @@
6767+@@ -66,7 +75,9 @@
6868 use crate::dom::xrsystem::XRSystem;
6969 use crate::fetch::RequestWithGlobalScope;
7070 use crate::network_listener::{FetchResponseListener, ResourceTimingListener, submit_timing};
7171+-use crate::script_runtime::CanGc;
7172+use crate::realms::InRealm;
7273+use crate::routed_promise::{RoutedPromiseListener, callback_promise};
7373- use crate::script_runtime::{CanGc, JSContext};
7474++use crate::script_runtime::{CanGc, JSContext};
74757576 pub(super) fn hardware_concurrency() -> u64 {
7777+ static CPUS: LazyLock<u64> = LazyLock::new(|| num_cpus::get().try_into().unwrap_or(1));
7678@@ -137,6 +148,9 @@
7779 servo_internals: MutNullableDom<ServoInternals>,
7880 user_activation: MutNullableDom<UserActivation>,