From cf7e9c1a3be327e6ece3eeb26b83493ff730d754 Mon Sep 17 00:00:00 2001 From: Manish Goregaokar Date: Sat, 19 Jul 2014 21:32:03 +0530 Subject: [PATCH] Check for worker scope in responseText setter --- src/components/script/dom/xmlhttprequest.rs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/components/script/dom/xmlhttprequest.rs b/src/components/script/dom/xmlhttprequest.rs index 4487d4160d5..5f26e51bba0 100644 --- a/src/components/script/dom/xmlhttprequest.rs +++ b/src/components/script/dom/xmlhttprequest.rs @@ -5,12 +5,12 @@ use dom::bindings::codegen::Bindings::EventHandlerBinding::EventHandlerNonNull; use dom::bindings::codegen::Bindings::XMLHttpRequestBinding; use dom::bindings::codegen::Bindings::XMLHttpRequestBinding::XMLHttpRequestResponseType; -use dom::bindings::codegen::Bindings::XMLHttpRequestBinding::XMLHttpRequestResponseTypeValues::{_empty, Json, Text}; +use dom::bindings::codegen::Bindings::XMLHttpRequestBinding::XMLHttpRequestResponseTypeValues::{_empty, Document, Json, Text}; use dom::bindings::codegen::InheritTypes::{EventCast, EventTargetCast, XMLHttpRequestDerived}; use dom::bindings::conversions::ToJSValConvertible; use dom::bindings::error::{Error, ErrorResult, Fallible, InvalidState, InvalidAccess}; use dom::bindings::error::{Network, Syntax, Security, Abort, Timeout}; -use dom::bindings::global::{GlobalField, GlobalRef}; +use dom::bindings::global::{GlobalField, GlobalRef, WorkerField}; use dom::bindings::js::{JS, JSRef, Temporary, OptionalRootedRootable}; use dom::bindings::str::ByteString; use dom::bindings::trace::{Traceable, Untraceable}; @@ -592,8 +592,10 @@ impl<'a> XMLHttpRequestMethods<'a> for JSRef<'a, XMLHttpRequest> { self.response_type.deref().get() } fn SetResponseType(&self, response_type: XMLHttpRequestResponseType) -> ErrorResult { - // FIXME: When Workers are implemented, there should be - // an additional check that this is a document environment + match self.global { + WorkerField(_) if response_type == Document => return Ok(()), + _ => {} + } match self.ready_state.deref().get() { Loading | XHRDone => Err(InvalidState), _ if self.sync.deref().get() => Err(InvalidAccess),