mirror of
https://github.com/servo/servo.git
synced 2025-08-08 15:05:35 +01:00
Implementing the builder pattern for RequestInit
This commit is contained in:
parent
dd2deeabca
commit
6b2be9b31d
27 changed files with 578 additions and 546 deletions
|
@ -130,7 +130,7 @@ use msg::constellation_msg::{
|
|||
};
|
||||
use msg::constellation_msg::{PipelineNamespace, PipelineNamespaceId, TraversalDirection};
|
||||
use net_traits::pub_domains::reg_host;
|
||||
use net_traits::request::RequestInit;
|
||||
use net_traits::request::RequestBuilder;
|
||||
use net_traits::storage_thread::{StorageThreadMsg, StorageType};
|
||||
use net_traits::{self, FetchResponseMsg, IpcSend, ResourceThreads};
|
||||
use profile_traits::mem;
|
||||
|
@ -1934,11 +1934,11 @@ where
|
|||
fn handle_navigate_request(
|
||||
&self,
|
||||
id: PipelineId,
|
||||
req_init: RequestInit,
|
||||
request_builder: RequestBuilder,
|
||||
cancel_chan: IpcReceiver<()>,
|
||||
) {
|
||||
let listener = NetworkListener::new(
|
||||
req_init,
|
||||
request_builder,
|
||||
id,
|
||||
self.public_resource_threads.clone(),
|
||||
self.network_listener_sender.clone(),
|
||||
|
|
|
@ -12,14 +12,14 @@ use ipc_channel::ipc;
|
|||
use ipc_channel::router::ROUTER;
|
||||
use msg::constellation_msg::PipelineId;
|
||||
use net::http_loader::{set_default_accept, set_default_accept_language};
|
||||
use net_traits::request::{Destination, RequestInit};
|
||||
use net_traits::request::{Destination, RequestBuilder};
|
||||
use net_traits::response::ResponseInit;
|
||||
use net_traits::{CoreResourceMsg, FetchChannels, FetchMetadata, FetchResponseMsg};
|
||||
use net_traits::{IpcSend, NetworkError, ResourceThreads};
|
||||
|
||||
pub struct NetworkListener {
|
||||
res_init: Option<ResponseInit>,
|
||||
req_init: RequestInit,
|
||||
request_builder: RequestBuilder,
|
||||
pipeline_id: PipelineId,
|
||||
resource_threads: ResourceThreads,
|
||||
sender: Sender<(PipelineId, FetchResponseMsg)>,
|
||||
|
@ -28,14 +28,14 @@ pub struct NetworkListener {
|
|||
|
||||
impl NetworkListener {
|
||||
pub fn new(
|
||||
req_init: RequestInit,
|
||||
request_builder: RequestBuilder,
|
||||
pipeline_id: PipelineId,
|
||||
resource_threads: ResourceThreads,
|
||||
sender: Sender<(PipelineId, FetchResponseMsg)>,
|
||||
) -> NetworkListener {
|
||||
NetworkListener {
|
||||
res_init: None,
|
||||
req_init,
|
||||
request_builder,
|
||||
pipeline_id,
|
||||
resource_threads,
|
||||
sender,
|
||||
|
@ -48,7 +48,7 @@ impl NetworkListener {
|
|||
|
||||
let mut listener = NetworkListener {
|
||||
res_init: self.res_init.clone(),
|
||||
req_init: self.req_init.clone(),
|
||||
request_builder: self.request_builder.clone(),
|
||||
resource_threads: self.resource_threads.clone(),
|
||||
sender: self.sender.clone(),
|
||||
pipeline_id: self.pipeline_id.clone(),
|
||||
|
@ -57,17 +57,17 @@ impl NetworkListener {
|
|||
|
||||
let msg = match self.res_init {
|
||||
Some(ref res_init_) => CoreResourceMsg::FetchRedirect(
|
||||
self.req_init.clone(),
|
||||
self.request_builder.clone(),
|
||||
res_init_.clone(),
|
||||
ipc_sender,
|
||||
None,
|
||||
),
|
||||
None => {
|
||||
set_default_accept(Destination::Document, &mut listener.req_init.headers);
|
||||
set_default_accept_language(&mut listener.req_init.headers);
|
||||
set_default_accept(Destination::Document, &mut listener.request_builder.headers);
|
||||
set_default_accept_language(&mut listener.request_builder.headers);
|
||||
|
||||
CoreResourceMsg::Fetch(
|
||||
listener.req_init.clone(),
|
||||
listener.request_builder.clone(),
|
||||
FetchChannels::ResponseMsg(ipc_sender, cancel_chan),
|
||||
)
|
||||
},
|
||||
|
@ -100,13 +100,17 @@ impl NetworkListener {
|
|||
|
||||
match metadata.headers {
|
||||
Some(ref headers) if headers.contains_key(LOCATION) => {
|
||||
if self.req_init.url_list.is_empty() {
|
||||
self.req_init.url_list.push(self.req_init.url.clone());
|
||||
if self.request_builder.url_list.is_empty() {
|
||||
self.request_builder
|
||||
.url_list
|
||||
.push(self.request_builder.url.clone());
|
||||
}
|
||||
self.req_init.url_list.push(metadata.final_url.clone());
|
||||
self.request_builder
|
||||
.url_list
|
||||
.push(metadata.final_url.clone());
|
||||
|
||||
self.req_init.referrer_url = metadata.referrer.clone();
|
||||
self.req_init.referrer_policy = metadata.referrer_policy;
|
||||
self.request_builder.referrer_url = metadata.referrer.clone();
|
||||
self.request_builder.referrer_policy = metadata.referrer_policy;
|
||||
|
||||
self.res_init = Some(ResponseInit {
|
||||
url: metadata.final_url.clone(),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue