diff --git a/source b/source index a205205ec16..8f15c0e39fc 100644 --- a/source +++ b/source @@ -123423,8 +123423,8 @@ interface SharedWorkerGlobalScope : WorkerGlobalScope
-

A WorkerGlobalScope global is actively needed if the following algorithm returns true:

+

A WorkerGlobalScope global is actively needed if the following algorithm returns true:

  1. @@ -123443,25 +123443,6 @@ interface SharedWorkerGlobalScope : WorkerGlobalScope
  2. Return false.

-

A WorkerGlobalScope global is protected if the following algorithm returns true:

- -
    -
  1. If global is not actively needed, - then return false.

  2. - -
  3. If global is a SharedWorkerGlobalScope, then return true.

  4. - -
  5. If global's the worker's ports is not empty, then return true.

  6. - -
  7. If global has outstanding timers, database transactions, or network - connections, then return true.

  8. - - -
  9. Return false.

  10. -
-

A WorkerGlobalScope global is permissible if the following algorithm returns true:

@@ -123508,33 +123489,29 @@ interface SharedWorkerGlobalScope : WorkerGlobalScope -

Note that every WorkerGlobalScope that is actively needed is protected, and every - WorkerGlobalScope that is protected is permissible. (But the converses do not hold.)

+
  • Workers get suspended or un-suspended based on + whether they are suspendable.

  • + -

    An important difference between protected and permissible is that a WorkerGlobalScope is protected only if its transitive set of owners contains at least - one fully active Document, whereas a WorkerGlobalScope can - be permissible even if all the Documents in - its transitive set of owners are in bfcache.

    +

    An important difference between actively needed and + permissible is that a WorkerGlobalScope is + actively needed only if its transitive set of owners + contains at least one fully active Document, whereas a + WorkerGlobalScope can be permissible even + if all the Documents in its transitive set of owners are in bfcache.

    The between-loads shared worker timeout only influences the definition of permissible, not protected, and so + worker">permissible, not actively needed, and so implementations are not required to keep shared workers alive for that duration. Rather, they are required to close shared workers after the timeout is reached.

    @@ -123761,9 +123738,9 @@ interface SharedWorkerGlobalScope : WorkerGlobalScope scope.

  • Closing orphan workers: Start monitoring - worker global scope such that no sooner than it stops being protected, and no later than it stops being permissible, worker global scope's worker global scope such that no sooner than it stops being actively needed, and no later than it stops being permissible, worker global scope's closing flag is set to true.

  • Suspending workers: Start monitoring worker