Navigation Menu

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

Window Placement: Implement Screens and ScreenAdvanced interfaces #27581

Merged
merged 1 commit into from Feb 27, 2021

Conversation

chromium-wpt-export-bot
Copy link
Collaborator

@chromium-wpt-export-bot chromium-wpt-export-bot commented Feb 10, 2021

This CL makes the following changes for a planned API redesign:
docs.google.com/document/d/1lgCentReLlym6j9kBS_Qo3r2HHZ6Ov7cSGjSWyi8cYs

  1. Add Screens interface to vend multi-screen info for windowing.
  • RuntimeEnabled and permission-gated; designed like window.screen.
  1. Add ScreenAdvanced interface, to extend Screen with extra info.
  • Make Screen impl non-final; override functions in ScreenAdvanced.
  1. Add WindowScreens supplement, to host Window.getScreens().
  • Rename the previous API access point to getScreensDeprecated().
  1. Add ScreenInfo::is_primary & is_internal to expose in ScreenAdvanced.
  • Add ScreenInfo::display_id for internal logic, it is not web-exposed.
  1. Propagate multi-screen VisualProperties from browser to renderers:
  • Replace the singular ScreenInfo member with a new ScreenInfos struct.
  • Encapsulates multi-screen information and a current screen id.
  • Add [mutable_]current() for easy/legacy access to the current screen.
  • Validate mojo struct traits in [de]serialization; add tests.
  1. Update WidgetBase, ChromeClient, tests, and more code accordingly.
  • Update RenderWidgetHostViewMac's cached display::Display on changes.
  • Add CoreInitializer plumbing to fire Screens.change in modules/.

FOLLOWUP: Refine Screens::ScreenInfosChanged implementation.
FOLLOWUP: Propagate multi-screen info to RemoteFrames.
FOLLOWUP: Update/add tests; remove old API and plumbing.
FOLLOWUP: Add WindowScreens PermissionObserver & set_disconnect_handler?
FOLLOWUP: Use WebContentsImpl's NativeView in RWHI::GetScreenInfo?

Bug: 897300, 1116528, 1138596, 1169312, 1116528, 1179876, 1179945
Test: New API roughly WAI w/ --enable-blink-features=WindowPlacement
Change-Id: I1d67cfabda62796274992e3e650d5209dd7bb857
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2669359
Commit-Queue: Michael Wasserman <msw@chromium.org>
Reviewed-by: John Abd-El-Malek <jam@chromium.org>
Reviewed-by: danakj <danakj@chromium.org>
Reviewed-by: Daniel Cheng <dcheng@chromium.org>
Reviewed-by: Victor Costan <pwnall@chromium.org>
Cr-Commit-Position: refs/heads/master@{#858379}

Copy link
Collaborator

@wpt-pr-bot wpt-pr-bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The review process for this patch is being conducted in the Chromium project.

@chromium-wpt-export-bot chromium-wpt-export-bot force-pushed the chromium-export-cl-2669359 branch 6 times, most recently from 4021ce1 to ea82905 Compare February 18, 2021 07:21
@chromium-wpt-export-bot chromium-wpt-export-bot force-pushed the chromium-export-cl-2669359 branch 17 times, most recently from 81c1b0e to 8e4cc2a Compare February 25, 2021 12:47
@chromium-wpt-export-bot chromium-wpt-export-bot force-pushed the chromium-export-cl-2669359 branch 3 times, most recently from 5a992d1 to 1db47fc Compare February 26, 2021 01:42
@chromium-wpt-export-bot chromium-wpt-export-bot force-pushed the chromium-export-cl-2669359 branch 5 times, most recently from 49f83fa to 5f2b0c0 Compare February 26, 2021 23:43
This CL makes the following changes for a planned API redesign:
docs.google.com/document/d/1lgCentReLlym6j9kBS_Qo3r2HHZ6Ov7cSGjSWyi8cYs

1) Add Screens interface to vend multi-screen info for windowing.
- RuntimeEnabled and permission-gated; designed like window.screen.

2) Add ScreenAdvanced interface, to extend Screen with extra info.
- Make Screen impl non-final; override functions in ScreenAdvanced.

3) Add WindowScreens supplement, to host Window.getScreens().
- Rename the previous API access point to getScreensDeprecated().

4) Add ScreenInfo::is_primary & is_internal to expose in ScreenAdvanced.
- Add ScreenInfo::display_id for internal logic, it is not web-exposed.

5) Propagate multi-screen VisualProperties from browser to renderers:
- Replace the singular ScreenInfo member with a new ScreenInfos struct.
- Encapsulates multi-screen information and a current screen id.
- Add [mutable_]current() for easy/legacy access to the current screen.
- Validate mojo struct traits in [de]serialization; add tests.

6) Update WidgetBase, ChromeClient, tests, and more code accordingly.
- Update RenderWidgetHostViewMac's cached display::Display on changes.
- Add CoreInitializer plumbing to fire Screens.change in modules/.

FOLLOWUP: Refine Screens::ScreenInfosChanged implementation.
FOLLOWUP: Propagate multi-screen info to RemoteFrames.
FOLLOWUP: Update/add tests; remove old API and plumbing.
FOLLOWUP: Add WindowScreens PermissionObserver & set_disconnect_handler?
FOLLOWUP: Use WebContentsImpl's NativeView in RWHI::GetScreenInfo?

Bug: 897300, 1116528, 1138596, 1169312, 1116528, 1179876, 1179945
Test: New API roughly WAI w/ --enable-blink-features=WindowPlacement
Change-Id: I1d67cfabda62796274992e3e650d5209dd7bb857
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2669359
Commit-Queue: Michael Wasserman <msw@chromium.org>
Reviewed-by: John Abd-El-Malek <jam@chromium.org>
Reviewed-by: danakj <danakj@chromium.org>
Reviewed-by: Daniel Cheng <dcheng@chromium.org>
Reviewed-by: Victor Costan <pwnall@chromium.org>
Cr-Commit-Position: refs/heads/master@{#858379}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants