iwa: Introduce the chromeos.isolatedWebApp.setShape blink extension [chromium/src : main]

0 views
Skip to first unread message

Edman Anjos (Gerrit)

unread,
Feb 27, 2026, 2:28:19 AM (13 days ago) Feb 27
to Edman Anjos, Hidehiko Abe, Chromium IPC Reviews, Simon Hangl, AI Code Reviewer, Chromium LUCI CQ, chromium...@chromium.org, Kentaro Hara, Raphael Kubo da Costa, asvitki...@chromium.org, blink-re...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, ipc-securi...@chromium.org, jmedle...@chromium.org, kinuko...@chromium.org, oshima...@chromium.org
Attention needed from Chromium IPC Reviews, Hidehiko Abe and Simon Hangl

Edman Anjos added 1 comment

Patchset-level comments
File-level comment, Patchset 8 (Latest):
Edman Anjos . resolved

hi Hidehiko, Simon, PTAL

IPC reviewer PTAL at the mojo changes. The next CL in this chain may have more context on the mojo impl, if you need.

Open in Gerrit

Related details

Attention is currently required from:
  • Chromium IPC Reviews
  • Hidehiko Abe
  • Simon Hangl
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: I9594fdd9c7f3317af0d82ee0ec5bff6a06e71608
Gerrit-Change-Number: 7566875
Gerrit-PatchSet: 8
Gerrit-Owner: Edman Anjos <ed...@chromium.org>
Gerrit-Reviewer: Chromium IPC Reviews <chrome-ip...@google.com>
Gerrit-Reviewer: Edman Anjos <ed...@chromium.org>
Gerrit-Reviewer: Hidehiko Abe <hide...@chromium.org>
Gerrit-Reviewer: Simon Hangl <sim...@google.com>
Gerrit-CC: AI Code Reviewer <peep-gen...@system.gserviceaccount.com>
Gerrit-CC: Kentaro Hara <har...@chromium.org>
Gerrit-CC: Raphael Kubo da Costa <ku...@igalia.com>
Gerrit-Attention: Simon Hangl <sim...@google.com>
Gerrit-Attention: Chromium IPC Reviews <chrome-ip...@google.com>
Gerrit-Attention: Hidehiko Abe <hide...@chromium.org>
Gerrit-Comment-Date: Fri, 27 Feb 2026 07:28:02 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
satisfied_requirement
unsatisfied_requirement
open
diffy

gwsq (Gerrit)

unread,
Feb 27, 2026, 2:32:13 AM (13 days ago) Feb 27
to Edman Anjos, Chromium IPC Reviews, Mike West, Hidehiko Abe, Simon Hangl, AI Code Reviewer, Chromium LUCI CQ, chromium...@chromium.org, Kentaro Hara, Raphael Kubo da Costa, asvitki...@chromium.org, blink-re...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, ipc-securi...@chromium.org, jmedle...@chromium.org, kinuko...@chromium.org, oshima...@chromium.org
Attention needed from Hidehiko Abe, Mike West and Simon Hangl

Message from gwsq

From googleclient/chrome/chromium_gwsq/ipc/config.gwsq:
IPC: hide...@chromium.org, mk...@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): hide...@chromium.org, mk...@chromium.org


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

Open in Gerrit

Related details

Attention is currently required from:
  • Hidehiko Abe
  • Mike West
  • Simon Hangl
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: I9594fdd9c7f3317af0d82ee0ec5bff6a06e71608
Gerrit-Change-Number: 7566875
Gerrit-PatchSet: 8
Gerrit-Owner: Edman Anjos <ed...@chromium.org>
Gerrit-Reviewer: Edman Anjos <ed...@chromium.org>
Gerrit-Reviewer: Hidehiko Abe <hide...@chromium.org>
Gerrit-Reviewer: Mike West <mk...@chromium.org>
Gerrit-Reviewer: Simon Hangl <sim...@google.com>
Gerrit-CC: AI Code Reviewer <peep-gen...@system.gserviceaccount.com>
Gerrit-CC: Chromium IPC Reviews <chrome-ip...@google.com>
Gerrit-CC: Kentaro Hara <har...@chromium.org>
Gerrit-CC: Raphael Kubo da Costa <ku...@igalia.com>
Gerrit-CC: gwsq
Gerrit-Attention: Simon Hangl <sim...@google.com>
Gerrit-Attention: Mike West <mk...@chromium.org>
Gerrit-Attention: Hidehiko Abe <hide...@chromium.org>
Gerrit-Comment-Date: Fri, 27 Feb 2026 07:32:06 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: No
satisfied_requirement
unsatisfied_requirement
open
diffy

