Unbounded Element: Connect compositor frames directly to Viz [8.5/N] [chromium/src : main]

0 views
Skip to first unread message

Mason Freed (Gerrit)

unread,
May 26, 2026, 7:50:47 PM (6 days ago) May 26
to Vladimir Levin, Chromium LUCI CQ, chromium...@chromium.org, Daniel Cheng, alexmo...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-rev...@chromium.org, blink-...@chromium.org, cc-...@chromium.org, creis...@chromium.org, kinuko...@chromium.org, navigation...@chromium.org
Attention needed from Vladimir Levin

Mason Freed voted Commit-Queue+1

Commit-Queue+1
Open in Gerrit

Related details

Attention is currently required from:
  • Vladimir Levin
Submit Requirements:
  • requirement satisfiedCode-Coverage
  • requirement is not satisfiedCode-Owners
  • requirement is not satisfiedCode-Review
  • requirement is not satisfiedReview-Enforcement
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: chromium/src
Gerrit-Branch: main
Gerrit-Change-Id: Ie8bcd4c49298747855cde9359588d3594fc27d14
Gerrit-Change-Number: 7852533
Gerrit-PatchSet: 18
Gerrit-Owner: Mason Freed <mas...@chromium.org>
Gerrit-Reviewer: Mason Freed <mas...@chromium.org>
Gerrit-Reviewer: Vladimir Levin <vmp...@chromium.org>
Gerrit-CC: Daniel Cheng <dch...@chromium.org>
Gerrit-Attention: Vladimir Levin <vmp...@chromium.org>
Gerrit-Comment-Date: Tue, 26 May 2026 23:50:38 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: Yes
satisfied_requirement
unsatisfied_requirement
open
diffy

Mason Freed (Gerrit)

unread,
May 27, 2026, 4:27:51 PM (5 days ago) May 27
to Chromium IPC Reviews, Vladimir Levin, Chromium LUCI CQ, chromium...@chromium.org, Daniel Cheng, alexmo...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-rev...@chromium.org, blink-...@chromium.org, cc-...@chromium.org, creis...@chromium.org, kinuko...@chromium.org, navigation...@chromium.org
Attention needed from Chromium IPC Reviews, Nasko Oskov and Vladimir Levin

Mason Freed added 1 comment

Patchset-level comments
File-level comment, Patchset 20 (Latest):
Mason Freed . resolved

