aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/eventsource.rs
diff options
context:
space:
mode:
authorchansuke <chansuke@georepublic.de>2018-09-18 23:24:15 +0900
committerJosh Matthews <josh@joshmatthews.net>2018-09-19 17:40:47 -0400
commitc37a345dc9f4dda6ea29c42f96f6c7201c42cbac (patch)
tree1f05b49bac02318455a59d5b143c186fd872bdb9 /components/script/dom/eventsource.rs
parent2ca7a134736bb4759ff209c1bc0b6dc3cc1984c9 (diff)
downloadservo-c37a345dc9f4dda6ea29c42f96f6c7201c42cbac.tar.gz
servo-c37a345dc9f4dda6ea29c42f96f6c7201c42cbac.zip
Format script component
Diffstat (limited to 'components/script/dom/eventsource.rs')
-rw-r--r--components/script/dom/eventsource.rs143
1 files changed, 92 insertions, 51 deletions
diff --git a/components/script/dom/eventsource.rs b/components/script/dom/eventsource.rs
index 072a3dd0080..574b39e0623 100644
--- a/components/script/dom/eventsource.rs
+++ b/components/script/dom/eventsource.rs
@@ -51,7 +51,7 @@ struct GenerationId(u32);
enum ReadyState {
Connecting = 0,
Open = 1,
- Closed = 2
+ Closed = 2,
}
#[dom_struct]
@@ -72,7 +72,7 @@ enum ParserState {
Field,
Comment,
Value,
- Eol
+ Eol,
}
struct EventSourceContext {
@@ -177,12 +177,12 @@ impl EventSourceContext {
"data" => {
self.data.push_str(&self.value);
self.data.push('\n');
- }
+ },
"id" => mem::swap(&mut self.last_event_id, &mut self.value),
"retry" => if let Ok(time) = u64::from_str(&self.value) {
self.event_source.root().reconnection_time.set(time);
},
- _ => ()
+ _ => (),
}
self.field.clear();
@@ -215,13 +215,24 @@ impl EventSourceContext {
};
// Steps 4-5
let event = {
- let _ac = JSAutoCompartment::new(event_source.global().get_cx(),
- event_source.reflector().get_jsobject().get());
+ let _ac = JSAutoCompartment::new(
+ event_source.global().get_cx(),
+ event_source.reflector().get_jsobject().get(),
+ );
rooted!(in(event_source.global().get_cx()) let mut data = UndefinedValue());
- unsafe { self.data.to_jsval(event_source.global().get_cx(), data.handle_mut()) };
- MessageEvent::new(&*event_source.global(), type_, false, false, data.handle(),
- DOMString::from(self.origin.clone()),
- event_source.last_event_id.borrow().clone())
+ unsafe {
+ self.data
+ .to_jsval(event_source.global().get_cx(), data.handle_mut())
+ };
+ MessageEvent::new(
+ &*event_source.global(),
+ type_,
+ false,
+ false,
+ data.handle(),
+ DOMString::from(self.origin.clone()),
+ event_source.last_event_id.borrow().clone(),
+ )
};
// Step 7
self.event_type.clear();
@@ -255,31 +266,31 @@ impl EventSourceContext {
if let Some(&' ') = stream.peek() {
stream.next();
}
- }
+ },
('\n', &ParserState::Value) => {
self.parser_state = ParserState::Eol;
self.process_field();
- }
+ },
('\r', &ParserState::Value) => {
if let Some(&'\n') = stream.peek() {
continue;
}
self.parser_state = ParserState::Eol;
self.process_field();
- }
+ },
('\n', &ParserState::Field) => {
self.parser_state = ParserState::Eol;
self.process_field();
- }
+ },
('\r', &ParserState::Field) => {
if let Some(&'\n') = stream.peek() {
continue;
}
self.parser_state = ParserState::Eol;
self.process_field();
- }
+ },
('\n', &ParserState::Eol) => self.dispatch_event(),
('\r', &ParserState::Eol) => {
@@ -287,7 +298,7 @@ impl EventSourceContext {
continue;
}
self.dispatch_event();
- }
+ },
('\n', &ParserState::Comment) => self.parser_state = ParserState::Eol,
('\r', &ParserState::Comment) => {
@@ -295,14 +306,14 @@ impl EventSourceContext {
continue;
}
self.parser_state = ParserState::Eol;
- }
+ },
(_, &ParserState::Field) => self.field.push(ch),
(_, &ParserState::Value) => self.value.push(ch),
(_, &ParserState::Eol) => {
self.parser_state = ParserState::Field;
self.field.push(ch);
- }
+ },
(_, &ParserState::Comment) => (),
}
}
@@ -323,7 +334,7 @@ impl FetchResponseListener for EventSourceContext {
Ok(fm) => {
let meta = match fm {
FetchMetadata::Unfiltered(m) => m,
- FetchMetadata::Filtered { unsafe_, .. } => unsafe_
+ FetchMetadata::Filtered { unsafe_, .. } => unsafe_,
};
match meta.content_type {
None => self.fail_the_connection(),
@@ -331,14 +342,14 @@ impl FetchResponseListener for EventSourceContext {
Mime(TopLevel::Text, SubLevel::EventStream, _) => {
self.origin = meta.final_url.origin().unicode_serialization();
self.announce_the_connection();
- }
- _ => self.fail_the_connection()
- }
+ },
+ _ => self.fail_the_connection(),
+ },
}
- }
+ },
Err(_) => {
self.reestablish_the_connection();
- }
+ },
}
}
@@ -350,7 +361,7 @@ impl FetchResponseListener for EventSourceContext {
Some((result, remaining_input)) => {
self.parse(result.unwrap_or("\u{FFFD}").chars());
input = remaining_input;
- }
+ },
}
}
@@ -358,18 +369,25 @@ impl FetchResponseListener for EventSourceContext {
match utf8::decode(&input) {
Ok(s) => {
self.parse(s.chars());
- return
- }
- Err(utf8::DecodeError::Invalid { valid_prefix, remaining_input, .. }) => {
+ return;
+ },
+ Err(utf8::DecodeError::Invalid {
+ valid_prefix,
+ remaining_input,
+ ..
+ }) => {
self.parse(valid_prefix.chars());
self.parse("\u{FFFD}".chars());
input = remaining_input;
- }
- Err(utf8::DecodeError::Incomplete { valid_prefix, incomplete_suffix }) => {
+ },
+ Err(utf8::DecodeError::Incomplete {
+ valid_prefix,
+ incomplete_suffix,
+ }) => {
self.parse(valid_prefix.chars());
self.incomplete_utf8 = Some(incomplete_suffix);
- return
- }
+ return;
+ },
}
}
}
@@ -400,14 +418,16 @@ impl EventSource {
ready_state: Cell::new(ReadyState::Connecting),
with_credentials: with_credentials,
- canceller: DomRefCell::new(Default::default())
+ canceller: DomRefCell::new(Default::default()),
}
}
fn new(global: &GlobalScope, url: ServoUrl, with_credentials: bool) -> DomRoot<EventSource> {
- reflect_dom_object(Box::new(EventSource::new_inherited(url, with_credentials)),
- global,
- Wrap)
+ reflect_dom_object(
+ Box::new(EventSource::new_inherited(url, with_credentials)),
+ global,
+ Wrap,
+ )
}
// https://html.spec.whatwg.org/multipage/#sse-processing-model:fail-the-connection-3
@@ -438,19 +458,25 @@ impl EventSource {
}
// https://html.spec.whatwg.org/multipage/#dom-eventsource
- pub fn Constructor(global: &GlobalScope,
- url: DOMString,
- event_source_init: &EventSourceInit) -> Fallible<DomRoot<EventSource>> {
+ pub fn Constructor(
+ global: &GlobalScope,
+ url: DOMString,
+ event_source_init: &EventSourceInit,
+ ) -> Fallible<DomRoot<EventSource>> {
// TODO: Step 2 relevant settings object
// Step 3
let base_url = global.api_base_url();
let url_record = match base_url.join(&*url) {
Ok(u) => u,
// Step 4
- Err(_) => return Err(Error::Syntax)
+ Err(_) => return Err(Error::Syntax),
};
// Step 1, 5
- let ev = EventSource::new(global, url_record.clone(), event_source_init.withCredentials);
+ let ev = EventSource::new(
+ global,
+ url_record.clone(),
+ event_source_init.withCredentials,
+ );
global.track_event_source(&ev);
// Steps 6-7
let cors_attribute_state = if event_source_init.withCredentials {
@@ -475,7 +501,9 @@ impl EventSource {
..RequestInit::default()
};
// Step 10
- request.headers.set(Accept(vec![qitem(mime!(Text / EventStream))]));
+ request
+ .headers
+ .set(Accept(vec![qitem(mime!(Text / EventStream))]));
// Step 11
request.cache_mode = CacheMode::NoStore;
// Step 12
@@ -501,14 +529,21 @@ impl EventSource {
let listener = NetworkListener {
context: Arc::new(Mutex::new(context)),
task_source: global.networking_task_source(),
- canceller: Some(global.task_canceller(TaskSourceName::Networking))
+ canceller: Some(global.task_canceller(TaskSourceName::Networking)),
};
- ROUTER.add_route(action_receiver.to_opaque(), Box::new(move |message| {
- listener.notify_fetch(message.to().unwrap());
- }));
+ ROUTER.add_route(
+ action_receiver.to_opaque(),
+ Box::new(move |message| {
+ listener.notify_fetch(message.to().unwrap());
+ }),
+ );
let cancel_receiver = ev.canceller.borrow_mut().initialize();
- global.core_resource_thread().send(
- CoreResourceMsg::Fetch(request, FetchChannels::ResponseMsg(action_sender, Some(cancel_receiver)))).unwrap();
+ global
+ .core_resource_thread()
+ .send(CoreResourceMsg::Fetch(
+ request,
+ FetchChannels::ResponseMsg(action_sender, Some(cancel_receiver)),
+ )).unwrap();
// Step 13
Ok(ev)
}
@@ -578,10 +613,16 @@ impl EventSourceTimeoutCallback {
let mut request = event_source.request();
// Step 5.3
if !event_source.last_event_id.borrow().is_empty() {
- request.headers.set(LastEventId(String::from(event_source.last_event_id.borrow().clone())));
+ request.headers.set(LastEventId(String::from(
+ event_source.last_event_id.borrow().clone(),
+ )));
}
// Step 5.4
- global.core_resource_thread().send(
- CoreResourceMsg::Fetch(request, FetchChannels::ResponseMsg(self.action_sender, None))).unwrap();
+ global
+ .core_resource_thread()
+ .send(CoreResourceMsg::Fetch(
+ request,
+ FetchChannels::ResponseMsg(self.action_sender, None),
+ )).unwrap();
}
}