1414
1515namespace Playwright \Browser ;
1616
17+ use Playwright \Cookie ;
1718use Playwright \Exception \RuntimeException ;
1819
1920/**
2223final readonly class StorageState
2324{
2425 /**
25- * @param array<array{name: string, value: string, domain: string, path: string, expires: int, httpOnly: bool, secure: bool, sameSite: 'Strict'|'Lax'|'None'}> $cookies
26- * @param array<array{origin: string, localStorage?: array<array{name: string, value: string}>}> $origins
26+ * @param array<array{name: string, value: string, domain: string, path: string, expires: int|float , httpOnly: bool, secure: bool, sameSite: 'Strict'|'Lax'|'None'}> $cookies
27+ * @param array<array{origin: string, localStorage?: array<array{name: string, value: string}>}> $origins
2728 */
2829 public function __construct (
2930 public array $ cookies = [],
@@ -140,7 +141,7 @@ public function getOriginCount(): int
140141 }
141142
142143 /**
143- * @return array<array{name: string, value: string, domain: string, path: string, expires: int, httpOnly: bool, secure: bool, sameSite: 'Strict'|'Lax'|'None'}>
144+ * @return array<array{name: string, value: string, domain: string, path: string, expires: int|float , httpOnly: bool, secure: bool, sameSite: 'Strict'|'Lax'|'None'}>
144145 */
145146 public function getCookiesForDomain (string $ domain ): array
146147 {
@@ -164,7 +165,7 @@ public function getLocalStorageForOrigin(string $origin): array
164165 /**
165166 * @param array<mixed, mixed> $cookies
166167 *
167- * @return array<array{name: string, value: string, domain: string, path: string, expires: int, httpOnly: bool, secure: bool, sameSite: 'Lax'|'None'|'Strict'}>
168+ * @return array<array{name: string, value: string, domain: string, path: string, expires: int|float , httpOnly: bool, secure: bool, sameSite: 'Lax'|'None'|'Strict'}>
168169 */
169170 private static function validateCookies (array $ cookies ): array
170171 {
@@ -174,38 +175,7 @@ private static function validateCookies(array $cookies): array
174175 throw new \InvalidArgumentException ('Invalid cookie data structure ' );
175176 }
176177
177- $ name = $ cookie ['name ' ] ?? null ;
178- $ value = $ cookie ['value ' ] ?? null ;
179- $ domain = $ cookie ['domain ' ] ?? null ;
180- $ path = $ cookie ['path ' ] ?? null ;
181- $ expires = $ cookie ['expires ' ] ?? null ;
182- $ httpOnly = $ cookie ['httpOnly ' ] ?? null ;
183- $ secure = $ cookie ['secure ' ] ?? null ;
184- $ sameSite = $ cookie ['sameSite ' ] ?? null ;
185-
186- if (!is_string ($ name )
187- || !is_string ($ value )
188- || !is_string ($ domain )
189- || !is_string ($ path )
190- || !is_int ($ expires )
191- || !is_bool ($ httpOnly )
192- || !is_bool ($ secure )
193- || !is_string ($ sameSite )
194- || !in_array ($ sameSite , ['Lax ' , 'None ' , 'Strict ' ], true )
195- ) {
196- throw new \InvalidArgumentException ('Invalid cookie fields ' );
197- }
198-
199- $ result [] = [
200- 'name ' => $ name ,
201- 'value ' => $ value ,
202- 'domain ' => $ domain ,
203- 'path ' => $ path ,
204- 'expires ' => $ expires ,
205- 'httpOnly ' => $ httpOnly ,
206- 'secure ' => $ secure ,
207- 'sameSite ' => $ sameSite ,
208- ];
178+ $ result [] = Cookie::fromArray ($ cookie )->toArray ();
209179 }
210180
211181 return $ result ;
0 commit comments