mirror of
https://github.com/servo/servo.git
synced 2025-08-03 12:40:06 +01:00
script: Added missing spec step in Location::SetHash
(#33380)
* Implement missing spec step in Location::SetHash Signed-off-by: crbrz <cristianb@gmail.com> * Fixed wrong URL fragment when hash set to empty string Signed-off-by: crbrz <cristianb@gmail.com> * Add WPT tests Signed-off-by: crbrz <cristianb@gmail.com> --------- Signed-off-by: crbrz <cristianb@gmail.com>
This commit is contained in:
parent
cc3c69b953
commit
2993577ac0
4 changed files with 64 additions and 6 deletions
|
@ -315,13 +315,19 @@ impl LocationMethods for Location {
|
|||
// Step 5: Set copyURL's fragment to the empty string.
|
||||
// Step 6: Basic URL parse input, with copyURL as url and fragment state as
|
||||
// state override.
|
||||
copy_url.as_mut_url().set_fragment(match value.0.as_str() {
|
||||
"" => Some("#"),
|
||||
_ if value.0.starts_with('#') => Some(&value.0[1..]),
|
||||
_ => Some(&value.0),
|
||||
});
|
||||
let new_fragment = if value.0.starts_with('#') {
|
||||
Some(&value.0[1..])
|
||||
} else {
|
||||
Some(value.0.as_str())
|
||||
};
|
||||
// Step 7: If copyURL's fragment is this's url's fragment, then return.
|
||||
if copy_url.fragment() == new_fragment {
|
||||
Ok(None)
|
||||
} else {
|
||||
copy_url.as_mut_url().set_fragment(new_fragment);
|
||||
|
||||
Ok(Some(copy_url))
|
||||
Ok(Some(copy_url))
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue