Re: [w3ctag/design-reviews] Cookie Store API (#469)

So the way the above works is because you have two dictionaries which are very similar but not named the same way and one is called options. 

the `Options` ending is wrong here as it is more a `CookieListItemInit` as used by other specs instead of actually options to the behavior of the setter.

If you compare `CookieStoreSetExtraOptions` with `CookieListItem`, the only difference is the `secure` field.

``` 
dictionary CookieListItem {
  required USVString name;
  USVString value;
  USVString? domain = null;
  USVString path = "/";
  DOMTimeStamp? expires = null;
  boolean secure = true;
  CookieSameSite sameSite = "strict";
};
```

```
dictionary CookieStoreSetExtraOptions : CookieStoreSetOptions {
  required USVString name;
  required USVString value;
};

dictionary CookieStoreSetOptions {
  DOMTimeStamp? expires = null;
  USVString? domain = null;
  USVString path = "/";
  CookieSameSite sameSite = "strict";
};
```

The `CookieStoreGetOptions` is actually options as they change the behavior of the `get` functions

```
dictionary CookieStoreGetOptions {
  USVString name;
  USVString url;
  CookieMatchType matchType = "equals";
};
```

I don't find this method very useful

```
  Promise<void> set(USVString name, USVString value,
                    optional CookieStoreSetOptions options = {});
```
It splits out name and value but keeps the rest in the options, but in JS this is much easier to just write an a initDict anyway

```js
   cookieStore.set({ name, value, path: '/'})
```

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/w3ctag/design-reviews/issues/469#issuecomment-633877021

Received on Tuesday, 26 May 2020 08:11:46 UTC