diff options
-rw-r--r-- | components/script/dom/servoparser/async_html.rs | 7 | ||||
-rw-r--r-- | components/script/dom/servoparser/html.rs | 9 | ||||
-rw-r--r-- | components/script/dom/servoparser/mod.rs | 10 | ||||
-rw-r--r-- | components/script/dom/servoparser/xml.rs | 10 |
4 files changed, 22 insertions, 14 deletions
diff --git a/components/script/dom/servoparser/async_html.rs b/components/script/dom/servoparser/async_html.rs index 4a2e34316eb..9a76278b178 100644 --- a/components/script/dom/servoparser/async_html.rs +++ b/components/script/dom/servoparser/async_html.rs @@ -272,7 +272,8 @@ impl Tokenizer { tokenizer } - pub fn feed(&mut self, input: &mut BufferQueue) -> Result<(), DomRoot<HTMLScriptElement>> { + #[must_use] + pub fn feed(&mut self, input: &mut BufferQueue) -> TokenizerResult<DomRoot<HTMLScriptElement>> { let mut send_tendrils = VecDeque::new(); while let Some(str) = input.pop_front() { send_tendrils.push_back(SendTendril::from(str)); @@ -296,7 +297,7 @@ impl Tokenizer { ToTokenizerMsg::TokenizerResultDone { updated_input } => { let buffer_queue = create_buffer_queue(updated_input); *input = buffer_queue; - return Ok(()); + return TokenizerResult::Done; }, ToTokenizerMsg::TokenizerResultScript { script, @@ -305,7 +306,7 @@ impl Tokenizer { let buffer_queue = create_buffer_queue(updated_input); *input = buffer_queue; let script = self.get_node(&script.id); - return Err(DomRoot::from_ref(script.downcast().unwrap())); + return TokenizerResult::Script(DomRoot::from_ref(script.downcast().unwrap())); }, ToTokenizerMsg::End => unreachable!(), }; diff --git a/components/script/dom/servoparser/html.rs b/components/script/dom/servoparser/html.rs index 1bbc0aeeae8..fbf76473d27 100644 --- a/components/script/dom/servoparser/html.rs +++ b/components/script/dom/servoparser/html.rs @@ -77,10 +77,13 @@ impl Tokenizer { Tokenizer { inner: inner } } - pub fn feed(&mut self, input: &mut BufferQueue) -> Result<(), DomRoot<HTMLScriptElement>> { + #[must_use] + pub fn feed(&mut self, input: &mut BufferQueue) -> TokenizerResult<DomRoot<HTMLScriptElement>> { match self.inner.feed(input) { - TokenizerResult::Done => Ok(()), - TokenizerResult::Script(script) => Err(DomRoot::from_ref(script.downcast().unwrap())), + TokenizerResult::Done => TokenizerResult::Done, + TokenizerResult::Script(script) => { + TokenizerResult::Script(DomRoot::from_ref(script.downcast().unwrap())) + }, } } diff --git a/components/script/dom/servoparser/mod.rs b/components/script/dom/servoparser/mod.rs index 6bfed4d8dea..ba114366aa2 100644 --- a/components/script/dom/servoparser/mod.rs +++ b/components/script/dom/servoparser/mod.rs @@ -43,6 +43,7 @@ use encoding_rs::Encoding; use html5ever::buffer_queue::BufferQueue; use html5ever::tendril::fmt::UTF8; use html5ever::tendril::{ByteTendril, StrTendril, TendrilSink}; +use html5ever::tokenizer::TokenizerResult; use html5ever::tree_builder::{ElementFlags, NextParserState, NodeOrText, QuirksMode, TreeSink}; use html5ever::{Attribute, ExpandedName, LocalName, QualName}; use hyper_serde::Serde; @@ -589,7 +590,7 @@ impl ServoParser { fn tokenize<F>(&self, mut feed: F) where - F: FnMut(&mut Tokenizer) -> Result<(), DomRoot<HTMLScriptElement>>, + F: FnMut(&mut Tokenizer) -> TokenizerResult<DomRoot<HTMLScriptElement>>, { loop { assert!(!self.suspended.get()); @@ -597,8 +598,8 @@ impl ServoParser { self.document.reflow_if_reflow_timer_expired(); let script = match feed(&mut *self.tokenizer.borrow_mut()) { - Ok(()) => return, - Err(script) => script, + TokenizerResult::Done => return, + TokenizerResult::Script(script) => script, }; // https://html.spec.whatwg.org/multipage/#parsing-main-incdata @@ -691,7 +692,8 @@ enum Tokenizer { } impl Tokenizer { - fn feed(&mut self, input: &mut BufferQueue) -> Result<(), DomRoot<HTMLScriptElement>> { + #[must_use] + fn feed(&mut self, input: &mut BufferQueue) -> TokenizerResult<DomRoot<HTMLScriptElement>> { match *self { Tokenizer::Html(ref mut tokenizer) => tokenizer.feed(input), Tokenizer::AsyncHtml(ref mut tokenizer) => tokenizer.feed(input), diff --git a/components/script/dom/servoparser/xml.rs b/components/script/dom/servoparser/xml.rs index ac900d61ce0..9b609cd7ea4 100644 --- a/components/script/dom/servoparser/xml.rs +++ b/components/script/dom/servoparser/xml.rs @@ -10,6 +10,7 @@ use crate::dom::document::Document; use crate::dom::htmlscriptelement::HTMLScriptElement; use crate::dom::node::Node; use crate::dom::servoparser::{ParsingAlgorithm, Sink}; +use html5ever::tokenizer::TokenizerResult; use js::jsapi::JSTracer; use servo_url::ServoUrl; use xml5ever::buffer_queue::BufferQueue; @@ -39,12 +40,13 @@ impl Tokenizer { Tokenizer { inner: tok } } - pub fn feed(&mut self, input: &mut BufferQueue) -> Result<(), DomRoot<HTMLScriptElement>> { + #[must_use] + pub fn feed(&mut self, input: &mut BufferQueue) -> TokenizerResult<DomRoot<HTMLScriptElement>> { self.inner.run(input); - if let Some(script) = self.inner.sink.sink.script.take() { - return Err(script); + match self.inner.sink.sink.script.take() { + Some(script) => TokenizerResult::Script(script), + None => TokenizerResult::Done, } - Ok(()) } pub fn end(&mut self) { |