On Mon, Feb 14, 2022 at 5:28 PM Michael Wasserman <m...@chromium.org> wrote:
> Contact emails > > m...@chromium.org > > > Explainer > > https://github.com/webscreens/window-placement > > Specification > > https://webscreens.github.io/window-placement/ > > Design docs https://web.dev/multi-screen-window-placement/ > Summary > > Adds new screen information APIs and makes incremental improvements to > existing window placement APIs, allowing web applications to offer > compelling multi-screen experiences. > > The existing singular window.screen offers a limited view of available > screen space, and window placement functions generally clamp bounds to the > current screen. This feature unlocks modern multi-screen workspaces for web > applications. > > Blink component > > UI>Browser>WebAppInstalls>Desktop > <https://bugs.chromium.org/p/chromium/issues/list?q=component:UI%3EBrowser%3EWebAppInstalls%3EDesktop> > > This isn't a great component for code that lives within Blink. Can we create a new component for anything screen API related with the team working on this responsible for triaging these bugs? E.g. something like Blink>Screen or Blink>ScreenAPIs Specifically any code that lives within Blink should have a Blink component due to how top level triage works. Search tags > > window placement > <https://chromestatus.com/features#tags:window%20placement>, screen > enumeration <https://chromestatus.com/features#tags:screen%20enumeration>, > window <https://chromestatus.com/features#tags:window>, open > <https://chromestatus.com/features#tags:open>, moveTo > <https://chromestatus.com/features#tags:moveTo>, moveBy > <https://chromestatus.com/features#tags:moveBy>, requestFullscreen > <https://chromestatus.com/features#tags:requestFullscreen>, screen > <https://chromestatus.com/features#tags:screen>, display > <https://chromestatus.com/features#tags:display>, monitor > <https://chromestatus.com/features#tags:monitor>, multi-screen > <https://chromestatus.com/features#tags:multi-screen>, multi-display > <https://chromestatus.com/features#tags:multi-display>, multi-monitor > <https://chromestatus.com/features#tags:multi-monitor>, cross-screen > <https://chromestatus.com/features#tags:cross-screen>, cross-display > <https://chromestatus.com/features#tags:cross-display>, cross-monitor > <https://chromestatus.com/features#tags:cross-monitor> > > TAG review > > https://github.com/w3ctag/design-reviews/issues/413 > https://github.com/w3ctag/design-reviews/issues/522 > https://github.com/w3ctag/design-reviews/issues/602 > > TAG review status > > Issues addressed > > Risks > Interoperability and Compatibility > > Feature detection of new screen information APIs and Permission API > integration allows sites to handle different levels of feature support. The > Screen IDL interface duplicates EventTarget members for RuntimeEnabled > experimentation without changing the stable JS API; this will be rectified > after launch approval. > > Existing window placement APIs generally use compatible multi-screen > coordinates, but implementations often restrict bounds to the current > screen. We expect low levels of risk in supporting permitted cross-screen > placement requests, and falling back on legacy same-screen behavior > otherwise. > > A detailed assessment of API design risks, including Wayland > compatibility, multiple virtual workspaces/desktops, and more, can be found > at: < > https://docs.google.com/document/d/19u5fRKs8iWlpecKBSlfQ6JKrcP4emwK0M_6TNhfz0gs > > > > API surface changes made during the second origin trial are limited to > some minor renames, the removal of two unimplemented screen properties, and > support for permission policy. An exploratory permission-gated capability > to swap the screen of fullscreen windows without a user gesture was > reverted to enhance usable security. See < > https://github.com/webscreens/window-placement/blob/main/CHANGES.md> > > The spec is being incubated in the W3C Second Screen CG < > https://webscreens.github.io/cg-charter> and is pending adoption by the > W3C Second Screen WG <https://w3c.github.io/secondscreen-charter> > > Gecko: No signal ( > https://github.com/mozilla/standards-positions/issues/542) We requested a > position and are waiting for feedback. Firefox supports cross-screen > window.open/move*() requests. This work partly pursues compatibility with > that behavior. > > WebKit: No signal ( > https://lists.webkit.org/pipermail/webkit-dev/2021-June/031903.html) We > requested a position and are waiting for feedback. > > Web developers: Positive ( > https://github.com/webscreens/window-placement/issues/67) > > - Discourse: < > https://discourse.wicg.io/t/proposal-supporting-window-placement-on-multi-screen-devices > > > > - Twitter: < > https://twitter.com/search?q=url%3Amulti-screen-window-placement&src=typed_query&f=live > > > > - Announcement: < > https://twitter.com/ChromiumDev/status/1305406689466814464> > > - HackerNews (was front page): < > https://news.ycombinator.com/item?id=24489234> > > - Citrix: < > https://github.com/webscreens/window-placement/issues/67#issuecomment-945859384 > > > > - This work is also of interest to Google Slides > > Ergonomics > > The minor improvements to window.open/move*() API behaviors have no > effect on their poor ergonomics (synchronous, features string shape, etc.). > This API does not preclude future work from improving the ergonomics of > those existing APIs. Extending the requestFullscreen dictionary with an > optional screen should pose no ergonomic risks. The new multi-screen > information APIs incorporated OT feedback to improve naming, object > comparison, and event handling ergonomics. > > Activation > > This feature incrementally extends existing screen information and window > placement interfaces with basic multi-screen support. This immediately > enables new compelling experiences through progressive enhancement of > existing applications. > > Security > > Security and Privacy risks are explored in the specification repository’s > W3C Questionnaire < > https://github.com/webscreens/window-placement/blob/main/security_and_privacy.md>, > and in the respective sections of the draft specification < > https://webscreens.github.io/window-placement/#security> and < > https://webscreens.github.io/window-placement/#privacy>. That analysis > and review uncovered minimal risks. > > Privacy concerns center around fingerprinting screen information, while > security risks center around deceptive, surreptitious, or annoying window > placements, such as clickjacking. Gating new functionality with a > permission helps mitigate these concerns, and may aid or inspire similar > protections for legacy API behavior with similar abuse vectors. The overall > added risks are low and further mitigated by limiting to secure contexts, > supporting a permissions policy, being selective about display information > to expose, and continuing to prevent off-screen window placement. > > Origin trial feedback > > - > > First origin trial: Developer feedback > > <https://docs.google.com/spreadsheets/d/1S66d7izby2_QNu1FqLY_tEpQA9xkAsruvam7nbsq2TI/edit?resourcekey=0-kfJ0PdgNU5wgmjGWJc8AGg#gid=727492058> > (Google-internal doc) was generally straightforward: the API is useful, and > it would be difficult or impossible to accomplish anything similar without > it. The most common request was that it be made broadly available as soon > as possible. There were two feature requests; and while neither is provided > with this initial launch, the API shape does not preclude adding support: > - > > to hide the location bar on popup windows > - > > for getScreens() to return information about mirrored displays > > > > - > > Feedback on Github: After the OT, @jakearchibald, @kenchris, and > others gave feedback on the API shape < > https://github.com/webscreens/window-placement/issues/30>. Changes > were made accordingly < > https://github.com/webscreens/window-placement/blob/main/CHANGES.md>. > > > > - > > Second origin trial: Once again, developer feedback > > <https://docs.google.com/spreadsheets/d/1S66d7izby2_QNu1FqLY_tEpQA9xkAsruvam7nbsq2TI/edit?resourcekey=0-kfJ0PdgNU5wgmjGWJc8AGg#gid=1625618615> > (Google-internal doc) was broadly positive. One feature was requested three > times: the ability to open a new window and immediately make it > fullscreen. This feature is on our roadmap. Demand for this API is > high, and we want to give developers the chance to start using it as soon > as possible. Thus it makes sense to launch an MVP, then add additional > features like this one. > > > Debuggability > > New and existing screen and window APIs are readily debuggable using the > developer tools console. > > Is this feature fully tested by web-platform-tests > <https://chromium.googlesource.com/chromium/src/+/master/docs/testing/web_platform_tests.md> > ? > > WPTs cover the presence of new JS APIs and some basic API functionality: < > https://wpt.fyi/results/screen-details>, < > https://wpt.live/window-placement>, and < > https://wpt.fyi/results/fullscreen/api/element-request-fullscreen-options.tentative.html>. > We aim to extend test coverage and support for multi-screen mocking < > https://crbug.com/1252062> and cross-screen window placement tests < > https://crbug.com/1022988> soon. > > Flag name > > chrome://flags#enable-experimental-web-platform-features enables the > WindowPlacement RuntimeEnabled feature flag ( > --enable-blink-features=WindowPlacement) > > Requires code in //chrome? > > Not really - Some relevant test, permission, and pre-existing windowing > code lives in //chrome. > > Tracking bug > > https://bugs.chromium.org/p/chromium/issues/detail?id=897300 > > Launch bug > > https://bugs.chromium.org/p/chromium/issues/detail?id=1255960 > > Measurement > > > https://chromestatus.com/metrics/feature/popularity#V8Window_GetScreenDetails_Method > > Sample links > > https://michaelwasserman.github.io/window-placement-demo/ > > https://web.dev/multi-screen-window-placement/#demo > > Estimated milestones > > OriginTrial desktop last > > 96 > > OriginTrial desktop first > > 93 > > DevTrial on desktop > > 93 > > Link to entry on the Chrome Platform Status > > https://chromestatus.com/feature/5252960583942144 > > Links to previous Intent discussions > > Intent to Prototype: < > https://groups.google.com/a/chromium.org/g/blink-dev/c/X6rEbWvU7cI> > > Intent to Experiment: (OT1) < > https://groups.google.com/a/chromium.org/g/blink-dev/c/C6xw8i1ZIdE> > > Intent to Experiment: (OT2) < > https://groups.google.com/a/chromium.org/g/blink-dev/c/jznxQK1U8ZQ> > > > This intent message was generated by Chrome Platform Status > <https://chromestatus.com/>. > > -- > You received this message because you are subscribed to the Google Groups > "blink-dev" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to blink-dev+unsubscr...@chromium.org. > To view this discussion on the web visit > https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAEsbcpUThcD2OSgoebUZuXSevjwBGV0r8Kw3SDrCXGjtB6kx-w%40mail.gmail.com > <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAEsbcpUThcD2OSgoebUZuXSevjwBGV0r8Kw3SDrCXGjtB6kx-w%40mail.gmail.com?utm_medium=email&utm_source=footer> > . > -- You received this message because you are subscribed to the Google Groups "blink-dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+unsubscr...@chromium.org. To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAJL3UpQAzERT9rpCw2PN2ciFOQM9ZHmniuR5qVzG3WpEO8tc%3DQ%40mail.gmail.com.