Edman Anjos (Gerrit)

unread,
Feb 27, 2026, 2:33:22 AM (13 days ago) Feb 27
to Edman Anjos, Chromium IPC Reviews, Mike West, Hidehiko Abe, Simon Hangl, AI Code Reviewer, Chromium LUCI CQ, chromium...@chromium.org, Kentaro Hara, Raphael Kubo da Costa, asvitki...@chromium.org, blink-re...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, ipc-securi...@chromium.org, jmedle...@chromium.org, kinuko...@chromium.org, oshima...@chromium.org
Attention needed from Hidehiko Abe, Mike West and Simon Hangl

Edman Anjos voted Commit-Queue+1

Commit-Queue+1
Gerrit-Comment-Date: Fri, 27 Feb 2026 07:33:05 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: Yes
satisfied_requirement
unsatisfied_requirement
open
diffy

Mike West (Gerrit)

unread,
Feb 27, 2026, 4:06:36 AM (13 days ago) Feb 27
to Edman Anjos, Chromium IPC Reviews, Hidehiko Abe, Simon Hangl, AI Code Reviewer, Chromium LUCI CQ, chromium...@chromium.org, Kentaro Hara, Raphael Kubo da Costa, asvitki...@chromium.org, blink-re...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, ipc-securi...@chromium.org, jmedle...@chromium.org, kinuko...@chromium.org, oshima...@chromium.org
Attention needed from Edman Anjos, Hidehiko Abe and Simon Hangl

Mike West added 1 comment

File chromeos/ash/experiences/isolated_web_app/isolated_web_app_api_bridge_impl.cc
Line 44, Patchset 8 (Latest): // TODO(crbug.com/480146201): Not yet implemented.
Mike West . unresolved

I looked briefly at the next two CLs in the chain, but I'm still wondering about how you're enforcing the restrictions set up on this kind of API to defend against a corrupted renderer. It looks like you unconditionally create the pipe in `chrome/browser/chrome_browser_interface_binders.cc`, and leave it up to the renderer from there. Are there browser-side checks you can perform here to ensure that the context calling this API is doing so legitimately?

Open in Gerrit

Related details

