diff --git a/index.src.html b/index.src.html
index 5bde612..49daf5f 100644
--- a/index.src.html
+++ b/index.src.html
@@ -219,11 +219,9 @@
Content Security Policy: Embedded Enforcement
element (|element|)'s <{iframe/csp}> content attribute if all of the
following statements are true:
- 1. |value| is not the empty string.
+ 1. |value| matches the serialized-policy ABNF grammar defined in [[!CSP]].
- 2. |value| matches the serialized-policy ABNF grammar defined in [[!CSP]].
-
- 3. One of the following statements is true:
+ 2. One of the following statements is true:
1. |element|'s [=node document=]'s [=Document/browsing context=]'s
[=browsing context/required CSP=] is `null`.
@@ -232,7 +230,7 @@ Content Security Policy: Embedded Enforcement
[=policy/subsumed by=] |element|'s [=node document=]'s [=Document/browsing context=]'s
[=browsing context/required CSP=].
- 4. The result of [=parse a serialized csp as disposition|parsing=] |value| as "`enforce`" has a
+ 3. The result of [=parse a serialized csp as disposition|parsing=] |value| as "`enforce`" has a
[=policy/directive set=] that does not [=list/contain=] any of the following directives:
* [=report-uri=]
@@ -341,6 +339,9 @@ Content Security Policy: Embedded Enforcement
11. Set `browsingContext`'s
required CSP.
+ 12. If `browsingContext`'s required CSP is `invalid`, cancel the
+ navigation.
+
ISSUE: Upstream this to WHATWG's HTML.
ISSUE(w3c/html#584): W3C's HTML's navigation algorithm is wildly divergent from WHATWG's at
@@ -382,14 +383,17 @@ Content Security Policy: Embedded Enforcement
1. If |context| is a nested browsing context:
- 1. If |context|'s browsing context container has an <{iframe/csp}> content
+ 1. If |context|'s browsing context container has no <{iframe/csp}> content
+ attribute, or if it has an <{iframe/csp}> content attribute with an emtpy
+ value, set |context|'s required CSP to the value of
+ |context|'s
+ parent browsing context's required CSP and return.
+
+ 2. If |context|'s browsing context container has an <{iframe/csp}> content
attribute with a valid attribute value (|value|), set
|context|'s required CSP to |value| and return.
- 2. Set |context|'s required CSP to the value of |context|'s
- parent browsing context's required CSP.
-
- 3. Return.
+ 3. Set |context|'s required CSP to `invalid` and return.
2. Set |context|'s required CSP to `null`.