Skip to content
27 changes: 22 additions & 5 deletions storage.bs
Original file line number Diff line number Diff line change
Expand Up @@ -207,10 +207,9 @@ anticipated that some APIs will be applicable to both <a>storage types</a> going
<h3 id=storage-keys>Storage keys</h3>

<p>A <dfn export>storage key</dfn> is a <a>tuple</a> consisting of an
<dfn for="storage key">origin</dfn> (an <a for=/>origin</a>). [[!HTML]]

<p class=XXX>This is expected to change; see
<a href="https://privacycg.github.io/storage-partitioning/">Client-Side Storage Partitioning</a>.
<dfn for="storage key">origin</dfn> (an <a for=/>origin</a>), a
<dfn for="storage key">top-level site</dfn> (a <a for=/>site</a>), and a
<dfn for="storage key">has cross-site ancestor</dfn> (a boolean). [[!HTML]]

<div algorithm>
<p>To <dfn export>obtain a storage key</dfn>, given an <a for=/>environment</a>
Expand Down Expand Up @@ -239,7 +238,18 @@ anticipated that some APIs will be applicable to both <a>storage types</a> going
<a>environment settings object</a>; otherwise <var>environment</var>'s
<a for=environment>creation URL</a>'s <a for=url>origin</a>.

<li><p>Return a <a>tuple</a> consisting of <var>origin</var>.
<li><p>Let <var>topLevelOrigin</var> be <var>environment</var>'s
<a for=environment>top-level origin</a>.

<li><p>If <var>topLevelOrigin</var> is null, then set it to <var>origin</var>.

<li><p>Let <var>topLevelSite</var> be the result of <a>obtaining a site</a> given
<var>topLevelOrigin</var>.

<li><p>Let <var>hasCrossSiteAncestor</var> be <var>environment</var>'s
<a for=environment>has cross-site ancestor</a>.

<li><p>Return (<var>origin</var>, <var>topLevelSite</var>, <var>hasCrossSiteAncestor</var>).
</ol>
</div>

Expand All @@ -251,6 +261,13 @@ anticipated that some APIs will be applicable to both <a>storage types</a> going
<li><p>If <var>A</var>'s <a for="storage key">origin</a> is not <a>same origin</a> with
<var>B</var>'s <a for="storage key">origin</a>, then return false.

<li><p>If <var>A</var>'s <a for="storage key">top-level site</a> is not
<a for="site">same site</a> with <var>B</var>'s <a for="storage key">top-level site</a>,
then return false.

<li><p>If <var>A</var>'s <a for="storage key">has cross-site ancestor</a> is not
<var>B</var>'s <a for="storage key">has cross-site ancestor</a>, then return false.

<li><p>Return true.
</ol>
</div>
Expand Down
Loading