From 5a1b27e69a7f02e3697686f225609fd379c3d5b9 Mon Sep 17 00:00:00 2001
From: Kevin McNee To obtain a browsing context to use for a
- navigation response, given a browsing context browsingContext, a
- sandboxing flag set sandboxFlags, an opener policy
- navigationCOOP, and an opener policy enforcement
- result coopEnforcementResult:
Let browsingContext be navigationParams's navigable's active browsing + context.
If browsingContext is not a top-level browsing context, then return browsingContext.
Let swapGroup be false.
Let coopEnforcementResult be navigationParams's COOP enforcement result.
If coopEnforcementResult's + needs a browsing context group switch is true, set swapGroup to true.
Let sourceOrigin be browsingContext's + active document's origin.
Let destinationOrigin be navigationParams's origin.
Let sameSite be whether sourceOrigin is + same site with destinationOrigin.
If sameSite is false, then:
+If either of sourceOrigin or destinationOrigin have a scheme that is not an HTTP(S) scheme + and the user agent considers it necessary for sourceOrigin and + destinationOrigin to be isolated from each other (for + implementation-defined reasons), optionally set swapGroup + to true.
+For example, if a user navigates from about:settings
to
+ https://example.com
, the user agent could force a swap.
If navigationParams's
+ user involvement is "browser UI
",
+ optionally set swapGroup to true.
If browsingContext's group's + browsing context set's size is 1, + optionally set swapGroup to true.
+Some implementations swap browsing context groups here for performance reasons.
+The check for other contexts that could script this one is not sufficient to + prevent differences in behavior that could affect a web page. Even if there are currently no other + contexts, the destination page could open a window, then if the user navigates back, the + previous page could expect to be able to script the opened window. Doing a swap here would + break that use case.
If coopEnforcementResult's needs a - browsing context group switch is false, then:
+If swapGroup is false, then:
If coopEnforcementResult's DragEventInit : MouseEventInit { might destroy it at this point.
Let navigationCOOP be navigationParams's cross-origin opener policy.
If navigationCOOP's value is "same-origin-plus-COEP
", then set
@@ -87797,6 +87846,9 @@ dictionary DragEventInit : MouseEventInit {
not.
Let sandboxFlags be navigationParams's final sandboxing flag set.
If sandboxFlags is not empty, then:
To find a navigable by target name given a string name and a navigable currentNavigable:
+This will be made more precise in issue #313.
+ +Let currentDocument be currentNavigable's active document.
Let sourceSnapshotParams be the result of snapshotting source snapshot params given currentDocument.
Let subtreesToSearch be an implementation-defined choice of one of the following:
+« currentNavigable's traversable navigable, currentNavigable »
the inclusive ancestor navigables of currentDocument
For each subtreeToSearch of subtreesToSearch, in reverse order:
+Let documentToSearch be subtreeToSearch's active document.
For each navigable of the inclusive descendant navigables of documentToSearch:
+If currentNavigable is not allowed by sandboxing to navigate navigable given sourceSnapshotParams, optionally continue.
If navigable's target name is the same as name, return navigable.
Let currentTopLevelBrowsingContext be currentNavigable's active browsing context's top-level browsing context.
Let group be currentTopLevelBrowsingContext's group.
For each topLevelBrowsingContext of group's browsing context set, in an implementation-defined order (the user agent should pick a consistent ordering, such as the most recently opened, most recently focused, or more closely related):
+If currentTopLevelBrowsingContext equals topLevelBrowsingContext, continue.
Let documentToSearch be topLevelBrowsingContext's active document.
For each navigable of the inclusive descendant navigables of documentToSearch:
+If currentNavigable's active browsing context is not familiar with navigable's active browsing context, continue.
If currentNavigable is not allowed by sandboxing to navigate navigable given sourceSnapshotParams, optionally continue.
If navigable's target name is the same as name, return navigable.
Return null.
The rules for choosing a navigable, given a string name, a navigable currentNavigable, and a boolean noopener are as follows:
@@ -97788,18 +97887,8 @@ interface NotRestoredReasons {Otherwise, if name is not an ASCII case-insensitive match for "_blank
", there exists a navigable whose target name is the same as name,
- currentNavigable's active browsing context is
- familiar with that navigable's active browsing
- context, and the user agent determines that the two browsing contexts are related enough
- that it is ok if they reach each other, set chosen to that navigable. If there are
- multiple matching navigables, the user agent should pick one in
- some arbitrary consistent manner, such as the most recently opened, most recently focused, or
- more closely related, and set chosen to it.
This will be made more precise in issue #313.
Document
's about base URLnone
")Once a navigation params struct is created, this standard does not @@ -100058,6 +100150,9 @@ location.href = '#foo';
navigate
", sourceSnapshotParams,
targetSnapshotParams, navigationId, navigationParams,
- cspNavigationType, with allowPOST
+ cspNavigationType, userInvolvement, with allowPOST
set to true and completionSteps set to the following
step:
@@ -101386,7 +101481,9 @@ location.href = '#foo';
targetSnapshotParams, an optional navigation ID-or-null
navigationId (default null), an optional navigation params-or-null
navigationParams (default null), an optional string cspNavigationType
- (default "other
"), an optional boolean other"), an optional user navigation involvement
+ userInvolvement (default
+ "none
"), an optional boolean allowPOST (default false), and optional
algorithm steps completionSteps (default an empty
@@ -101431,7 +101528,8 @@ location.href = '#foo';
then set navigationParams to the result of creating navigation params by fetching given entry, navigable, sourceSnapshotParams, targetSnapshotParams, - cspNavigationType, navigationId, and navTimingType.
+ cspNavigationType, userInvolvement, navigationId, and + navTimingType.NavigationTimingType
navTimingType, perform the following steps. They
return a navigation params, a non-fetch scheme navigation params, or
null.
@@ -102450,6 +102549,9 @@ location.href = '#foo';
In parallel, attempt to populate the history entry's document for targetEntry, given navigable, potentiallyTargetSpecificSourceSnapshotParams, targetSnapshotParams, + userInvolvementForNavigateEvents, with allowPOST set to allowPOST and completionSteps set to queue a global task on the navigation and traversal task source @@ -104397,18 +104500,10 @@ location.href = '#foo'; data-x="dom-DOMImplementation-createHTMLDocument">document.implementation.createHTMLDocument().
Let browsingContext be navigationParams's navigable's active browsing - context.
Set browsingContext to the result of the Let browsingContext be the result of obtaining a browsing context to use for a - navigation response given browsingContext, navigationParams's - final sandboxing flag set, - navigationParams's cross-origin opener - policy, and navigationParams's COOP enforcement result.
+ navigation response given navigationParams.This can result in a browsing context @@ -145914,6 +146009,7 @@ INSERT INTERFACES HERE Kevin Benson, Kevin Cole, Kevin Gadd, + Kevin McNee, Kevin Venkiteswaran, Khushal Sagar, Kinuko Yasuda,