Skip to content

Commit

Permalink
Bug 8830 - Implemented XMLHttpRequest.responseURL
Browse files Browse the repository at this point in the history
  • Loading branch information
shinglyu committed Mar 22, 2016
1 parent aa35d77 commit f55b076
Show file tree
Hide file tree
Showing 4 changed files with 49 additions and 9 deletions.
9 changes: 6 additions & 3 deletions components/script/dom/xmlhttprequest.rs
Expand Up @@ -118,7 +118,7 @@ pub struct XMLHttpRequest {
timeout: Cell<u32>,
with_credentials: Cell<bool>,
upload: JS<XMLHttpRequestUpload>,
response_url: String,
response_url: DOMRefCell<String>,
status: Cell<u16>,
status_text: DOMRefCell<ByteString>,
response: DOMRefCell<ByteString>,
Expand Down Expand Up @@ -160,7 +160,7 @@ impl XMLHttpRequest {
timeout: Cell::new(0u32),
with_credentials: Cell::new(false),
upload: JS::from_rooted(&XMLHttpRequestUpload::new(global)),
response_url: String::from(""),
response_url: DOMRefCell::new(String::from("")),
status: Cell::new(0),
status_text: DOMRefCell::new(ByteString::new(vec!())),
response: DOMRefCell::new(ByteString::new(vec!())),
Expand Down Expand Up @@ -691,7 +691,7 @@ impl XMLHttpRequestMethods for XMLHttpRequest {

// https://xhr.spec.whatwg.org/#the-responseurl-attribute
fn ResponseURL(&self) -> USVString {
USVString(self.response_url.clone())
USVString(self.response_url.borrow().clone())
}

// https://xhr.spec.whatwg.org/#the-status-attribute
Expand Down Expand Up @@ -876,6 +876,8 @@ impl XMLHttpRequest {
}
}

*self.response_url.borrow_mut() = metadata.final_url.serialize_no_fragment();

// XXXManishearth Clear cache entries in case of a network error
self.process_partial_response(XHRProgress::HeadersReceived(gen_id,
metadata.headers,
Expand Down Expand Up @@ -980,6 +982,7 @@ impl XMLHttpRequest {

// Subsubsteps 5-7
self.send_flag.set(false);

self.change_ready_state(XMLHttpRequestState::Done);
return_if_fetch_was_terminated!();
// Subsubsteps 10-12
Expand Down
6 changes: 6 additions & 0 deletions tests/wpt/metadata/MANIFEST.json
Expand Up @@ -34794,6 +34794,12 @@
"deleted": [],
"items": {
"testharness": {
"XMLHttpRequest/responseurl.html": [
{
"path": "XMLHttpRequest/responseurl.html",
"url": "/XMLHttpRequest/responseurl.html"
}
],
"html/semantics/forms/textfieldselection/selection-after-content-change.html": [
{
"path": "html/semantics/forms/textfieldselection/selection-after-content-change.html",
Expand Down
Expand Up @@ -3,12 +3,6 @@
[domain]
expected: FAIL

[URL]
expected: FAIL

[documentURI]
expected: FAIL

[referrer]
expected: FAIL

Expand Down
37 changes: 37 additions & 0 deletions tests/wpt/web-platform-tests/XMLHttpRequest/responseurl.html
@@ -0,0 +1,37 @@
<!doctype html>
<html>
<head>
<title>XMLHttpRequest: responseURL test</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<link rel="help" href="https://xhr.spec.whatwg.org/#the-responseurl-attribute"/>
</head>
<body>
<div id="log"></div>
<script>
test(function() {
var client = new XMLHttpRequest()
assert_equals(client.responseURL, "")

client.open("GET", "foo.html", false)
client.send()

expected = location.href.replace(/[^/]*$/, 'foo.html')
assert_equals(client.status, 404)
assert_equals(client.responseURL, expected)
}, "404 response has proper responseURL")
test(function() {
var client = new XMLHttpRequest()
assert_equals(client.responseURL, "")

target = "image.gif"
client.open("GET", "resources/redirect.py?location=" + target, false)
client.send()

expected = location.href.replace(/[^/]*$/, "resources/" + target)
assert_equals(client.status, 200)
assert_equals(client.responseURL, expected)
}, "Redirected response has proper responseURL")
</script>
</body>
</html>

0 comments on commit f55b076

Please sign in to comment.