1
1
// META: title=Cookie Store API: cookieListItem attributes
2
- // META: global=window,serviceworker
2
+ // META: global=serviceworker
3
+
4
+ // This is a copy of cookieListItem_attributes.https.window.js, minus all the bits that only work
5
+ // in a window context, which unfortunately includes the testdriver asserts.
6
+ //
7
+ // Please keep them synchronized.
3
8
4
9
'use strict' ;
5
10
6
- const kCurrentHostname = ( new URL ( self . location . href ) ) . hostname ;
11
+ const currentHostname = ( new URL ( self . location . href ) ) . hostname ;
7
12
8
- const kOneDay = 24 * 60 * 60 * 1000 ;
9
- const kFourHundredDays = 400 * kOneDay ;
10
- const kTenYears = 10 * 365 * kOneDay ;
11
- const kFourHundredDaysFromNow = Date . now ( ) + kFourHundredDays ;
12
- const kTenYearsFromNow = Date . now ( ) + kTenYears ;
13
+ const oneDayInSeconds = 24 * 60 * 60 ;
14
+ const fourHundredDaysInSeconds = 400 * oneDayInSeconds ;
15
+ const tenYearsInSeconds = 10 * 365 * oneDayInSeconds ;
16
+ const fourHundredDaysFromNowInSeconds = Date . now ( ) / 1000 + fourHundredDaysInSeconds ;
17
+ const tenYearsFromNowInSeconds = Date . now ( ) / 1000 + tenYearsInSeconds ;
13
18
14
- const kCookieListItemKeys =
15
- [ 'domain' , 'expires' , 'name' , 'path' , 'sameSite' , 'secure' , 'value' ] . sort ( ) ;
19
+ function assert_cookie_keys ( cookie ) {
20
+ const cookieKeys = Object . keys ( cookie ) ;
21
+ assert_array_equals ( cookieKeys , [ 'name' , 'value' ] ) ;
22
+ }
16
23
17
24
promise_test ( async testCase => {
18
25
await cookieStore . delete ( 'cookie-name' ) ;
@@ -25,15 +32,7 @@ promise_test(async testCase => {
25
32
const cookie = await cookieStore . get ( 'cookie-name' ) ;
26
33
assert_equals ( cookie . name , 'cookie-name' ) ;
27
34
assert_equals ( cookie . value , 'cookie-value' ) ;
28
- assert_equals ( cookie . domain , null ) ;
29
- assert_equals ( cookie . path , '/' ) ;
30
- assert_equals ( cookie . expires , null ) ;
31
- assert_equals ( cookie . secure , true ) ;
32
- assert_equals ( cookie . sameSite , 'strict' ) ;
33
- const itemKeys = Object . keys ( cookie ) ;
34
- for ( const key of kCookieListItemKeys ) {
35
- assert_in_array ( key , itemKeys ) ;
36
- }
35
+ assert_cookie_keys ( cookie ) ;
37
36
} , 'CookieListItem - cookieStore.set defaults with positional name and value' ) ;
38
37
39
38
promise_test ( async testCase => {
@@ -46,78 +45,51 @@ promise_test(async testCase => {
46
45
const cookie = await cookieStore . get ( 'cookie-name' ) ;
47
46
assert_equals ( cookie . name , 'cookie-name' ) ;
48
47
assert_equals ( cookie . value , 'cookie-value' ) ;
49
- assert_equals ( cookie . domain , null ) ;
50
- assert_equals ( cookie . path , '/' ) ;
51
- assert_equals ( cookie . expires , null ) ;
52
- assert_equals ( cookie . secure , true ) ;
53
- assert_equals ( cookie . sameSite , 'strict' ) ;
54
- const itemKeys = Object . keys ( cookie ) ;
55
- for ( const key of kCookieListItemKeys ) {
56
- assert_in_array ( key , itemKeys ) ;
57
- }
48
+ assert_cookie_keys ( cookie ) ;
58
49
} , 'CookieListItem - cookieStore.set defaults with name and value in options' ) ;
59
50
60
51
promise_test ( async testCase => {
61
52
await cookieStore . delete ( 'cookie-name' ) ;
62
53
63
54
await cookieStore . set ( { name : 'cookie-name' , value : 'cookie-value' ,
64
- expires : kTenYearsFromNow } ) ;
55
+ expires : tenYearsFromNowInSeconds * 1000 } ) ;
65
56
testCase . add_cleanup ( async ( ) => {
66
57
await cookieStore . delete ( 'cookie-name' ) ;
67
58
} ) ;
68
59
const cookie = await cookieStore . get ( 'cookie-name' ) ;
69
60
assert_equals ( cookie . name , 'cookie-name' ) ;
70
61
assert_equals ( cookie . value , 'cookie-value' ) ;
71
- assert_equals ( cookie . domain , null ) ;
72
- assert_equals ( cookie . path , '/' ) ;
73
- assert_approx_equals ( cookie . expires , kFourHundredDaysFromNow , kOneDay ) ;
74
- assert_equals ( cookie . secure , true ) ;
75
- assert_equals ( cookie . sameSite , 'strict' ) ;
76
- const itemKeys = Object . keys ( cookie ) ;
77
- for ( const key of kCookieListItemKeys ) {
78
- assert_in_array ( key , itemKeys ) ;
79
- }
62
+ assert_cookie_keys ( cookie ) ;
80
63
} , 'CookieListItem - cookieStore.set with expires set to a timestamp 10 ' +
81
64
'years in the future' ) ;
82
65
83
66
promise_test ( async testCase => {
84
67
await cookieStore . delete ( 'cookie-name' ) ;
85
68
86
69
await cookieStore . set ( { name : 'cookie-name' , value : 'cookie-value' ,
87
- expires : new Date ( kTenYearsFromNow ) } ) ;
70
+ expires : new Date ( tenYearsFromNowInSeconds ) * 1000 } ) ;
88
71
testCase . add_cleanup ( async ( ) => {
89
72
await cookieStore . delete ( 'cookie-name' ) ;
90
73
} ) ;
91
74
const cookie = await cookieStore . get ( 'cookie-name' ) ;
92
75
assert_equals ( cookie . name , 'cookie-name' ) ;
93
76
assert_equals ( cookie . value , 'cookie-value' ) ;
94
- assert_equals ( cookie . domain , null ) ;
95
- assert_equals ( cookie . path , '/' ) ;
96
- assert_approx_equals ( cookie . expires , kFourHundredDaysFromNow , kOneDay ) ;
97
- assert_equals ( cookie . secure , true ) ;
77
+ assert_cookie_keys ( cookie ) ;
98
78
} , 'CookieListItem - cookieStore.set with expires set to a Date 10 ' +
99
79
'years in the future' ) ;
100
80
101
81
promise_test ( async testCase => {
102
- await cookieStore . delete ( { name : 'cookie-name' , domain : kCurrentHostname } ) ;
82
+ await cookieStore . delete ( { name : 'cookie-name' , domain : currentHostname } ) ;
103
83
104
84
await cookieStore . set ( { name : 'cookie-name' , value : 'cookie-value' ,
105
- domain : kCurrentHostname } ) ;
85
+ domain : currentHostname } ) ;
106
86
testCase . add_cleanup ( async ( ) => {
107
- await cookieStore . delete ( { name : 'cookie-name' , domain : kCurrentHostname } ) ;
87
+ await cookieStore . delete ( { name : 'cookie-name' , domain : currentHostname } ) ;
108
88
} ) ;
109
89
const cookie = await cookieStore . get ( 'cookie-name' ) ;
110
90
assert_equals ( cookie . name , 'cookie-name' ) ;
111
91
assert_equals ( cookie . value , 'cookie-value' ) ;
112
- assert_equals ( cookie . domain , kCurrentHostname ) ;
113
- assert_equals ( cookie . path , '/' ) ;
114
- assert_equals ( cookie . expires , null ) ;
115
- assert_equals ( cookie . secure , true ) ;
116
- assert_equals ( cookie . sameSite , 'strict' ) ;
117
- const itemKeys = Object . keys ( cookie ) ;
118
- for ( const key of kCookieListItemKeys ) {
119
- assert_in_array ( key , itemKeys ) ;
120
- }
92
+ assert_cookie_keys ( cookie ) ;
121
93
} , 'CookieListItem - cookieStore.set with domain set to the current hostname' ) ;
122
94
123
95
promise_test ( async testCase => {
@@ -135,15 +107,7 @@ promise_test(async testCase => {
135
107
const cookie = await cookieStore . get ( 'cookie-name' ) ;
136
108
assert_equals ( cookie . name , 'cookie-name' ) ;
137
109
assert_equals ( cookie . value , 'cookie-value' ) ;
138
- assert_equals ( cookie . domain , null ) ;
139
- assert_equals ( cookie . path , currentDirectory ) ;
140
- assert_equals ( cookie . expires , null ) ;
141
- assert_equals ( cookie . secure , true ) ;
142
- assert_equals ( cookie . sameSite , 'strict' ) ;
143
- const itemKeys = Object . keys ( cookie ) ;
144
- for ( const key of kCookieListItemKeys ) {
145
- assert_in_array ( key , itemKeys ) ;
146
- }
110
+ assert_cookie_keys ( cookie ) ;
147
111
} , 'CookieListItem - cookieStore.set with path set to the current directory' ) ;
148
112
149
113
promise_test ( async testCase => {
@@ -160,15 +124,7 @@ promise_test(async testCase => {
160
124
const cookie = await cookieStore . get ( 'cookie-name' ) ;
161
125
assert_equals ( cookie . name , 'cookie-name' ) ;
162
126
assert_equals ( cookie . value , 'cookie-value' ) ;
163
- assert_equals ( cookie . domain , null ) ;
164
- assert_equals ( cookie . path , currentDirectory ) ;
165
- assert_equals ( cookie . expires , null ) ;
166
- assert_equals ( cookie . secure , true ) ;
167
- assert_equals ( cookie . sameSite , 'strict' ) ;
168
- const itemKeys = Object . keys ( cookie ) ;
169
- for ( const key of kCookieListItemKeys ) {
170
- assert_in_array ( key , itemKeys ) ;
171
- }
127
+ assert_cookie_keys ( cookie ) ;
172
128
} , 'CookieListItem - cookieStore.set does not add / to path if it does not end with /' ) ;
173
129
174
130
[ 'strict' , 'lax' , 'none' ] . forEach ( sameSiteValue => {
@@ -183,47 +139,7 @@ promise_test(async testCase => {
183
139
const cookie = await cookieStore . get ( 'cookie-name' ) ;
184
140
assert_equals ( cookie . name , 'cookie-name' ) ;
185
141
assert_equals ( cookie . value , 'cookie-value' ) ;
186
- assert_equals ( cookie . domain , null ) ;
187
- assert_equals ( cookie . path , '/' ) ;
188
- assert_equals ( cookie . expires , null ) ;
189
- assert_equals ( cookie . secure , true ) ;
190
- assert_equals ( cookie . sameSite , sameSiteValue ) ;
191
- const itemKeys = Object . keys ( cookie ) ;
192
- for ( const key of kCookieListItemKeys ) {
193
- assert_in_array ( key , itemKeys ) ;
194
- }
142
+ assert_cookie_keys ( cookie ) ;
195
143
} , `CookieListItem - cookieStore.set with sameSite set to ${ sameSiteValue } ` ) ;
196
144
197
145
} ) ;
198
-
199
- promise_test ( async testCase => {
200
- await cookieStore . delete ( 'cookie-name' ) ;
201
-
202
- await cookieStore . set ( 'cookie-name' , 'cookie-value' ) ;
203
- testCase . add_cleanup ( async ( ) => {
204
- await cookieStore . delete ( 'cookie-name' ) ;
205
- } ) ;
206
-
207
- const cookie = await cookieStore . get ( 'cookie-name' ) ;
208
- assert_equals ( cookie . secure , true ) ;
209
- } , 'CookieListItem - secure defaults to true' ) ;
210
-
211
-
212
- if ( self . GLOBAL . isWindow ( ) ) {
213
- promise_test ( async testCase => {
214
- await cookieStore . delete ( 'cookie-name' ) ;
215
- testCase . add_cleanup ( async ( ) => {
216
- await cookieStore . delete ( 'cookie-name' ) ;
217
- } ) ;
218
-
219
- let encodedCookie = encodeURIComponent ( JSON . stringify ( "cookie-name=1; max-age=99999999999999999999999999999; path=/" ) ) ;
220
- await fetch ( `/cookies/resources/cookie.py?set=${ encodedCookie } ` ) ;
221
-
222
- assert_equals ( document . cookie , "cookie-name=1" , 'The cookie was set as expected.' ) ;
223
-
224
- const cookie = await cookieStore . get ( 'cookie-name' ) ;
225
- assert_equals ( cookie . name , 'cookie-name' ) ;
226
- assert_equals ( cookie . value , '1' ) ;
227
- assert_approx_equals ( cookie . expires , kFourHundredDaysFromNow , kOneDay ) ;
228
- } , "Test max-age attribute over the 400 days" ) ;
229
- }
0 commit comments