Skip to content

Commit da33a7a

Browse files
committed
servo: Merge #14508 - Rewrite determine_request_referrer() to explicitly limit it to the checks it can do (from servo:determine_request_referrer); r=jdm,frewsxcv
Checks for the Client value should reside in the script thread. I also noted some other issues in this code. Source-Repo: https://github.com/servo/servo Source-Revision: 882d5512bb9aa7263864fb18d702c1efb6401914 UltraBlame original commit: bb6d259f6f5dc49a5ef21de8d9d8177f7ce59413
1 parent f2500d8 commit da33a7a

File tree

3 files changed

+96
-167
lines changed

3 files changed

+96
-167
lines changed

servo/components/net/fetch/methods.rs

+82-24
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,12 @@ use
192192
std
193193
:
194194
:
195+
mem
196+
;
197+
use
198+
std
199+
:
200+
:
195201
rc
196202
:
197203
:
@@ -919,21 +925,51 @@ referrer_policy
919925
)
920926
)
921927
;
922-
if
923-
*
928+
{
929+
let
930+
mut
931+
referrer
932+
=
924933
request
925934
.
926935
referrer
927936
.
928-
borrow
937+
borrow_mut
929938
(
930939
)
931-
!
940+
;
941+
let
942+
referrer_url
932943
=
944+
match
945+
mem
946+
:
947+
:
948+
replace
949+
(
950+
&
951+
mut
952+
*
953+
referrer
933954
Referrer
934955
:
935956
:
936957
NoReferrer
958+
)
959+
{
960+
Referrer
961+
:
962+
:
963+
NoReferrer
964+
=
965+
>
966+
None
967+
Referrer
968+
:
969+
:
970+
Client
971+
=
972+
>
937973
{
938974
request
939975
.
@@ -952,33 +988,49 @@ RefererHeader
952988
(
953989
)
954990
;
955-
let
956-
referrer_url
957-
=
958-
determine_request_referrer
991+
None
992+
}
993+
Referrer
994+
:
995+
:
996+
ReferrerUrl
959997
(
960-
&
961-
mut
962-
*
998+
url
999+
)
1000+
=
1001+
>
1002+
{
9631003
request
9641004
.
9651005
headers
9661006
.
9671007
borrow_mut
9681008
(
9691009
)
970-
referrer_policy
971-
request
9721010
.
973-
referrer
974-
.
975-
borrow_mut
1011+
remove
1012+
:
1013+
:
1014+
<
1015+
RefererHeader
1016+
>
9761017
(
9771018
)
1019+
;
1020+
determine_request_referrer
1021+
(
1022+
&
1023+
mut
1024+
*
1025+
request
1026+
.
1027+
headers
9781028
.
979-
take
1029+
borrow_mut
9801030
(
9811031
)
1032+
referrer_policy
1033+
url
9821034
request
9831035
.
9841036
current_url
@@ -989,25 +1041,31 @@ clone
9891041
(
9901042
)
9911043
)
1044+
}
1045+
}
9921046
;
993-
*
994-
request
995-
.
996-
referrer
997-
.
998-
borrow_mut
1047+
if
1048+
let
1049+
Some
9991050
(
1051+
referrer_url
10001052
)
10011053
=
1054+
referrer_url
1055+
{
1056+
*
1057+
referrer
1058+
=
10021059
Referrer
10031060
:
10041061
:
1005-
from_url
1062+
ReferrerUrl
10061063
(
10071064
referrer_url
10081065
)
10091066
;
10101067
}
1068+
}
10111069
let
10121070
response
10131071
=

servo/components/net/http_loader.rs

+14-32
Original file line numberDiff line numberDiff line change
@@ -1789,13 +1789,10 @@ Headers
17891789
referrer_policy
17901790
:
17911791
ReferrerPolicy
1792-
referrer_url
1792+
referrer_source
17931793
:
1794-
Option
1795-
<
17961794
ServoUrl
1797-
>
1798-
url
1795+
current_url
17991796
:
18001797
ServoUrl
18011798
)
@@ -1822,32 +1819,22 @@ Referer
18221819
)
18231820
)
18241821
;
1825-
if
1826-
let
1827-
Some
1828-
(
1829-
ref_url
1830-
)
1831-
=
1832-
referrer_url
1833-
{
18341822
let
18351823
cross_origin
18361824
=
1837-
ref_url
1825+
referrer_source
18381826
.
18391827
origin
18401828
(
18411829
)
18421830
!
18431831
=
1844-
url
1832+
current_url
18451833
.
18461834
origin
18471835
(
18481836
)
18491837
;
1850-
return
18511838
match
18521839
referrer_policy
18531840
{
@@ -1866,7 +1853,7 @@ Origin
18661853
>
18671854
strip_url
18681855
(
1869-
ref_url
1856+
referrer_source
18701857
true
18711858
)
18721859
ReferrerPolicy
@@ -1884,7 +1871,7 @@ else
18841871
{
18851872
strip_url
18861873
(
1887-
ref_url
1874+
referrer_source
18881875
false
18891876
)
18901877
}
@@ -1896,7 +1883,7 @@ UnsafeUrl
18961883
>
18971884
strip_url
18981885
(
1899-
ref_url
1886+
referrer_source
19001887
false
19011888
)
19021889
ReferrerPolicy
@@ -1907,7 +1894,7 @@ OriginWhenCrossOrigin
19071894
>
19081895
strip_url
19091896
(
1910-
ref_url
1897+
referrer_source
19111898
cross_origin
19121899
)
19131900
ReferrerPolicy
@@ -1918,8 +1905,8 @@ StrictOrigin
19181905
>
19191906
strict_origin
19201907
(
1921-
ref_url
1922-
url
1908+
referrer_source
1909+
current_url
19231910
)
19241911
ReferrerPolicy
19251912
:
@@ -1929,8 +1916,8 @@ StrictOriginWhenCrossOrigin
19291916
>
19301917
strict_origin_when_cross_origin
19311918
(
1932-
ref_url
1933-
url
1919+
referrer_source
1920+
current_url
19341921
)
19351922
ReferrerPolicy
19361923
:
@@ -1940,15 +1927,10 @@ NoReferrerWhenDowngrade
19401927
>
19411928
no_referrer_when_downgrade_header
19421929
(
1943-
ref_url
1944-
url
1930+
referrer_source
1931+
current_url
19451932
)
19461933
}
1947-
;
1948-
}
1949-
return
1950-
None
1951-
;
19521934
}
19531935
pub
19541936
fn

0 commit comments

Comments
 (0)