+nasko for content/browser/renderer_host/*
+chromium-ipc-reviewers for frame.mojom

Open in Gerrit

Related details

Attention is currently required from:
  • Chromium IPC Reviews
  • Nasko Oskov
  • Vladimir Levin
Submit Requirements:
  • requirement satisfiedCode-Coverage
  • requirement is not satisfiedCode-Owners
  • requirement is not satisfiedCode-Review
  • requirement is not satisfiedReview-Enforcement
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: chromium/src
Gerrit-Branch: main
Gerrit-Change-Id: Ie8bcd4c49298747855cde9359588d3594fc27d14
Gerrit-Change-Number: 7852533
Gerrit-PatchSet: 20
Gerrit-Owner: Mason Freed <mas...@chromium.org>
Gerrit-Reviewer: Chromium IPC Reviews <chrome-ip...@google.com>
Gerrit-Reviewer: Mason Freed <mas...@chromium.org>
Gerrit-Reviewer: Nasko Oskov <na...@chromium.org>
Gerrit-Reviewer: Vladimir Levin <vmp...@chromium.org>
Gerrit-CC: Daniel Cheng <dch...@chromium.org>
Gerrit-Attention: Nasko Oskov <na...@chromium.org>
Gerrit-Attention: Chromium IPC Reviews <chrome-ip...@google.com>
Gerrit-Attention: Vladimir Levin <vmp...@chromium.org>
Gerrit-Comment-Date: Wed, 27 May 2026 20:27:34 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
satisfied_requirement
unsatisfied_requirement
open
diffy

Mason Freed (Gerrit)

unread,
May 27, 2026, 4:28:32 PM (5 days ago) May 27
to Kent Tamura, Chromium IPC Reviews, Vladimir Levin, Chromium LUCI CQ, chromium...@chromium.org, Daniel Cheng, alexmo...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-rev...@chromium.org, blink-...@chromium.org, cc-...@chromium.org, creis...@chromium.org, kinuko...@chromium.org, navigation...@chromium.org
Attention needed from Chromium IPC Reviews, Kent Tamura, Nasko Oskov and Vladimir Levin

Mason Freed added 1 comment

Patchset-level comments
Mason Freed . resolved

+tkent for audit_non_blink_usage.py

Open in Gerrit

Related details

Attention is currently required from:
  • Chromium IPC Reviews
  • Kent Tamura
  • Nasko Oskov
  • Vladimir Levin
Submit Requirements:
  • requirement satisfiedCode-Coverage
  • requirement is not satisfiedCode-Owners
  • requirement is not satisfiedCode-Review
  • requirement is not satisfiedReview-Enforcement
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: chromium/src
Gerrit-Branch: main
Gerrit-Change-Id: Ie8bcd4c49298747855cde9359588d3594fc27d14
Gerrit-Change-Number: 7852533
Gerrit-PatchSet: 20
Gerrit-Owner: Mason Freed <mas...@chromium.org>
Gerrit-Reviewer: Chromium IPC Reviews <chrome-ip...@google.com>
Gerrit-Reviewer: Kent Tamura <tk...@chromium.org>
Gerrit-Reviewer: Mason Freed <mas...@chromium.org>
Gerrit-Reviewer: Nasko Oskov <na...@chromium.org>
Gerrit-Reviewer: Vladimir Levin <vmp...@chromium.org>
Gerrit-CC: Daniel Cheng <dch...@chromium.org>
Gerrit-Attention: Nasko Oskov <na...@chromium.org>
Gerrit-Attention: Chromium IPC Reviews <chrome-ip...@google.com>
Gerrit-Attention: Kent Tamura <tk...@chromium.org>
Gerrit-Attention: Vladimir Levin <vmp...@chromium.org>
Gerrit-Comment-Date: Wed, 27 May 2026 20:28:23 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
satisfied_requirement
unsatisfied_requirement
open
diffy

gwsq (Gerrit)

unread,
May 27, 2026, 4:29:56 PM (5 days ago) May 27
to Mason Freed, Chromium IPC Reviews, Kent Tamura, Vladimir Levin, Chromium LUCI CQ, chromium...@chromium.org, Daniel Cheng, alexmo...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-rev...@chromium.org, blink-...@chromium.org, cc-...@chromium.org, creis...@chromium.org, kinuko...@chromium.org, navigation...@chromium.org
Attention needed from Kent Tamura, Nasko Oskov and Vladimir Levin

Message from gwsq

From googleclient/chrome/chromium_gwsq/ipc/config.gwsq:
IPC: na...@chromium.org

📎 It looks like you’re making a possibly security-sensitive change! 📎 IPC security review isn’t a rubberstamp, so your friendly security reviewer will need a fair amount of context to review your CL effectively. Please review your CL description and code comments to make sure they provide context for someone unfamiliar with your project/area. Pay special attention to where data comes from and which processes it flows between (and their privilege levels). Feel free to point your security reviewer at design docs, bugs, or other links if you can’t reasonably make a self-contained CL description. (Also see https://cbea.ms/git-commit/).

IPC reviewer(s): na...@chromium.org

Note: IPC gwsq added no new reviewers; existing reviewers satisfied requirements!

Reviewer source(s):
na...@chromium.org is from context(googleclient/chrome/chromium_gwsq/ipc/config.gwsq)

Open in Gerrit

Related details

Attention is currently required from:
  • Kent Tamura
  • Nasko Oskov
  • Vladimir Levin
Submit Requirements:
  • requirement satisfiedCode-Coverage
  • requirement is not satisfiedCode-Owners
  • requirement is not satisfiedCode-Review
  • requirement is not satisfiedReview-Enforcement
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: chromium/src
Gerrit-Branch: main
Gerrit-Change-Id: Ie8bcd4c49298747855cde9359588d3594fc27d14
Gerrit-Change-Number: 7852533
Gerrit-PatchSet: 20
Gerrit-Owner: Mason Freed <mas...@chromium.org>
Gerrit-Reviewer: Kent Tamura <tk...@chromium.org>
Gerrit-Reviewer: Mason Freed <mas...@chromium.org>
Gerrit-Reviewer: Nasko Oskov <na...@chromium.org>
Gerrit-Reviewer: Vladimir Levin <vmp...@chromium.org>
Gerrit-CC: Chromium IPC Reviews <chrome-ip...@google.com>
Gerrit-CC: Daniel Cheng <dch...@chromium.org>
Gerrit-CC: gwsq
Gerrit-Attention: Nasko Oskov <na...@chromium.org>
Gerrit-Attention: Kent Tamura <tk...@chromium.org>
Gerrit-Attention: Vladimir Levin <vmp...@chromium.org>
Gerrit-Comment-Date: Wed, 27 May 2026 20:29:44 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: No
satisfied_requirement
unsatisfied_requirement
open
diffy

Kent Tamura (Gerrit)

unread,
May 27, 2026, 6:40:09 PM (5 days ago) May 27
to Mason Freed, Kent Tamura, Chromium IPC Reviews, Vladimir Levin, Chromium LUCI CQ, chromium...@chromium.org, Daniel Cheng, alexmo...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-rev...@chromium.org, blink-...@chromium.org, cc-...@chromium.org, creis...@chromium.org, kinuko...@chromium.org, navigation...@chromium.org
Attention needed from Mason Freed, Nasko Oskov and Vladimir Levin

Kent Tamura voted and added 1 comment

Votes added by Kent Tamura

Code-Review+1

1 comment

Patchset-level comments
Mason Freed . resolved

+tkent for audit_non_blink_usage.py

Kent Tamura

LGTM

Open in Gerrit

Related details

Attention is currently required from:
  • Mason Freed
  • Nasko Oskov
  • Vladimir Levin
Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement is not satisfiedCode-Owners
    • requirement satisfiedCode-Review
    • requirement satisfiedReview-Enforcement
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: comment
    Gerrit-Project: chromium/src
    Gerrit-Branch: main
    Gerrit-Change-Id: Ie8bcd4c49298747855cde9359588d3594fc27d14
    Gerrit-Change-Number: 7852533
    Gerrit-PatchSet: 20
    Gerrit-Owner: Mason Freed <mas...@chromium.org>
    Gerrit-Reviewer: Kent Tamura <tk...@chromium.org>
    Gerrit-Reviewer: Mason Freed <mas...@chromium.org>
    Gerrit-Reviewer: Nasko Oskov <na...@chromium.org>
    Gerrit-Reviewer: Vladimir Levin <vmp...@chromium.org>
    Gerrit-CC: Chromium IPC Reviews <chrome-ip...@google.com>
    Gerrit-CC: Daniel Cheng <dch...@chromium.org>
    Gerrit-CC: gwsq
    Gerrit-Attention: Mason Freed <mas...@chromium.org>
    Gerrit-Attention: Nasko Oskov <na...@chromium.org>
    Gerrit-Attention: Vladimir Levin <vmp...@chromium.org>
    Gerrit-Comment-Date: Wed, 27 May 2026 22:39:34 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: Yes
    Comment-In-Reply-To: Mason Freed <mas...@chromium.org>
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Nasko Oskov (Gerrit)

    unread,
    May 27, 2026, 7:46:29 PM (5 days ago) May 27
    to Mason Freed, Dave Tapuska, Kent Tamura, Chromium IPC Reviews, Vladimir Levin, Chromium LUCI CQ, chromium...@chromium.org, Daniel Cheng, alexmo...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-rev...@chromium.org, blink-...@chromium.org, cc-...@chromium.org, creis...@chromium.org, kinuko...@chromium.org, navigation...@chromium.org
    Attention needed from Dave Tapuska, Mason Freed and Vladimir Levin

    Nasko Oskov added 2 comments

    Patchset-level comments
    Nasko Oskov . resolved

    Adding dtapuska@ who will likely be better reviewer than I would be for this. My understanding is that rendering and input events are handled by RenderWidgetHost rather than RenderFrameHost, but it is not my area of expertise. Therefore moving myself to cc.

    File content/browser/renderer_host/render_frame_host_impl.h
    Line 2675, Patchset 20 (Latest): }
    Nasko Oskov . unresolved

    This looks to me a lot more like RenderWidgetHost style functionality - rendering and input events. Doesn't it belong there?

    I think dtapuska@ will likely be better reviewer for this than I would be.

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Dave Tapuska
    • Mason Freed
    • Vladimir Levin
    Submit Requirements:
      • requirement satisfiedCode-Coverage
      • requirement is not satisfiedCode-Owners
      • requirement satisfiedCode-Review
      • requirement is not satisfiedNo-Unresolved-Comments
      • requirement satisfiedReview-Enforcement
      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
      Gerrit-MessageType: comment
      Gerrit-Project: chromium/src
      Gerrit-Branch: main
      Gerrit-Change-Id: Ie8bcd4c49298747855cde9359588d3594fc27d14
      Gerrit-Change-Number: 7852533
      Gerrit-PatchSet: 20
      Gerrit-Owner: Mason Freed <mas...@chromium.org>
      Gerrit-Reviewer: Dave Tapuska <dtap...@chromium.org>
      Gerrit-Reviewer: Kent Tamura <tk...@chromium.org>
      Gerrit-Reviewer: Mason Freed <mas...@chromium.org>
      Gerrit-Reviewer: Vladimir Levin <vmp...@chromium.org>
      Gerrit-CC: Chromium IPC Reviews <chrome-ip...@google.com>
      Gerrit-CC: Daniel Cheng <dch...@chromium.org>
      Gerrit-CC: Nasko Oskov <na...@chromium.org>
      Gerrit-CC: gwsq
      Gerrit-Attention: Mason Freed <mas...@chromium.org>
      Gerrit-Attention: Dave Tapuska <dtap...@chromium.org>
      Gerrit-Attention: Vladimir Levin <vmp...@chromium.org>
      Gerrit-Comment-Date: Wed, 27 May 2026 23:46:21 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Mason Freed (Gerrit)

      unread,
      May 28, 2026, 6:16:25 PM (4 days ago) May 28
      to Dave Tapuska, Kent Tamura, Chromium IPC Reviews, Vladimir Levin, Chromium LUCI CQ, chromium...@chromium.org, Daniel Cheng, alexmo...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-rev...@chromium.org, blink-...@chromium.org, cc-...@chromium.org, creis...@chromium.org, kinuko...@chromium.org, navigation...@chromium.org
      Attention needed from Dave Tapuska, Nasko Oskov and Vladimir Levin

      Mason Freed added 2 comments

      Patchset-level comments
      Nasko Oskov . resolved

      Adding dtapuska@ who will likely be better reviewer than I would be for this. My understanding is that rendering and input events are handled by RenderWidgetHost rather than RenderFrameHost, but it is not my area of expertise. Therefore moving myself to cc.

      Mason Freed

      Sounds good! Thanks.

      File content/browser/renderer_host/render_frame_host_impl.h
      Nasko Oskov . unresolved

      This looks to me a lot more like RenderWidgetHost style functionality - rendering and input events. Doesn't it belong there?

      I think dtapuska@ will likely be better reviewer for this than I would be.

      Mason Freed

      Hmm, I realize it's a bit funny right now since we're doing some work within `RenderWidgetHostImpl` for the unbounded element API. But there's a followup refactor [patch](https://crrev.com/c/7880871) that I'm working on which will rip all of that out of `RenderWidgetHostImpl` and move it into its own `UnboundedSurfaceWindow`. Using a separate RenderWidgetHostImpl for this isn't really right, because both the main content and the unbounded content come from the same underlying RenderWidget - just split apart into two streams.

      Having said all of that, these entrypoints (e.g. GetCompositorFrameSink) correspond to the frame-level APIs coming from the renderer, just to set up the connection. So I think they do go here, and not on RenderWidgetHost. Right?

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Dave Tapuska
      • Nasko Oskov
      • Vladimir Levin
      Submit Requirements:
      • requirement satisfiedCode-Coverage
      • requirement is not satisfiedCode-Owners
      • requirement satisfiedCode-Review
      • requirement is not satisfiedNo-Unresolved-Comments
      • requirement satisfiedReview-Enforcement
      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
      Gerrit-MessageType: comment
      Gerrit-Project: chromium/src
      Gerrit-Branch: main
      Gerrit-Change-Id: Ie8bcd4c49298747855cde9359588d3594fc27d14
      Gerrit-Change-Number: 7852533
      Gerrit-PatchSet: 21
      Gerrit-Owner: Mason Freed <mas...@chromium.org>
      Gerrit-Reviewer: Dave Tapuska <dtap...@chromium.org>
      Gerrit-Reviewer: Kent Tamura <tk...@chromium.org>
      Gerrit-Reviewer: Mason Freed <mas...@chromium.org>
      Gerrit-Reviewer: Vladimir Levin <vmp...@chromium.org>
      Gerrit-CC: Chromium IPC Reviews <chrome-ip...@google.com>
      Gerrit-CC: Daniel Cheng <dch...@chromium.org>
      Gerrit-CC: Nasko Oskov <na...@chromium.org>
      Gerrit-CC: gwsq
      Gerrit-Attention: Nasko Oskov <na...@chromium.org>
      Gerrit-Attention: Dave Tapuska <dtap...@chromium.org>
      Gerrit-Attention: Vladimir Levin <vmp...@chromium.org>
      Gerrit-Comment-Date: Thu, 28 May 2026 22:16:12 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      Comment-In-Reply-To: Nasko Oskov <na...@chromium.org>
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Mason Freed (Gerrit)

      unread,
      May 29, 2026, 2:31:17 PM (3 days ago) May 29
      to Dave Tapuska, Kent Tamura, Chromium IPC Reviews, Vladimir Levin, Chromium LUCI CQ, chromium...@chromium.org, Daniel Cheng, alexmo...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-rev...@chromium.org, blink-...@chromium.org, cc-...@chromium.org, creis...@chromium.org, kinuko...@chromium.org, navigation...@chromium.org
      Attention needed from Dave Tapuska, Nasko Oskov and Vladimir Levin

      Mason Freed added 1 comment

      Patchset-level comments
      File-level comment, Patchset 23 (Latest):
      Mason Freed . unresolved

      Just to clarify the reviewer assignments, because it got a bit garbled across a few comments:

      • vmpstr: cc/* and third_party/* (i.e. most of the patch)
      • dtapuska: frame.mojom (reassigned from IPC_reviewers->nasko->dtapuska)
      • tkent: audit_non_blink_usage.py

      Thanks in advance! And hope this helps.

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Dave Tapuska
      • Nasko Oskov
      • Vladimir Levin
      Submit Requirements:
      • requirement satisfiedCode-Coverage
      • requirement is not satisfiedCode-Owners
      • requirement satisfiedCode-Review
      • requirement is not satisfiedNo-Unresolved-Comments
      • requirement satisfiedReview-Enforcement
      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
      Gerrit-MessageType: comment
      Gerrit-Project: chromium/src
      Gerrit-Branch: main
      Gerrit-Change-Id: Ie8bcd4c49298747855cde9359588d3594fc27d14
      Gerrit-Change-Number: 7852533
      Gerrit-PatchSet: 23
      Gerrit-Owner: Mason Freed <mas...@chromium.org>
      Gerrit-Reviewer: Dave Tapuska <dtap...@chromium.org>
      Gerrit-Reviewer: Kent Tamura <tk...@chromium.org>
      Gerrit-Reviewer: Mason Freed <mas...@chromium.org>
      Gerrit-Reviewer: Vladimir Levin <vmp...@chromium.org>
      Gerrit-CC: Chromium IPC Reviews <chrome-ip...@google.com>
      Gerrit-CC: Daniel Cheng <dch...@chromium.org>
      Gerrit-CC: Nasko Oskov <na...@chromium.org>
      Gerrit-CC: gwsq
      Gerrit-Attention: Nasko Oskov <na...@chromium.org>
      Gerrit-Attention: Dave Tapuska <dtap...@chromium.org>
      Gerrit-Attention: Vladimir Levin <vmp...@chromium.org>
      Gerrit-Comment-Date: Fri, 29 May 2026 18:31:04 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Vladimir Levin (Gerrit)

      unread,
      May 29, 2026, 3:38:24 PM (3 days ago) May 29
      to Mason Freed, Jonathan Ross, Dave Tapuska, Kent Tamura, Chromium IPC Reviews, Chromium LUCI CQ, chromium...@chromium.org, Daniel Cheng, alexmo...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-rev...@chromium.org, blink-...@chromium.org, cc-...@chromium.org, creis...@chromium.org, kinuko...@chromium.org, navigation...@chromium.org
      Attention needed from Dave Tapuska, Jonathan Ross, Mason Freed and Nasko Oskov

      Vladimir Levin added 1 comment

      File third_party/blink/renderer/core/frame/web_frame_widget_impl.cc
      Line 2736, Patchset 23 (Latest):void WebFrameWidgetImpl::SubmitUnboundedCompositorFrame(
      Vladimir Levin . unresolved

      This looks wrong to me, in a sense of a layering violation.

      Essentially, and correct me if I'm wrong, when we submit a compositor frame (on impl) we also submit an unbounded compositor frame, which bounces back to main to actually do the submission. This leaves impl thread free to, say, produce another frame before main can pick up this frame. Can that new compositor frame reuse/invalidate the resources that are still in flight for the main thread? I'm not sure I know the answer to that. (also scrolling, composited transform animations or anything else that we may (or may not) want to support will suffer)

      This also likely makes trees in viz implementation difficult since I'm not sure how we would pass "tree information" (which I presume we need) back to main thread to pass to the unbounded client. That being said, I don't know how trees in viz implementation would work yet since I don't know how trees in viz works in detail :)

      I would have imagined that the solution in this space instead sends the unbounded_frame_sink_ to the impl thread so that it can use the same path as SubmitCompositorFrame does

      @jon...@chromium.org for opinions

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Dave Tapuska
      • Jonathan Ross
      • Mason Freed
      • Nasko Oskov
      Submit Requirements:
      • requirement satisfiedCode-Coverage
      • requirement is not satisfiedCode-Owners
      • requirement satisfiedCode-Review
      • requirement is not satisfiedNo-Unresolved-Comments
      • requirement satisfiedReview-Enforcement
      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
      Gerrit-MessageType: comment
      Gerrit-Project: chromium/src
      Gerrit-Branch: main
      Gerrit-Change-Id: Ie8bcd4c49298747855cde9359588d3594fc27d14
      Gerrit-Change-Number: 7852533
      Gerrit-PatchSet: 23
      Gerrit-Owner: Mason Freed <mas...@chromium.org>
      Gerrit-Reviewer: Dave Tapuska <dtap...@chromium.org>
      Gerrit-Reviewer: Jonathan Ross <jon...@chromium.org>
      Gerrit-Reviewer: Kent Tamura <tk...@chromium.org>
      Gerrit-Reviewer: Mason Freed <mas...@chromium.org>
      Gerrit-Reviewer: Vladimir Levin <vmp...@chromium.org>
      Gerrit-CC: Chromium IPC Reviews <chrome-ip...@google.com>
      Gerrit-CC: Daniel Cheng <dch...@chromium.org>
      Gerrit-CC: Nasko Oskov <na...@chromium.org>
      Gerrit-CC: gwsq
      Gerrit-Attention: Jonathan Ross <jon...@chromium.org>
      Gerrit-Attention: Mason Freed <mas...@chromium.org>
      Gerrit-Attention: Nasko Oskov <na...@chromium.org>
      Gerrit-Attention: Dave Tapuska <dtap...@chromium.org>
      Gerrit-Comment-Date: Fri, 29 May 2026 19:38:05 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Dave Tapuska (Gerrit)

      unread,
      May 29, 2026, 4:39:16 PM (3 days ago) May 29
      to Mason Freed, Jonathan Ross, Kent Tamura, Chromium IPC Reviews, Vladimir Levin, Chromium LUCI CQ, chromium...@chromium.org, Daniel Cheng, alexmo...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-rev...@chromium.org, blink-...@chromium.org, cc-...@chromium.org, creis...@chromium.org, kinuko...@chromium.org, navigation...@chromium.org
      Attention needed from Jonathan Ross, Mason Freed and Nasko Oskov

      Dave Tapuska added 5 comments

      File content/browser/renderer_host/render_frame_host_impl.h
      Line 4913, Patchset 23 (Latest): unbounded_surface_client_;
      Dave Tapuska . unresolved

      So this allows one unbounded surface per frame. So why do I need to create a new iframe to create multiple unbounded widgets. Should there be a check that there is only one unbounded widget per tab? etc.. (I thought we do this for selects)

      Nasko Oskov . unresolved

      This looks to me a lot more like RenderWidgetHost style functionality - rendering and input events. Doesn't it belong there?

      I think dtapuska@ will likely be better reviewer for this than I would be.

      Mason Freed

      Hmm, I realize it's a bit funny right now since we're doing some work within `RenderWidgetHostImpl` for the unbounded element API. But there's a followup refactor [patch](https://crrev.com/c/7880871) that I'm working on which will rip all of that out of `RenderWidgetHostImpl` and move it into its own `UnboundedSurfaceWindow`. Using a separate RenderWidgetHostImpl for this isn't really right, because both the main content and the unbounded content come from the same underlying RenderWidget - just split apart into two streams.

      Having said all of that, these entrypoints (e.g. GetCompositorFrameSink) correspond to the frame-level APIs coming from the renderer, just to set up the connection. So I think they do go here, and not on RenderWidgetHost. Right?

      Dave Tapuska

      I think this is ok. (although I'd like the dependent CL)...

      File content/browser/renderer_host/render_frame_host_impl.cc
      Line 11297, Patchset 23 (Latest): if (unbounded_surface_client_.is_bound()) {
      Dave Tapuska . unresolved

      Why is this here? Shouldn't 11291 CHECK

      Line 11373, Patchset 23 (Latest): RenderWidgetHostView* parent_view = GetRenderWidgetHost()->GetView();
      Dave Tapuska . unresolved

      (Not for this CL) But how does this work when going between DSF between monitors? Can the unbounded view appear on a different monitor with a different DSF?

      File third_party/blink/renderer/core/frame/web_frame_widget_impl.h
      Line 1389, Patchset 23 (Latest): unbounded_surface_client_receiver_{this, nullptr};
      Dave Tapuska . unresolved

      Passing null into these HeapMojo objects basically prevents the context destroyed notifications I believe. Could be dangerous, we should think about associating this with the execution context.

      There seems to be a disconnect here. On the blink side we bind these interfaces on the Widget level, but on the browser side we are binding them to the Frame.

      Open in Gerrit

      Related details

      Attention is currently required from:
      Gerrit-Comment-Date: Fri, 29 May 2026 20:39:03 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      Comment-In-Reply-To: Mason Freed <mas...@chromium.org>
      Comment-In-Reply-To: Nasko Oskov <na...@chromium.org>
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Jonathan Ross (Gerrit)

      unread,
      May 29, 2026, 6:26:21 PM (3 days ago) May 29
      to Mason Freed, Dave Tapuska, Kent Tamura, Chromium IPC Reviews, Vladimir Levin, Chromium LUCI CQ, chromium...@chromium.org, Daniel Cheng, alexmo...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-rev...@chromium.org, blink-...@chromium.org, cc-...@chromium.org, creis...@chromium.org, kinuko...@chromium.org, navigation...@chromium.org
      Attention needed from Mason Freed and Nasko Oskov

      Jonathan Ross added 5 comments

      File content/browser/renderer_host/render_frame_host_impl.cc
      Line 11383, Patchset 23 (Latest): widget_host_view->SetBounds(updated_rect);
      Jonathan Ross . unresolved

      Please fix this WARNING reported by autoreview issue finding: When the bounds are updated, `RenderWidgetHostView::SetBounds` usually results in a new `LocalSurfaceId` being allocated. Since this special widget has no `WebWidget` in the renderer, the standard `SynchronizeVisualProperties` flow won't update the renderer.

      You should call `unbounded_surface_client_->OnSurfaceAllocated` here to provide the renderer with the updated ID, otherwise future frames submitted with the stale ID may be rejected by Viz or result in visual artifacts.

      File third_party/blink/renderer/core/frame/web_frame_widget_impl.cc
      Line 2706, Patchset 23 (Latest): const viz::FrameSinkId& frame_sink_id,
      const viz::LocalSurfaceId& local_surface_id) {
      Jonathan Ross . unresolved

      `FrameSinkId` will be the invariant identifier for this process. If that changes then we need to rebind.

      `LocalSurfaceId` will be constantly changing. Any resizes or other `blink::VisualProperty` changes initialized from the Browser will lead to this advancing.

      The `CompositorFrameSinkClient` -> `CompositorFrameSinkSupport` are setup to handle the changes to the id over time. We shouldn't close the pipe when it changes

      Line 2736, Patchset 23 (Latest):void WebFrameWidgetImpl::SubmitUnboundedCompositorFrame(
      Vladimir Levin . unresolved

      This looks wrong to me, in a sense of a layering violation.

      Essentially, and correct me if I'm wrong, when we submit a compositor frame (on impl) we also submit an unbounded compositor frame, which bounces back to main to actually do the submission. This leaves impl thread free to, say, produce another frame before main can pick up this frame. Can that new compositor frame reuse/invalidate the resources that are still in flight for the main thread? I'm not sure I know the answer to that. (also scrolling, composited transform animations or anything else that we may (or may not) want to support will suffer)

      This also likely makes trees in viz implementation difficult since I'm not sure how we would pass "tree information" (which I presume we need) back to main thread to pass to the unbounded client. That being said, I don't know how trees in viz implementation would work yet since I don't know how trees in viz works in detail :)

      I would have imagined that the solution in this space instead sends the unbounded_frame_sink_ to the impl thread so that it can use the same path as SubmitCompositorFrame does

      @jon...@chromium.org for opinions

      Jonathan Ross

      +1 the frame submission should be done from the impl thread.

      Currently `AsyncLayerTreeFrameSink` is setup by `blink::WidgetBase` on the main-thread, but is provided to `LayerTreeHostImpl`. We would similarly want this connection managed on the Impl thread

      Line 2771, Patchset 23 (Latest):void WebFrameWidgetImpl::ReclaimResources(
      Jonathan Ross . unresolved

      The resources being exported will be managed by `viz::ClientResourceProvider` that lives on the Impl thread. As a `LayerTreeImpl` is processed the resources are exported there.

      By returning them on the Impl thread we can clean up the current tree state.

      We already have the concept of a `main_thread_callback` to complete the release on the Main-thread if required. Canvas makes use of this today: https://source.chromium.org/chromium/chromium/src/+/main:components/viz/client/client_resource_provider.cc;l=178-181#:~:text=177-,178,-179

      File third_party/blink/renderer/platform/widget/widget_base.cc
      Line 478, Patchset 23 (Latest):
      void WidgetBase::UpdateVisualProperties(
      const VisualProperties& visual_properties_from_browser) {
      TRACE_EVENT0("renderer", "WidgetBase::UpdateVisualProperties");
      Jonathan Ross . unresolved

      We will need to connect this to the UnboundedElement. As when properies change its SurfaceId will need to advance. Otherwise Viz will not embed it

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Mason Freed
      • Nasko Oskov
      Gerrit-Attention: Mason Freed <mas...@chromium.org>
      Gerrit-Attention: Nasko Oskov <na...@chromium.org>
      Gerrit-Comment-Date: Fri, 29 May 2026 22:26:14 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      Comment-In-Reply-To: Vladimir Levin <vmp...@chromium.org>
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy
      Reply all
      Reply to author
      Forward
      0 new messages