diff options
author | Keith Yeung <kungfukeith11@gmail.com> | 2015-01-31 20:41:34 +0800 |
---|---|---|
committer | Keith Yeung <kungfukeith11@gmail.com> | 2015-02-02 23:51:36 +0800 |
commit | 2093291539b6011fd76733414d145e61c92c0814 (patch) | |
tree | 38bc92a71d0ee924933772fa295148917b1d72d8 /components/script/dom/xmlhttprequest.rs | |
parent | 2010fbf0ddabdaf3bcb52c5f2075e7d994fc63ec (diff) | |
download | servo-2093291539b6011fd76733414d145e61c92c0814.tar.gz servo-2093291539b6011fd76733414d145e61c92c0814.zip |
Added error checking on XMLHttpRequest::setWithCredentials
Diffstat (limited to 'components/script/dom/xmlhttprequest.rs')
-rw-r--r-- | components/script/dom/xmlhttprequest.rs | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/components/script/dom/xmlhttprequest.rs b/components/script/dom/xmlhttprequest.rs index 0f6e9551272..961125bf25b 100644 --- a/components/script/dom/xmlhttprequest.rs +++ b/components/script/dom/xmlhttprequest.rs @@ -489,8 +489,21 @@ impl<'a> XMLHttpRequestMethods for JSRef<'a, XMLHttpRequest> { fn WithCredentials(self) -> bool { self.with_credentials.get() } - fn SetWithCredentials(self, with_credentials: bool) { - self.with_credentials.set(with_credentials); + // Spec for SetWithCredentials: https://xhr.spec.whatwg.org/#dom-xmlhttprequest-withcredentials + fn SetWithCredentials(self, with_credentials: bool) -> ErrorResult { + match self.ready_state.get() { + XMLHttpRequestState::HeadersReceived | + XMLHttpRequestState::Loading | + XMLHttpRequestState::XHRDone => Err(InvalidState), + _ if self.send_flag.get() => Err(InvalidState), + _ => match self.global.root() { + GlobalRoot::Window(_) if self.sync.get() => Err(InvalidAccess), + _ => { + self.with_credentials.set(with_credentials); + Ok(()) + }, + }, + } } fn Upload(self) -> Temporary<XMLHttpRequestUpload> { Temporary::new(self.upload) |