pub(crate) struct ModuleTree {
url: ServoUrl,
text: DomRefCell<Rc<DOMString>>,
record: DomRefCell<Option<ModuleObject>>,
status: DomRefCell<ModuleStatus>,
parent_identities: DomRefCell<IndexSet<ModuleIdentity>>,
descendant_urls: DomRefCell<IndexSet<ServoUrl>>,
incomplete_fetch_urls: DomRefCell<IndexSet<ServoUrl>>,
visited_urls: DomRefCell<HashSet<ServoUrl>>,
rethrow_error: DomRefCell<Option<RethrowError>>,
network_error: DomRefCell<Option<NetworkError>>,
promise: DomRefCell<Option<Rc<Promise>>>,
external: bool,
}
Fields§
§url: ServoUrl
§text: DomRefCell<Rc<DOMString>>
§record: DomRefCell<Option<ModuleObject>>
§status: DomRefCell<ModuleStatus>
§parent_identities: DomRefCell<IndexSet<ModuleIdentity>>
§descendant_urls: DomRefCell<IndexSet<ServoUrl>>
§incomplete_fetch_urls: DomRefCell<IndexSet<ServoUrl>>
§visited_urls: DomRefCell<HashSet<ServoUrl>>
§rethrow_error: DomRefCell<Option<RethrowError>>
§network_error: DomRefCell<Option<NetworkError>>
§promise: DomRefCell<Option<Rc<Promise>>>
§external: bool
Implementations§
Source§impl ModuleTree
impl ModuleTree
pub(crate) fn new( url: ServoUrl, external: bool, visited_urls: HashSet<ServoUrl>, ) -> Self
pub(crate) fn get_status(&self) -> ModuleStatus
pub(crate) fn set_status(&self, status: ModuleStatus)
pub(crate) fn get_record(&self) -> &DomRefCell<Option<ModuleObject>>
pub(crate) fn set_record(&self, record: ModuleObject)
pub(crate) fn get_rethrow_error(&self) -> &DomRefCell<Option<RethrowError>>
pub(crate) fn set_rethrow_error(&self, rethrow_error: RethrowError)
pub(crate) fn get_network_error(&self) -> &DomRefCell<Option<NetworkError>>
pub(crate) fn set_network_error(&self, network_error: NetworkError)
pub(crate) fn get_text(&self) -> &DomRefCell<Rc<DOMString>>
pub(crate) fn set_text(&self, module_text: Rc<DOMString>)
pub(crate) fn get_incomplete_fetch_urls( &self, ) -> &DomRefCell<IndexSet<ServoUrl>>
pub(crate) fn get_descendant_urls(&self) -> &DomRefCell<IndexSet<ServoUrl>>
pub(crate) fn get_parent_urls(&self) -> IndexSet<ServoUrl>
pub(crate) fn insert_parent_identity(&self, parent_identity: ModuleIdentity)
pub(crate) fn insert_incomplete_fetch_url(&self, dependency: &ServoUrl)
pub(crate) fn remove_incomplete_fetch_url(&self, dependency: &ServoUrl)
Sourcefn recursive_check_descendants(
module_tree: &ModuleTree,
module_map: &HashMap<ServoUrl, Rc<ModuleTree>>,
discovered_urls: &mut HashSet<ServoUrl>,
) -> bool
fn recursive_check_descendants( module_tree: &ModuleTree, module_map: &HashMap<ServoUrl, Rc<ModuleTree>>, discovered_urls: &mut HashSet<ServoUrl>, ) -> bool
recursively checks if all of the transitive descendants are in the FetchingDescendants or later status
fn has_all_ready_descendants(&self, global: &GlobalScope) -> bool
fn append_handler( &self, owner: ModuleOwner, module_identity: ModuleIdentity, fetch_options: ScriptFetchOptions, can_gc: CanGc, )
fn append_dynamic_module_handler( &self, owner: ModuleOwner, module_identity: ModuleIdentity, dynamic_module: RootedTraceableBox<DynamicModule>, can_gc: CanGc, )
Source§impl ModuleTree
impl ModuleTree
Sourcefn compile_module_script(
&self,
global: &GlobalScope,
owner: ModuleOwner,
module_script_text: Rc<DOMString>,
url: &ServoUrl,
options: ScriptFetchOptions,
module_script: RustMutableHandleObject<'_>,
inline: bool,
can_gc: CanGc,
) -> Result<(), RethrowError>
fn compile_module_script( &self, global: &GlobalScope, owner: ModuleOwner, module_script_text: Rc<DOMString>, url: &ServoUrl, options: ScriptFetchOptions, module_script: RustMutableHandleObject<'_>, inline: bool, can_gc: CanGc, ) -> Result<(), RethrowError>
https://html.spec.whatwg.org/multipage/#creating-a-module-script Step 7-11. Although the CanGc argument appears unused, it represents the GC operations that can occur as part of compiling a script.
Sourcepub(crate) fn instantiate_module_tree(
&self,
global: &GlobalScope,
module_record: HandleObject,
) -> Result<(), RethrowError>
pub(crate) fn instantiate_module_tree( &self, global: &GlobalScope, module_record: HandleObject, ) -> Result<(), RethrowError>
Sourcepub(crate) fn execute_module(
&self,
global: &GlobalScope,
module_record: HandleObject,
eval_result: MutableHandleValue,
_can_gc: CanGc,
) -> Result<(), RethrowError>
pub(crate) fn execute_module( &self, global: &GlobalScope, module_record: HandleObject, eval_result: MutableHandleValue, _can_gc: CanGc, ) -> Result<(), RethrowError>
Execute the provided module, storing the evaluation return value in the provided mutable handle. Although the CanGc appears unused, it represents the GC operations possible when evluating arbitrary JS.
pub(crate) fn report_error(&self, global: &GlobalScope, can_gc: CanGc)
fn resolve_requested_module_specifiers( &self, global: &GlobalScope, module_object: HandleObject, base_url: &ServoUrl, can_gc: CanGc, ) -> Result<IndexSet<ServoUrl>, RethrowError>
Sourcefn resolve_module_specifier(
cx: *mut JSContext,
url: &ServoUrl,
specifier: RawHandle<*mut JSString>,
) -> Result<ServoUrl, UrlParseError>
fn resolve_module_specifier( cx: *mut JSContext, url: &ServoUrl, specifier: RawHandle<*mut JSString>, ) -> Result<ServoUrl, UrlParseError>
The following module specifiers are allowed by the spec:
- a valid absolute URL
- a valid relative URL that starts with “/”, “./” or “../”
Bareword module specifiers are currently disallowed as these may be given special meanings in the future. https://html.spec.whatwg.org/multipage/#resolve-a-module-specifier
Sourcefn find_first_parse_error(
&self,
global: &GlobalScope,
discovered_urls: &mut HashSet<ServoUrl>,
) -> (Option<NetworkError>, Option<RethrowError>)
fn find_first_parse_error( &self, global: &GlobalScope, discovered_urls: &mut HashSet<ServoUrl>, ) -> (Option<NetworkError>, Option<RethrowError>)
Sourcefn fetch_module_descendants(
&self,
owner: &ModuleOwner,
destination: Destination,
options: &ScriptFetchOptions,
parent_identity: ModuleIdentity,
can_gc: CanGc,
)
fn fetch_module_descendants( &self, owner: &ModuleOwner, destination: Destination, options: &ScriptFetchOptions, parent_identity: ModuleIdentity, can_gc: CanGc, )
Sourcefn advance_finished_and_link(&self, global: &GlobalScope, can_gc: CanGc)
fn advance_finished_and_link(&self, global: &GlobalScope, can_gc: CanGc)
Trait Implementations§
Auto Trait Implementations§
impl !Freeze for ModuleTree
impl !RefUnwindSafe for ModuleTree
impl !Send for ModuleTree
impl !Sync for ModuleTree
impl Unpin for ModuleTree
impl !UnwindSafe for ModuleTree
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Filterable for T
impl<T> Filterable for T
Source§fn filterable(
self,
filter_name: &'static str,
) -> RequestFilterDataProvider<T, fn(_: DataRequest<'_>) -> bool>
fn filterable( self, filter_name: &'static str, ) -> RequestFilterDataProvider<T, fn(_: DataRequest<'_>) -> bool>
Creates a filterable data provider with the given name for debugging. Read more
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> MaybeBoxed<Box<T>> for T
impl<T> MaybeBoxed<Box<T>> for T
Source§fn maybe_boxed(self) -> Box<T>
fn maybe_boxed(self) -> Box<T>
Convert
Source§impl<T> MaybeBoxed<T> for T
impl<T> MaybeBoxed<T> for T
Source§fn maybe_boxed(self) -> T
fn maybe_boxed(self) -> T
Convert