- From: Jake Archibald <notifications@github.com>
- Date: Wed, 22 Apr 2015 07:29:54 -0700
- To: slightlyoff/ServiceWorker <ServiceWorker@noreply.github.com>
- Message-ID: <slightlyoff/ServiceWorker/issues/626/95207076@github.com>
How about: ```js clients.matchAll({ includeEvicted: true }) ``` `includeEvicted` will include `EvictedWindowClient`s - clients that have been evicted from memory, but can be restored ``` [Exposed=ServiceWorker] interface Client { readonly attribute USVString url; readonly attribute FrameType frameType; readonly attribute DOMString id; }; [Exposed=ServiceWorker] interface ActiveClient : Client { void postMessage(any message, optional sequence<Transferable> transfer); }; [Exposed=ServiceWorker] interface WindowClient : ActiveClient { readonly attribute VisibilityState visibilityState; readonly attribute boolean focused; Promise<WindowClient> focus(); }; [Exposed=ServiceWorker] interface EvictedWindowClient : Client { Promise<WindowClient> focus(); }; enum FrameType { "auxiliary", "top-level", "nested", "none" }; ``` `EvictedWindowClient` have the `url`, `frameType` and `id` that they had prior to eviction. It does not have `postMessage`. `evictedWindowClient.focus()` restores the tab (however the UA does that), then focuses the window, then resolves. Note that it resolves with a `WindowClient`, which will allow postmessaging. `EvictedWindowClient`s do not prevent a ServiceWorker from moving from `waiting` to `active`. On restoring a `EvictedWindowClient`, if it was evicted while under the control of a SW that's no longer active, or it was `.claim()`ed while evicted, it should do a full reload rather than any cleverer restoration. Thoughts? --- Reply to this email directly or view it on GitHub: https://github.com/slightlyoff/ServiceWorker/issues/626#issuecomment-95207076
Received on Wednesday, 22 April 2015 14:30:25 UTC