From f42a63baea0f2897db937faddbbebb6bddf63264 Mon Sep 17 00:00:00 2001 From: Anthony Ramine Date: Sat, 1 Apr 2017 00:28:10 +0200 Subject: [PATCH] Make fetch take a &Request --- components/net/fetch/methods.rs | 19 +++++----- components/net/http_loader.rs | 20 +++++----- components/net/resource_thread.rs | 3 +- tests/unit/net/data_loader.rs | 2 +- tests/unit/net/fetch.rs | 63 +++++++++++++++---------------- tests/unit/net/http_loader.rs | 62 +++++++++++++++--------------- tests/unit/net/lib.rs | 9 ++--- 7 files changed, 87 insertions(+), 91 deletions(-) diff --git a/components/net/fetch/methods.rs b/components/net/fetch/methods.rs index 4f5e91471b0..caee635afe7 100644 --- a/components/net/fetch/methods.rs +++ b/components/net/fetch/methods.rs @@ -27,7 +27,6 @@ use std::fmt; use std::fs::File; use std::io::Read; use std::mem; -use std::rc::Rc; use std::str; use std::sync::mpsc::{Sender, Receiver}; use subresource_integrity::is_response_integrity_valid; @@ -49,13 +48,13 @@ pub struct FetchContext { pub type DoneChannel = Option<(Sender, Receiver)>; /// [Fetch](https://fetch.spec.whatwg.org#concept-fetch) -pub fn fetch(request: Rc, +pub fn fetch(request: &Request, target: Target, context: &FetchContext) { fetch_with_cors_cache(request, &mut CorsCache::new(), target, context); } -pub fn fetch_with_cors_cache(request: Rc, +pub fn fetch_with_cors_cache(request: &Request, cache: &mut CorsCache, target: Target, context: &FetchContext) { @@ -121,7 +120,7 @@ pub fn fetch_with_cors_cache(request: Rc, } /// [Main fetch](https://fetch.spec.whatwg.org/#concept-main-fetch) -pub fn main_fetch(request: Rc, +pub fn main_fetch(request: &Request, cache: &mut CorsCache, cors_flag: bool, recursive_flag: bool, @@ -216,14 +215,14 @@ pub fn main_fetch(request: Rc, current_url.scheme() == "file" || current_url.scheme() == "about" || request.mode == RequestMode::Navigate { - basic_fetch(request.clone(), cache, target, done_chan, context) + basic_fetch(request, cache, target, done_chan, context) } else if request.mode == RequestMode::SameOrigin { Response::network_error(NetworkError::Internal("Cross-origin response".into())) } else if request.mode == RequestMode::NoCors { request.response_tainting.set(ResponseTainting::Opaque); - basic_fetch(request.clone(), cache, target, done_chan, context) + basic_fetch(request, cache, target, done_chan, context) } else if !matches!(current_url.scheme(), "http" | "https") { Response::network_error(NetworkError::Internal("Non-http scheme".into())) @@ -233,7 +232,7 @@ pub fn main_fetch(request: Rc, (!is_simple_method(&request.method.borrow()) || request.headers.borrow().iter().any(|h| !is_simple_header(&h)))) { request.response_tainting.set(ResponseTainting::CorsTainting); - let response = http_fetch(request.clone(), cache, true, true, false, + let response = http_fetch(request, cache, true, true, false, target, done_chan, context); if response.is_network_error() { // TODO clear cache entries using request @@ -242,7 +241,7 @@ pub fn main_fetch(request: Rc, } else { request.response_tainting.set(ResponseTainting::CorsTainting); - http_fetch(request.clone(), cache, true, false, false, target, done_chan, context) + http_fetch(request, cache, true, false, false, target, done_chan, context) } } }; @@ -397,7 +396,7 @@ fn wait_for_response(response: &Response, target: Target, done_chan: &mut DoneCh } /// [Basic fetch](https://fetch.spec.whatwg.org#basic-fetch) -fn basic_fetch(request: Rc, +fn basic_fetch(request: &Request, cache: &mut CorsCache, target: Target, done_chan: &mut DoneChannel, @@ -414,7 +413,7 @@ fn basic_fetch(request: Rc, }, "http" | "https" => { - http_fetch(request.clone(), cache, false, false, false, target, done_chan, context) + http_fetch(request, cache, false, false, false, target, done_chan, context) }, "data" => { diff --git a/components/net/http_loader.rs b/components/net/http_loader.rs index f00687e9a44..c4af03e4b7a 100644 --- a/components/net/http_loader.rs +++ b/components/net/http_loader.rs @@ -44,7 +44,6 @@ use std::io::{self, Read, Write}; use std::iter::FromIterator; use std::mem; use std::ops::Deref; -use std::rc::Rc; use std::sync::{Arc, RwLock}; use std::sync::mpsc::{channel, Sender}; use std::thread; @@ -477,7 +476,7 @@ fn obtain_response(request_factory: &NetworkHttpRequestFactory, } /// [HTTP fetch](https://fetch.spec.whatwg.org#http-fetch) -pub fn http_fetch(request: Rc, +pub fn http_fetch(request: &Request, cache: &mut CorsCache, cors_flag: bool, cors_preflight_flag: bool, @@ -554,7 +553,7 @@ pub fn http_fetch(request: Rc, request.skip_service_worker.set(true); // Substep 3 - let fetch_result = http_network_or_cache_fetch(request.clone(), authentication_fetch_flag, + let fetch_result = http_network_or_cache_fetch(request, authentication_fetch_flag, cors_flag, done_chan, context); // Substep 4 @@ -649,7 +648,7 @@ pub fn http_fetch(request: Rc, } /// [HTTP redirect fetch](https://fetch.spec.whatwg.org#http-redirect-fetch) -fn http_redirect_fetch(request: Rc, +fn http_redirect_fetch(request: &Request, cache: &mut CorsCache, response: Response, cors_flag: bool, @@ -738,7 +737,7 @@ fn try_immutable_origin_to_hyper_origin(url_origin: &ImmutableOrigin) -> Option< } /// [HTTP network or cache fetch](https://fetch.spec.whatwg.org#http-network-or-cache-fetch) -fn http_network_or_cache_fetch(request: Rc, +fn http_network_or_cache_fetch(request: &Request, authentication_fetch_flag: bool, cors_flag: bool, done_chan: &mut DoneChannel, @@ -748,13 +747,15 @@ fn http_network_or_cache_fetch(request: Rc, let request_has_no_window = true; // Step 2 + let http_request; let http_request = if request_has_no_window && request.redirect_mode.get() == RedirectMode::Error { request } else { // Step 3 // TODO Implement body source - Rc::new((*request).clone()) + http_request = request.clone(); + &http_request }; // Step 4 @@ -943,7 +944,7 @@ fn http_network_or_cache_fetch(request: Rc, NetworkError::Internal("Couldn't find response in cache".into())) } // Substep 2 - let forward_response = http_network_fetch(http_request.clone(), credentials_flag, + let forward_response = http_network_fetch(http_request, credentials_flag, done_chan, context); match forward_response.raw_status { // Substep 3 @@ -1033,7 +1034,7 @@ fn http_network_or_cache_fetch(request: Rc, } /// [HTTP network fetch](https://fetch.spec.whatwg.org/#http-network-fetch) -fn http_network_fetch(request: Rc, +fn http_network_fetch(request: &Request, credentials_flag: bool, done_chan: &mut DoneChannel, context: &FetchContext) @@ -1234,8 +1235,7 @@ fn cors_preflight_fetch(request: &Request, AccessControlRequestHeaders(value)); // Step 6 - let preflight = Rc::new(preflight); - let response = http_network_or_cache_fetch(preflight.clone(), false, false, &mut None, context); + let response = http_network_or_cache_fetch(&preflight, false, false, &mut None, context); // Step 7 if cors_check(&request, &response).is_ok() && diff --git a/components/net/resource_thread.rs b/components/net/resource_thread.rs index acf1d1e80da..4a56c770777 100644 --- a/components/net/resource_thread.rs +++ b/components/net/resource_thread.rs @@ -33,7 +33,6 @@ use std::fs::File; use std::io::prelude::*; use std::ops::Deref; use std::path::{Path, PathBuf}; -use std::rc::Rc; use std::sync::{Arc, RwLock}; use std::sync::mpsc::Sender; use std::thread; @@ -350,7 +349,7 @@ impl CoreResourceManager { devtools_chan: dc, filemanager: filemanager, }; - fetch(Rc::new(request), &mut sender, &context); + fetch(&request, &mut sender, &context); }).expect("Thread spawning failed"); } diff --git a/tests/unit/net/data_loader.rs b/tests/unit/net/data_loader.rs index 0cf0726c296..dedab4a9cb4 100644 --- a/tests/unit/net/data_loader.rs +++ b/tests/unit/net/data_loader.rs @@ -21,7 +21,7 @@ fn assert_parse(url: &'static str, let origin = Origin::Origin(url.origin()); let request = Request::new(url, Some(origin), false, None); - let response = fetch(request, None); + let response = fetch(&request, None); match data { Some(data) => { diff --git a/tests/unit/net/fetch.rs b/tests/unit/net/fetch.rs index f7342a576eb..7f4d0a9eca5 100644 --- a/tests/unit/net/fetch.rs +++ b/tests/unit/net/fetch.rs @@ -37,7 +37,6 @@ use servo_config::resource_files::resources_dir_path; use servo_url::{ImmutableOrigin, ServoUrl}; use std::fs::File; use std::io::Read; -use std::rc::Rc; use std::sync::{Arc, Mutex}; use std::sync::atomic::{AtomicUsize, Ordering}; use std::sync::mpsc::{Sender, channel}; @@ -57,7 +56,7 @@ fn test_fetch_response_is_not_network_error() { let origin = Origin::Origin(url.origin()); let request = Request::new(url, Some(origin), false, None); *request.referrer.borrow_mut() = Referrer::NoReferrer; - let fetch_response = fetch(request, None); + let fetch_response = fetch(&request, None); let _ = server.close(); if fetch_response.is_network_error() { @@ -71,7 +70,7 @@ fn test_fetch_on_bad_port_is_network_error() { let origin = Origin::Origin(url.origin()); let request = Request::new(url, Some(origin), false, None); *request.referrer.borrow_mut() = Referrer::NoReferrer; - let fetch_response = fetch(request, None); + let fetch_response = fetch(&request, None); assert!(fetch_response.is_network_error()); let fetch_error = fetch_response.get_network_error().unwrap(); assert!(fetch_error == &NetworkError::Internal("Request attempted on bad port".into())) @@ -88,7 +87,7 @@ fn test_fetch_response_body_matches_const_message() { let origin = Origin::Origin(url.origin()); let request = Request::new(url, Some(origin), false, None); *request.referrer.borrow_mut() = Referrer::NoReferrer; - let fetch_response = fetch(request, None); + let fetch_response = fetch(&request, None); let _ = server.close(); assert!(!fetch_response.is_network_error()); @@ -108,7 +107,7 @@ fn test_fetch_aboutblank() { let origin = Origin::Origin(url.origin()); let request = Request::new(url, Some(origin), false, None); *request.referrer.borrow_mut() = Referrer::NoReferrer; - let fetch_response = fetch(request, None); + let fetch_response = fetch(&request, None); assert!(!fetch_response.is_network_error()); assert!(*fetch_response.body.lock().unwrap() == ResponseBody::Done(vec![])); } @@ -137,7 +136,7 @@ fn test_fetch_blob() { let request = Request::new(url, Some(Origin::Origin(origin.origin())), false, None); - let fetch_response = fetch_with_context(request, &context); + let fetch_response = fetch_with_context(&request, &context); assert!(!fetch_response.is_network_error()); @@ -162,7 +161,7 @@ fn test_fetch_file() { let origin = Origin::Origin(url.origin()); let request = Request::new(url, Some(origin), false, None); - let fetch_response = fetch(request, None); + let fetch_response = fetch(&request, None); assert!(!fetch_response.is_network_error()); assert_eq!(fetch_response.headers.len(), 1); let content_type: &ContentType = fetch_response.headers.get().unwrap(); @@ -187,7 +186,7 @@ fn test_fetch_ftp() { let origin = Origin::Origin(url.origin()); let request = Request::new(url, Some(origin), false, None); *request.referrer.borrow_mut() = Referrer::NoReferrer; - let fetch_response = fetch(request, None); + let fetch_response = fetch(&request, None); assert!(fetch_response.is_network_error()); } @@ -197,7 +196,7 @@ fn test_fetch_bogus_scheme() { let origin = Origin::Origin(url.origin()); let request = Request::new(url, Some(origin), false, None); *request.referrer.borrow_mut() = Referrer::NoReferrer; - let fetch_response = fetch(request, None); + let fetch_response = fetch(&request, None); assert!(fetch_response.is_network_error()); } @@ -228,7 +227,7 @@ fn test_cors_preflight_fetch() { *request.referrer_policy.get_mut() = Some(ReferrerPolicy::Origin); request.use_cors_preflight = true; request.mode = RequestMode::CorsMode; - let fetch_response = fetch(request, None); + let fetch_response = fetch(&request, None); let _ = server.close(); assert!(!fetch_response.is_network_error()); @@ -264,11 +263,11 @@ fn test_cors_preflight_cache_fetch() { *request.referrer.borrow_mut() = Referrer::NoReferrer; request.use_cors_preflight = true; request.mode = RequestMode::CorsMode; - let wrapped_request0 = Rc::new(request.clone()); - let wrapped_request1 = Rc::new(request); + let wrapped_request0 = request.clone(); + let wrapped_request1 = request; - let fetch_response0 = fetch_with_cors_cache(wrapped_request0.clone(), &mut cache); - let fetch_response1 = fetch_with_cors_cache(wrapped_request1.clone(), &mut cache); + let fetch_response0 = fetch_with_cors_cache(&wrapped_request0, &mut cache); + let fetch_response1 = fetch_with_cors_cache(&wrapped_request1, &mut cache); let _ = server.close(); assert!(!fetch_response0.is_network_error() && !fetch_response1.is_network_error()); @@ -277,8 +276,8 @@ fn test_cors_preflight_cache_fetch() { assert_eq!(1, counter.load(Ordering::SeqCst)); // The entry exists in the CORS-preflight cache - assert_eq!(true, cache.match_method(&*wrapped_request0, Method::Get)); - assert_eq!(true, cache.match_method(&*wrapped_request1, Method::Get)); + assert_eq!(true, cache.match_method(&wrapped_request0, Method::Get)); + assert_eq!(true, cache.match_method(&wrapped_request1, Method::Get)); match *fetch_response0.body.lock().unwrap() { ResponseBody::Done(ref body) => assert_eq!(&**body, ACK), @@ -314,7 +313,7 @@ fn test_cors_preflight_fetch_network_error() { *request.referrer.borrow_mut() = Referrer::NoReferrer; request.use_cors_preflight = true; request.mode = RequestMode::CorsMode; - let fetch_response = fetch(request, None); + let fetch_response = fetch(&request, None); let _ = server.close(); assert!(fetch_response.is_network_error()); @@ -335,7 +334,7 @@ fn test_fetch_response_is_basic_filtered() { let origin = Origin::Origin(url.origin()); let request = Request::new(url, Some(origin), false, None); *request.referrer.borrow_mut() = Referrer::NoReferrer; - let fetch_response = fetch(request, None); + let fetch_response = fetch(&request, None); let _ = server.close(); assert!(!fetch_response.is_network_error()); @@ -381,7 +380,7 @@ fn test_fetch_response_is_cors_filtered() { let mut request = Request::new(url, Some(origin), false, None); *request.referrer.borrow_mut() = Referrer::NoReferrer; request.mode = RequestMode::CorsMode; - let fetch_response = fetch(request, None); + let fetch_response = fetch(&request, None); let _ = server.close(); assert!(!fetch_response.is_network_error()); @@ -412,7 +411,7 @@ fn test_fetch_response_is_opaque_filtered() { let origin = Origin::Origin(ImmutableOrigin::new_opaque()); let request = Request::new(url, Some(origin), false, None); *request.referrer.borrow_mut() = Referrer::NoReferrer; - let fetch_response = fetch(request, None); + let fetch_response = fetch(&request, None); let _ = server.close(); assert!(!fetch_response.is_network_error()); @@ -460,7 +459,7 @@ fn test_fetch_response_is_opaque_redirect_filtered() { let request = Request::new(url, Some(origin), false, None); *request.referrer.borrow_mut() = Referrer::NoReferrer; request.redirect_mode.set(RedirectMode::Manual); - let fetch_response = fetch(request, None); + let fetch_response = fetch(&request, None); let _ = server.close(); assert!(!fetch_response.is_network_error()); @@ -497,7 +496,7 @@ fn test_fetch_with_local_urls_only() { // Set the flag. request.local_urls_only = true; - fetch(request, None) + fetch(&request, None) }; let local_url = ServoUrl::parse("about:blank").unwrap(); @@ -549,7 +548,7 @@ fn test_fetch_with_hsts() { *request.referrer.borrow_mut() = Referrer::NoReferrer; // Set the flag. request.local_urls_only = false; - let response = fetch_with_context(request, &context); + let response = fetch_with_context(&request, &context); let _ = server.close(); assert_eq!(response.internal_response.unwrap().url().unwrap().scheme(), "https"); @@ -573,7 +572,7 @@ fn test_fetch_with_sri_network_error() { // Set the flag. request.local_urls_only = false; - let response = fetch(request, None); + let response = fetch(&request, None); let _ = server.close(); assert!(response.is_network_error()); @@ -597,7 +596,7 @@ fn test_fetch_with_sri_sucess() { // Set the flag. request.local_urls_only = false; - let response = fetch(request, None); + let response = fetch(&request, None); let _ = server.close(); assert_eq!(response_is_done(&response), true); @@ -629,7 +628,7 @@ fn test_fetch_blocked_nosniff() { let origin = Origin::Origin(url.origin()); let mut request = Request::new(url, Some(origin), false, None); request.type_ = request_type; - let fetch_response = fetch(request, None); + let fetch_response = fetch(&request, None); let _ = server.close(); assert_eq!(fetch_response.is_network_error(), should_error); @@ -671,7 +670,7 @@ fn setup_server_and_fetch(message: &'static [u8], redirect_cap: u32) -> Response let origin = Origin::Origin(url.origin()); let request = Request::new(url, Some(origin), false, None); *request.referrer.borrow_mut() = Referrer::NoReferrer; - let fetch_response = fetch(request, None); + let fetch_response = fetch(&request, None); let _ = server.close(); fetch_response } @@ -756,7 +755,7 @@ fn test_fetch_redirect_updates_method_runner(tx: Sender, status_code: Stat *request.referrer.borrow_mut() = Referrer::NoReferrer; *request.method.borrow_mut() = method; - let _ = fetch(request, None); + let _ = fetch(&request, None); let _ = server.close(); } @@ -830,7 +829,7 @@ fn test_fetch_async_returns_complete_response() { let request = Request::new(url, Some(origin), false, None); *request.referrer.borrow_mut() = Referrer::NoReferrer; - let fetch_response = fetch(request, None); + let fetch_response = fetch(&request, None); let _ = server.close(); assert_eq!(response_is_done(&fetch_response), true); @@ -849,7 +848,7 @@ fn test_opaque_filtered_fetch_async_returns_complete_response() { let request = Request::new(url, Some(origin), false, None); *request.referrer.borrow_mut() = Referrer::NoReferrer; - let fetch_response = fetch(request, None); + let fetch_response = fetch(&request, None); let _ = server.close(); @@ -885,7 +884,7 @@ fn test_opaque_redirect_filtered_fetch_async_returns_complete_response() { *request.referrer.borrow_mut() = Referrer::NoReferrer; request.redirect_mode.set(RedirectMode::Manual); - let fetch_response = fetch(request, None); + let fetch_response = fetch(&request, None); let _ = server.close(); @@ -908,7 +907,7 @@ fn test_fetch_with_devtools() { let (devtools_chan, devtools_port) = channel::(); - let _ = fetch(request, Some(devtools_chan)); + let _ = fetch(&request, Some(devtools_chan)); let _ = server.close(); // notification received from devtools diff --git a/tests/unit/net/http_loader.rs b/tests/unit/net/http_loader.rs index 4a41b3c112f..b1c71620993 100644 --- a/tests/unit/net/http_loader.rs +++ b/tests/unit/net/http_loader.rs @@ -142,7 +142,7 @@ fn test_check_default_headers_loaded_in_every_request() { pipeline_id: Some(TEST_PIPELINE_ID), .. RequestInit::default() }); - let response = fetch(request, None); + let response = fetch(&request, None); assert!(response.status.unwrap().is_success()); // Testing for method.POST @@ -161,7 +161,7 @@ fn test_check_default_headers_loaded_in_every_request() { pipeline_id: Some(TEST_PIPELINE_ID), .. RequestInit::default() }); - let response = fetch(request, None); + let response = fetch(&request, None); assert!(response.status.unwrap().is_success()); let _ = server.close(); @@ -183,7 +183,7 @@ fn test_load_when_request_is_not_get_or_head_and_there_is_no_body_content_length pipeline_id: Some(TEST_PIPELINE_ID), .. RequestInit::default() }); - let response = fetch(request, None); + let response = fetch(&request, None); assert!(response.status.unwrap().is_success()); let _ = server.close(); @@ -210,7 +210,7 @@ fn test_request_and_response_data_with_network_messages() { .. RequestInit::default() }); let (devtools_chan, devtools_port) = mpsc::channel(); - let response = fetch(request, Some(devtools_chan)); + let response = fetch(&request, Some(devtools_chan)); assert!(response.status.unwrap().is_success()); let _ = server.close(); @@ -297,7 +297,7 @@ fn test_request_and_response_message_from_devtool_without_pipeline_id() { .. RequestInit::default() }); let (devtools_chan, devtools_port) = mpsc::channel(); - let response = fetch(request, Some(devtools_chan)); + let response = fetch(&request, Some(devtools_chan)); assert!(response.status.unwrap().is_success()); let _ = server.close(); @@ -332,7 +332,7 @@ fn test_redirected_request_to_devtools() { .. RequestInit::default() }); let (devtools_chan, devtools_port) = mpsc::channel(); - fetch(request, Some(devtools_chan)); + fetch(&request, Some(devtools_chan)); let _ = pre_server.close(); let _ = post_server.close(); @@ -379,7 +379,7 @@ fn test_load_when_redirecting_from_a_post_should_rewrite_next_request_as_get() { pipeline_id: Some(TEST_PIPELINE_ID), .. RequestInit::default() }); - let response = fetch(request, None); + let response = fetch(&request, None); let _ = pre_server.close(); let _ = post_server.close(); @@ -407,7 +407,7 @@ fn test_load_should_decode_the_response_as_deflate_when_response_headers_have_co pipeline_id: Some(TEST_PIPELINE_ID), .. RequestInit::default() }); - let response = fetch(request, None); + let response = fetch(&request, None); let _ = server.close(); @@ -436,7 +436,7 @@ fn test_load_should_decode_the_response_as_gzip_when_response_headers_have_conte pipeline_id: Some(TEST_PIPELINE_ID), .. RequestInit::default() }); - let response = fetch(request, None); + let response = fetch(&request, None); let _ = server.close(); @@ -474,7 +474,7 @@ fn test_load_doesnt_send_request_body_on_any_redirect() { pipeline_id: Some(TEST_PIPELINE_ID), .. RequestInit::default() }); - let response = fetch(request, None); + let response = fetch(&request, None); let _ = pre_server.close(); let _ = post_server.close(); @@ -500,7 +500,7 @@ fn test_load_doesnt_add_host_to_sts_list_when_url_is_http_even_if_sts_headers_ar .. RequestInit::default() }); let context = new_fetch_context(None); - let response = fetch_with_context(request, &context); + let response = fetch_with_context(&request, &context); let _ = server.close(); @@ -530,7 +530,7 @@ fn test_load_sets_cookies_in_the_resource_manager_when_it_get_set_cookie_header_ credentials_mode: CredentialsMode::Include, .. RequestInit::default() }); - let response = fetch_with_context(request, &context); + let response = fetch_with_context(&request, &context); let _ = server.close(); @@ -570,7 +570,7 @@ fn test_load_sets_requests_cookies_header_for_url_by_getting_cookies_from_the_re credentials_mode: CredentialsMode::Include, .. RequestInit::default() }); - let response = fetch_with_context(request, &context); + let response = fetch_with_context(&request, &context); let _ = server.close(); @@ -608,7 +608,7 @@ fn test_load_sends_cookie_if_nonhttp() { credentials_mode: CredentialsMode::Include, .. RequestInit::default() }); - let response = fetch_with_context(request, &context); + let response = fetch_with_context(&request, &context); let _ = server.close(); @@ -638,7 +638,7 @@ fn test_cookie_set_with_httponly_should_not_be_available_using_getcookiesforurl( credentials_mode: CredentialsMode::Include, .. RequestInit::default() }); - let response = fetch_with_context(request, &context); + let response = fetch_with_context(&request, &context); let _ = server.close(); @@ -672,7 +672,7 @@ fn test_when_cookie_received_marked_secure_is_ignored_for_http() { credentials_mode: CredentialsMode::Include, .. RequestInit::default() }); - let response = fetch_with_context(request, &context); + let response = fetch_with_context(&request, &context); let _ = server.close(); @@ -700,7 +700,7 @@ fn test_load_sets_content_length_to_length_of_request_body() { pipeline_id: Some(TEST_PIPELINE_ID), .. RequestInit::default() }); - let response = fetch(request, None); + let response = fetch(&request, None); let _ = server.close(); @@ -728,7 +728,7 @@ fn test_load_uses_explicit_accept_from_headers_in_load_data() { pipeline_id: Some(TEST_PIPELINE_ID), .. RequestInit::default() }); - let response = fetch(request, None); + let response = fetch(&request, None); let _ = server.close(); @@ -756,7 +756,7 @@ fn test_load_sets_default_accept_to_html_xhtml_xml_and_then_anything_else() { pipeline_id: Some(TEST_PIPELINE_ID), .. RequestInit::default() }); - let response = fetch(request, None); + let response = fetch(&request, None); let _ = server.close(); @@ -784,7 +784,7 @@ fn test_load_uses_explicit_accept_encoding_from_load_data_headers() { pipeline_id: Some(TEST_PIPELINE_ID), .. RequestInit::default() }); - let response = fetch(request, None); + let response = fetch(&request, None); let _ = server.close(); @@ -811,7 +811,7 @@ fn test_load_sets_default_accept_encoding_to_gzip_and_deflate() { pipeline_id: Some(TEST_PIPELINE_ID), .. RequestInit::default() }); - let response = fetch(request, None); + let response = fetch(&request, None); let _ = server.close(); @@ -847,7 +847,7 @@ fn test_load_errors_when_there_a_redirect_loop() { pipeline_id: Some(TEST_PIPELINE_ID), .. RequestInit::default() }); - let response = fetch(request, None); + let response = fetch(&request, None); let _ = server_a.close(); let _ = server_b.close(); @@ -890,7 +890,7 @@ fn test_load_succeeds_with_a_redirect_loop() { pipeline_id: Some(TEST_PIPELINE_ID), .. RequestInit::default() }); - let response = fetch(request, None); + let response = fetch(&request, None); let _ = server_a.close(); let _ = server_b.close(); @@ -927,7 +927,7 @@ fn test_load_follows_a_redirect() { pipeline_id: Some(TEST_PIPELINE_ID), .. RequestInit::default() }); - let response = fetch(request, None); + let response = fetch(&request, None); let _ = pre_server.close(); let _ = post_server.close(); @@ -1005,7 +1005,7 @@ fn test_redirect_from_x_to_y_provides_y_cookies_from_y() { credentials_mode: CredentialsMode::Include, .. RequestInit::default() }); - let response = fetch_with_context(request, &context); + let response = fetch_with_context(&request, &context); let _ = server.close(); @@ -1049,7 +1049,7 @@ fn test_redirect_from_x_to_x_provides_x_with_cookie_from_first_response() { credentials_mode: CredentialsMode::Include, .. RequestInit::default() }); - let response = fetch(request, None); + let response = fetch(&request, None); let _ = server.close(); @@ -1090,7 +1090,7 @@ fn test_if_auth_creds_not_in_url_but_in_cache_it_sets_it() { context.state.auth_cache.write().unwrap().entries.insert(url.origin().clone().ascii_serialization(), auth_entry); - let response = fetch_with_context(request, &context); + let response = fetch_with_context(&request, &context); let _ = server.close(); @@ -1116,7 +1116,7 @@ fn test_auth_ui_needs_www_auth() { .. RequestInit::default() }); - let response = fetch(request, None); + let response = fetch(&request, None); let _ = server.close(); @@ -1146,7 +1146,7 @@ fn test_origin_set() { origin: url.clone(), .. RequestInit::default() }); - let response = fetch(request, None); + let response = fetch(&request, None); assert!(response.status.unwrap().is_success()); let origin_url = ServoUrl::parse("http://example.com").unwrap(); @@ -1162,7 +1162,7 @@ fn test_origin_set() { }); *origin_header_clone.lock().unwrap() = Some(origin.clone()); - let response = fetch(request, None); + let response = fetch(&request, None); assert!(response.status.unwrap().is_success()); // Test Origin header is not set on method Head @@ -1175,7 +1175,7 @@ fn test_origin_set() { }); *origin_header_clone.lock().unwrap() = None; - let response = fetch(request, None); + let response = fetch(&request, None); assert!(response.status.unwrap().is_success()); let _ = server.close(); diff --git a/tests/unit/net/lib.rs b/tests/unit/net/lib.rs index a6047517dda..29dd3796528 100644 --- a/tests/unit/net/lib.rs +++ b/tests/unit/net/lib.rs @@ -42,7 +42,6 @@ use net_traits::FetchTaskTarget; use net_traits::request::Request; use net_traits::response::Response; use servo_url::ServoUrl; -use std::rc::Rc; use std::sync::mpsc::{Sender, channel}; const DEFAULT_USER_AGENT: &'static str = "Such Browser. Very Layout. Wow."; @@ -70,22 +69,22 @@ impl FetchTaskTarget for FetchResponseCollector { } } -fn fetch(request: Request, dc: Option>) -> Response { +fn fetch(request: &Request, dc: Option>) -> Response { fetch_with_context(request, &new_fetch_context(dc)) } -fn fetch_with_context(request: Request, context: &FetchContext) -> Response { +fn fetch_with_context(request: &Request, context: &FetchContext) -> Response { let (sender, receiver) = channel(); let mut target = FetchResponseCollector { sender: sender, }; - methods::fetch(Rc::new(request), &mut target, context); + methods::fetch(request, &mut target, context); receiver.recv().unwrap() } -fn fetch_with_cors_cache(request: Rc, cache: &mut CorsCache) -> Response { +fn fetch_with_cors_cache(request: &Request, cache: &mut CorsCache) -> Response { let (sender, receiver) = channel(); let mut target = FetchResponseCollector { sender: sender,