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

Multiple concurrent top-level browsing contexts #30648

Closed
wants to merge 54 commits into from

Conversation

delan
Copy link
Member

@delan delan commented Oct 30, 2023

This patch improves support for multiple top-level browsing contexts aka “webviews”.

We add several messages that allow the embedder to show, hide, move, and resize webviews in the compositor, focus and unfocus webviews in the constellation, and notify the embedder when painting order and focus changes.

These changes can be used to create a multiple-document interface, like we do in #30785.

Parts of this patch have been broken out into:

Original todo list
  • painting
    • egui then servo, naïve
    • egui then servo or servo then egui, with stencil — may need egui and webrender modifications
    • interleave egui and servo
    • future: separate webrender documents and partial present?
  • rework:
    • IOCompositor.root_content_pipeline
    • Constellation.active_browser_id
    • servoshell Browser.browser_id
    • {EmbedderEvent,ConstellationMsg}::ChangeBrowserVisibility
    • use FramebufferPixel in EmbedderCoordinates for flipped coordinates
  • fix navigating tlbcs other than the tlbc most recently opened
  • independent tlbc:
    • show, hide, raise to top
    • focus, unfocus
    • viewport size
    • viewport location
  • closing a tlbc:
    • update IOCompositor.root_content_pipelines
    • update IOCompositor.pipeline_details
    • focus next-most-recently-focused browser
  • on click (servoshell):
    • focus tlbc
    • raise tlbc to top
  • notify the embedder:
    • when a tlbc is focused
    • when a tlbc is unfocused
    • when the painting order changes
  • figure out what to do about handle_is_ready_to_save_image
  • fix closing initial tlbc after navigation (other tlbcs are ok)
    • this is because is_script_closable is false for same-origin popups
    • same behaviour on main branch
  • fix compositor target under --no-minibrowser

The current design of this feature, after being split and reviewed, is as follows.

limitations

  • desktop-style page zoom is still global
  • browsers with transparent or translucent content will misbehave
  • sending ShowWebView and HideWebView for one webview at a time can be inefficient
  • if too many webviews are shown at once, the compositor can get stuck in a laggy state with pending epoch warnings (to reproduce, try #31545 with 4.html and click “_blank” six or seven times)

compositor (#31417)

  • WebViewManager (new) manages webview-related storage and painting order
    • it allows the compositor to store arbitrary data for each webview id
    • it keeps track of which webviews are visible, and what order to paint them in
  • we now use the iframe-in-dummy-root-pipeline technique to composite the webviews together, not just when we have a non-unity pinch zoom

constellation

  • WebViewManager (new) manages webview-related storage and focus order
    • it allows the constellation to store arbitrary data for each webview id
    • it keeps track of which webview is focused, or whether no webview is focused
    • it can refocus the last-focused webview when a webview is removed (currently unused)
  • we now send WebViewClosed directly when a webview is closed rather than relying on script to do it, so that the event gets sent even if the webview was not closed by script

servoshell (#31417)

  • WebViewManager (was WebView) keeps a copy of the webview rects, focus, and painting order
  • but for now, we always focus and show the newest webview only

messages

embedder → compositor (no ipc) (#31417)

  • WindowResize (was Resize) no longer affects the viewport of individual webviews
  • Zoom (existing) no longer affects the viewport of individual webviews
  • ResetZoom (existing) no longer affects the viewport of individual webviews
  • MoveResizeWebView (new) updates a webview’s rect, and sends new viewport to script in descendant pipelines
  • ShowWebView (new) adds a webview to painting order, and notifies embedder of the new painting order
  • HideWebView (new) removes a webview from painting order, and notifies embedder of the new painting order
  • RaiseWebViewToTop (new) moves a webview to the top of the painting order, and notifies embedder accordingly

embedder →* constellation

  • FocusWebView (new) makes a webview focused for keyboard events (#30842)
  • BlurWebView (new) makes no webview focused for keyboard events (#30842)
  • ForwardEvent (existing) also notifies embedder when an event was hit-tested to a webview (#30841)
  • SetWebViewThrottled (was WindowVisibility) has been reworked to be less confusing (#31815, #31816)

constellation → compositor (#31417)

  • CreateOrUpdateWebView (was SetFrameTree) now adds or updates a webview without clobbering others
  • RemoveWebView (new) removes a webview from .webviews and .pipeline_details
  • MoveResizeWebView (new) updates a webview’s rect, and sends new viewport to script in descendant pipelines
  • ShowWebView (new) adds a webview to painting order, and notifies embedder of the new painting order
  • HideWebView (new) removes a webview from painting order, and notifies embedder of the new painting order
  • RaiseWebViewToTop (new) moves a webview to the top of the painting order, and notifies embedder accordingly

embedder ← constellation ←* compositor

  • ReadyToPresent (existing) now takes a vec of the ids of all visible webviews in painting order (#31417)

embedder ← constellation

  • AllowOpeningWebview (was AllowOpeningBrowser) behaves as before (#30842)
  • WebViewOpened (was BrowserCreated) notifies embedder that a webview was opened (#30842)
  • WebViewClosed (was CloseBrowser) notifies embedder that a webview was closed (#30842)
  • WebViewFocused (new) notifies embedder that a webview gained focus for keyboard events (#30842)
  • WebViewUnfocused (new) notifies embedder that all webviews lost focus for keyboard events (#30842)
  • EventDelivered (new) notifies embedder that an event was hit-tested to a webview (#30841)

* all of these are in the same enum ConstellationMsg (components/shared/compositing/constellation_msg.rs), which is a very confusing design that conflates the embedder with the compositor


  • ./mach build -d does not report any errors
  • ./mach test-tidy does not report any errors
  • These changes are related to [meta] embedding #30593
  • There are tests for these changes OR
  • These changes do not require tests because ___

@delan delan mentioned this pull request Oct 31, 2023
39 tasks
Copy link

Test results for linux-wpt-layout-2020 from try job (#7003796344):

Flaky unexpected result (19)
  • FAIL [expected PASS] /_mozilla/css/case-insensitive-font-family.html
  • TIMEOUT [expected OK] /_webgl/conformance/uniforms/out-of-bounds-uniform-array-access.html (#26225)
    • NOTRUN [expected PASS] subtest: Overall test
  • FAIL [expected PASS] /css/CSS2/borders/border-bottom-color-applies-to-001.xht
  • TIMEOUT [expected FAIL] /css/compositing/mix-blend-mode/mix-blend-mode-animation.html (#21930)
  • OK /css/cssom-view/MediaQueryList-addListener-handleEvent.html (#24571)
    • FAIL [expected PASS] subtest: looks up handleEvent method on every event dispatch assert_equals: expected 2 but got 1
  • TIMEOUT /fetch/metadata/generated/element-img-environment-change.sub.html (#30111)
    • FAIL [expected PASS] subtest: sec-fetch-site - Not sent to non-trustworthy same-origin destination, no attributes promise_test: Unhandled rejection with value: object "Error: Failed to query for recorded headers."
  • OK /html/browsers/browsing-the-web/navigating-across-documents/empty-iframe-load-event.html (#29066)
    • FAIL [expected PASS] subtest: Check execution order from nested timeout assert_equals: Expected nested setTimeout to run second expected true but got false
    • FAIL [expected PASS] subtest: Check execution order on load handler assert_equals: Expected onload to run first expected false but got true
  • OK /html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-iframe-contentWindow.html (#28681)
    • PASS [expected FAIL] subtest: load & pageshow events do not fire on contentWindow of <iframe> element created with src=''
    • PASS [expected FAIL] subtest: load & pageshow events do not fire on contentWindow of <iframe> element created with src='about:blank'
  • OK /html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-window-open.html (#28691)
    • PASS [expected FAIL] subtest: load event does not fire on window.open('about:blank')
  • OK [expected TIMEOUT] /html/browsers/browsing-the-web/navigating-across-documents/javascript-url-referrer.window.html (#29081)
    • PASS [expected TIMEOUT] subtest: no-referrer referrer policy used to create the starting page
  • OK /html/browsers/browsing-the-web/navigating-across-documents/javascript-url-return-value-handling-dynamic.html (#28066)
    • PASS [expected FAIL] subtest: 0080 00FF set in href="" targeting a frame and clicked
    • PASS [expected FAIL] subtest: 0080 00FF 0100 set in href="" targeting a frame and clicked
  • OK /html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin.window.html (#29049)
    • PASS [expected FAIL] subtest: Same-origin navigation started from unload handler must be ignored
  • OK /html/browsers/history/the-history-interface/traverse_the_history_5.html (#21383)
    • PASS [expected FAIL] subtest: Multiple history traversals, last would be aborted
  • TIMEOUT [expected OK] /html/semantics/embedded-content/the-iframe-element/sandbox-top-navigation-child.tentative.sub.window.html
  • TIMEOUT [expected OK] /html/semantics/embedded-content/the-iframe-element/sandbox-top-navigation-grandchild.tentative.sub.window.html
  • OK /html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-width-1000px.html (#21666)
    • PASS [expected FAIL] subtest: <img srcset="/images/green-1x1.png?e38 50w, /images/green-16x16.png?e38 51w" sizes="(min-width:calc(0)) 1px"> ref sizes="1px" (width:1000px)
  • OK [expected ERROR] /html/semantics/scripting-1/the-script-element/defer-script/async-script.html?reload (#29054)
  • TIMEOUT [expected OK] /html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry.html (#25805)
    • TIMEOUT [expected FAIL] subtest: Fulfillment handler on pending-then-fulfilled promise Test timed out
    • TIMEOUT [expected FAIL] subtest: Rejection handler on pending-then-rejected promise Test timed out
  • OK [expected TIMEOUT] /webmessaging/with-ports/018.html (#24485)
    • PASS [expected TIMEOUT] subtest: origin of the script that invoked the method, javascript:
Stable unexpected results that are known to be intermittent (23)
  • TIMEOUT [expected OK] /_webgl/conformance/glsl/misc/shader-uniform-packing-restrictions.html (#28103)
    • NOTRUN [expected PASS] subtest: Overall test
  • TIMEOUT [expected OK] /_webgl/conformance/glsl/misc/shader-with-non-reserved-words.html (#16216)
    • NOTRUN [expected PASS] subtest: Overall test
  • OK /css/css-fonts/variations/at-font-face-font-matching.html (#20684)
    • FAIL [expected PASS] subtest: Matching font-weight: '430' should prefer '420 440' over '450 460' assert_equals: Unexpected font on test element expected 487 but got 532
    • FAIL [expected PASS] subtest: Matching font-weight: '500' should prefer '500' over '450 460' assert_equals: Unexpected font on test element expected 487 but got 532
    • FAIL [expected PASS] subtest: Matching font-weight: '500' should prefer '400' over '350 399' assert_equals: Unexpected font on test element expected 487 but got 532
    • PASS [expected FAIL] subtest: Matching font-weight: '501' should prefer '501' over '502 510'
    • FAIL [expected PASS] subtest: Matching font-weight: '501' should prefer '502 510' over '503 520' assert_equals: Unexpected font on test element expected 487 but got 532
    • FAIL [expected PASS] subtest: Matching font-weight: '501' should prefer '500' over '450 460' assert_equals: Unexpected font on test element expected 487 but got 532
    • PASS [expected FAIL] subtest: Matching font-weight: '399' should prefer '500 501' over '502 510'
    • PASS [expected FAIL] subtest: Matching font-stretch: '100%' should prefer '100%' over '110% 120%'
    • PASS [expected FAIL] subtest: Matching font-stretch: '90%' should prefer '90% 100%' over '50% 80%'
    • FAIL [expected PASS] subtest: Matching font-stretch: '90%' should prefer '110% 140%' over '120% 130%' assert_equals: Unexpected font on test element expected 487 but got 532
    • And 14 more unexpected results...
  • PASS [expected TIMEOUT] /css/css-transitions/render-blocking/no-transition-from-ua-to-blocking-stylesheet.html (#29187)
  • OK /css/cssom-view/MediaQueryList-addListener-removeListener.html (#24569)
    • FAIL [expected PASS] subtest: listeners are called correct number of times assert_equals: expected 8 but got 7
  • OK [expected TIMEOUT] /html/browsers/browsing-the-web/history-traversal/srcdoc/consecutive-srcdoc.html (#29084)
    • FAIL [expected TIMEOUT] subtest: changing srcdoc to about:srcdoc#yo then another srcdoc does two push navigations and we can navigate back promise_test: Unhandled rejection with value: object "TypeError: iframe is null"
  • OK /html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-cross-origin.sub.window.html (#29056)
    • FAIL [expected PASS] subtest: Cross-origin navigation started from unload handler must be ignored promise_test: Unhandled rejection with value: object "SecurityError: The operation is insecure."
  • OK /html/browsers/the-window-object/open-close/creating_browsing_context_test_01.html (#29046)
    • PASS [expected FAIL] subtest: first argument: absolute url
  • CRASH [expected TIMEOUT] /html/browsers/windows/embedded-opener-remove-frame.html (#23867)
  • OK [expected TIMEOUT] /html/canvas/element/pixel-manipulation/2d.imageData.get.large.crash.html (#29086)
  • CRASH [expected OK] /html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html (#22154)
  • OK /html/semantics/embedded-content/the-img-element/non-active-document.html (#21544)
    • PASS [expected FAIL] subtest: createHTMLDocument
    • PASS [expected FAIL] subtest: <template>
  • OK [expected TIMEOUT] /html/semantics/forms/form-submission-0/reparent-form-during-planned-navigation-task.html (#29724)
    • PASS [expected TIMEOUT] subtest: reparent-form-during-planned-navigation-task
  • OK /html/semantics/forms/form-submission-0/text-plain.window.html (#28687)
    • FAIL [expected PASS] subtest: text/plain: 0x00 in value (normal form) assert_equals: expected "a=b\0c\r\n" but got ""
    • PASS [expected FAIL] subtest: text/plain: \n in name (normal form)
  • OK /html/semantics/forms/form-submission-0/urlencoded2.window.html (#28687)
    • FAIL [expected PASS] subtest: application/x-www-form-urlencoded: single quote in name (normal form) assert_equals: expected "a%27b=c" but got ""
  • TIMEOUT [expected OK] /html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_noopener.html (#23205)
    • NOTRUN [expected FAIL] subtest: Check that rel=noopener with target=_self does a normal load
    • NOTRUN [expected FAIL] subtest: Check that rel=noopener with target=_parent does a normal load
    • NOTRUN [expected FAIL] subtest: Check that rel=noopener with target=_top does a normal load
  • OK /html/semantics/scripting-1/the-script-element/execution-timing/077.html (#22139)
    • PASS [expected FAIL] subtest: adding several types of scripts through the DOM and removing some of them confuses scheduler
  • OK /html/webappapis/dynamic-markup-insertion/document-write/module-delayed.html (#27659)
    • FAIL [expected PASS] subtest: async document.write in a module assert_true: onload must be called expected true got false
  • TIMEOUT [expected OK] /webaudio/the-audio-api/the-audiocontext-interface/audiocontext-not-fully-active.html (#27664)
  • TIMEOUT [expected OK] /webmessaging/with-ports/017.html (#24486)
    • TIMEOUT [expected PASS] subtest: origin of the script that invoked the method, about:blank Test timed out
  • OK [expected TIMEOUT] /webmessaging/without-ports/018.html (#24485)
    • PASS [expected TIMEOUT] subtest: origin of the script that invoked the method, javascript:
  • ERROR [expected OK] /workers/constructors/Worker/Worker-constructor.html (#22991)
  • OK /workers/dedicated-worker-from-blob-url.window.html (#22286)
    • FAIL [expected PASS] subtest: Creating a dedicated worker from a blob URL works immediately before revoking. promise_test: Unhandled rejection with value: object "[object Event]"
Stable unexpected results (3)
  • FAIL [expected PASS] /_mozilla/css/pixel_snapping_position_a.html
  • PASS [expected FAIL] /css/css-transforms/transform-percent-008.html
  • TIMEOUT [expected OK] /html/semantics/embedded-content/the-iframe-element/sandbox-top-navigation-escalate-privileges.tentative.sub.window.html

Copy link

Test results for linux-wpt-layout-2013 from try job (#7003796344):

Flaky unexpected result (72)
  • FAIL [expected PASS] /_mozilla/css/legacy_table_border_attribute_a.html
  • CRASH [expected PASS] /_mozilla/mozilla/worklets/test_paint_worklet_timeout.html
  • CRASH [expected PASS] /_webgl/conformance/glsl/bugs/long-expressions-should-not-crash.html (#19221)
  • TIMEOUT [expected OK] /_webgl/conformance/glsl/misc/shader-with-non-reserved-words.html (#16216)
    • NOTRUN [expected PASS] subtest: Overall test
  • TIMEOUT [expected OK] /_webgl/conformance/uniforms/out-of-bounds-uniform-array-access.html (#26225)
    • NOTRUN [expected PASS] subtest: Overall test
  • FAIL [expected PASS] /css/CSS2/borders/border-bottom-color-079.xht
  • FAIL [expected PASS] /css/CSS2/borders/border-left-color-108.xht
  • FAIL [expected PASS] /css/CSS2/borders/border-top-color-004.xht
  • FAIL [expected PASS] /css/CSS2/borders/border-top-color-062.xht
  • FAIL [expected PASS] /css/CSS2/box/ltr-ib.xht
  • FAIL [expected PASS] /css/CSS2/cascade-import/cascade-import-dynamic-003.xht
  • FAIL [expected PASS] /css/CSS2/css1/c414-flt-fit-004.xht
  • FAIL [expected PASS] /css/CSS2/floats-clear/clear-on-child-with-margins-2.html
  • FAIL [expected PASS] /css/CSS2/floats-clear/float-applies-to-004.xht
  • FAIL [expected PASS] /css/CSS2/fonts/font-variant-applies-to-007.xht
  • FAIL [expected PASS] /css/CSS2/fonts/font-variant-applies-to-014.xht
  • FAIL [expected PASS] /css/CSS2/fonts/font-variant-applies-to-015.xht
  • FAIL [expected PASS] /css/CSS2/linebox/line-height-081.xht
  • FAIL [expected PASS] /css/CSS2/linebox/line-height-103.xht
  • FAIL [expected PASS] /css/CSS2/lists/list-style-type-applies-to-007.xht
  • FAIL [expected PASS] /css/CSS2/margin-padding-clear/margin-collapse-116.xht
  • FAIL [expected PASS] /css/CSS2/margin-padding-clear/margin-left-032.xht
  • FAIL [expected PASS] /css/CSS2/margin-padding-clear/margin-top-applies-to-014.xht
  • FAIL [expected PASS] /css/CSS2/margin-padding-clear/padding-right-026.xht
  • FAIL [expected PASS] /css/CSS2/margin-padding-clear/padding-right-applies-to-015.xht
  • FAIL [expected PASS] /css/CSS2/margin-padding-clear/padding-top-applies-to-012.xht
  • FAIL [expected PASS] /css/CSS2/margin-padding-clear/padding-top-applies-to-013.xht
  • FAIL [expected PASS] /css/CSS2/normal-flow/max-height-104.xht
  • FAIL [expected PASS] /css/CSS2/positioning/absolute-non-replaced-height-010.xht
  • FAIL [expected PASS] /css/CSS2/positioning/abspos-inline-008.xht
  • FAIL [expected PASS] /css/CSS2/positioning/top-030.xht
  • FAIL [expected PASS] /css/CSS2/selectors/grouping-002.xht
  • FAIL [expected PASS] /css/CSS2/syntax/counters-001.xht
  • FAIL [expected PASS] /css/CSS2/text/text-decoration-applies-to-005.xht
  • FAIL [expected PASS] /css/CSS2/ui/outline-color-072.xht
  • FAIL [expected PASS] /css/CSS2/ui/outline-color-112.xht
  • FAIL [expected PASS] /css/CSS2/visuren/remove-from-split-inline-4.html
  • FAIL [expected PASS] /css/css-backgrounds/background-size-011.html
  • FAIL [expected PASS] /css/css-backgrounds/border-image-slice-001.xht
  • FAIL [expected PASS] /css/css-flexbox/abspos/position-absolute-009.html
  • FAIL [expected PASS] /css/css-flexbox/align-self-005.html
  • FAIL [expected PASS] /css/css-flexbox/dynamic-change-simplified-layout-002.html
  • FAIL [expected PASS] /css/css-flexbox/flex-basis-006.html
  • FAIL [expected PASS] /css/css-flexbox/flex-grow-002.html
  • FAIL [expected PASS] /css/css-flexbox/flexbox_flex-N-1-Npercent-shrink.html
  • FAIL [expected PASS] /css/css-flexbox/flexbox_item-float.html
  • OK /css/css-flexbox/text-as-flexitem-size-001.html (#28726)
    • FAIL [expected PASS] subtest: .flexbox > div 1 assert_equals:
      <div data-expected-width="70" data-expected-height="35">
      <p>xx xxx</p>
      <p>xx</p>
      </div>
      width expected 70 but got 46
    • FAIL [expected PASS] subtest: .flexbox > div 2 assert_equals:
      <div data-expected-width="50" data-expected-height="45">
      <p>xx xxx</p>
      <p>xx</p>
      </div>
      width expected 50 but got 46
    • FAIL [expected PASS] subtest: .flexbox > div 5 assert_equals:
      <div style="height: 30px" data-expected-width="70" data-expected-height="30">
      <p>xx xxx</p>
      <p>xx</p>
      </div>
      width expected 70 but got 46
    • FAIL [expected PASS] subtest: .flexbox > div 8 assert_equals:
      <div style="min-height: 40px" data-expected-width="70" data-expected-height="40">
      <p>xx xxx</p>
      <p>xx</p>
      </div>
      width expected 70 but got 46
    • FAIL [expected PASS] subtest: .flexbox > div 11 assert_equals:
      <div style="max-height: 20px" data-expected-width="70" data-expected-height="20">
      <p>xx xxx</p>
      <p>xx</p>
      </div>
      width expected 70 but got 46
  • TIMEOUT [expected PASS] /css/css-fonts/font-size-adjust-reload.html (#30678)
  • FAIL [expected PASS] /css/css-masking/clip/clip-not-absolute-positioned-003.html
  • FAIL [expected PASS] /css/css-position/position-absolute-center-001.html
  • FAIL [expected PASS] /css/css-position/position-relative-014.html
  • FAIL [expected PASS] /css/css-text/white-space/white-space-vs-joiners-001.html
  • FAIL [expected PASS] /css/css-values/percentage-rem-low.html
  • OK /css/cssom-view/MediaQueryList-extends-EventTarget.html (#25269)
    • FAIL [expected PASS] subtest: addEventListener "once" option is respected assert_equals: expected 1 but got 0
  • FAIL [expected PASS] /css/mediaqueries/mq-gamut-003.html
  • FAIL [expected PASS] /css/selectors/nth-child-of-complex-selector-many-children-2.html
  • FAIL [expected PASS] /css/selectors/scope-without-scoping.html
  • CRASH [expected PASS] /encoding/streams/stringification-crash.html
  • OK /html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin.window.html (#29049)
    • FAIL [expected PASS] subtest: Same-origin navigation started from unload handler must be ignored assert_equals: expected "?pass" but got "?fail"
  • OK /html/browsers/history/the-history-interface/traverse_the_history_3.html (#21383)
    • PASS [expected FAIL] subtest: Multiple history traversals, last would be aborted
  • OK /html/browsers/history/the-history-interface/traverse_the_history_4.html (#21383)
    • PASS [expected FAIL] subtest: Multiple history traversals, last would be aborted
  • FAIL [expected PASS] /html/rendering/the-details-element/summary-display-grid.html
  • TIMEOUT [expected OK] /html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html (#22647)
    • TIMEOUT [expected FAIL] subtest: Check that popups from a sandboxed iframe escape the sandbox if
      allow-popups-to-escape-sandbox is used Test timed out
  • TIMEOUT [expected OK] /html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html (#22667)
    • TIMEOUT [expected FAIL] subtest: Check that popups from a sandboxed iframe escape the sandbox if
      allow-popups-to-escape-sandbox is used Test timed out
  • CRASH [expected OK] /html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html (#24057)
  • OK /html/semantics/embedded-content/the-img-element/non-active-document.html (#21544)
    • FAIL [expected PASS] subtest: createHTMLDocument assert_unreached: got unexpected error event Reached unreachable code
    • FAIL [expected PASS] subtest: <template> assert_unreached: got unexpected error event Reached unreachable code
  • ERROR /resource-timing/content-type-parsing.html (#29131)
    • TIMEOUT [expected FAIL] subtest: mime-type 16 : text/html;charset=�gbk Test timed out
    • NOTRUN [expected TIMEOUT] subtest: mime-type 17 : text/html;charset= gbk
  • CRASH [expected PASS] /streams/readable-streams/crashtests/strategy-worker-terminate.html (#30124)
  • OK [expected TIMEOUT] /webmessaging/with-ports/017.html (#24486)
    • PASS [expected TIMEOUT] subtest: origin of the script that invoked the method, about:blank
  • TIMEOUT [expected OK] /webmessaging/with-ports/018.html (#24485)
    • TIMEOUT [expected PASS] subtest: origin of the script that invoked the method, javascript: Test timed out
  • TIMEOUT [expected OK] /webmessaging/without-ports/017.html (#24486)
    • TIMEOUT [expected PASS] subtest: origin of the script that invoked the method, about:blank Test timed out
  • TIMEOUT [expected OK] /webstorage/localstorage-about-blank-3P-iframe-opens-3P-window.partitioned.tentative.html (#29053)
    • TIMEOUT [expected PASS] subtest: StorageKey: test 3P about:blank window opened from a 3P iframe Test timed out
Stable unexpected results that are known to be intermittent (14)
  • TIMEOUT [expected OK] /_webgl/conformance/glsl/misc/shader-uniform-packing-restrictions.html (#28103)
    • NOTRUN [expected PASS] subtest: Overall test
  • OK [expected TIMEOUT] /_webgl/conformance/reading/read-pixels-test.html (#28337)
    • PASS [expected NOTRUN] subtest: Overall test
  • OK /html/browsers/browsing-the-web/navigating-across-documents/replace-before-load/a-click.html (#28697)
  • CRASH [expected OK] /html/browsers/windows/embedded-opener-remove-frame.html (#23867)
  • OK [expected TIMEOUT] /html/canvas/element/pixel-manipulation/2d.imageData.get.large.crash.html (#29086)
    • FAIL [expected PASS] subtest: Test that canvas crash when image data cannot be allocated. assert_throws_js: function "function() { ctx.getImageData(10, 0xffffffff, 2147483647, 10); }" threw object "IndexSizeError: The index is not in the allowed range." ("IndexSizeError") expected instance of function "function TypeError() {
      [native code]
      }" ("TypeError")
  • CRASH [expected OK] /html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html (#22154)
  • TIMEOUT [expected OK] /html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html (#24066)
    • NOTRUN [expected FAIL] subtest: Check that popups from a sandboxed iframe do not escape the sandbox
  • OK [expected TIMEOUT] /html/semantics/forms/form-submission-0/reparent-form-during-planned-navigation-task.html (#29724)
    • PASS [expected TIMEOUT] subtest: reparent-form-during-planned-navigation-task
  • OK /html/semantics/forms/form-submission-0/text-plain.window.html (#28687)
    • FAIL [expected PASS] subtest: text/plain: \n in value (normal form) assert_equals: expected "a=b\r\nc\r\n" but got ""
  • OK /html/semantics/forms/form-submission-0/urlencoded2.window.html (#28687)
    • FAIL [expected PASS] subtest: application/x-www-form-urlencoded: double quote in name (normal form) assert_equals: expected "a%22b=c" but got ""
  • OK /html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_noopener.html (#23205)
    • FAIL [expected PASS] subtest: Check that rel=noopener with target=_self does a normal load this.openedWindow.findLink is not a function
  • OK /html/webappapis/dynamic-markup-insertion/document-write/module-static-import-delayed.html (#26243)
    • FAIL [expected PASS] subtest: document.write in an imported module assert_true: onload must be called expected true got false
  • OK [expected TIMEOUT] /html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.html (#26371)
    • FAIL [expected TIMEOUT] subtest: delayed handling: delaying handling rejected promise created from createImageBitmap will cause both events to fire assert_array_equals: expected property 0 to be "InvalidStateError" but got "NotSupportedError" (expected array ["InvalidStateError"] got ["NotSupportedError"])
  • TIMEOUT [expected OK] /webmessaging/without-ports/018.html (#24485)
    • TIMEOUT [expected PASS] subtest: origin of the script that invoked the method, javascript: Test timed out
Stable unexpected results (5)
  • FAIL [expected PASS] /_mozilla/css/pixel_snapping_position_a.html
  • FAIL [expected PASS] /css/css-backgrounds/background-clip-content-box-002.html
  • PASS [expected FAIL] /css/css-transforms/transform-percent-008.html
  • TIMEOUT [expected OK] /html/semantics/embedded-content/the-iframe-element/sandbox-top-navigation-escalate-privileges.tentative.sub.window.html
  • TIMEOUT [expected OK] /html/semantics/embedded-content/the-iframe-element/sandbox-top-navigation-grandchild.tentative.sub.window.html

Copy link

⚠️ Try run (#7003796344) failed.

@delan
Copy link
Member Author

delan commented Dec 6, 2023

  • /_mozilla/css/pixel_snapping_position_a.html is reproducible locally
    • but the test and match hashes are identical (2909abcd9e0b0c116b755850c498eb2d9dfeb9f9)
    • both hashes are also 2909abcd9e0b0c116b755850c498eb2d9dfeb9f9 on CI
  • /css/css-backgrounds/background-clip-content-box-002.html is not reproducible locally
    • the match was completely blank on CI, so this may be a new or existing flake
  • /css/css-transforms/transform-percent-008.html also unexpected-passes locally without this patch
  • /html/semantics/embedded-content/the-iframe-element/sandbox-top-navigation-escalate-privileges.tentative.sub.window.html is reproducible locally
  • /html/semantics/embedded-content/the-iframe-element/sandbox-top-navigation-grandchild.tentative.sub.window.html is reproducible locally
    • it only failed in layout 2020 on CI, but it failed on both locally
    • looks like a new flake caused by this patch

@delan delan added T-linux-wpt-2020 Do a try run of the WPT T-linux-wpt-2013 Do a try run of the WPT (legacy layout) labels Dec 6, 2023
@github-actions github-actions bot removed the T-linux-wpt-2020 Do a try run of the WPT label Dec 6, 2023
Copy link

github-actions bot commented Dec 6, 2023

🔨 Triggering try run (#7111636106) with platforms=linux and layout=2020

@github-actions github-actions bot removed the T-linux-wpt-2013 Do a try run of the WPT (legacy layout) label Dec 6, 2023
Copy link

github-actions bot commented Dec 6, 2023

🔨 Triggering try run (#7111636744) with platforms=linux and layout=2013

@delan
Copy link
Member Author

delan commented Dec 6, 2023

fixable by feature-gating behaviour changes in compositor:

  • /_mozilla/css/pixel_snapping_position_a.html
  • /html/semantics/embedded-content/the-iframe-element/sandbox-top-navigation-escalate-privileges.tentative.sub.window.html
  • /html/semantics/embedded-content/the-iframe-element/sandbox-top-navigation-grandchild.tentative.sub.window.html

Copy link

github-actions bot commented Dec 6, 2023

Test results for linux-wpt-layout-2013 from try job (#7111636744):

Flaky unexpected result (15)
  • TIMEOUT [expected OK] /_webgl/conformance/glsl/misc/shader-with-non-reserved-words.html (#16216)
    • NOTRUN [expected PASS] subtest: Overall test
  • TIMEOUT [expected OK] /_webgl/conformance/uniforms/out-of-bounds-uniform-array-access.html (#26225)
    • NOTRUN [expected PASS] subtest: Overall test
  • TIMEOUT [expected FAIL] /css/css-text/white-space/white-space-intrinsic-size-006.html
  • OK /css/cssom-view/MediaQueryList-addListener-handleEvent.html (#24571)
    • FAIL [expected PASS] subtest: looks up handleEvent method on every event dispatch assert_equals: expected 2 but got 1
  • OK /css/cssom-view/MediaQueryList-extends-EventTarget.html (#25269)
    • FAIL [expected PASS] subtest: addEventListener "once" option is respected assert_equals: expected 1 but got 0
  • CRASH [expected PASS] /encoding/streams/stringification-crash.html
  • OK /html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-window-open.html (#28691)
    • PASS [expected FAIL] subtest: load event does not fire on window.open('about:blank')
  • OK [expected TIMEOUT] /html/browsers/browsing-the-web/navigating-across-documents/javascript-url-referrer.window.html (#29081)
    • PASS [expected TIMEOUT] subtest: no-referrer referrer policy used to create the starting page
  • OK /html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-cross-origin.sub.window.html (#29056)
    • FAIL [expected PASS] subtest: Cross-origin navigation started from unload handler must be ignored promise_test: Unhandled rejection with value: object "SecurityError: The operation is insecure."
  • OK /html/browsers/browsing-the-web/navigating-across-documents/replace-before-load/a-click.html (#28697)
  • PASS [expected CRASH] /html/canvas/element/manual/drawing-text-to-the-canvas/canvas.2d.disconnected-font-size-math.html (#30063)
  • TIMEOUT [expected OK] /html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html (#22647)
    • TIMEOUT [expected FAIL] subtest: Check that popups from a sandboxed iframe escape the sandbox if
      allow-popups-to-escape-sandbox is used Test timed out
  • OK /html/semantics/embedded-content/the-img-element/non-active-document.html (#21544)
    • FAIL [expected PASS] subtest: createHTMLDocument assert_unreached: got unexpected error event Reached unreachable code
    • FAIL [expected PASS] subtest: <template> assert_unreached: got unexpected error event Reached unreachable code
  • TIMEOUT [expected OK] /html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry.html (#25805)
    • TIMEOUT [expected FAIL] subtest: Fulfillment handler on pending-then-fulfilled promise Test timed out
    • TIMEOUT [expected FAIL] subtest: Rejection handler on pending-then-rejected promise Test timed out
  • TIMEOUT [expected OK] /webmessaging/without-ports/017.html (#24486)
    • TIMEOUT [expected PASS] subtest: origin of the script that invoked the method, about:blank Test timed out
Stable unexpected results that are known to be intermittent (17)
  • TIMEOUT [expected OK] /_webgl/conformance/glsl/misc/shader-uniform-packing-restrictions.html (#28103)
    • NOTRUN [expected PASS] subtest: Overall test
  • OK [expected TIMEOUT] /_webgl/conformance/reading/read-pixels-test.html (#28337)
    • PASS [expected NOTRUN] subtest: Overall test
  • TIMEOUT [expected FAIL] /css/compositing/mix-blend-mode/mix-blend-mode-animation.html (#21930)
  • OK /css/cssom-view/MediaQueryList-addListener-removeListener.html (#24569)
    • FAIL [expected PASS] subtest: listeners are called correct number of times assert_equals: expected 2 but got 1
  • CRASH [expected OK] /html/browsers/windows/embedded-opener-remove-frame.html (#23867)
  • OK [expected TIMEOUT] /html/canvas/element/pixel-manipulation/2d.imageData.get.large.crash.html (#29086)
    • FAIL [expected PASS] subtest: Test that canvas crash when image data cannot be allocated. assert_throws_js: function "function() { ctx.getImageData(10, 0xffffffff, 2147483647, 10); }" threw object "IndexSizeError: The index is not in the allowed range." ("IndexSizeError") expected instance of function "function TypeError() {
      [native code]
      }" ("TypeError")
  • CRASH [expected OK] /html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html (#22667)
  • OK [expected TIMEOUT] /html/semantics/forms/form-submission-0/reparent-form-during-planned-navigation-task.html (#29724)
    • PASS [expected TIMEOUT] subtest: reparent-form-during-planned-navigation-task
  • OK /html/semantics/forms/form-submission-0/text-plain.window.html (#28687)
    • FAIL [expected PASS] subtest: text/plain: \n in value (normal form) assert_equals: expected "a=b\r\nc\r\n" but got ""
    • PASS [expected FAIL] subtest: text/plain: \r\n in value (normal form)
  • OK /html/semantics/forms/form-submission-0/urlencoded2.window.html (#28687)
    • FAIL [expected PASS] subtest: application/x-www-form-urlencoded: double quote in name (normal form) assert_equals: expected "a%22b=c" but got ""
    • PASS [expected FAIL] subtest: application/x-www-form-urlencoded: double quote in name (formdata event)
  • OK /html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_noopener.html (#23205)
    • FAIL [expected PASS] subtest: Check that rel=noopener with target=_self does a normal load this.openedWindow.findLink is not a function
  • OK /html/syntax/parsing/DOMContentLoaded-defer.html (#21550)
    • FAIL [expected PASS] subtest: The end: DOMContentLoaded and defer scripts assert_false: DOMContentLoaded should not have fired before executing a task queued from a defer script expected false got true
  • OK [expected TIMEOUT] /html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.html (#26371)
    • FAIL [expected TIMEOUT] subtest: delayed handling: delaying handling rejected promise created from createImageBitmap will cause both events to fire assert_array_equals: expected property 0 to be "InvalidStateError" but got "NotSupportedError" (expected array ["InvalidStateError"] got ["NotSupportedError"])
  • OK [expected TIMEOUT] /webmessaging/with-ports/017.html (#24486)
    • PASS [expected TIMEOUT] subtest: origin of the script that invoked the method, about:blank
  • TIMEOUT [expected OK] /webmessaging/with-ports/018.html (#24485)
    • TIMEOUT [expected PASS] subtest: origin of the script that invoked the method, javascript: Test timed out
  • TIMEOUT [expected OK] /webmessaging/without-ports/018.html (#24485)
    • TIMEOUT [expected PASS] subtest: origin of the script that invoked the method, javascript: Test timed out
  • TIMEOUT [expected OK] /webstorage/localstorage-about-blank-3P-iframe-opens-3P-window.partitioned.tentative.html (#29053)
    • TIMEOUT [expected PASS] subtest: StorageKey: test 3P about:blank window opened from a 3P iframe Test timed out
Stable unexpected results (1)
  • CRASH [expected PASS] /css/css-paint-api/column-count-crash.https.html

Copy link

github-actions bot commented Dec 6, 2023

⚠️ Try run (#7111636744) failed.

Copy link

github-actions bot commented Dec 6, 2023

Test results for linux-wpt-layout-2020 from try job (#7111636106):

Flaky unexpected result (11)
  • TIMEOUT [expected OK] /_webgl/conformance/glsl/misc/shader-with-non-reserved-words.html (#16216)
    • NOTRUN [expected PASS] subtest: Overall test
  • TIMEOUT [expected OK] /_webgl/conformance/uniforms/out-of-bounds-uniform-array-access.html (#26225)
    • NOTRUN [expected PASS] subtest: Overall test
  • OK /html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-cross-origin.sub.window.html (#29056)
    • FAIL [expected PASS] subtest: Cross-origin navigation started from unload handler must be ignored promise_test: Unhandled rejection with value: object "SecurityError: The operation is insecure."
  • OK /html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin.window.html (#29049)
    • PASS [expected FAIL] subtest: Same-origin navigation started from unload handler must be ignored
  • OK /html/browsers/history/the-history-interface/traverse_the_history_2.html (#21383)
    • PASS [expected FAIL] subtest: Multiple history traversals, last would be aborted
  • OK /html/browsers/history/the-history-interface/traverse_the_history_3.html (#21383)
    • PASS [expected FAIL] subtest: Multiple history traversals, last would be aborted
  • OK /html/browsers/history/the-history-interface/traverse_the_history_5.html (#21383)
    • PASS [expected FAIL] subtest: Multiple history traversals, last would be aborted
  • OK [expected TIMEOUT] /html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html (#24066)
    • FAIL [expected NOTRUN] subtest: Check that popups from a sandboxed iframe do not escape the sandbox assert_equals: It came from a sandboxed iframe expected "null" but got "http://web-platform.test:8000"
  • ERROR /resource-timing/content-type-parsing.html (#29131)
    • FAIL [expected TIMEOUT] subtest: mime-type 16 : text/html;charset=�gbk assert_equals: expected (string) "text/html" but got (undefined) undefined
    • TIMEOUT [expected NOTRUN] subtest: mime-type 17 : text/html;charset= gbk Test timed out
  • CRASH [expected TIMEOUT] /webmessaging/broadcastchannel/cross-partition.https.tentative.html (#29058)
  • TIMEOUT [expected OK] /webmessaging/without-ports/017.html (#24486)
    • TIMEOUT [expected PASS] subtest: origin of the script that invoked the method, about:blank Test timed out
Stable unexpected results that are known to be intermittent (20)
  • TIMEOUT [expected OK] /_webgl/conformance/glsl/misc/shader-uniform-packing-restrictions.html (#28103)
    • NOTRUN [expected PASS] subtest: Overall test
  • OK /css/css-fonts/variations/at-font-face-font-matching.html (#20684)
    • FAIL [expected PASS] subtest: Matching font-weight: '430' should prefer '420 440' over '450 460' assert_equals: Unexpected font on test element expected 487 but got 532
    • FAIL [expected PASS] subtest: Matching font-weight: '430' should prefer '450 460' over '500' assert_equals: Unexpected font on test element expected 487 but got 532
    • PASS [expected FAIL] subtest: Matching font-weight: '430' should prefer '350 399' over '340 398'
    • FAIL [expected PASS] subtest: Matching font-weight: '430' should prefer '501 550' over '502 560' assert_equals: Unexpected font on test element expected 487 but got 532
    • FAIL [expected PASS] subtest: Matching font-weight: '500' should prefer '500' over '450 460' assert_equals: Unexpected font on test element expected 487 but got 532
    • FAIL [expected PASS] subtest: Matching font-weight: '500' should prefer '400' over '350 399' assert_equals: Unexpected font on test element expected 487 but got 532
    • FAIL [expected PASS] subtest: Matching font-weight: '501' should prefer '500' over '450 460' assert_equals: Unexpected font on test element expected 487 but got 532
    • PASS [expected FAIL] subtest: Matching font-stretch: '100%' should prefer '100%' over '110% 120%'
    • FAIL [expected PASS] subtest: Matching font-stretch: '90%' should prefer '110% 140%' over '120% 130%' assert_equals: Unexpected font on test element expected 487 but got 532
    • FAIL [expected PASS] subtest: Matching font-style: 'italic' should prefer 'italic' over 'oblique 20deg' assert_equals: Unexpected font on test element expected 487 but got 532
    • And 14 more unexpected results...
  • PASS [expected TIMEOUT] /css/css-transitions/render-blocking/no-transition-from-ua-to-blocking-stylesheet.html (#29187)
  • TIMEOUT /fetch/metadata/generated/css-images.sub.tentative.html (#29047)
    • PASS [expected TIMEOUT] subtest: background-image sec-fetch-site - HTTPS downgrade (header not sent)
  • OK [expected TIMEOUT] /html/browsers/browsing-the-web/history-traversal/srcdoc/consecutive-srcdoc.html (#29084)
    • FAIL [expected TIMEOUT] subtest: changing srcdoc to about:srcdoc#yo then another srcdoc does two push navigations and we can navigate back promise_test: Unhandled rejection with value: object "TypeError: iframe is null"
  • OK /html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-iframe-contentWindow.html (#28681)
    • PASS [expected FAIL] subtest: load & pageshow events do not fire on contentWindow of <iframe> element created with src=''
    • PASS [expected FAIL] subtest: load & pageshow events do not fire on contentWindow of <iframe> element created with src='about:blank'
  • OK /html/browsers/browsing-the-web/navigating-across-documents/javascript-url-return-value-handling-dynamic.html (#28066)
    • PASS [expected FAIL] subtest: 0080 00FF 0100 set in href="" targeting a frame and clicked
  • CRASH [expected TIMEOUT] /html/browsers/windows/embedded-opener-remove-frame.html (#23867)
  • OK [expected TIMEOUT] /html/canvas/element/pixel-manipulation/2d.imageData.get.large.crash.html (#29086)
  • TIMEOUT [expected OK] /html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html (#22647)
    • TIMEOUT [expected FAIL] subtest: Check that popups from a sandboxed iframe escape the sandbox if
      allow-popups-to-escape-sandbox is used Test timed out
  • TIMEOUT [expected OK] /html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html (#22154)
    • NOTRUN [expected FAIL] subtest: Check that popups from a sandboxed iframe do not escape the sandbox
  • OK /html/semantics/embedded-content/the-img-element/non-active-document.html (#21544)
    • PASS [expected FAIL] subtest: createHTMLDocument
    • PASS [expected FAIL] subtest: <template>
  • OK [expected TIMEOUT] /html/semantics/forms/form-submission-0/reparent-form-during-planned-navigation-task.html (#29724)
    • PASS [expected TIMEOUT] subtest: reparent-form-during-planned-navigation-task
  • OK /html/semantics/forms/form-submission-0/text-plain.window.html (#28687)
    • FAIL [expected PASS] subtest: text/plain: 0x00 in value (normal form) assert_equals: expected "a=b\0c\r\n" but got ""
    • PASS [expected FAIL] subtest: text/plain: double quote in name (normal form)
    • PASS [expected FAIL] subtest: text/plain: single quote in filename (formdata event)
  • OK /html/semantics/forms/form-submission-0/urlencoded2.window.html (#28687)
    • FAIL [expected PASS] subtest: application/x-www-form-urlencoded: single quote in name (normal form) assert_equals: expected "a%27b=c" but got ""
  • OK /html/semantics/scripting-1/the-script-element/execution-timing/077.html (#22139)
    • PASS [expected FAIL] subtest: adding several types of scripts through the DOM and removing some of them confuses scheduler
  • TIMEOUT [expected OK] /html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry.html (#25805)
    • TIMEOUT [expected FAIL] subtest: Fulfillment handler on pending-then-fulfilled promise Test timed out
    • TIMEOUT [expected FAIL] subtest: Rejection handler on pending-then-rejected promise Test timed out
  • CRASH [expected PASS] /streams/readable-streams/crashtests/strategy-worker-terminate.html (#30124)
  • ERROR [expected OK] /workers/constructors/Worker/Worker-constructor.html (#22991)
  • OK /workers/dedicated-worker-from-blob-url.window.html (#22286)
    • FAIL [expected PASS] subtest: Creating a dedicated worker from a blob URL works immediately before revoking. promise_test: Unhandled rejection with value: object "[object Event]"

Copy link

github-actions bot commented Dec 6, 2023

✨ Try run (#7111636106) succeeded.

@delan
Copy link
Member Author

delan commented Dec 6, 2023

the new feature gate makes the viewport overlap the minibrowser toolbar. this needs to be fixed, or even broken out into a separate patch with MoveResizeBrowser and the get_coordinates changes only.

@servo-wpt-sync
Copy link
Collaborator

🛠 These changes could not be applied onto the latest upstream WPT. Servo's copy of the Web Platform Tests may be out of sync.

@mrobinson
Copy link
Member

This is looking pretty good, though I haven't had a chance to look at things in great detail. Thanks so much for splitting this out into multiple PRs. The only overall comment I have is that "Browser" typically means the entire browser application. I would stick with industry standard terminology here ie "WebView." A browser contains multiple web views.

@wusyong
Copy link
Member

wusyong commented Jan 25, 2024

Sorry for being inactive on this feature for a while.
@delan I can start testing again. If you are busy, I can take on the PR as well.
"WebView" does seem to be more common when people are discussing this topic.

Another question I have is how does this interact with multiple windows in the future?
More specifically, how does one browsing context move from one window to another window?

@mrobinson
Copy link
Member

Can this be closed in favor of #31417?

@delan
Copy link
Member Author

delan commented Feb 23, 2024

(see #31417)

@delan delan closed this Feb 23, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants