mirror of
https://github.com/servo/servo.git
synced 2025-08-03 20:50:07 +01:00
Simplify AsyncResponseListener implementations.
This commit is contained in:
parent
c1aff0b678
commit
827f2b873c
3 changed files with 23 additions and 25 deletions
|
@ -38,7 +38,7 @@ use network_listener::{NetworkListener, PreInvoke};
|
|||
use script_task::ScriptTaskEventCategory::ScriptEvent;
|
||||
use script_task::{CommonScriptMsg, Runnable, ScriptChan};
|
||||
use std::ascii::AsciiExt;
|
||||
use std::cell::{Cell, RefCell};
|
||||
use std::cell::Cell;
|
||||
use std::mem;
|
||||
use std::sync::{Arc, Mutex};
|
||||
use url::{Url, UrlParser};
|
||||
|
@ -128,9 +128,9 @@ struct ScriptContext {
|
|||
/// The element that initiated the request.
|
||||
elem: Trusted<HTMLScriptElement>,
|
||||
/// The response body received to date.
|
||||
data: RefCell<Vec<u8>>,
|
||||
data: Vec<u8>,
|
||||
/// The response metadata received to date.
|
||||
metadata: RefCell<Option<Metadata>>,
|
||||
metadata: Option<Metadata>,
|
||||
/// Whether the owning document's parser should resume once the response completes.
|
||||
resume_on_completion: bool,
|
||||
/// The initial URL requested.
|
||||
|
@ -139,18 +139,18 @@ struct ScriptContext {
|
|||
|
||||
impl AsyncResponseListener for ScriptContext {
|
||||
fn headers_available(&mut self, metadata: Metadata) {
|
||||
*self.metadata.borrow_mut() = Some(metadata);
|
||||
self.metadata = Some(metadata);
|
||||
}
|
||||
|
||||
fn data_available(&mut self, payload: Vec<u8>) {
|
||||
let mut payload = payload;
|
||||
self.data.borrow_mut().append(&mut payload);
|
||||
self.data.append(&mut payload);
|
||||
}
|
||||
|
||||
fn response_complete(&mut self, status: Result<(), String>) {
|
||||
let load = status.map(|_| {
|
||||
let data = mem::replace(&mut *self.data.borrow_mut(), vec!());
|
||||
let metadata = self.metadata.borrow_mut().take().unwrap();
|
||||
let data = mem::replace(&mut self.data, vec!());
|
||||
let metadata = self.metadata.take().unwrap();
|
||||
(metadata, data)
|
||||
});
|
||||
let elem = self.elem.root();
|
||||
|
@ -283,8 +283,8 @@ impl HTMLScriptElement {
|
|||
|
||||
let context = Arc::new(Mutex::new(ScriptContext {
|
||||
elem: elem,
|
||||
data: RefCell::new(vec!()),
|
||||
metadata: RefCell::new(None),
|
||||
data: vec!(),
|
||||
metadata: None,
|
||||
resume_on_completion: self.parser_inserted.get(),
|
||||
url: url.clone(),
|
||||
}));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue