aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/xmlhttprequest.rs
diff options
context:
space:
mode:
authorbors-servo <metajack+bors@gmail.com>2015-02-02 08:57:53 -0700
committerbors-servo <metajack+bors@gmail.com>2015-02-02 08:57:53 -0700
commit755adf0ddefb060007c0319655f994445aea4709 (patch)
treed176643bbeb46c563e74b8e6cbc617a96b3f01ee /components/script/dom/xmlhttprequest.rs
parent3286d2812a083aa4a081d888a40e86b0b12b5c20 (diff)
parent2093291539b6011fd76733414d145e61c92c0814 (diff)
downloadservo-755adf0ddefb060007c0319655f994445aea4709.tar.gz
servo-755adf0ddefb060007c0319655f994445aea4709.zip
auto merge of #4793 : KiChjang/servo/xhr-cred-check, r=Manishearth
Fixes #4665
Diffstat (limited to 'components/script/dom/xmlhttprequest.rs')
-rw-r--r--components/script/dom/xmlhttprequest.rs17
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)