mirror of
https://github.com/servo/servo.git
synced 2025-07-22 14:53:49 +01:00
script: Move navigation fetching to the ScriptThread
(#34919)
This allows reusing the asynchrnous fetch mechanism that we use for page resources and is likely a step toward removing the `FetchThread`. Benefits: - Reduces IPC traffic during navigation. Now instead of bouncing between the constellation and the `ScriptThread` responses are sent directly to the `ScriptThread`. - Allows cancelling loads after redirects, which was not possible before. There is the question of what to do when a redirect is cross-origin (#23037). This currently isn't handled properly as the `Constellation` sends data to the same `Pipeline` that initiated the load. This change doesn't fix this issue, but does make it more possible for the `ScriptThread` to shut down the pipeline and ask the `Constellation` to replace it with a new one. Signed-off-by: Martin Robinson <mrobinson@igalia.com>
This commit is contained in:
parent
73c0701c83
commit
fbd77b4524
16 changed files with 420 additions and 460 deletions
|
@ -56,6 +56,7 @@ use net_traits::response::{HttpsState, Response, ResponseBody, ResponseType};
|
|||
use net_traits::{
|
||||
CookieSource, FetchMetadata, NetworkError, RedirectEndValue, RedirectStartValue,
|
||||
ReferrerPolicy, ResourceAttribute, ResourceFetchTiming, ResourceTimeValue,
|
||||
DOCUMENT_ACCEPT_HEADER_VALUE,
|
||||
};
|
||||
use servo_arc::Arc;
|
||||
use servo_url::{ImmutableOrigin, ServoUrl};
|
||||
|
@ -77,10 +78,6 @@ use crate::hsts::HstsList;
|
|||
use crate::http_cache::{CacheKey, HttpCache};
|
||||
use crate::resource_thread::{AuthCache, AuthCacheEntry};
|
||||
|
||||
/// <https://fetch.spec.whatwg.org/#document-accept-header-value>
|
||||
pub const DOCUMENT_ACCEPT_HEADER_VALUE: HeaderValue =
|
||||
HeaderValue::from_static("text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
|
||||
|
||||
/// The various states an entry of the HttpCache can be in.
|
||||
#[derive(Clone, Debug, Eq, PartialEq)]
|
||||
pub enum HttpCacheEntryState {
|
||||
|
@ -146,18 +143,6 @@ fn set_default_accept_encoding(headers: &mut HeaderMap) {
|
|||
);
|
||||
}
|
||||
|
||||
pub fn set_default_accept_language(headers: &mut HeaderMap) {
|
||||
if headers.contains_key(header::ACCEPT_LANGUAGE) {
|
||||
return;
|
||||
}
|
||||
|
||||
// TODO(eijebong): Change this once typed headers are done
|
||||
headers.insert(
|
||||
header::ACCEPT_LANGUAGE,
|
||||
HeaderValue::from_static("en-US,en;q=0.5"),
|
||||
);
|
||||
}
|
||||
|
||||
/// <https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-state-no-referrer-when-downgrade>
|
||||
fn no_referrer_when_downgrade(referrer_url: ServoUrl, current_url: ServoUrl) -> Option<ServoUrl> {
|
||||
// Step 1
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue