Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Early design review of the **updated** Multi-Screen Window Placement API #602

Closed
1 task done
Tracked by #110
michaelwasserman opened this issue Jan 26, 2021 · 16 comments
Closed
1 task done
Tracked by #110
Assignees
Labels
chromium-high-priority Something that the Chromium team would like the TAG to prioritise Missing: Multi-stakeholder support Lack of multi-stakeholder support Progress: pending editor update TAG is waiting for a spec/explainer update Resolution: satisfied with concerns The TAG is satisfied with this work overall but requires changes Review type: CG early review An early review of general direction from a Community Group Venue: Second Screen CG

Comments

@michaelwasserman
Copy link

michaelwasserman commented Jan 26, 2021

HIQaH! QaH! TAG!

I'm requesting a TAG review of the updated Multi-Screen Window Placement API.

This proposal introduces incremental improvements to existing screen information and window placement APIs, allowing web applications to be intentional about the experiences they offer to users of multi-screen devices. The API shape has been updated since our last TAG review with feedback from partners and web platform API experts (example).

Further details:

We'd prefer the TAG provide feedback as (please delete all but the desired option):
💬 leave review feedback as a comment in this issue and @-notify @michaelwasserman

Thank you!

@michaelwasserman michaelwasserman added Progress: untriaged Review type: CG early review An early review of general direction from a Community Group labels Jan 26, 2021
@tomayac
Copy link

tomayac commented Jan 27, 2021

@michaelwasserman
Copy link
Author

Thanks for catching that, @tomayac! I updated the initial comment above.

@kenchris
Copy link

kenchris commented Mar 8, 2021

I find Promise<Screens> getScreens(); a bit confusing due to .screens property. It can lead devs to write code like

screens.screens.length and even the examples use screensInterface.screens.length in order to avoid saying screens twice. Maybe we should just call it ScreenInfo or similar, like Promise<ScreenInfo> getScreens() - naming is hard.

I was also thinking about something like "ScreenDevices", but I still hope we can find a better name

@torgo torgo added the Missing: Multi-stakeholder support Lack of multi-stakeholder support label Mar 8, 2021
@plinss
Copy link
Member

plinss commented Mar 8, 2021

I'm wondering if it would help developer ergonomics to also allow an optional screen argument to the Window.moveTo() method, which if passed, makes the x, y coordinates relative to the passed screen. If added, a similar mechanism should be added to Window.open() (perhaps changing the features argument from a string to an object).

@quisquous
Copy link

I find Promise<Screens> getScreens(); a bit confusing due to .screens property.

We have that filed on w3c/window-management#50 as a place to discuss. As you say, naming is really hard. I don't think anybody has come up with a better name yet and so we've been punting on that so far.

I'm wondering if it would help developer ergonomics to also allow an optional screen argument to the Window.moveTo() method, which if passed, makes the x, y coordinates relative to the passed screen. If added, a similar mechanism should be added to Window.open() (perhaps changing the features argument from a string to an object).

I worry that it might be confusing to have the coordinates change their semantics if an optional third parameter is present. I wonder if it might be better to pick one of (a) x and y are relative with optional screen or (b) x and y are absolute, no screen parameter.

@torgo
Copy link
Member

torgo commented May 12, 2021

@michaelwasserman Just reviewing this in the context of our virtual f2f. Appreciate what you've written here about fingerprinting mitigation.

@michaelwasserman
Copy link
Author

Thanks for the comments and feedback, @kenchris, @plinss, and @torgo. Thanks for the reply, @quisquous.

@kenchris: we're open to naming feedback on w3c/window-management#50 and I added a comment there, but we haven't necessarily found a more compelling pattern than our current proposal.

@plinss: I hope we'll continue improving the state of window placement on the web with future proposals, perhaps with something akin to your suggestion, and nothing in this proposal precludes such future work. Perhaps developer ergonomics would be served best by moving away from disparate moveTo(), resizeTo(), etc. functions, and adding a new function that can set a bounds rectangle, and potentially related window placement state (e.g. maximized/zoomed, left-/right-snapped, etc.) in a single request. That could support either global cross-screen coordinates and/or screen-relative coordinates (with an optional screen parameter, or a default assumption of relative placement within the current screen). There's a lot to consider, and this proposal aims to start small, but I have some thoughts in the repo's additional_explorations.md and aim to continue exploring.

Is there any other feedback from TAG members that we can consider during this early design review? Thanks again!

@torgo torgo added chromium-high-priority Something that the Chromium team would like the TAG to prioritise Progress: propose closing we think it should be closed but are waiting on some feedback or consensus labels Aug 26, 2021
@atanassov
Copy link

@kenchris and I did another pass at this review during our Gethen vf2f. Thank you for addressing our earlier feedback about API naming and developer ergonomics. In particular we prefer the getScreenDetails name over getScreens especially in combination of getScreenDetails().screens. Further, the detailed exploration document you linked to goes into great details on how to make the API better and since this is an early design review we hope this will be taken into consideration for the final API shape.

At this point we are happy to close the review as satisfied and look forward to the progress you'll make. Thank you and good luck.

@torgo torgo added this to the 2022-06-06-week milestone Jun 4, 2022
@torgo
Copy link
Member

torgo commented Jun 13, 2022

@michaelwasserman when we closed this issue last year we indicated a concern related to multi-stakeholder. I note that the API is still being developed in the Second Screen Community group and Chrome Status does not list any other engine that has expressed interest. Has this moved in any way towards the Second Screen working group and has there been any interest expressed by other implementers?

@torgo torgo self-assigned this Jun 13, 2022
@atanassov
Copy link

One more question is about security and privacy - I can't find a relevant write up about it and was wondering if you're assumption is that the current questionnaire answers cover the newly added functionality too?

@michaelwasserman
Copy link
Author

Thanks for these inquiries!

@torgo: The API was adopted as a Second Screen Working Group deliverable, see the latest charter and CfC to publish a FPWD. We are getting valuable feedback from Mozilla, which just continued at a recent SS WG vF2F, but have no explicit positive signals from another implementer.

@atanassov: The proposal includes mitigations to limit the potential for accidental misuse or abuse. The spec was recently updated per Mozilla's enhancement feedback, to clarify Security Considerations around deceptive cross-screen placement. The API's questionnaire generally covers this minor enhancement, but the Spec and Explainer more directly address the pertinent considerations of this change.

@atanassov
Copy link

Hi @michaelwasserman@torgo and I are just reviewing this at our f2f. It looks like the issue raised by @annevk hasn't been adequately addressed. That seems to be a pretty common use case (where a malicious site might seek to take over a display and mimic the user's OS (or similar) in order to steal credentials. Also as we've been reviewing it seems to us like this is more than a small enhancement. This proposal extends several technologies that are not part of multiscreen: user activation, Element.requestFullScreen and window.open. Since the scope is a bit wider than a small enhancement on an existing API. Can we ask that you to fork the topic and file a new design review request for this?

@torgo torgo added the Progress: pending editor update TAG is waiting for a spec/explainer update label Aug 29, 2022
@torgo
Copy link
Member

torgo commented Aug 29, 2022

Just marking this as pending editor update for now - we will close when additional issues have been filed.

@michaelwasserman
Copy link
Author

Thank you, @atanassov and @torgo! Please see the newly opened TAG review request and the Explainer's new Security Considerations, which documents and attempts to address the concerns raisied by @annevk; I also replied directly to that Mozilla standards-position thread. Thank you for your time and patience!

@torgo
Copy link
Member

torgo commented Nov 28, 2022

We're closing this as the review has moved to #767.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
chromium-high-priority Something that the Chromium team would like the TAG to prioritise Missing: Multi-stakeholder support Lack of multi-stakeholder support Progress: pending editor update TAG is waiting for a spec/explainer update Resolution: satisfied with concerns The TAG is satisfied with this work overall but requires changes Review type: CG early review An early review of general direction from a Community Group Venue: Second Screen CG
Projects
None yet
Development

No branches or pull requests

8 participants