@@ -1757,39 +1757,6 @@ impl Url {
1757
1757
let old_after_path_pos = to_u32 ( self . serialization . len ( ) ) . unwrap ( ) ;
1758
1758
let cannot_be_a_base = self . cannot_be_a_base ( ) ;
1759
1759
let scheme_type = SchemeType :: from ( self . scheme ( ) ) ;
1760
- let mut path_empty = false ;
1761
-
1762
- // Check ':' and then see if the next character is '/'
1763
- let mut has_host = if let Some ( index) = self . serialization . find ( ":" ) {
1764
- if self . serialization . len ( ) > index + 1
1765
- && self . serialization . as_bytes ( ) . get ( index + 1 ) == Some ( & b'/' )
1766
- {
1767
- let rest = & self . serialization [ ( index + ":/" . len ( ) ) ..] ;
1768
- let host_part = rest. split ( '/' ) . next ( ) . unwrap_or ( "" ) ;
1769
- path_empty = rest. is_empty ( ) ;
1770
- !host_part. is_empty ( ) && !host_part. contains ( '@' )
1771
- } else {
1772
- false
1773
- }
1774
- } else {
1775
- false
1776
- } ;
1777
-
1778
- // Ensure the path length is greater than 1 to account
1779
- // for cases where "/." is already appended from serialization
1780
- // If we set path, then we already checked the other two conditions:
1781
- // https://url.spec.whatwg.org/#url-serializing
1782
- // 1. The host is null
1783
- // 2. the first segment of the URL's path is an empty string
1784
- if path. len ( ) > 1 {
1785
- if let Some ( index) = self . serialization . find ( ":" ) {
1786
- let removal_start = index + ":" . len ( ) ;
1787
- if self . serialization [ removal_start..] . starts_with ( "/." ) {
1788
- self . path_start -= "/." . len ( ) as u32 ;
1789
- }
1790
- }
1791
- }
1792
-
1793
1760
self . serialization . truncate ( self . path_start as usize ) ;
1794
1761
self . mutate ( |parser| {
1795
1762
if cannot_be_a_base {
@@ -1799,33 +1766,14 @@ impl Url {
1799
1766
}
1800
1767
parser. parse_cannot_be_a_base_path ( parser:: Input :: new_no_trim ( path) ) ;
1801
1768
} else {
1769
+ let mut has_host = true ; // FIXME
1802
1770
parser. parse_path_start (
1803
1771
scheme_type,
1804
1772
& mut has_host,
1805
1773
parser:: Input :: new_no_trim ( path) ,
1806
1774
) ;
1807
1775
}
1808
1776
} ) ;
1809
-
1810
- // For cases where normalization is applied across both the serialization and the path.
1811
- // Append "/." immediately after the scheme (up to ":")
1812
- // This is done if three conditions are met.
1813
- // https://url.spec.whatwg.org/#url-serializing
1814
- // 1. The host is null
1815
- // 2. The url's path length is greater than 1
1816
- // 3. the first segment of the URL's path is an empty string
1817
- if !has_host && path. len ( ) > 1 && path_empty {
1818
- if let Some ( index) = self . serialization . find ( ":" ) {
1819
- if self . serialization . len ( ) > index + 2
1820
- && self . serialization . as_bytes ( ) . get ( index + 1 ) == Some ( & b'/' )
1821
- && self . serialization . as_bytes ( ) . get ( index + 2 ) == Some ( & b'/' )
1822
- {
1823
- self . serialization . insert_str ( index + ":" . len ( ) , "/." ) ;
1824
- self . path_start += "/." . len ( ) as u32 ;
1825
- }
1826
- }
1827
- }
1828
-
1829
1777
self . restore_after_path ( old_after_path_pos, & after_path) ;
1830
1778
}
1831
1779
0 commit comments