make is_origin_trustworthy a method of ServoUrl + fix localhost handling

This commit is contained in:
Alexandrov Sergey 2020-05-17 13:50:11 +03:00
parent a7c5c97616
commit 357b486455
4 changed files with 30 additions and 46 deletions

View file

@ -72,23 +72,4 @@ impl UrlHelper {
pub fn SetUsername(url: &mut ServoUrl, value: USVString) {
let _ = quirks::set_username(url.as_mut_url(), &value.0);
}
// https://w3c.github.io/webappsec-secure-contexts/#is-origin-trustworthy
pub fn is_origin_trustworthy(url: &ServoUrl) -> bool {
// Step 1
if !url.origin().is_tuple() {
return false;
}
// Step 3
if url.scheme() == "https" || url.scheme() == "wss" {
true
// Step 4
} else if url.host().is_some() {
let host = url.host_str().unwrap();
host == "127.0.0.0/8" || host == "::1/128"
// Step 6
} else {
url.scheme() == "file"
}
}
}

View file

@ -16,7 +16,6 @@ use crate::dom::bindings::root::Dom;
use crate::dom::client::Client;
use crate::dom::promise::Promise;
use crate::dom::serviceworkerregistration::ServiceWorkerRegistration;
use crate::dom::urlhelper::UrlHelper;
use crate::script_thread::ScriptThread;
use crate::task_source::dom_manipulation::DOMManipulationTaskSource;
use crate::task_source::TaskSource;
@ -162,7 +161,7 @@ impl JobQueue {
let global = &*job.client.global();
let pipeline_id = global.pipeline_id();
// Step 1-3
if !UrlHelper::is_origin_trustworthy(&job.script_url) {
if !job.script_url.is_origin_trustworthy() {
// Step 1.1
reject_job_promise(
job,