diff --git a/spec.bs b/spec.bs
index e1d31e00..22ae60df 100644
--- a/spec.bs
+++ b/spec.bs
@@ -68,6 +68,7 @@ spec: html; urlPrefix: https://html.spec.whatwg.org/multipage/
text: active session history entry; url: nav-active-history-entry
text: current session history entry; url: nav-current-history-entry
text: parent; url: nav-parent
+ text: ongoing navigation
for: traversable navigable
text: session history entries; url: tn-session-history-entries
for: browsing context group
@@ -89,6 +90,7 @@ spec: html; urlPrefix: https://html.spec.whatwg.org/multipage/
text: replace; url: hh-replace
for: document state
text: document; url: document-state-document
+ text: checking if unloading is user-canceled
urlPrefix: interaction.html
text: activation notification; url: activation-notification
text: consume user activation; url: consume-user-activation
@@ -320,15 +322,6 @@ Each <{fencedframe}> has a config, which is either a
1. Parse the sandbox attributes, once it exists
- 1. [=Process the fencedframe attributes=] with |element| and [=initialInsertion=] set to true.
-
-
-
@@ -370,7 +345,25 @@ The
config IDL attribute getter
The {{HTMLFencedFrameElement/config}} IDL attribute setter steps are:
- 1.
TODO
+ 1. If [=this=] is not [=connected=]:
+
+ 1. [=Assert=]: [=this=]'s [=fenced navigable container/fenced navigable=] is null.
+
+ Note: This holds because when the element has been removed from the DOM, its removal steps
+ immediately destroy the [=fenced navigable container/fenced navigable=].
+
+ 1. Let |urn uuid| be the given {{FencedFrameConfig}}'s [=fencedframeconfig/urn=].
+
+ 1. [=Navigate=] |element|'s [=fenced navigable container/fenced navigable=] to |urn uuid| using
+ |element|'s [=Node/node document=], with [=historyHandling=] set to "
`replace`" , and [=referrerPolicy=] set to
"`no-referrer`".
+
+ Note: See [[#navigation-changes]] for the <{fencedframe}>-specific changes to the ordinary
+ navigation flow.
+
+
+ /fenced-frame/header-referrer.https.html
+
The
allow attribute, when specified, determines the
@@ -1767,23 +1760,58 @@ CORP violation report=] algorithm, as leaving it unfenced may cause a privacy le
* |navigable| is a [=fenced navigable container/fenced navigable=];
- Note: This ensures that *all* navigations inside of a <{fencedframe}> are made with the "
`replace`" mode, regardless of the initiator.
+ Note: This ensures that *all* navigations inside of a <{fencedframe}> are made with the "
`replace`" mode, regardless of the initiator.
+
+
+ /fenced-frame/history-back-and-forward-should-not-work-in-fenced-tree.https.html
+ /fenced-frame/history-length-fenced-navigations-replace-do-not-contribute-to-joint.https.html
+ /fenced-frame/history-length-outer-page-navigation-not-reflected-in-fenced.https.html
+
Modify step 8 of the same algorithm to include the following condition:
*
sourceDocument's [=node navigable=] is not a [=fenced navigable container=]
while at the same time |navigable| is a [=fenced navigable container/fenced navigable=].
- Note: This ensures that embedder-initiated navigations can *never* trigger a fragment navigation
- inside of a <{fencedframe}>.
+ Note: This ensures that embedder-initiated navigations can *never* trigger a fragment
+ navigation inside of a <{fencedframe}>.
/fenced-frame/fragment-navigation.https.html
+
+
+ Insert these steps immediately after step 16, the step that goes [=in parallel=]:
+
+ 1. If |url| is a [=urn uuid=] and |navigable| is a [=fenced navigable container/fenced
+ navigable=]:
+
+ 1. Let |config| be the result of [=fenced frame config mapping/finding a
+ config=] in
sourceDocument's [=node navigable=]'s [=navigable/traversable
+ navigable=]'s [=traversable navigable/fenced frame config mapping=].
+
+ Note: This might "wait" for an arbitrary period of time for the |config| associated with
+ the [=urn uuid=] |url| to be "finalized" in the [=traversable navigable/fenced frame config
+ mapping=]. This is why this step runs [=in parallel=]. This navigation will be canceled by
+ any subsequent embedder-initiated navigations,
should they
+ occur, by the usual mechanism that tracks the [=navigable/ongoing navigation=].
+
+ 1. [=Assert=] |config|'s [=fenced frame config/mapped url=]'s [=mapped url/value=] is a
+ [=URL=] whose [=url/scheme=] is "`https`".
+ 1. Set |url| to |config|'s [=fenced frame config/mapped url=]'s [=mapped url/value=].
+
+
/fenced-frame/frame-navigation.https.html
- /fenced-frame/history-back-and-forward-should-not-work-in-fenced-tree.https.html
- /fenced-frame/history-length-fenced-navigations-replace-do-not-contribute-to-joint.https.html
- /fenced-frame/history-length-outer-page-navigation-not-reflected-in-fenced.https.html
+
+
+ Rewrite the step starting with "Let |unloadPromptCanceled| be the result of" to:
+
+ 1. Let |unloadPromptCanceled| be false if |navigable| is a [=fenced navigable container/fenced
+ navigable=], and the result of [=checking if unloading is user-canceled=] for |navigable|'s
+ [=navigable/active document=]'s [=Document/inclusive descendant navigables=].
+
+
+ /fenced-frame/before-unload.https.html