From 55b4dbbd843aa292f09797718b0fcda189e33034 Mon Sep 17 00:00:00 2001 From: Anne van Kesteren Date: Wed, 16 Jan 2019 17:53:25 +0100 Subject: [PATCH] Ground primitives in agents Using "unit of related similar-origin browsing contexts" never made much sense as a browsing context could always hold several cross-site documents. This also changes the structures these agents hold from lists to (ordered) sets as that's more accurate and precise. Helps with https://github.com/whatwg/html/issues/4198. Fixes #88. --- dom.bs | 41 ++++++++++++++++++++--------------------- 1 file changed, 20 insertions(+), 21 deletions(-) diff --git a/dom.bs b/dom.bs index 4f6234ea..f3821bd6 100644 --- a/dom.bs +++ b/dom.bs @@ -30,7 +30,9 @@ type: interface text: WebGLContextEvent urlPrefix: https://tc39.github.io/ecma262/#; spec: ECMASCRIPT text: Construct; url: sec-construct; type: abstract-op - text: Realm; url: realm; type: dfn + type: dfn + text: Realm; url: realm + text: surrounding agent; url: surrounding-agent urlPrefix: https://w3c.github.io/hr-time/#; spec: HR-TIME type:typedef; urlPrefix: dom-; text: DOMHighResTimeStamp type:dfn; text: time origin; url: dfn-time-origin @@ -2273,16 +2275,14 @@ steps:
Signaling slot change
-

Each unit of related similar-origin browsing contexts has a -signal slot list (a list of slots). Unless stated otherwise it is empty. -[[!HTML]] +

Each similar-origin window agent has signal slots +(a set of slots), which is initially empty. [[!HTML]]

To signal a slot change, for a slot slot, run these steps:

    -
  1. If slot is not in unit of related similar-origin browsing contexts' - signal slot list, append slot to - unit of related similar-origin browsing contexts' signal slot list. +

  2. Append slot to slot's relevant agent's + signal slots.

  3. Queue a mutation observer compound microtask.

@@ -3256,13 +3256,13 @@ invoked, must run these steps:

Mutation observers

-

Each unit of related similar-origin browsing contexts has a +

Each similar-origin window agent has a mutation observer compound microtask queued flag, which is initially unset. [[!HTML]] -

Each unit of related similar-origin browsing contexts also has a -mutation observer list (a list of zero or more {{MutationObserver}} -objects), which is initially empty. +

Each similar-origin window agent also has +mutation observers (a set of zero or more +{{MutationObserver}} objects), which is initially empty.

To queue a mutation observer compound microtask, run these steps: @@ -3280,17 +3280,16 @@ objects), which is initially empty.

  1. Unset mutation observer compound microtask queued flag. -

  2. Let notifyList be a clone of - unit of related similar-origin browsing contexts' mutation observer list. +

  3. Let notifySet be a clone of the surrounding agent's + mutation observers. -

  4. Let signalList be a clone of - unit of related similar-origin browsing contexts' signal slot list. +

  5. Let signalSet be a clone of the surrounding agent's + signal slots. -

  6. Empty unit of related similar-origin browsing contexts' - signal slot list. +

  7. Empty the surrounding agent's signal slots.

  8. -

    For each mo of notifyList, +

    For each mo of notifySet, execute a compound microtask subtask to run these steps: [[!HTML]]

      @@ -3309,7 +3308,7 @@ objects), which is initially empty. and mo. If this throws an exception, then report the exception.
    -
  9. For each slot of signalList, fire an event +

  10. For each slot of signalSet, fire an event named slotchange, with its {{Event/bubbles}} attribute set to true, at slot.

@@ -3451,8 +3450,8 @@ constructor, when invoked, must run these steps:
  • Let mo be a new {{MutationObserver}} object whose callback is callback. -

  • Append mo to - unit of related similar-origin browsing contexts' mutation observer list. +

  • Append mo to mo's relevant agent's + mutation observers.

  • Return mo.