Attention is currently required from:
  • Edman Anjos
  • Hidehiko Abe
  • Simon Hangl
Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement is not satisfiedCode-Owners
    • requirement is not satisfiedCode-Review
    • requirement is not satisfiedNo-Unresolved-Comments
    • 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: I9594fdd9c7f3317af0d82ee0ec5bff6a06e71608
    Gerrit-Change-Number: 7566875
    Gerrit-PatchSet: 8
    Gerrit-Owner: Edman Anjos <ed...@chromium.org>
    Gerrit-Reviewer: Edman Anjos <ed...@chromium.org>
    Gerrit-Reviewer: Hidehiko Abe <hide...@chromium.org>
    Gerrit-Reviewer: Mike West <mk...@chromium.org>
    Gerrit-Reviewer: Simon Hangl <sim...@google.com>
    Gerrit-CC: AI Code Reviewer <peep-gen...@system.gserviceaccount.com>
    Gerrit-CC: Chromium IPC Reviews <chrome-ip...@google.com>
    Gerrit-CC: Kentaro Hara <har...@chromium.org>
    Gerrit-CC: Raphael Kubo da Costa <ku...@igalia.com>
    Gerrit-CC: gwsq
    Gerrit-Attention: Simon Hangl <sim...@google.com>
    Gerrit-Attention: Edman Anjos <ed...@chromium.org>
    Gerrit-Attention: Hidehiko Abe <hide...@chromium.org>
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Hidehiko Abe (Gerrit)

    unread,
    Feb 27, 2026, 8:13:44 AM (13 days ago) Feb 27
    to Edman Anjos, Chromium IPC Reviews, Mike West, Simon Hangl, AI Code Reviewer, Chromium LUCI CQ, chromium...@chromium.org, Kentaro Hara, Raphael Kubo da Costa, asvitki...@chromium.org, blink-re...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, ipc-securi...@chromium.org, jmedle...@chromium.org, kinuko...@chromium.org, oshima...@chromium.org
    Attention needed from Edman Anjos and Simon Hangl

    Hidehiko Abe added 10 comments

    Patchset-level comments
    Hidehiko Abe . resolved

    most likely sets of minor comments.

    File chromeos/ash/experiences/isolated_web_app/DEPS
    Line 2, Patchset 8 (Latest): "+content/public/browser",
    "+mojo/public/cpp/bindings",
    "+third_party/blink/public/mojom/chromeos",
    "+ui/views/widget/widget.h",
    "+ui/gfx/geometry",
    "+ui/aura/window.h",
    Hidehiko Abe . unresolved

    nit: please sort in the lexicographical order.

    File chromeos/ash/experiences/isolated_web_app/isolated_web_app_api_bridge_impl.h
    Line 48, Patchset 8 (Latest): void Bind(
    Hidehiko Abe . unresolved

    could you explicitly document the behavior here when there already is a bound reciever?

    Line 29, Patchset 8 (Latest): mojo::PendingReceiver<blink::mojom::IsolatedWebAppApiBridge> receiver);
    Hidehiko Abe . unresolved

    and this must not be null either?

    Line 28, Patchset 8 (Latest): content::RenderFrameHost* render_frame_host,
    Hidehiko Abe . unresolved

    could you document this must not be nullptr?

    Line 20, Patchset 8 (Latest):namespace chromeos {
    Hidehiko Abe . unresolved

    often we use ash for the namespace of OS system parts.

    Line 18, Patchset 8 (Latest):}
    Hidehiko Abe . unresolved

    nit: `} // namespace content`

    File chromeos/ash/experiences/isolated_web_app/isolated_web_app_api_bridge_impl.cc
    Line 45, Patchset 8 (Latest): std::move(callback).Run(false);
    Hidehiko Abe . unresolved

    nit: NOTIMPLEMENTED() until you actually implement it?

    File third_party/blink/renderer/extensions/chromeos/isolated_web_app/isolated_web_app.idl
    Line 12, Patchset 8 (Latest): // Sets the shape of the current window to the given `rects`. Only areas of
    // the window that are covered by a rectangle become visible and can be
    // interacted with.
    Hidehiko Abe . unresolved

    maybe `at least one rectangle` to be more explicit?

    Line 16, Patchset 8 (Latest): // Passing an empty list of `rects` resets the window shape back to normal.
    Hidehiko Abe . unresolved

    could you document the meaning of return value, too?
    In case of failure, it returns false? What is the difference from "rejected" promise?

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Edman Anjos
    • Simon Hangl
    Gerrit-Comment-Date: Fri, 27 Feb 2026 13:13:13 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Paulina Gacek (Gerrit)

    unread,
    Mar 3, 2026, 4:46:37 AM (9 days ago) Mar 3
    to Edman Anjos, Chromium IPC Reviews, Mike West, Hidehiko Abe, Simon Hangl, AI Code Reviewer, Chromium LUCI CQ, chromium...@chromium.org, Kentaro Hara, Raphael Kubo da Costa, asvitki...@chromium.org, blink-re...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, ipc-securi...@chromium.org, jmedle...@chromium.org, kinuko...@chromium.org, oshima...@chromium.org
    Attention needed from Edman Anjos and Simon Hangl

    Paulina Gacek added 5 comments

    Patchset-level comments
    Paulina Gacek . resolved

    Hey Edman, I had a few thoughts on this CL, so I added some comments, hope you don't mind c:

    File chrome/browser/ash/isolated_web_app/blink_extensions_browsertest.cc
    Line 46, Patchset 8 (Latest): "BlinkExtensionChromeOS,BlinkExtensionChromeOSIsolatedWebApp");
    Paulina Gacek . unresolved

    Since this CL introduces a new IWA-specific flag on top of the base flag (`BlinkExtensionChromeOS`), it would be beneficial to split this test fixture into two distinct fixtures to properly verify the feature gating.

    Currently, enabling both flags at once loses test coverage for the intermediate state. It would be safer to structure it like this:

    • `BlinkExtensionsBaseFlagSetTest` (Enables only BlinkExtensionChromeOS): Verifies that `window.chromeos` exists, but `window.chromeos.iwa` does not.
    • `BlinkExtensionsIwaFlagSetTest` (Enables both flags): Verifies that `window.chromeos.iwa` exists and `setShape` works.

    What do you think?

    File third_party/blink/renderer/extensions/chromeos/isolated_web_app/isolated_web_app.cc
    Line 68, Patchset 8 (Latest): Vector<gfx::Rect> converted_rects;
    converted_rects.reserve(rects.size());
    Paulina Gacek . unresolved

    Shouldn't `rects` size be restricted for security reasons? If the developer exceeds it, we could reject the promise with some error.

    Line 70, Patchset 8 (Latest): for (const auto& rect : rects) {
    converted_rects.push_back(gfx::Rect(
    static_cast<int>(rect->x()), static_cast<int>(rect->y()),
    static_cast<int>(rect->width()), static_cast<int>(rect->height())));
    }
    Paulina Gacek . unresolved
    `DOMRectReadOnly` stores its coordinates as `double`, but `gfx::Rect` uses `int`. Your current code uses `static_cast<int>`, which simply truncates the decimal. I think a floating version of gfx::Rect should be used instead: `ui/gfx/geometry/rect_f.h`
    ```suggestion
    for (const auto& rect : rects) {
    gfx::RectF float_rect(rect->x(), rect->y(), rect->width(), rect->height());
    converted_rects.push_back(gfx::ToEnclosingRect(float_rect));
    }
    ```
    File third_party/blink/renderer/extensions/chromeos/isolated_web_app/isolated_web_app.idl
    Line 12, Patchset 8 (Latest): // Sets the shape of the current window to the given `rects`. Only areas of
    // the window that are covered by a rectangle become visible and can be
    // interacted with.
    Paulina Gacek . unresolved
    WDYT about clarifying that the final window shape is the union of the provided rectangles? The current phrasing ('covered by a rectangle') leaves a little bit of ambiguity regarding how overlapping or disjoint rectangles are handled.
    ```suggestion
    // Sets the shape of the current window to the union of given `rects`.
    // Only areas of the window that are covered by at least one of the
    // provided rectangles become visible and can be interacted with.
    //
    ```
    Gerrit-CC: Paulina Gacek <paulin...@google.com>
    Gerrit-CC: Raphael Kubo da Costa <ku...@igalia.com>
    Gerrit-CC: gwsq
    Gerrit-Attention: Simon Hangl <sim...@google.com>
    Gerrit-Attention: Edman Anjos <ed...@chromium.org>
    Gerrit-Comment-Date: Tue, 03 Mar 2026 09:46:25 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Edman Anjos (Gerrit)

    unread,
    6:38 AM (6 hours ago) 6:38 AM
    to Edman Anjos, Code Review Nudger, Paulina Gacek, Chromium IPC Reviews, Mike West, Hidehiko Abe, Simon Hangl, AI Code Reviewer, Chromium LUCI CQ, chromium...@chromium.org, Kentaro Hara, Raphael Kubo da Costa, asvitki...@chromium.org, blink-re...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, ipc-securi...@chromium.org, jmedle...@chromium.org, kinuko...@chromium.org, oshima...@chromium.org
    Attention needed from Hidehiko Abe, Mike West and Simon Hangl

    Edman Anjos added 14 comments

    File chrome/browser/ash/isolated_web_app/blink_extensions_browsertest.cc
    Line 46, Patchset 8: "BlinkExtensionChromeOS,BlinkExtensionChromeOSIsolatedWebApp");
    Paulina Gacek . resolved

    Since this CL introduces a new IWA-specific flag on top of the base flag (`BlinkExtensionChromeOS`), it would be beneficial to split this test fixture into two distinct fixtures to properly verify the feature gating.

    Currently, enabling both flags at once loses test coverage for the intermediate state. It would be safer to structure it like this:

    • `BlinkExtensionsBaseFlagSetTest` (Enables only BlinkExtensionChromeOS): Verifies that `window.chromeos` exists, but `window.chromeos.iwa` does not.
    • `BlinkExtensionsIwaFlagSetTest` (Enables both flags): Verifies that `window.chromeos.iwa` exists and `setShape` works.

    What do you think?

    Edman Anjos

    Acknowledged, there's no scenario in production where one flag is enabled without the other, so I don't see the need to test them independently.

    File chromeos/ash/experiences/isolated_web_app/DEPS
    Line 2, Patchset 8: "+content/public/browser",

    "+mojo/public/cpp/bindings",
    "+third_party/blink/public/mojom/chromeos",
    "+ui/views/widget/widget.h",
    "+ui/gfx/geometry",
    "+ui/aura/window.h",
    Hidehiko Abe . resolved

    nit: please sort in the lexicographical order.

    Edman Anjos

    Done

    File chromeos/ash/experiences/isolated_web_app/isolated_web_app_api_bridge_impl.h
    Line 48, Patchset 8: void Bind(
    Hidehiko Abe . resolved

    could you explicitly document the behavior here when there already is a bound reciever?

    Edman Anjos

    Done, the current behavior is it will be rebound

    Line 29, Patchset 8: mojo::PendingReceiver<blink::mojom::IsolatedWebAppApiBridge> receiver);
    Hidehiko Abe . resolved

    and this must not be null either?

    Edman Anjos

    Done, also added a CHECK for this

    Line 28, Patchset 8: content::RenderFrameHost* render_frame_host,
    Hidehiko Abe . resolved

    could you document this must not be nullptr?

    Edman Anjos

    Done

    Line 20, Patchset 8:namespace chromeos {
    Hidehiko Abe . resolved

    often we use ash for the namespace of OS system parts.

    Edman Anjos

    Done

    Line 18, Patchset 8:}
    Hidehiko Abe . resolved

    nit: `} // namespace content`

    Edman Anjos

    Done

    File chromeos/ash/experiences/isolated_web_app/isolated_web_app_api_bridge_impl.cc
    Line 44, Patchset 8: // TODO(crbug.com/480146201): Not yet implemented.
    Mike West . unresolved

    I looked briefly at the next two CLs in the chain, but I'm still wondering about how you're enforcing the restrictions set up on this kind of API to defend against a corrupted renderer. It looks like you unconditionally create the pipe in `chrome/browser/chrome_browser_interface_binders.cc`, and leave it up to the renderer from there. Are there browser-side checks you can perform here to ensure that the context calling this API is doing so legitimately?

    Edman Anjos

    Thanks for the review Mike.

    I added a check for isolation level in `IsolatedWebAppApiBridgeImpl::Create` method in this CL, and added a check for the chrome flag in https://crrev.com/c/7609644.

    In the future we will gate this API to an allowlist of IWA IDs (not yet implemented in this chain, should come later in Q1 or Q2).

    Does this sound good to you?

    I'm also wondering if it's enough to make those checks on `Create` or if we need to e.g. check at every API call. Can you confirm?

    Line 45, Patchset 8: std::move(callback).Run(false);
    Hidehiko Abe . resolved

    nit: NOTIMPLEMENTED() until you actually implement it?

    Edman Anjos

    Done

    File third_party/blink/renderer/extensions/chromeos/isolated_web_app/isolated_web_app.cc
    Line 68, Patchset 8: Vector<gfx::Rect> converted_rects;
    converted_rects.reserve(rects.size());
    Paulina Gacek . resolved

    Shouldn't `rects` size be restricted for security reasons? If the developer exceeds it, we could reject the promise with some error.

    Edman Anjos

    Done

    Line 70, Patchset 8: for (const auto& rect : rects) {

    converted_rects.push_back(gfx::Rect(
    static_cast<int>(rect->x()), static_cast<int>(rect->y()),
    static_cast<int>(rect->width()), static_cast<int>(rect->height())));
    }
    Paulina Gacek . resolved
    `DOMRectReadOnly` stores its coordinates as `double`, but `gfx::Rect` uses `int`. Your current code uses `static_cast<int>`, which simply truncates the decimal. I think a floating version of gfx::Rect should be used instead: `ui/gfx/geometry/rect_f.h`
    ```suggestion
    for (const auto& rect : rects) {
    gfx::RectF float_rect(rect->x(), rect->y(), rect->width(), rect->height());
    converted_rects.push_back(gfx::ToEnclosingRect(float_rect));
    }
    ```
    Edman Anjos

    Acknowledge, floating point precision is not required here.

    File third_party/blink/renderer/extensions/chromeos/isolated_web_app/isolated_web_app.idl
    Line 12, Patchset 8: // Sets the shape of the current window to the given `rects`. Only areas of

    // the window that are covered by a rectangle become visible and can be
    // interacted with.
    Hidehiko Abe . resolved

    maybe `at least one rectangle` to be more explicit?

    Edman Anjos

    Done

    Line 12, Patchset 8: // Sets the shape of the current window to the given `rects`. Only areas of

    // the window that are covered by a rectangle become visible and can be
    // interacted with.
    Paulina Gacek . resolved
    WDYT about clarifying that the final window shape is the union of the provided rectangles? The current phrasing ('covered by a rectangle') leaves a little bit of ambiguity regarding how overlapping or disjoint rectangles are handled.
    ```suggestion
    // Sets the shape of the current window to the union of given `rects`.
    // Only areas of the window that are covered by at least one of the
    // provided rectangles become visible and can be interacted with.
    //
    ```
    Edman Anjos

    Done

    Line 16, Patchset 8: // Passing an empty list of `rects` resets the window shape back to normal.
    Hidehiko Abe . resolved

    could you document the meaning of return value, too?
    In case of failure, it returns false? What is the difference from "rejected" promise?

    Edman Anjos

    Done, I improved the docs and made this return `Promise<undefined>` instead.

    I also added some basic input validation, like to check that rect width/height must be positive.

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Hidehiko Abe
    • Mike West
    • Simon Hangl
    Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement is not satisfiedCode-Owners
    • requirement is not satisfiedCode-Review
    • requirement is not satisfiedNo-Unresolved-Comments
    • 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: I9594fdd9c7f3317af0d82ee0ec5bff6a06e71608
    Gerrit-Change-Number: 7566875
    Gerrit-PatchSet: 10
    Gerrit-Owner: Edman Anjos <ed...@chromium.org>
    Gerrit-Reviewer: Edman Anjos <ed...@chromium.org>
    Gerrit-Reviewer: Hidehiko Abe <hide...@chromium.org>
    Gerrit-Reviewer: Mike West <mk...@chromium.org>
    Gerrit-Reviewer: Simon Hangl <sim...@google.com>
    Gerrit-CC: AI Code Reviewer <peep-gen...@system.gserviceaccount.com>
    Gerrit-CC: Chromium IPC Reviews <chrome-ip...@google.com>
    Gerrit-CC: Code Review Nudger <android-build...@prod.google.com>
    Gerrit-CC: Kentaro Hara <har...@chromium.org>
    Gerrit-CC: Paulina Gacek <paulin...@google.com>
    Gerrit-CC: Raphael Kubo da Costa <ku...@igalia.com>
    Gerrit-CC: gwsq
    Gerrit-Attention: Simon Hangl <sim...@google.com>
    Gerrit-Attention: Mike West <mk...@chromium.org>
    Gerrit-Attention: Hidehiko Abe <hide...@chromium.org>
    Gerrit-Comment-Date: Thu, 12 Mar 2026 10:38:14 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    Comment-In-Reply-To: Mike West <mk...@chromium.org>
    Comment-In-Reply-To: Paulina Gacek <paulin...@google.com>
    Comment-In-Reply-To: Hidehiko Abe <hide...@chromium.org>
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy
    Reply all
    Reply to author
    Forward
    0 new messages