aboutsummaryrefslogtreecommitdiffstats
path: root/components/net/fetch/request.rs
diff options
context:
space:
mode:
Diffstat (limited to 'components/net/fetch/request.rs')
-rw-r--r--components/net/fetch/request.rs34
1 files changed, 15 insertions, 19 deletions
diff --git a/components/net/fetch/request.rs b/components/net/fetch/request.rs
index 0980e07c3e5..d0c9b964785 100644
--- a/components/net/fetch/request.rs
+++ b/components/net/fetch/request.rs
@@ -296,39 +296,37 @@ fn http_fetch(request: Rc<Request>,
authentication_fetch_flag: bool) -> Response {
// Step 1
- let mut response: Option<Rc<RefCell<Response>>> = None;
+ let mut response: Option<Rc<Response>> = None;
// Step 2
- let mut actual_response: Option<Rc<RefCell<Response>>> = None;
+ let mut actual_response: Option<Rc<Response>> = None;
// Step 3
if !request.skip_service_worker.get() && !request.is_service_worker_global_scope {
// TODO: Substep 1 (handle fetch unimplemented)
if let Some(ref res) = response {
- let resp = res.borrow();
// Substep 2
- actual_response = match resp.internal_response {
+ actual_response = match res.internal_response {
Some(ref internal_res) => Some(internal_res.clone()),
None => Some(res.clone())
};
// Substep 3
- if (resp.response_type == ResponseType::Opaque &&
+ if (res.response_type == ResponseType::Opaque &&
request.mode != RequestMode::NoCORS) ||
- (resp.response_type == ResponseType::OpaqueRedirect &&
+ (res.response_type == ResponseType::OpaqueRedirect &&
request.redirect_mode != RedirectMode::Manual) ||
- resp.response_type == ResponseType::Error {
+ res.response_type == ResponseType::Error {
return Response::network_error();
}
}
// Substep 4
if let Some(ref res) = actual_response {
- let mut resp = res.borrow_mut();
- if resp.url_list.is_empty() {
- resp.url_list = request.url_list.borrow().clone();
+ if res.url_list.borrow().is_empty() {
+ *res.url_list.borrow_mut() = request.url_list.borrow().clone();
}
}
@@ -370,7 +368,7 @@ fn http_fetch(request: Rc<Request>,
if preflight_result.response_type == ResponseType::Error {
return Response::network_error();
}
- response = Some(Rc::new(RefCell::new(preflight_result)));
+ response = Some(Rc::new(preflight_result));
}
}
@@ -394,13 +392,13 @@ fn http_fetch(request: Rc<Request>,
return Response::network_error();
}
- response = Some(Rc::new(RefCell::new(fetch_result)));
+ response = Some(Rc::new(fetch_result));
actual_response = response.clone();
}
// Step 5
- let actual_response = Rc::try_unwrap(actual_response.unwrap()).ok().unwrap().into_inner();
- let response = Rc::try_unwrap(response.unwrap()).ok().unwrap();
+ let actual_response = Rc::try_unwrap(actual_response.unwrap()).ok().unwrap();
+ let mut response = Rc::try_unwrap(response.unwrap()).ok().unwrap();
match actual_response.status.unwrap() {
@@ -445,7 +443,7 @@ fn http_fetch(request: Rc<Request>,
// Step 9
RedirectMode::Manual => {
- *response.borrow_mut() = actual_response.to_filtered(ResponseType::Opaque);
+ response = actual_response.to_filtered(ResponseType::Opaque);
}
// Step 10
@@ -495,7 +493,7 @@ fn http_fetch(request: Rc<Request>,
// Step 1
// FIXME: Figure out what to do with request window objects
if cors_flag {
- return response.into_inner();
+ return response;
}
// Step 2
@@ -531,8 +529,6 @@ fn http_fetch(request: Rc<Request>,
_ => { }
}
- let response = response.into_inner();
-
// Step 6
if authentication_fetch_flag {
// TODO: Create authentication entry for this request
@@ -793,7 +789,7 @@ fn http_network_fetch(request: Rc<Request>,
};
// Step 6
- response.url_list = request.url_list.borrow().clone();
+ *response.url_list.borrow_mut() = request.url_list.borrow().clone();
// Step 7