Skip to content

Commit f14d199

Browse files
author
bors-servo
authored
Auto merge of #22521 - lucasfantacuci:use_build_pattern_with_requestinit, r=jdm,KiChjang
Refactoring RequestInit to use a Builder Pattern <!-- Please describe your changes on the following line: --> If RequestInit::new accepts all of the mandatory arguments and then the builder pattern is used for customizable options, the resulting code might be easier to match against specification text like --- - [x] `./mach build -d` does not report any errors - [x] `./mach test-tidy` does not report any errors - [x] These changes fix #22427 - [x] These changes do not require tests because it is a code refactoring. <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/22521) <!-- Reviewable:end -->
2 parents dd2deea + 6b2be9b commit f14d199

27 files changed

+578
-546
lines changed

components/constellation/constellation.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ use msg::constellation_msg::{
130130
};
131131
use msg::constellation_msg::{PipelineNamespace, PipelineNamespaceId, TraversalDirection};
132132
use net_traits::pub_domains::reg_host;
133-
use net_traits::request::RequestInit;
133+
use net_traits::request::RequestBuilder;
134134
use net_traits::storage_thread::{StorageThreadMsg, StorageType};
135135
use net_traits::{self, FetchResponseMsg, IpcSend, ResourceThreads};
136136
use profile_traits::mem;
@@ -1934,11 +1934,11 @@ where
19341934
fn handle_navigate_request(
19351935
&self,
19361936
id: PipelineId,
1937-
req_init: RequestInit,
1937+
request_builder: RequestBuilder,
19381938
cancel_chan: IpcReceiver<()>,
19391939
) {
19401940
let listener = NetworkListener::new(
1941-
req_init,
1941+
request_builder,
19421942
id,
19431943
self.public_resource_threads.clone(),
19441944
self.network_listener_sender.clone(),

components/constellation/network_listener.rs

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,14 @@ use ipc_channel::ipc;
1212
use ipc_channel::router::ROUTER;
1313
use msg::constellation_msg::PipelineId;
1414
use net::http_loader::{set_default_accept, set_default_accept_language};
15-
use net_traits::request::{Destination, RequestInit};
15+
use net_traits::request::{Destination, RequestBuilder};
1616
use net_traits::response::ResponseInit;
1717
use net_traits::{CoreResourceMsg, FetchChannels, FetchMetadata, FetchResponseMsg};
1818
use net_traits::{IpcSend, NetworkError, ResourceThreads};
1919

2020
pub struct NetworkListener {
2121
res_init: Option<ResponseInit>,
22-
req_init: RequestInit,
22+
request_builder: RequestBuilder,
2323
pipeline_id: PipelineId,
2424
resource_threads: ResourceThreads,
2525
sender: Sender<(PipelineId, FetchResponseMsg)>,
@@ -28,14 +28,14 @@ pub struct NetworkListener {
2828

2929
impl NetworkListener {
3030
pub fn new(
31-
req_init: RequestInit,
31+
request_builder: RequestBuilder,
3232
pipeline_id: PipelineId,
3333
resource_threads: ResourceThreads,
3434
sender: Sender<(PipelineId, FetchResponseMsg)>,
3535
) -> NetworkListener {
3636
NetworkListener {
3737
res_init: None,
38-
req_init,
38+
request_builder,
3939
pipeline_id,
4040
resource_threads,
4141
sender,
@@ -48,7 +48,7 @@ impl NetworkListener {
4848

4949
let mut listener = NetworkListener {
5050
res_init: self.res_init.clone(),
51-
req_init: self.req_init.clone(),
51+
request_builder: self.request_builder.clone(),
5252
resource_threads: self.resource_threads.clone(),
5353
sender: self.sender.clone(),
5454
pipeline_id: self.pipeline_id.clone(),
@@ -57,17 +57,17 @@ impl NetworkListener {
5757

5858
let msg = match self.res_init {
5959
Some(ref res_init_) => CoreResourceMsg::FetchRedirect(
60-
self.req_init.clone(),
60+
self.request_builder.clone(),
6161
res_init_.clone(),
6262
ipc_sender,
6363
None,
6464
),
6565
None => {
66-
set_default_accept(Destination::Document, &mut listener.req_init.headers);
67-
set_default_accept_language(&mut listener.req_init.headers);
66+
set_default_accept(Destination::Document, &mut listener.request_builder.headers);
67+
set_default_accept_language(&mut listener.request_builder.headers);
6868

6969
CoreResourceMsg::Fetch(
70-
listener.req_init.clone(),
70+
listener.request_builder.clone(),
7171
FetchChannels::ResponseMsg(ipc_sender, cancel_chan),
7272
)
7373
},
@@ -100,13 +100,17 @@ impl NetworkListener {
100100

101101
match metadata.headers {
102102
Some(ref headers) if headers.contains_key(LOCATION) => {
103-
if self.req_init.url_list.is_empty() {
104-
self.req_init.url_list.push(self.req_init.url.clone());
103+
if self.request_builder.url_list.is_empty() {
104+
self.request_builder
105+
.url_list
106+
.push(self.request_builder.url.clone());
105107
}
106-
self.req_init.url_list.push(metadata.final_url.clone());
108+
self.request_builder
109+
.url_list
110+
.push(metadata.final_url.clone());
107111

108-
self.req_init.referrer_url = metadata.referrer.clone();
109-
self.req_init.referrer_policy = metadata.referrer_policy;
112+
self.request_builder.referrer_url = metadata.referrer.clone();
113+
self.request_builder.referrer_policy = metadata.referrer_policy;
110114

111115
self.res_init = Some(ResponseInit {
112116
url: metadata.final_url.clone(),

components/gfx/font_cache_thread.rs

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ use crate::platform::font_list::SANS_SERIF_FONT_FAMILY;
1313
use crate::platform::font_template::FontTemplateData;
1414
use app_units::Au;
1515
use ipc_channel::ipc::{self, IpcReceiver, IpcSender};
16-
use net_traits::request::{Destination, RequestInit};
16+
use net_traits::request::{Destination, RequestBuilder};
1717
use net_traits::{fetch_async, CoreResourceThread, FetchResponseMsg};
1818
use servo_atoms::Atom;
1919
use servo_url::ServoUrl;
@@ -238,13 +238,7 @@ impl FontCache {
238238
None => return,
239239
};
240240

241-
let request = RequestInit {
242-
url: url.clone(),
243-
destination: Destination::Font,
244-
// TODO: Add a proper origin - Can't import GlobalScope from gfx
245-
// We can leave origin to be set by default
246-
..RequestInit::default()
247-
};
241+
let request = RequestBuilder::new(url.clone()).destination(Destination::Font);
248242

249243
let channel_to_self = self.channel_to_self.clone();
250244
let bytes = Mutex::new(Vec::new());

components/net/resource_thread.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ use embedder_traits::EmbedderProxy;
2222
use hyper_serde::Serde;
2323
use ipc_channel::ipc::{self, IpcReceiver, IpcReceiverSet, IpcSender};
2424
use malloc_size_of::{MallocSizeOf, MallocSizeOfOps};
25-
use net_traits::request::{Destination, Request, RequestInit};
25+
use net_traits::request::{Destination, RequestBuilder};
2626
use net_traits::response::{Response, ResponseInit};
2727
use net_traits::storage_thread::StorageThreadMsg;
2828
use net_traits::WebSocketNetworkEvent;
@@ -430,7 +430,7 @@ impl CoreResourceManager {
430430

431431
fn fetch(
432432
&self,
433-
req_init: RequestInit,
433+
request_builder: RequestBuilder,
434434
res_init_: Option<ResponseInit>,
435435
mut sender: IpcSender<FetchResponseMsg>,
436436
http_state: &Arc<HttpState>,
@@ -441,15 +441,15 @@ impl CoreResourceManager {
441441
let dc = self.devtools_chan.clone();
442442
let filemanager = self.filemanager.clone();
443443

444-
let timing_type = match req_init.destination {
444+
let timing_type = match request_builder.destination {
445445
Destination::Document => ResourceTimingType::Navigation,
446446
_ => ResourceTimingType::Resource,
447447
};
448448

449449
thread::Builder::new()
450-
.name(format!("fetch thread for {}", req_init.url))
450+
.name(format!("fetch thread for {}", request_builder.url))
451451
.spawn(move || {
452-
let mut request = Request::from_init(req_init);
452+
let mut request = request_builder.build();
453453
// XXXManishearth: Check origin against pipeline id (also ensure that the mode is allowed)
454454
// todo load context / mimesniff in fetch
455455
// todo referrer policy?
@@ -486,7 +486,7 @@ impl CoreResourceManager {
486486

487487
fn websocket_connect(
488488
&self,
489-
request: RequestInit,
489+
request: RequestBuilder,
490490
event_sender: IpcSender<WebSocketNetworkEvent>,
491491
action_receiver: IpcReceiver<WebSocketDomAction>,
492492
http_state: &Arc<HttpState>,

0 commit comments

Comments
 (0)