Struct script::dom::servoparser::ServoParser

source ·
#[repr(C)]
pub struct ServoParser {
Show 14 fields reflector: Reflector, document: Dom<Document>, bom_sniff: DomRefCell<Option<Vec<u8>>>, network_decoder: DomRefCell<Option<NetworkDecoder>>, network_input: BufferQueue, script_input: BufferQueue, tokenizer: Tokenizer, last_chunk_received: Cell<bool>, suspended: Cell<bool>, script_nesting_level: Cell<usize>, aborted: Cell<bool>, script_created_parser: bool, prefetch_tokenizer: Tokenizer, prefetch_input: BufferQueue,
}
Expand description

The parser maintains two input streams: one for input from script through document.write(), and one for input from network.

There is no concrete representation of the insertion point, instead it always points to just before the next character from the network input, with all of the script input before itself.

    ... script input ... | ... network input ...
                         ^
                insertion point

Fields§

§reflector: Reflector§document: Dom<Document>

The document associated with this parser.

§bom_sniff: DomRefCell<Option<Vec<u8>>>

The BOM sniffing state.

None means we’ve found the BOM, we’ve found there isn’t one, or we’re not parsing from a byte stream. Some contains the BOM bytes found so far.

§network_decoder: DomRefCell<Option<NetworkDecoder>>

The decoder used for the network input.

§network_input: BufferQueue

Input received from network.

§script_input: BufferQueue

Input received from script. Used only to support document.write().

§tokenizer: Tokenizer

The tokenizer of this parser.

§last_chunk_received: Cell<bool>

Whether to expect any further input from the associated network request.

§suspended: Cell<bool>

Whether this parser should avoid passing any further data to the tokenizer.

§script_nesting_level: Cell<usize>§aborted: Cell<bool>§script_created_parser: bool§prefetch_tokenizer: Tokenizer

We do a quick-and-dirty parse of the input looking for resources to prefetch.

§prefetch_input: BufferQueue

Implementations§

source§

impl ServoParser

source§

impl ServoParser

source

pub fn parser_is_not_active(&self) -> bool

source

pub fn parse_html_document( document: &Document, input: Option<DOMString>, url: ServoUrl, can_gc: CanGc, )

source

pub fn parse_html_fragment( context: &Element, input: DOMString, can_gc: CanGc, ) -> impl Iterator<Item = Root<Dom<Node>>>

source

pub fn parse_html_script_input(document: &Document, url: ServoUrl)

source

pub fn parse_xml_document( document: &Document, input: Option<DOMString>, url: ServoUrl, can_gc: CanGc, )

source

pub fn script_nesting_level(&self) -> usize

source

pub fn is_script_created(&self) -> bool

source

pub fn resume_with_pending_parsing_blocking_script( &self, script: &HTMLScriptElement, result: Result<ScriptOrigin, NoTrace<NetworkError>>, can_gc: CanGc, )

Corresponds to the latter part of the “Otherwise” branch of the ‘An end tag whose tag name is “script”’ of https://html.spec.whatwg.org/multipage/#parsing-main-incdata

This first moves everything from the script input to the beginning of the network input, effectively resetting the insertion point to just before the next character to be consumed.

    | ... script input ... network input ...
    ^
    insertion point
source

pub fn can_write(&self) -> bool

source

pub fn write(&self, text: Vec<DOMString>, can_gc: CanGc)

source

pub fn close(&self, can_gc: CanGc)

source

pub fn abort(&self, can_gc: CanGc)

source

pub fn is_active(&self) -> bool

source

fn new_inherited( document: &Document, tokenizer: Tokenizer, kind: ParserKind, ) -> Self

source

fn new( document: &Document, tokenizer: Tokenizer, kind: ParserKind, ) -> Root<Dom<Self>>

source

fn push_tendril_input_chunk(&self, chunk: StrTendril)

source

fn push_bytes_input_chunk(&self, chunk: Vec<u8>)

source

fn push_string_input_chunk(&self, chunk: String)

source

fn parse_sync(&self, can_gc: CanGc)

source

fn do_parse_sync(&self, can_gc: CanGc)

source

fn parse_complete_string_chunk(&self, input: String, can_gc: CanGc)

source

fn parse_bytes_chunk(&self, input: Vec<u8>, can_gc: CanGc)

source

fn tokenize<F>(&self, feed: F, can_gc: CanGc)

source

fn finish(&self, can_gc: CanGc)

Trait Implementations§

source§

impl DomObject for ServoParser

source§

fn reflector(&self) -> &Reflector

Returns the receiver’s reflector.
source§

fn global(&self) -> Root<Dom<GlobalScope>>
where Self: Sized,

Returns the global scope of the realm that the DomObject was created in.
source§

impl DomObjectWrap for ServoParser

source§

const WRAP: unsafe fn(_: SafeJSContext, _: &GlobalScope, _: Option<HandleObject<'_>>, _: Box<Self>, _: CanGc) -> Root<Dom<Self>> = {dom::bindings::codegen::Bindings::ServoParserBinding::ServoParser_Binding::Wrap as for<'a, 'b> unsafe fn(script_runtime::JSContext, &'a dom::globalscope::GlobalScope, std::option::Option<js::rust::Handle<'b, *mut js::jsapi::JSObject>>, std::boxed::Box<dom::servoparser::ServoParser>, script_runtime::CanGc) -> dom::bindings::root::Root<dom::bindings::root::Dom<dom::servoparser::ServoParser>>}

Function pointer to the general wrap function type
source§

impl HasParent for ServoParser

source§

fn as_parent(&self) -> &Reflector

This is used in a type assertion to ensure that the source and webidls agree as to what the parent type is

§

type Parent = Reflector

source§

impl IDLInterface for ServoParser

source§

fn derives(class: &'static DOMClass) -> bool

Returns whether the given DOM class derives that interface.
source§

impl MallocSizeOf for ServoParser

source§

fn size_of(&self, ops: &mut MallocSizeOfOps) -> usize

Measure the heap usage of all descendant heap-allocated structures, but not the space taken up by the value itself.
source§

impl MutDomObject for ServoParser

source§

unsafe fn init_reflector(&self, obj: *mut JSObject)

Initializes the Reflector Read more
source§

impl PartialEq for ServoParser

source§

fn eq(&self, other: &Self) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl ToJSValConvertible for ServoParser

source§

unsafe fn to_jsval(&self, cx: *mut JSContext, rval: MutableHandleValue<'_>)

Convert self to a JSVal. JSAPI failure causes a panic.
source§

impl Traceable for ServoParser

source§

unsafe fn trace(&self, tracer: *mut JSTracer)

Trace self.
source§

impl Eq for ServoParser

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> Downcast<T> for T

source§

fn downcast(&self) -> &T

source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
source§

impl<T> Filterable for T

source§

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> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> IntoEither for T

source§

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 more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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 more
source§

impl<T> MaybeBoxed<Box<T>> for T

source§

fn maybe_boxed(self) -> Box<T>

Convert
source§

impl<T> MaybeBoxed<T> for T

source§

fn maybe_boxed(self) -> T

Convert
source§

impl<T> Pointable for T

source§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T> Upcast<T> for T

source§

fn upcast(&self) -> Option<&T>

source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

source§

fn vzip(self) -> V

source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

impl<T> ErasedDestructor for T
where T: 'static,

source§

impl<T> MaybeSendSync for T