[<install> Element] Update string and icon for apps already installed [chromium/src : main]

0 views
Skip to first unread message

Lia Hiscock (Gerrit)

unread,
Jan 12, 2026, 3:38:02 PMJan 12
to Lu Huang, Kristin Lee, Chromium LUCI CQ, AyeAye, chromium...@chromium.org, blink-re...@chromium.org, blink-rev...@chromium.org, blink-...@chromium.org, dibyapal+wa...@chromium.org, dmurph+watc...@chromium.org, kinuko...@chromium.org, kuragin+web-ap...@chromium.org, loyso...@chromium.org, mgiuca...@chromium.org, philli...@chromium.org, webap...@microsoft.com, zelin+watch-we...@chromium.org
Attention needed from Lu Huang

Lia Hiscock added 1 comment

Patchset-level comments
File-level comment, Patchset 11 (Latest):
Lia Hiscock . resolved

ready for internal review

Open in Gerrit

Related details

Attention is currently required from:
  • Lu Huang
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: I12dbb4ded8035e48f248ad7efd7be3c4b9d5c8f2
Gerrit-Change-Number: 7302388
Gerrit-PatchSet: 11
Gerrit-Owner: Lia Hiscock <liahi...@microsoft.com>
Gerrit-Reviewer: Lia Hiscock <liahi...@microsoft.com>
Gerrit-Reviewer: Lu Huang <lu...@microsoft.com>
Gerrit-CC: Kristin Lee <krist...@microsoft.com>
Gerrit-Attention: Lu Huang <lu...@microsoft.com>
Gerrit-Comment-Date: Mon, 12 Jan 2026 20:37:52 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
satisfied_requirement
unsatisfied_requirement
open
diffy

Lu Huang (Gerrit)

unread,
Jan 14, 2026, 5:32:41 PMJan 14
to Lia Hiscock, Robert Paveza, Kristin Lee, Chromium LUCI CQ, AyeAye, chromium...@chromium.org, blink-re...@chromium.org, blink-rev...@chromium.org, blink-...@chromium.org, dibyapal+wa...@chromium.org, dmurph+watc...@chromium.org, kinuko...@chromium.org, kuragin+web-ap...@chromium.org, loyso...@chromium.org, mgiuca...@chromium.org, philli...@chromium.org, webap...@microsoft.com, zelin+watch-we...@chromium.org
Attention needed from Lia Hiscock

Lu Huang added 3 comments

Patchset-level comments
File-level comment, Patchset 15 (Latest):
Lu Huang . resolved

Looks good overall. Please add reviewers.

File chrome/browser/web_applications/web_install_service_impl.cc
Line 159, Patchset 15 (Latest): GURL install_target =
options ? GURL(options->install_url) : last_committed_url_;
Lu Huang . unresolved

Do we care if `install_target` is a valid URL or will that be checked later?

File third_party/blink/renderer/core/html/html_install_element.cc
Line 138, Patchset 15 (Latest):mojom::blink::InstallOptionsPtr HTMLInstallElement::PopulateInstallOptions() {
Lu Huang . unresolved

Perhaps `[Make|Create]InstallOptions` as this function doesn't take an input.

Open in Gerrit

Related details

Attention is currently required from:
  • Lia Hiscock
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: I12dbb4ded8035e48f248ad7efd7be3c4b9d5c8f2
    Gerrit-Change-Number: 7302388
    Gerrit-PatchSet: 15
    Gerrit-Owner: Lia Hiscock <liahi...@microsoft.com>
    Gerrit-Reviewer: Lia Hiscock <liahi...@microsoft.com>
    Gerrit-Reviewer: Lu Huang <lu...@microsoft.com>
    Gerrit-CC: Kristin Lee <krist...@microsoft.com>
    Gerrit-CC: Robert Paveza <Rob.P...@microsoft.com>
    Gerrit-Attention: Lia Hiscock <liahi...@microsoft.com>
    Gerrit-Comment-Date: Wed, 14 Jan 2026 22:32:29 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Stanley Hon (Gerrit)

    unread,
    Jan 14, 2026, 6:38:42 PMJan 14
    to Lia Hiscock, Robert Paveza, Lu Huang, Kristin Lee, Chromium LUCI CQ, AyeAye, chromium...@chromium.org, blink-re...@chromium.org, blink-rev...@chromium.org, blink-...@chromium.org, dibyapal+wa...@chromium.org, dmurph+watc...@chromium.org, kinuko...@chromium.org, kuragin+web-ap...@chromium.org, loyso...@chromium.org, mgiuca...@chromium.org, philli...@chromium.org, webap...@microsoft.com, zelin+watch-we...@chromium.org
    Attention needed from Lia Hiscock

    Stanley Hon added 4 comments

    Patchset-level comments
    Stanley Hon . resolved

    mostly some questions

    File chrome/browser/web_applications/install_element_browsertest.cc
    Line 323, Patchset 15 (Latest):IN_PROC_BROWSER_TEST_F(InstallElementBrowserTest,
    Stanley Hon . unresolved

    let's add a test for the interesting scenario where the button shows 'install' but the app gets uninstalled from under us.

    File third_party/blink/renderer/core/html/html_install_element.cc
    Line 50, Patchset 15 (Latest): GetDocument()
    .GetTaskRunner(TaskType::kInternalDefault)
    ->PostTask(FROM_HERE, BindOnce(&HTMLInstallElement::UpdateAppearanceTask,
    WrapWeakPersistent(this)));
    Stanley Hon . unresolved

    mainly curious - is it required we use the task runner to queue a task to make a mojo call, then proceed to wait to be called back (not on any task queue)?

    is it okay to just make the mojo call here (i.e. `WebInstallService()->IsInstalled()`) and not use the task runner?

    Line 108, Patchset 15 (Latest): // Can be nullptr in unit tests and after Shutdown().
    Stanley Hon . unresolved

    hmm... the ergonomics of using this is odd, we use `WebInstallService()` as kind of a "if it's not bound, bind it, then return it' - that's okay. But we also have to constantly check `is_bound()` on the return value but that pattern seems common across other HeapMojoRemotes too.

    the main question I have is, I can't make sense of ExecutionContext's lifetime in relation to `HtmlInstallElement`. If ExecutionContext is gone, we can't do anything (aka rebind the remote). So, what should we do when ExecutionContext is gone?

    maybe someone with more domain expertise here can comment on how much of a concern this is.

    Gerrit-CC: Stanley Hon <sta...@microsoft.com>
    Gerrit-Attention: Lia Hiscock <liahi...@microsoft.com>
    Gerrit-Comment-Date: Wed, 14 Jan 2026 23:38:33 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Lia Hiscock (Gerrit)

    unread,
    Jan 14, 2026, 10:32:20 PMJan 14
    to Stanley Hon, Robert Paveza, Lu Huang, Kristin Lee, Chromium LUCI CQ, AyeAye, chromium...@chromium.org, blink-re...@chromium.org, blink-rev...@chromium.org, blink-...@chromium.org, dibyapal+wa...@chromium.org, dmurph+watc...@chromium.org, kinuko...@chromium.org, kuragin+web-ap...@chromium.org, loyso...@chromium.org, mgiuca...@chromium.org, philli...@chromium.org, webap...@microsoft.com, zelin+watch-we...@chromium.org
    Attention needed from Lu Huang

    Lia Hiscock added 2 comments

    File chrome/browser/web_applications/web_install_service_impl.cc
    Line 159, Patchset 15 (Latest): GURL install_target =
    options ? GURL(options->install_url) : last_committed_url_;
    Lu Huang . unresolved

    Do we care if `install_target` is a valid URL or will that be checked later?

    Lia Hiscock

    this is enforced on the blink side by the element. do you think a `CHECK` is appropriate here then? i can also rename GetInstallOptions to indicate that it performs some validations?

    ```
    mojom::blink::InstallOptionsPtr HTMLInstallElement::GetInstallOptions() {
    mojom::blink::InstallOptionsPtr options;
      KURL install_url = KURL(InstallUrl());
    if (install_url.IsValid()) {
    options = mojom::blink::InstallOptions::New();
    options->install_url = install_url;
    ```
    File third_party/blink/renderer/core/html/html_install_element.cc
    Line 138, Patchset 15 (Latest):mojom::blink::InstallOptionsPtr HTMLInstallElement::PopulateInstallOptions() {
    Lu Huang . resolved

    Perhaps `[Make|Create]InstallOptions` as this function doesn't take an input.

    Lia Hiscock

    Makes sense! I went with GetInstallOptions since we're just grabbing them from the attributes

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Lu Huang
    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: I12dbb4ded8035e48f248ad7efd7be3c4b9d5c8f2
    Gerrit-Change-Number: 7302388
    Gerrit-PatchSet: 15
    Gerrit-Owner: Lia Hiscock <liahi...@microsoft.com>
    Gerrit-Reviewer: Lia Hiscock <liahi...@microsoft.com>
    Gerrit-Reviewer: Lu Huang <lu...@microsoft.com>
    Gerrit-CC: Kristin Lee <krist...@microsoft.com>
    Gerrit-CC: Robert Paveza <Rob.P...@microsoft.com>
    Gerrit-CC: Stanley Hon <sta...@microsoft.com>
    Gerrit-Attention: Lu Huang <lu...@microsoft.com>
    Gerrit-Comment-Date: Thu, 15 Jan 2026 03:32:11 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    Comment-In-Reply-To: Lu Huang <lu...@microsoft.com>
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Daniel Murphy (Gerrit)

    unread,
    Jan 15, 2026, 12:27:33 PMJan 15
    to Lia Hiscock, Thomas Nguyen, Daniel Murphy, Stanley Hon, Robert Paveza, Lu Huang, Kristin Lee, Chromium LUCI CQ, AyeAye, chromium...@chromium.org, blink-re...@chromium.org, blink-rev...@chromium.org, blink-...@chromium.org, dibyapal+wa...@chromium.org, dmurph+watc...@chromium.org, kinuko...@chromium.org, kuragin+web-ap...@chromium.org, loyso...@chromium.org, mgiuca...@chromium.org, philli...@chromium.org, webap...@microsoft.com, zelin+watch-we...@chromium.org
    Attention needed from Lia Hiscock, Lu Huang and Thomas Nguyen

    Daniel Murphy added 1 comment

    File third_party/blink/renderer/core/html/html_install_element.cc
    Line 46, Patchset 16 (Latest): // We'll update the text ourselves rather than invoking
    // `HTMLPermissionElement::UpdateAppearance()` given the logic here. Like
    // `HTMLGeolocationElement::UpdateAppearance()`, we'll punt the inner text
    // change out to a task on the default task queue.
    Daniel Murphy . unresolved

    ```
    // We need `PostTask` here because setInnerText hits a DCHECK.
    ```

    from https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/renderer/core/html/html_geolocation_element.cc;l=60?q=HTMLGeolocationElement::UpdateAppearance&ss=chromium

    @tun...@chromium.org Can you help us make a better comment here? WHY does this DCHECK? we should already be on the kInternalDefault queue if the mojo pipe is bound on that queue?

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Lia Hiscock
    • Lu Huang
    • Thomas Nguyen
    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: I12dbb4ded8035e48f248ad7efd7be3c4b9d5c8f2
    Gerrit-Change-Number: 7302388
    Gerrit-PatchSet: 16
    Gerrit-Owner: Lia Hiscock <liahi...@microsoft.com>
    Gerrit-Reviewer: Lia Hiscock <liahi...@microsoft.com>
    Gerrit-Reviewer: Lu Huang <lu...@microsoft.com>
    Gerrit-CC: Daniel Murphy <dmu...@chromium.org>
    Gerrit-CC: Kristin Lee <krist...@microsoft.com>
    Gerrit-CC: Robert Paveza <Rob.P...@microsoft.com>
    Gerrit-CC: Stanley Hon <sta...@microsoft.com>
    Gerrit-CC: Thomas Nguyen <tun...@chromium.org>
    Gerrit-Attention: Lu Huang <lu...@microsoft.com>
    Gerrit-Attention: Thomas Nguyen <tun...@chromium.org>
    Gerrit-Attention: Lia Hiscock <liahi...@microsoft.com>
    Gerrit-Comment-Date: Thu, 15 Jan 2026 17:27:27 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Lia Hiscock (Gerrit)

    unread,
    Jan 15, 2026, 1:25:56 PMJan 15
    to Thomas Nguyen, Daniel Murphy, Stanley Hon, Robert Paveza, Lu Huang, Kristin Lee, Chromium LUCI CQ, AyeAye, chromium...@chromium.org, blink-re...@chromium.org, blink-rev...@chromium.org, blink-...@chromium.org, dibyapal+wa...@chromium.org, dmurph+watc...@chromium.org, kinuko...@chromium.org, kuragin+web-ap...@chromium.org, loyso...@chromium.org, mgiuca...@chromium.org, philli...@chromium.org, webap...@microsoft.com, zelin+watch-we...@chromium.org
    Attention needed from Lu Huang and Thomas Nguyen

    Lia Hiscock added 1 comment

    File third_party/blink/renderer/core/html/html_install_element.cc
    Line 50, Patchset 15: GetDocument()

    .GetTaskRunner(TaskType::kInternalDefault)
    ->PostTask(FROM_HERE, BindOnce(&HTMLInstallElement::UpdateAppearanceTask,
    WrapWeakPersistent(this)));
    Stanley Hon . unresolved

    mainly curious - is it required we use the task runner to queue a task to make a mojo call, then proceed to wait to be called back (not on any task queue)?

    is it okay to just make the mojo call here (i.e. `WebInstallService()->IsInstalled()`) and not use the task runner?

    Lia Hiscock

    hi again @tun...@chromium.org! Mike referred us to you for SME help in this area. I'm new to working with JS and the task queue, and would appreciate any insight you have. Thanks!

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Lu Huang
    • Thomas Nguyen
    Gerrit-Comment-Date: Thu, 15 Jan 2026 18:25:48 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    Comment-In-Reply-To: Stanley Hon <sta...@microsoft.com>
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Lia Hiscock (Gerrit)

    unread,
    Jan 15, 2026, 3:53:50 PMJan 15
    to Thomas Nguyen, Daniel Murphy, Stanley Hon, Robert Paveza, Lu Huang, Kristin Lee, Chromium LUCI CQ, AyeAye, chromium...@chromium.org, blink-re...@chromium.org, blink-rev...@chromium.org, blink-...@chromium.org, dibyapal+wa...@chromium.org, dmurph+watc...@chromium.org, kinuko...@chromium.org, kuragin+web-ap...@chromium.org, loyso...@chromium.org, mgiuca...@chromium.org, philli...@chromium.org, webap...@microsoft.com, zelin+watch-we...@chromium.org
    Attention needed from Lu Huang and Thomas Nguyen

    Lia Hiscock added 1 comment

    File chrome/browser/web_applications/web_install_service_impl.cc
    Line 159, Patchset 15: GURL install_target =

    options ? GURL(options->install_url) : last_committed_url_;
    Lu Huang . resolved

    Do we care if `install_target` is a valid URL or will that be checked later?

    Lia Hiscock

    this is enforced on the blink side by the element. do you think a `CHECK` is appropriate here then? i can also rename GetInstallOptions to indicate that it performs some validations?

    ```
    mojom::blink::InstallOptionsPtr HTMLInstallElement::GetInstallOptions() {
    mojom::blink::InstallOptionsPtr options;
      KURL install_url = KURL(InstallUrl());
    if (install_url.IsValid()) {
    options = mojom::blink::InstallOptions::New();
    options->install_url = install_url;
    ```
    Lia Hiscock

    actually, rethinking this, since we don't trust data from blink, let me add an if check for this here :) LMK if you want more checks

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Lu Huang
    • Thomas Nguyen
    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: I12dbb4ded8035e48f248ad7efd7be3c4b9d5c8f2
    Gerrit-Change-Number: 7302388
    Gerrit-PatchSet: 17
    Gerrit-Owner: Lia Hiscock <liahi...@microsoft.com>
    Gerrit-Reviewer: Lia Hiscock <liahi...@microsoft.com>
    Gerrit-Reviewer: Lu Huang <lu...@microsoft.com>
    Gerrit-CC: Daniel Murphy <dmu...@chromium.org>
    Gerrit-CC: Kristin Lee <krist...@microsoft.com>
    Gerrit-CC: Robert Paveza <Rob.P...@microsoft.com>
    Gerrit-CC: Stanley Hon <sta...@microsoft.com>
    Gerrit-CC: Thomas Nguyen <tun...@chromium.org>
    Gerrit-Attention: Lu Huang <lu...@microsoft.com>
    Gerrit-Attention: Thomas Nguyen <tun...@chromium.org>
    Gerrit-Comment-Date: Thu, 15 Jan 2026 20:53:40 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    Comment-In-Reply-To: Lu Huang <lu...@microsoft.com>
    Comment-In-Reply-To: Lia Hiscock <liahi...@microsoft.com>
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Lia Hiscock (Gerrit)

    unread,
    Jan 15, 2026, 4:01:56 PMJan 15
    to Daniel Murphy, Mike West, Chromium IPC Reviews, Thomas Nguyen, Stanley Hon, Robert Paveza, Lu Huang, Kristin Lee, Chromium LUCI CQ, AyeAye, chromium...@chromium.org, blink-re...@chromium.org, blink-rev...@chromium.org, blink-...@chromium.org, dibyapal+wa...@chromium.org, dmurph+watc...@chromium.org, kinuko...@chromium.org, kuragin+web-ap...@chromium.org, loyso...@chromium.org, mgiuca...@chromium.org, philli...@chromium.org, webap...@microsoft.com, zelin+watch-we...@chromium.org
    Attention needed from Chromium IPC Reviews, Daniel Murphy, Lu Huang, Mike West and Thomas Nguyen

    Lia Hiscock added 1 comment

    Patchset-level comments
    File-level comment, Patchset 17 (Latest):
    Lia Hiscock . resolved

    Hi folks! While we sort out the task runner questions, thought I'd get y'all added to start looking at the rest.

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Chromium IPC Reviews
    • Daniel Murphy
    • Lu Huang
    • Mike West
    • Thomas Nguyen
    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: I12dbb4ded8035e48f248ad7efd7be3c4b9d5c8f2
    Gerrit-Change-Number: 7302388
    Gerrit-PatchSet: 17
    Gerrit-Owner: Lia Hiscock <liahi...@microsoft.com>
    Gerrit-Reviewer: Chromium IPC Reviews <chrome-ip...@google.com>
    Gerrit-Reviewer: Daniel Murphy <dmu...@chromium.org>
    Gerrit-Reviewer: Lia Hiscock <liahi...@microsoft.com>
    Gerrit-Reviewer: Lu Huang <lu...@microsoft.com>
    Gerrit-Reviewer: Mike West <mk...@chromium.org>
    Gerrit-CC: Kristin Lee <krist...@microsoft.com>
    Gerrit-CC: Robert Paveza <Rob.P...@microsoft.com>
    Gerrit-CC: Stanley Hon <sta...@microsoft.com>
    Gerrit-CC: Thomas Nguyen <tun...@chromium.org>
    Gerrit-Attention: Lu Huang <lu...@microsoft.com>
    Gerrit-Attention: Daniel Murphy <dmu...@chromium.org>
    Gerrit-Attention: Thomas Nguyen <tun...@chromium.org>
    Gerrit-Attention: Mike West <mk...@chromium.org>
    Gerrit-Attention: Chromium IPC Reviews <chrome-ip...@google.com>
    Gerrit-Comment-Date: Thu, 15 Jan 2026 21:01:45 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    gwsq (Gerrit)

    unread,
    Jan 15, 2026, 4:07:21 PMJan 15
    to Lia Hiscock, Chromium IPC Reviews, Daniel Murphy, Mike West, Thomas Nguyen, Stanley Hon, Robert Paveza, Lu Huang, Kristin Lee, Chromium LUCI CQ, AyeAye, chromium...@chromium.org, blink-re...@chromium.org, blink-rev...@chromium.org, blink-...@chromium.org, dibyapal+wa...@chromium.org, dmurph+watc...@chromium.org, kinuko...@chromium.org, kuragin+web-ap...@chromium.org, loyso...@chromium.org, mgiuca...@chromium.org, philli...@chromium.org, webap...@microsoft.com, zelin+watch-we...@chromium.org
    Attention needed from Daniel Murphy, Lu Huang, Mike West and Thomas Nguyen

    Message from gwsq

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

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

    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:
    • Daniel Murphy
    • Lu Huang
    • Mike West
    • Thomas Nguyen
    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: I12dbb4ded8035e48f248ad7efd7be3c4b9d5c8f2
    Gerrit-Change-Number: 7302388
    Gerrit-PatchSet: 17
    Gerrit-Owner: Lia Hiscock <liahi...@microsoft.com>
    Gerrit-Reviewer: Daniel Murphy <dmu...@chromium.org>
    Gerrit-Reviewer: Lia Hiscock <liahi...@microsoft.com>
    Gerrit-Reviewer: Lu Huang <lu...@microsoft.com>
    Gerrit-Reviewer: Mike West <mk...@chromium.org>
    Gerrit-CC: Chromium IPC Reviews <chrome-ip...@google.com>
    Gerrit-CC: Kristin Lee <krist...@microsoft.com>
    Gerrit-CC: Robert Paveza <Rob.P...@microsoft.com>
    Gerrit-CC: Stanley Hon <sta...@microsoft.com>
    Gerrit-CC: Thomas Nguyen <tun...@chromium.org>
    Gerrit-CC: gwsq
    Gerrit-Attention: Lu Huang <lu...@microsoft.com>
    Gerrit-Attention: Daniel Murphy <dmu...@chromium.org>
    Gerrit-Attention: Thomas Nguyen <tun...@chromium.org>
    Gerrit-Attention: Mike West <mk...@chromium.org>
    Gerrit-Comment-Date: Thu, 15 Jan 2026 21:06:44 +0000
    Gerrit-HasComments: No
    Gerrit-Has-Labels: No
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Daniel Murphy (Gerrit)

    unread,
    Jan 20, 2026, 10:43:49 AMJan 20
    to Lia Hiscock, Chromium IPC Reviews, Daniel Murphy, Mike West, Thomas Nguyen, Stanley Hon, Robert Paveza, Lu Huang, Kristin Lee, Chromium LUCI CQ, AyeAye, chromium...@chromium.org, aixba+wat...@chromium.org, japhet+...@chromium.org, mek+w...@chromium.org, blink-re...@chromium.org, blink-rev...@chromium.org, blink-...@chromium.org, dibyapal+wa...@chromium.org, dmurph+watc...@chromium.org, kinuko...@chromium.org, kuragin+web-ap...@chromium.org, loyso...@chromium.org, mgiuca...@chromium.org, philli...@chromium.org, webap...@microsoft.com, zelin+watch-we...@chromium.org
    Attention needed from Lia Hiscock, Mike West and Thomas Nguyen

    Daniel Murphy added 4 comments

    File chrome/browser/web_applications/web_install_service_impl.cc
    Line 76, Patchset 22 (Latest):std::optional<webapps::AppId> IsAppInstalled(
    Daniel Murphy . unresolved

    nit: Have this take a `WebAppProvider&` instead of a `Profile*`

    Line 159, Patchset 22 (Latest): GURL install_target =

    options ? GURL(options->install_url) : last_committed_url_;
    Daniel Murphy . unresolved
    ```suggestion
    GURL install_target;
    std::optional<GURL> manifest_id;
    if (options) {
    install_target = GURL(options->install_url);
    manifest_id = options->manifest_id;
    } else {
    install_target = last_committed_url_;
    }
    ```
    Line 162, Patchset 22 (Latest): if (!install_target.is_valid() || !install_target.SchemeIsHTTPOrHTTPS()) {
    Daniel Murphy . unresolved

    fyi: If the renderer is supposed to enforce this, then we can use the ReportBadMessage to report a misbehaving renderer, which crashes the renderer (e.g. it must be compromised).

    returning false is also ok - just fyi.

    Line 165, Patchset 22 (Latest): }

    std::optional<GURL> manifest_id = std::nullopt;
    if (options && options->manifest_id.has_value()) {
    manifest_id = options->manifest_id.value();
    }
    Daniel Murphy . unresolved
    ```suggestion
    }

    ```

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Lia Hiscock
    • Mike West
    • Thomas Nguyen
    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: I12dbb4ded8035e48f248ad7efd7be3c4b9d5c8f2
    Gerrit-Change-Number: 7302388
    Gerrit-PatchSet: 22
    Gerrit-Owner: Lia Hiscock <liahi...@microsoft.com>
    Gerrit-Reviewer: Daniel Murphy <dmu...@chromium.org>
    Gerrit-Reviewer: Lia Hiscock <liahi...@microsoft.com>
    Gerrit-Reviewer: Lu Huang <lu...@microsoft.com>
    Gerrit-Reviewer: Mike West <mk...@chromium.org>
    Gerrit-CC: Chromium IPC Reviews <chrome-ip...@google.com>
    Gerrit-CC: Kristin Lee <krist...@microsoft.com>
    Gerrit-CC: Robert Paveza <Rob.P...@microsoft.com>
    Gerrit-CC: Stanley Hon <sta...@microsoft.com>
    Gerrit-CC: Thomas Nguyen <tun...@chromium.org>
    Gerrit-CC: gwsq
    Gerrit-Attention: Thomas Nguyen <tun...@chromium.org>
    Gerrit-Attention: Lia Hiscock <liahi...@microsoft.com>
    Gerrit-Attention: Mike West <mk...@chromium.org>
    Gerrit-Comment-Date: Tue, 20 Jan 2026 15:43:41 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Lia Hiscock (Gerrit)

    unread,
    Jan 20, 2026, 3:17:32 PMJan 20
    to Chromium IPC Reviews, Daniel Murphy, Mike West, Thomas Nguyen, Stanley Hon, Robert Paveza, Lu Huang, Kristin Lee, Chromium LUCI CQ, AyeAye, chromium...@chromium.org, aixba+wat...@chromium.org, japhet+...@chromium.org, mek+w...@chromium.org, blink-re...@chromium.org, blink-rev...@chromium.org, blink-...@chromium.org, dibyapal+wa...@chromium.org, dmurph+watc...@chromium.org, kinuko...@chromium.org, kuragin+web-ap...@chromium.org, loyso...@chromium.org, mgiuca...@chromium.org, philli...@chromium.org, webap...@microsoft.com, zelin+watch-we...@chromium.org
    Attention needed from Daniel Murphy, Mike West and Thomas Nguyen

    Lia Hiscock added 4 comments

    File chrome/browser/web_applications/web_install_service_impl.cc
    Line 76, Patchset 22:std::optional<webapps::AppId> IsAppInstalled(
    Daniel Murphy . resolved

    nit: Have this take a `WebAppProvider&` instead of a `Profile*`

    Lia Hiscock

    Done

    Line 159, Patchset 22: GURL install_target =

    options ? GURL(options->install_url) : last_committed_url_;
    Daniel Murphy . resolved
    ```suggestion
    GURL install_target;
    std::optional<GURL> manifest_id;
    if (options) {
    install_target = GURL(options->install_url);
    manifest_id = options->manifest_id;
    } else {
    install_target = last_committed_url_;
    }
    ```
    Lia Hiscock

    Done - with a slight modification, as `options->manifest_id` is an optional field

    Line 162, Patchset 22: if (!install_target.is_valid() || !install_target.SchemeIsHTTPOrHTTPS()) {
    Daniel Murphy . resolved

    fyi: If the renderer is supposed to enforce this, then we can use the ReportBadMessage to report a misbehaving renderer, which crashes the renderer (e.g. it must be compromised).

    returning false is also ok - just fyi.

    Lia Hiscock

    Oh interesting! Yeah on the renderer side we check `install_target.is_valid()` after we grab the attribute's value [HTMLInstallElement::GetInstallOptions](https://chromium-review.googlesource.com/c/chromium/src/+/7302388/22/third_party/blink/renderer/core/html/html_install_element.cc#155), but we do not check for HTTP/S.

    If there's no strong preference, I'll probably just leave it as is, but good to know that ReportBadMessage is an option!



    std::optional<GURL> manifest_id = std::nullopt;
    if (options && options->manifest_id.has_value()) {
    manifest_id = options->manifest_id.value();
    }
    Daniel Murphy . resolved
    ```suggestion
    }

    ```

    Lia Hiscock

    Done

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Daniel Murphy
    • Mike West
    • Thomas Nguyen
    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: I12dbb4ded8035e48f248ad7efd7be3c4b9d5c8f2
    Gerrit-Change-Number: 7302388
    Gerrit-PatchSet: 23
    Gerrit-Owner: Lia Hiscock <liahi...@microsoft.com>
    Gerrit-Reviewer: Daniel Murphy <dmu...@chromium.org>
    Gerrit-Reviewer: Lia Hiscock <liahi...@microsoft.com>
    Gerrit-Reviewer: Lu Huang <lu...@microsoft.com>
    Gerrit-Reviewer: Mike West <mk...@chromium.org>
    Gerrit-CC: Chromium IPC Reviews <chrome-ip...@google.com>
    Gerrit-CC: Kristin Lee <krist...@microsoft.com>
    Gerrit-CC: Robert Paveza <Rob.P...@microsoft.com>
    Gerrit-CC: Stanley Hon <sta...@microsoft.com>
    Gerrit-CC: Thomas Nguyen <tun...@chromium.org>
    Gerrit-CC: gwsq
    Gerrit-Attention: Daniel Murphy <dmu...@chromium.org>
    Gerrit-Attention: Thomas Nguyen <tun...@chromium.org>
    Gerrit-Attention: Mike West <mk...@chromium.org>
    Gerrit-Comment-Date: Tue, 20 Jan 2026 20:17:23 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    Comment-In-Reply-To: Daniel Murphy <dmu...@chromium.org>
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Daniel Murphy (Gerrit)

    unread,
    Jan 20, 2026, 3:41:23 PMJan 20
    to Lia Hiscock, Daniel Murphy, Chromium IPC Reviews, Mike West, Thomas Nguyen, Stanley Hon, Robert Paveza, Lu Huang, Kristin Lee, Chromium LUCI CQ, AyeAye, chromium...@chromium.org, aixba+wat...@chromium.org, japhet+...@chromium.org, mek+w...@chromium.org, blink-re...@chromium.org, blink-rev...@chromium.org, blink-...@chromium.org, dibyapal+wa...@chromium.org, dmurph+watc...@chromium.org, kinuko...@chromium.org, kuragin+web-ap...@chromium.org, loyso...@chromium.org, mgiuca...@chromium.org, philli...@chromium.org, webap...@microsoft.com, zelin+watch-we...@chromium.org
    Attention needed from Lia Hiscock, Mike West and Thomas Nguyen

    Daniel Murphy voted and added 3 comments

    Votes added by Daniel Murphy

    Code-Review+1

    3 comments

    Patchset-level comments
    File-level comment, Patchset 24 (Latest):
    Daniel Murphy . resolved

    LGTM % nits

    File chrome/browser/web_applications/install_element_browsertest.cc
    Line 401, Patchset 24 (Latest): EXPECT_EQ(provider().registrar_unsafe().GetAppIds().size(), 1u);
    Daniel Murphy . unresolved

    in general, I recommend you use AppMatches instead of checking registrar size. Registrar size seems fragile with things like preinstall, and even GetAppIds isn't a great API method and should take a filter too.

    So - if possible, please generate the app_id that should be used here (GetURL from the server of the manifestid path, then call GenerateAppIdFromManifestId), and check AppMatches with that.

    File chrome/browser/web_applications/web_install_service_impl.cc
    Line 160, Patchset 24 (Latest): if (options->manifest_id.has_value()) {
    manifest_id = options->manifest_id;
    }
    Daniel Murphy . unresolved
    ```suggestion
    manifest_id = options->manifest_id;
    ```

    Both fields are optional, right? assigning from one optional to the other works.

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Lia Hiscock
    • Mike West
    • Thomas Nguyen
    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: I12dbb4ded8035e48f248ad7efd7be3c4b9d5c8f2
      Gerrit-Change-Number: 7302388
      Gerrit-PatchSet: 24
      Gerrit-Owner: Lia Hiscock <liahi...@microsoft.com>
      Gerrit-Reviewer: Daniel Murphy <dmu...@chromium.org>
      Gerrit-Reviewer: Lia Hiscock <liahi...@microsoft.com>
      Gerrit-Reviewer: Lu Huang <lu...@microsoft.com>
      Gerrit-Reviewer: Mike West <mk...@chromium.org>
      Gerrit-CC: Chromium IPC Reviews <chrome-ip...@google.com>
      Gerrit-CC: Kristin Lee <krist...@microsoft.com>
      Gerrit-CC: Robert Paveza <Rob.P...@microsoft.com>
      Gerrit-CC: Stanley Hon <sta...@microsoft.com>
      Gerrit-CC: Thomas Nguyen <tun...@chromium.org>
      Gerrit-CC: gwsq
      Gerrit-Attention: Thomas Nguyen <tun...@chromium.org>
      Gerrit-Attention: Lia Hiscock <liahi...@microsoft.com>
      Gerrit-Attention: Mike West <mk...@chromium.org>
      Gerrit-Comment-Date: Tue, 20 Jan 2026 20:41:16 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: Yes
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Thomas Nguyen (Gerrit)

      unread,
      Jan 21, 2026, 3:45:27 AMJan 21
      to Lia Hiscock, Daniel Murphy, Chromium IPC Reviews, Mike West, Stanley Hon, Robert Paveza, Lu Huang, Kristin Lee, Chromium LUCI CQ, AyeAye, chromium...@chromium.org, aixba+wat...@chromium.org, japhet+...@chromium.org, mek+w...@chromium.org, blink-re...@chromium.org, blink-rev...@chromium.org, blink-...@chromium.org, dibyapal+wa...@chromium.org, dmurph+watc...@chromium.org, kinuko...@chromium.org, kuragin+web-ap...@chromium.org, loyso...@chromium.org, mgiuca...@chromium.org, philli...@chromium.org, webap...@microsoft.com, zelin+watch-we...@chromium.org
      Attention needed from Lia Hiscock and Mike West

      Thomas Nguyen added 2 comments

      File third_party/blink/renderer/core/html/html_permission_element.h
      Line 568, Patchset 24 (Latest): bool is_launch_ = false;
      Thomas Nguyen . unresolved

      Ditto, please move it to HTMLInstallElement if possible.

      Line 147, Patchset 24 (Latest): void SetLaunch(bool is_launch);
      Thomas Nguyen . unresolved

      can we move this to HTMLInstallElement? We only want to keep the common members in base class (SetPreciseLocation will be removed soon)

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Lia Hiscock
      • Mike West
      Gerrit-Attention: Lia Hiscock <liahi...@microsoft.com>
      Gerrit-Attention: Mike West <mk...@chromium.org>
      Gerrit-Comment-Date: Wed, 21 Jan 2026 08:45:14 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Lia Hiscock (Gerrit)

      unread,
      Jan 21, 2026, 4:55:14 AMJan 21
      to Daniel Murphy, Chromium IPC Reviews, Mike West, Thomas Nguyen, Stanley Hon, Robert Paveza, Lu Huang, Kristin Lee, Chromium LUCI CQ, AyeAye, chromium...@chromium.org, aixba+wat...@chromium.org, japhet+...@chromium.org, mek+w...@chromium.org, blink-re...@chromium.org, blink-rev...@chromium.org, blink-...@chromium.org, dibyapal+wa...@chromium.org, dmurph+watc...@chromium.org, kinuko...@chromium.org, kuragin+web-ap...@chromium.org, loyso...@chromium.org, mgiuca...@chromium.org, philli...@chromium.org, webap...@microsoft.com, zelin+watch-we...@chromium.org
      Attention needed from Daniel Murphy and Mike West

      Lia Hiscock added 4 comments

      File chrome/browser/web_applications/install_element_browsertest.cc
      Line 323, Patchset 15:IN_PROC_BROWSER_TEST_F(InstallElementBrowserTest,
      Stanley Hon . resolved

      let's add a test for the interesting scenario where the button shows 'install' but the app gets uninstalled from under us.

      Lia Hiscock

      Done - `InstallWithUrl_AlreadyInstalledThenUninstalled`

      Line 401, Patchset 24: EXPECT_EQ(provider().registrar_unsafe().GetAppIds().size(), 1u);
      Daniel Murphy . resolved

      in general, I recommend you use AppMatches instead of checking registrar size. Registrar size seems fragile with things like preinstall, and even GetAppIds isn't a great API method and should take a filter too.

      So - if possible, please generate the app_id that should be used here (GetURL from the server of the manifestid path, then call GenerateAppIdFromManifestId), and check AppMatches with that.

      Lia Hiscock

      Done - replaced usages in this file

      File chrome/browser/web_applications/web_install_service_impl.cc
      Line 160, Patchset 24: if (options->manifest_id.has_value()) {
      manifest_id = options->manifest_id;
      }
      Daniel Murphy . resolved
      ```suggestion
      manifest_id = options->manifest_id;
      ```

      Both fields are optional, right? assigning from one optional to the other works.

      Lia Hiscock

      That's my bad. Yes we can definitely just directly assign 😂

      File third_party/blink/renderer/core/html/html_install_element.cc
      Line 108, Patchset 15: // Can be nullptr in unit tests and after Shutdown().
      Stanley Hon . resolved

      hmm... the ergonomics of using this is odd, we use `WebInstallService()` as kind of a "if it's not bound, bind it, then return it' - that's okay. But we also have to constantly check `is_bound()` on the return value but that pattern seems common across other HeapMojoRemotes too.

      the main question I have is, I can't make sense of ExecutionContext's lifetime in relation to `HtmlInstallElement`. If ExecutionContext is gone, we can't do anything (aka rebind the remote). So, what should we do when ExecutionContext is gone?

      maybe someone with more domain expertise here can comment on how much of a concern this is.

      Lia Hiscock

      Done - confirmed in last install sync that Mike/Dan are good with us doing nothing if the execution context is gone. I've added some comments for future us 😊

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Daniel Murphy
      • Mike West
      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: I12dbb4ded8035e48f248ad7efd7be3c4b9d5c8f2
        Gerrit-Change-Number: 7302388
        Gerrit-PatchSet: 26
        Gerrit-Owner: Lia Hiscock <liahi...@microsoft.com>
        Gerrit-Reviewer: Daniel Murphy <dmu...@chromium.org>
        Gerrit-Reviewer: Lia Hiscock <liahi...@microsoft.com>
        Gerrit-Reviewer: Lu Huang <lu...@microsoft.com>
        Gerrit-Reviewer: Mike West <mk...@chromium.org>
        Gerrit-CC: Chromium IPC Reviews <chrome-ip...@google.com>
        Gerrit-CC: Kristin Lee <krist...@microsoft.com>
        Gerrit-CC: Robert Paveza <Rob.P...@microsoft.com>
        Gerrit-CC: Stanley Hon <sta...@microsoft.com>
        Gerrit-CC: Thomas Nguyen <tun...@chromium.org>
        Gerrit-CC: gwsq
        Gerrit-Attention: Daniel Murphy <dmu...@chromium.org>
        Gerrit-Attention: Mike West <mk...@chromium.org>
        Gerrit-Comment-Date: Wed, 21 Jan 2026 09:55:05 +0000
        Gerrit-HasComments: Yes
        Gerrit-Has-Labels: No
        Comment-In-Reply-To: Daniel Murphy <dmu...@chromium.org>
        Comment-In-Reply-To: Stanley Hon <sta...@microsoft.com>
        satisfied_requirement
        unsatisfied_requirement
        open
        diffy

        Thomas Nguyen (Gerrit)

        unread,
        Jan 21, 2026, 9:58:31 AMJan 21
        to Lia Hiscock, Daniel Murphy, Chromium IPC Reviews, Mike West, Stanley Hon, Robert Paveza, Lu Huang, Kristin Lee, Chromium LUCI CQ, AyeAye, chromium...@chromium.org, aixba+wat...@chromium.org, japhet+...@chromium.org, mek+w...@chromium.org, blink-re...@chromium.org, blink-rev...@chromium.org, blink-...@chromium.org, dibyapal+wa...@chromium.org, dmurph+watc...@chromium.org, kinuko...@chromium.org, kuragin+web-ap...@chromium.org, loyso...@chromium.org, mgiuca...@chromium.org, philli...@chromium.org, webap...@microsoft.com, zelin+watch-we...@chromium.org
        Attention needed from Daniel Murphy, Lia Hiscock and Mike West

        Thomas Nguyen added 2 comments

        File third_party/blink/renderer/core/html/html_install_element.cc
        Line 46, Patchset 16: // We'll update the text ourselves rather than invoking

        // `HTMLPermissionElement::UpdateAppearance()` given the logic here. Like
        // `HTMLGeolocationElement::UpdateAppearance()`, we'll punt the inner text
        // change out to a task on the default task queue.
        Daniel Murphy . unresolved

        ```
        // We need `PostTask` here because setInnerText hits a DCHECK.
        ```

        from https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/renderer/core/html/html_geolocation_element.cc;l=60?q=HTMLGeolocationElement::UpdateAppearance&ss=chromium

        @tun...@chromium.org Can you help us make a better comment here? WHY does this DCHECK? we should already be on the kInternalDefault queue if the mojo pipe is bound on that queue?

        Thomas Nguyen

        During the layout phase, the DCHECK hits by setInnerText and another checks hit within event dispatching, `!EventDispatchForbiddenScope::IsEventDispatchForbidden().`
        Because these issues occur inconsistently, I chose to defer the task to the queue. While I did not preserve the stack trace, my previous notes shows the situation is similar to https://g-issues.chromium.org/issues/40901745.

        Line 50, Patchset 15: GetDocument()
        .GetTaskRunner(TaskType::kInternalDefault)
        ->PostTask(FROM_HERE, BindOnce(&HTMLInstallElement::UpdateAppearanceTask,
        WrapWeakPersistent(this)));
        Stanley Hon . unresolved

        mainly curious - is it required we use the task runner to queue a task to make a mojo call, then proceed to wait to be called back (not on any task queue)?

        is it okay to just make the mojo call here (i.e. `WebInstallService()->IsInstalled()`) and not use the task runner?

        Lia Hiscock

        hi again @tun...@chromium.org! Mike referred us to you for SME help in this area. I'm new to working with JS and the task queue, and would appreciate any insight you have. Thanks!

        Thomas Nguyen

        Since the delayed task is used for UI update calls, calling WebInstallService()->IsInstalled() within this particular task doesn't seem necessary (unless it's directly UI relevant)

        Open in Gerrit

        Related details

        Attention is currently required from:
        • Daniel Murphy
        • Lia Hiscock
        • Mike West
        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: I12dbb4ded8035e48f248ad7efd7be3c4b9d5c8f2
        Gerrit-Change-Number: 7302388
        Gerrit-PatchSet: 27
        Gerrit-Owner: Lia Hiscock <liahi...@microsoft.com>
        Gerrit-Reviewer: Daniel Murphy <dmu...@chromium.org>
        Gerrit-Reviewer: Lia Hiscock <liahi...@microsoft.com>
        Gerrit-Reviewer: Lu Huang <lu...@microsoft.com>
        Gerrit-Reviewer: Mike West <mk...@chromium.org>
        Gerrit-CC: Chromium IPC Reviews <chrome-ip...@google.com>
        Gerrit-CC: Kristin Lee <krist...@microsoft.com>
        Gerrit-CC: Robert Paveza <Rob.P...@microsoft.com>
        Gerrit-CC: Stanley Hon <sta...@microsoft.com>
        Gerrit-CC: Thomas Nguyen <tun...@chromium.org>
        Gerrit-CC: gwsq
        Gerrit-Attention: Daniel Murphy <dmu...@chromium.org>
        Gerrit-Attention: Lia Hiscock <liahi...@microsoft.com>
        Gerrit-Attention: Mike West <mk...@chromium.org>
        Gerrit-Comment-Date: Wed, 21 Jan 2026 14:58:18 +0000
        Gerrit-HasComments: Yes
        Gerrit-Has-Labels: No
        Comment-In-Reply-To: Daniel Murphy <dmu...@chromium.org>
        Comment-In-Reply-To: Lia Hiscock <liahi...@microsoft.com>
        Comment-In-Reply-To: Stanley Hon <sta...@microsoft.com>
        satisfied_requirement
        unsatisfied_requirement
        open
        diffy

        Daniel Murphy (Gerrit)

        unread,
        Jan 21, 2026, 10:23:18 AMJan 21
        to Lia Hiscock, Daniel Murphy, Chromium IPC Reviews, Mike West, Thomas Nguyen, Stanley Hon, Robert Paveza, Lu Huang, Kristin Lee, Chromium LUCI CQ, AyeAye, chromium...@chromium.org, aixba+wat...@chromium.org, japhet+...@chromium.org, mek+w...@chromium.org, blink-re...@chromium.org, blink-rev...@chromium.org, blink-...@chromium.org, dibyapal+wa...@chromium.org, dmurph+watc...@chromium.org, kinuko...@chromium.org, kuragin+web-ap...@chromium.org, loyso...@chromium.org, mgiuca...@chromium.org, philli...@chromium.org, webap...@microsoft.com, zelin+watch-we...@chromium.org
        Attention needed from Lia Hiscock and Mike West

        Daniel Murphy added 3 comments

        File chrome/browser/web_applications/install_element_browsertest.cc
        Line 161, Patchset 27 (Latest): GenerateAppIdFromManifestId(https_server()->GetURL("/some_id"));
        Daniel Murphy . unresolved

        this seems incorrect? The id is set here:
        https://source.chromium.org/chromium/chromium/src/+/main:chrome/test/data/web_apps/install_element/manifest.json

        and it should be `/my_id` instead of `/some_id`?

        You could maybe pull out some things:
        ```
        static constexpr std::string_view kInstallElementPageStartUrl = /web_apps/install_element/index.html";
        static constexpr std::string_view kInstallElementPageId = "/my_id";
        ```

        File third_party/blink/renderer/core/html/html_install_element.cc
        Line 46, Patchset 16: // We'll update the text ourselves rather than invoking
        // `HTMLPermissionElement::UpdateAppearance()` given the logic here. Like
        // `HTMLGeolocationElement::UpdateAppearance()`, we'll punt the inner text
        // change out to a task on the default task queue.
        Daniel Murphy . unresolved

        ```
        // We need `PostTask` here because setInnerText hits a DCHECK.
        ```

        from https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/renderer/core/html/html_geolocation_element.cc;l=60?q=HTMLGeolocationElement::UpdateAppearance&ss=chromium

        @tun...@chromium.org Can you help us make a better comment here? WHY does this DCHECK? we should already be on the kInternalDefault queue if the mojo pipe is bound on that queue?

        Thomas Nguyen

        During the layout phase, the DCHECK hits by setInnerText and another checks hit within event dispatching, `!EventDispatchForbiddenScope::IsEventDispatchForbidden().`
        Because these issues occur inconsistently, I chose to defer the task to the queue. While I did not preserve the stack trace, my previous notes shows the situation is similar to https://g-issues.chromium.org/issues/40901745.

        Daniel Murphy
        A few thought:
        - If we are worried about mojo messages on this pipe being dispatched during layout, then the PostTask actually shouldn't happen here, it should happen after `OnIsInstalledResult`, as we get the reply from that to then call `setInnerText`.
        - I'm suspicious about this, as as far as I can tell, the mojo pipe is already bound on kInternalDefault - but maybe it's not. But - why does kInternalDefault not conflict with layout? I would imagine that it could also be run during layout. But - if it worked to remove the crash, then great.
        - Another idea would be to make sure the mojo pipe is bound on this task runner to begin with, so that ALL calls here will be dispatched at a time when the layout isn't happening. But that can be a follow-up if more research is done.
        - The commend should probably be, if all of this is right, next to the the PostTask in OnIsInstalledResult:

        ```
        // This is posted as a task, as similar code in
        // `HTMLGeolocationElement::UpdateAppearance` would crash due to DCHECKs being
        // hit for calling setInnerText during layout.
        // TODO(https://crbug.com/<number>): If possible, bind the mojo pipe to a task
        // runner that cannot be called during layout, to avoid this.
        ```

        And then file a bug and maybe assign to Thomas to follow up, which will simplify both this and the geolocation element.

        Line 50, Patchset 15: GetDocument()
        .GetTaskRunner(TaskType::kInternalDefault)
        ->PostTask(FROM_HERE, BindOnce(&HTMLInstallElement::UpdateAppearanceTask,
        WrapWeakPersistent(this)));
        Stanley Hon . unresolved

        mainly curious - is it required we use the task runner to queue a task to make a mojo call, then proceed to wait to be called back (not on any task queue)?

        is it okay to just make the mojo call here (i.e. `WebInstallService()->IsInstalled()`) and not use the task runner?

        Lia Hiscock

        hi again @tun...@chromium.org! Mike referred us to you for SME help in this area. I'm new to working with JS and the task queue, and would appreciate any insight you have. Thanks!

        Thomas Nguyen

        Since the delayed task is used for UI update calls, calling WebInstallService()->IsInstalled() within this particular task doesn't seem necessary (unless it's directly UI relevant)

        Daniel Murphy

        It's UI relevant - it changes what the UI shows.

        Open in Gerrit

        Related details

        Attention is currently required from:
        • Lia Hiscock
        • Mike West
        Gerrit-Attention: Lia Hiscock <liahi...@microsoft.com>
        Gerrit-Attention: Mike West <mk...@chromium.org>
        Gerrit-Comment-Date: Wed, 21 Jan 2026 15:23:12 +0000
        Gerrit-HasComments: Yes
        Gerrit-Has-Labels: No
        Comment-In-Reply-To: Daniel Murphy <dmu...@chromium.org>
        Comment-In-Reply-To: Thomas Nguyen <tun...@chromium.org>
        satisfied_requirement
        unsatisfied_requirement
        open
        diffy

        Thomas Nguyen (Gerrit)

        unread,
        Jan 21, 2026, 11:08:29 AMJan 21
        to Lia Hiscock, Daniel Murphy, Chromium IPC Reviews, Mike West, Stanley Hon, Robert Paveza, Lu Huang, Kristin Lee, Chromium LUCI CQ, AyeAye, chromium...@chromium.org, tun...@google.com, aixba+wat...@chromium.org, japhet+...@chromium.org, mek+w...@chromium.org, blink-re...@chromium.org, blink-rev...@chromium.org, blink-...@chromium.org, dibyapal+wa...@chromium.org, dmurph+watc...@chromium.org, kinuko...@chromium.org, kuragin+web-ap...@chromium.org, loyso...@chromium.org, mgiuca...@chromium.org, philli...@chromium.org, webap...@microsoft.com, zelin+watch-we...@chromium.org
        Attention needed from Lia Hiscock and Mike West

        Thomas Nguyen added 1 comment

        File third_party/blink/renderer/core/html/html_install_element.cc
        Line 50, Patchset 15: GetDocument()
        .GetTaskRunner(TaskType::kInternalDefault)
        ->PostTask(FROM_HERE, BindOnce(&HTMLInstallElement::UpdateAppearanceTask,
        WrapWeakPersistent(this)));
        Stanley Hon . unresolved

        mainly curious - is it required we use the task runner to queue a task to make a mojo call, then proceed to wait to be called back (not on any task queue)?

        is it okay to just make the mojo call here (i.e. `WebInstallService()->IsInstalled()`) and not use the task runner?

        Lia Hiscock

        hi again @tun...@chromium.org! Mike referred us to you for SME help in this area. I'm new to working with JS and the task queue, and would appreciate any insight you have. Thanks!

        Thomas Nguyen

        Since the delayed task is used for UI update calls, calling WebInstallService()->IsInstalled() within this particular task doesn't seem necessary (unless it's directly UI relevant)

        Daniel Murphy

        It's UI relevant - it changes what the UI shows.

        Thomas Nguyen

        If the text update happens after the OnIsInstalledResult (already delayed) I think we will be fine. The previous crash only happens if we call setInnerText directly (with a mix of updating granted pseudo element)

        Gerrit-Comment-Date: Wed, 21 Jan 2026 16:08:14 +0000
        satisfied_requirement
        unsatisfied_requirement
        open
        diffy

        Lia Hiscock (Gerrit)

        unread,
        Jan 22, 2026, 4:58:19 PMJan 22
        to Daniel Murphy, Chromium IPC Reviews, Mike West, Thomas Nguyen, Stanley Hon, Robert Paveza, Lu Huang, Kristin Lee, Chromium LUCI CQ, AyeAye, chromium...@chromium.org, tun...@google.com, aixba+wat...@chromium.org, japhet+...@chromium.org, mek+w...@chromium.org, blink-re...@chromium.org, blink-rev...@chromium.org, blink-...@chromium.org, dibyapal+wa...@chromium.org, dmurph+watc...@chromium.org, kinuko...@chromium.org, kuragin+web-ap...@chromium.org, loyso...@chromium.org, mgiuca...@chromium.org, philli...@chromium.org, webap...@microsoft.com, zelin+watch-we...@chromium.org
        Attention needed from Daniel Murphy and Mike West

        Lia Hiscock added 3 comments

        File chrome/browser/web_applications/install_element_browsertest.cc
        Line 161, Patchset 27: GenerateAppIdFromManifestId(https_server()->GetURL("/some_id"));
        Daniel Murphy . resolved

        this seems incorrect? The id is set here:
        https://source.chromium.org/chromium/chromium/src/+/main:chrome/test/data/web_apps/install_element/manifest.json

        and it should be `/my_id` instead of `/some_id`?

        You could maybe pull out some things:
        ```
        static constexpr std::string_view kInstallElementPageStartUrl = /web_apps/install_element/index.html";
        static constexpr std::string_view kInstallElementPageId = "/my_id";
        ```

        Lia Hiscock

        I've been going back and forth on the clearest approach here re. ids and scopes, considering we have 3 different test pages.

        You're right that in main `install_element.html` has `my_id`, but in this CL I changed to `some_id` for consistency.

        I pulled out all 3 test sites' info into constexprs, LMK if it's still unclear.

        File third_party/blink/renderer/core/html/html_install_element.cc
        Line 46, Patchset 16: // We'll update the text ourselves rather than invoking
        // `HTMLPermissionElement::UpdateAppearance()` given the logic here. Like
        // `HTMLGeolocationElement::UpdateAppearance()`, we'll punt the inner text
        // change out to a task on the default task queue.
        Daniel Murphy . unresolved

        ```
        // We need `PostTask` here because setInnerText hits a DCHECK.
        ```

        from https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/renderer/core/html/html_geolocation_element.cc;l=60?q=HTMLGeolocationElement::UpdateAppearance&ss=chromium

        @tun...@chromium.org Can you help us make a better comment here? WHY does this DCHECK? we should already be on the kInternalDefault queue if the mojo pipe is bound on that queue?

        Thomas Nguyen

        During the layout phase, the DCHECK hits by setInnerText and another checks hit within event dispatching, `!EventDispatchForbiddenScope::IsEventDispatchForbidden().`
        Because these issues occur inconsistently, I chose to defer the task to the queue. While I did not preserve the stack trace, my previous notes shows the situation is similar to https://g-issues.chromium.org/issues/40901745.

        Daniel Murphy
        A few thought:
        - If we are worried about mojo messages on this pipe being dispatched during layout, then the PostTask actually shouldn't happen here, it should happen after `OnIsInstalledResult`, as we get the reply from that to then call `setInnerText`.
        - I'm suspicious about this, as as far as I can tell, the mojo pipe is already bound on kInternalDefault - but maybe it's not. But - why does kInternalDefault not conflict with layout? I would imagine that it could also be run during layout. But - if it worked to remove the crash, then great.
        - Another idea would be to make sure the mojo pipe is bound on this task runner to begin with, so that ALL calls here will be dispatched at a time when the layout isn't happening. But that can be a follow-up if more research is done.
        - The commend should probably be, if all of this is right, next to the the PostTask in OnIsInstalledResult:

        ```
        // This is posted as a task, as similar code in
        // `HTMLGeolocationElement::UpdateAppearance` would crash due to DCHECKs being
        // hit for calling setInnerText during layout.
        // TODO(https://crbug.com/<number>): If possible, bind the mojo pipe to a task
        // runner that cannot be called during layout, to avoid this.
        ```

        And then file a bug and maybe assign to Thomas to follow up, which will simplify both this and the geolocation element.

        Lia Hiscock

        Thanks for weighing in here Dan. I've moved the PostTask into `OnIsInstalledResult`, added the suggested comment, and opened this bug -
        https://issues.chromium.org/issues/477974745

        I'm going to resolve the other comment thread to consolidate further discussion.

        Line 50, Patchset 15: GetDocument()
        .GetTaskRunner(TaskType::kInternalDefault)
        ->PostTask(FROM_HERE, BindOnce(&HTMLInstallElement::UpdateAppearanceTask,
        WrapWeakPersistent(this)));
        Stanley Hon . resolved

        mainly curious - is it required we use the task runner to queue a task to make a mojo call, then proceed to wait to be called back (not on any task queue)?

        is it okay to just make the mojo call here (i.e. `WebInstallService()->IsInstalled()`) and not use the task runner?

        Lia Hiscock

        hi again @tun...@chromium.org! Mike referred us to you for SME help in this area. I'm new to working with JS and the task queue, and would appreciate any insight you have. Thanks!

        Thomas Nguyen

        Since the delayed task is used for UI update calls, calling WebInstallService()->IsInstalled() within this particular task doesn't seem necessary (unless it's directly UI relevant)

        Daniel Murphy

        It's UI relevant - it changes what the UI shows.

        Thomas Nguyen

        If the text update happens after the OnIsInstalledResult (already delayed) I think we will be fine. The previous crash only happens if we call setInnerText directly (with a mix of updating granted pseudo element)

        Lia Hiscock

        Acknowledged - moving discussion into the other comment threads

        Open in Gerrit

        Related details

        Attention is currently required from:
        • Daniel Murphy
        • Mike West
        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: I12dbb4ded8035e48f248ad7efd7be3c4b9d5c8f2
        Gerrit-Change-Number: 7302388
        Gerrit-PatchSet: 28
        Gerrit-Owner: Lia Hiscock <liahi...@microsoft.com>
        Gerrit-Reviewer: Daniel Murphy <dmu...@chromium.org>
        Gerrit-Reviewer: Lia Hiscock <liahi...@microsoft.com>
        Gerrit-Reviewer: Lu Huang <lu...@microsoft.com>
        Gerrit-Reviewer: Mike West <mk...@chromium.org>
        Gerrit-CC: Chromium IPC Reviews <chrome-ip...@google.com>
        Gerrit-CC: Kristin Lee <krist...@microsoft.com>
        Gerrit-CC: Robert Paveza <Rob.P...@microsoft.com>
        Gerrit-CC: Stanley Hon <sta...@microsoft.com>
        Gerrit-CC: Thomas Nguyen <tun...@chromium.org>
        Gerrit-CC: gwsq
        Gerrit-Attention: Daniel Murphy <dmu...@chromium.org>
        Gerrit-Attention: Mike West <mk...@chromium.org>
        Gerrit-Comment-Date: Thu, 22 Jan 2026 21:58:09 +0000
        satisfied_requirement
        unsatisfied_requirement
        open
        diffy

        Daniel Murphy (Gerrit)

        unread,
        Jan 22, 2026, 5:12:57 PMJan 22
        to Lia Hiscock, Daniel Murphy, Chromium IPC Reviews, Mike West, Thomas Nguyen, Stanley Hon, Robert Paveza, Lu Huang, Kristin Lee, Chromium LUCI CQ, AyeAye, chromium...@chromium.org, tun...@google.com, aixba+wat...@chromium.org, japhet+...@chromium.org, mek+w...@chromium.org, blink-re...@chromium.org, blink-rev...@chromium.org, blink-...@chromium.org, dibyapal+wa...@chromium.org, dmurph+watc...@chromium.org, kinuko...@chromium.org, kuragin+web-ap...@chromium.org, loyso...@chromium.org, mgiuca...@chromium.org, philli...@chromium.org, webap...@microsoft.com, zelin+watch-we...@chromium.org
        Attention needed from Lia Hiscock and Mike West

        Daniel Murphy voted Code-Review+1

        Code-Review+1
        Open in Gerrit

        Related details

        Attention is currently required from:
        • Lia Hiscock
        • Mike West
        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: I12dbb4ded8035e48f248ad7efd7be3c4b9d5c8f2
          Gerrit-Change-Number: 7302388
          Gerrit-PatchSet: 29
          Gerrit-Owner: Lia Hiscock <liahi...@microsoft.com>
          Gerrit-Reviewer: Daniel Murphy <dmu...@chromium.org>
          Gerrit-Reviewer: Lia Hiscock <liahi...@microsoft.com>
          Gerrit-Reviewer: Lu Huang <lu...@microsoft.com>
          Gerrit-Reviewer: Mike West <mk...@chromium.org>
          Gerrit-CC: Chromium IPC Reviews <chrome-ip...@google.com>
          Gerrit-CC: Kristin Lee <krist...@microsoft.com>
          Gerrit-CC: Robert Paveza <Rob.P...@microsoft.com>
          Gerrit-CC: Stanley Hon <sta...@microsoft.com>
          Gerrit-CC: Thomas Nguyen <tun...@chromium.org>
          Gerrit-CC: gwsq
          Gerrit-Attention: Lia Hiscock <liahi...@microsoft.com>
          Gerrit-Attention: Mike West <mk...@chromium.org>
          Gerrit-Comment-Date: Thu, 22 Jan 2026 22:12:50 +0000
          Gerrit-HasComments: No
          Gerrit-Has-Labels: Yes
          satisfied_requirement
          unsatisfied_requirement
          open
          diffy

          Lia Hiscock (Gerrit)

          unread,
          Jan 22, 2026, 8:33:08 PMJan 22
          to Daniel Murphy, Chromium IPC Reviews, Mike West, Thomas Nguyen, Stanley Hon, Robert Paveza, Lu Huang, Kristin Lee, Chromium LUCI CQ, AyeAye, chromium...@chromium.org, tun...@google.com, aixba+wat...@chromium.org, japhet+...@chromium.org, mek+w...@chromium.org, blink-re...@chromium.org, blink-rev...@chromium.org, blink-...@chromium.org, dibyapal+wa...@chromium.org, dmurph+watc...@chromium.org, kinuko...@chromium.org, kuragin+web-ap...@chromium.org, loyso...@chromium.org, mgiuca...@chromium.org, philli...@chromium.org, webap...@microsoft.com, zelin+watch-we...@chromium.org
          Attention needed from Mike West and Thomas Nguyen

          Lia Hiscock added 3 comments

          Patchset-level comments
          File-level comment, Patchset 30 (Latest):
          Lia Hiscock . resolved

          Moved is_launch_ into HTML install element! If this wasn't what/how you were envisioning it, more specific guidance would be great :)

          File third_party/blink/renderer/core/html/html_permission_element.h
          Line 568, Patchset 24: bool is_launch_ = false;
          Thomas Nguyen . resolved

          Ditto, please move it to HTMLInstallElement if possible.

          Lia Hiscock

          Done

          Line 147, Patchset 24: void SetLaunch(bool is_launch);
          Thomas Nguyen . resolved

          can we move this to HTMLInstallElement? We only want to keep the common members in base class (SetPreciseLocation will be removed soon)

          Lia Hiscock

          Done

          Open in Gerrit

          Related details

          Attention is currently required from:
          • Mike West
          • Thomas Nguyen
          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: I12dbb4ded8035e48f248ad7efd7be3c4b9d5c8f2
          Gerrit-Change-Number: 7302388
          Gerrit-PatchSet: 30
          Gerrit-Owner: Lia Hiscock <liahi...@microsoft.com>
          Gerrit-Reviewer: Daniel Murphy <dmu...@chromium.org>
          Gerrit-Reviewer: Lia Hiscock <liahi...@microsoft.com>
          Gerrit-Reviewer: Lu Huang <lu...@microsoft.com>
          Gerrit-Reviewer: Mike West <mk...@chromium.org>
          Gerrit-CC: Chromium IPC Reviews <chrome-ip...@google.com>
          Gerrit-CC: Kristin Lee <krist...@microsoft.com>
          Gerrit-CC: Robert Paveza <Rob.P...@microsoft.com>
          Gerrit-CC: Stanley Hon <sta...@microsoft.com>
          Gerrit-CC: Thomas Nguyen <tun...@chromium.org>
          Gerrit-CC: gwsq
          Gerrit-Attention: Thomas Nguyen <tun...@chromium.org>
          Gerrit-Attention: Mike West <mk...@chromium.org>
          Gerrit-Comment-Date: Fri, 23 Jan 2026 01:32:56 +0000
          Gerrit-HasComments: Yes
          Gerrit-Has-Labels: No
          Comment-In-Reply-To: Thomas Nguyen <tun...@chromium.org>
          satisfied_requirement
          unsatisfied_requirement
          open
          diffy

          Lia Hiscock (Gerrit)

          unread,
          Jan 23, 2026, 3:43:22 AMJan 23
          to Daniel Murphy, Chromium IPC Reviews, Mike West, Thomas Nguyen, Stanley Hon, Robert Paveza, Lu Huang, Kristin Lee, Chromium LUCI CQ, AyeAye, chromium...@chromium.org, tun...@google.com, aixba+wat...@chromium.org, japhet+...@chromium.org, mek+w...@chromium.org, blink-re...@chromium.org, blink-rev...@chromium.org, blink-...@chromium.org, dibyapal+wa...@chromium.org, dmurph+watc...@chromium.org, kinuko...@chromium.org, kuragin+web-ap...@chromium.org, loyso...@chromium.org, mgiuca...@chromium.org, philli...@chromium.org, webap...@microsoft.com, zelin+watch-we...@chromium.org
          Attention needed from Mike West and Thomas Nguyen

          Lia Hiscock added 1 comment

          File third_party/blink/renderer/core/html/html_install_element.cc
          Lia Hiscock

          @tun...@google.com LMK if you have any other thoughts here too

          Open in Gerrit

          Related details

          Attention is currently required from:
          • Mike West
          • Thomas Nguyen
          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: I12dbb4ded8035e48f248ad7efd7be3c4b9d5c8f2
          Gerrit-Change-Number: 7302388
          Gerrit-PatchSet: 35
          Gerrit-Owner: Lia Hiscock <liahi...@microsoft.com>
          Gerrit-Reviewer: Daniel Murphy <dmu...@chromium.org>
          Gerrit-Reviewer: Lia Hiscock <liahi...@microsoft.com>
          Gerrit-Reviewer: Lu Huang <lu...@microsoft.com>
          Gerrit-Reviewer: Mike West <mk...@chromium.org>
          Gerrit-CC: Chromium IPC Reviews <chrome-ip...@google.com>
          Gerrit-CC: Kristin Lee <krist...@microsoft.com>
          Gerrit-CC: Robert Paveza <Rob.P...@microsoft.com>
          Gerrit-CC: Stanley Hon <sta...@microsoft.com>
          Gerrit-CC: Thomas Nguyen <tun...@chromium.org>
          Gerrit-CC: gwsq
          Gerrit-Attention: Thomas Nguyen <tun...@chromium.org>
          Gerrit-Attention: Mike West <mk...@chromium.org>
          Gerrit-Comment-Date: Fri, 23 Jan 2026 08:43:08 +0000
          Gerrit-HasComments: Yes
          Gerrit-Has-Labels: No
          satisfied_requirement
          unsatisfied_requirement
          open
          diffy

          Mike West (Gerrit)

          unread,
          Jan 28, 2026, 3:57:22 AMJan 28
          to Lia Hiscock, Daniel Murphy, Chromium IPC Reviews, Thomas Nguyen, Stanley Hon, Robert Paveza, Lu Huang, Kristin Lee, Chromium LUCI CQ, AyeAye, chromium...@chromium.org, tun...@google.com, aixba+wat...@chromium.org, japhet+...@chromium.org, mek+w...@chromium.org, blink-re...@chromium.org, blink-rev...@chromium.org, blink-...@chromium.org, dibyapal+wa...@chromium.org, dmurph+watc...@chromium.org, kinuko...@chromium.org, kuragin+web-ap...@chromium.org, loyso...@chromium.org, mgiuca...@chromium.org, philli...@chromium.org, webap...@microsoft.com, zelin+watch-we...@chromium.org
          Attention needed from Daniel Murphy, Lia Hiscock and Thomas Nguyen

          Mike West voted and added 1 comment

          Votes added by Mike West

          Code-Review+1

          1 comment

          Patchset-level comments
          File-level comment, Patchset 36 (Latest):
          Mike West . resolved

          //third_party/blink and mojo LGTM. I think we can defer the discussion of the dcheck to a subsequent CL that could address it more broadly if we decide that's necessary or helpful.

          Open in Gerrit

          Related details

          Attention is currently required from:
          • Daniel Murphy
          • Lia Hiscock
          • Thomas Nguyen
          Submit Requirements:
          • requirement satisfiedCode-Coverage
          • requirement 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: I12dbb4ded8035e48f248ad7efd7be3c4b9d5c8f2
          Gerrit-Change-Number: 7302388
          Gerrit-PatchSet: 36
          Gerrit-Owner: Lia Hiscock <liahi...@microsoft.com>
          Gerrit-Reviewer: Daniel Murphy <dmu...@chromium.org>
          Gerrit-Reviewer: Lia Hiscock <liahi...@microsoft.com>
          Gerrit-Reviewer: Lu Huang <lu...@microsoft.com>
          Gerrit-Reviewer: Mike West <mk...@chromium.org>
          Gerrit-CC: Chromium IPC Reviews <chrome-ip...@google.com>
          Gerrit-CC: Kristin Lee <krist...@microsoft.com>
          Gerrit-CC: Robert Paveza <Rob.P...@microsoft.com>
          Gerrit-CC: Stanley Hon <sta...@microsoft.com>
          Gerrit-CC: Thomas Nguyen <tun...@chromium.org>
          Gerrit-CC: gwsq
          Gerrit-Attention: Daniel Murphy <dmu...@chromium.org>
          Gerrit-Attention: Thomas Nguyen <tun...@chromium.org>
          Gerrit-Attention: Lia Hiscock <liahi...@microsoft.com>
          Gerrit-Comment-Date: Wed, 28 Jan 2026 08:57:06 +0000
          Gerrit-HasComments: Yes
          Gerrit-Has-Labels: Yes
          satisfied_requirement
          unsatisfied_requirement
          open
          diffy

          Lia Hiscock (Gerrit)

          unread,
          Jan 28, 2026, 12:40:49 PMJan 28
          to Mike West, Daniel Murphy, Chromium IPC Reviews, Thomas Nguyen, Stanley Hon, Robert Paveza, Lu Huang, Kristin Lee, Chromium LUCI CQ, AyeAye, chromium...@chromium.org, tun...@google.com, aixba+wat...@chromium.org, japhet+...@chromium.org, mek+w...@chromium.org, blink-re...@chromium.org, blink-rev...@chromium.org, blink-...@chromium.org, dibyapal+wa...@chromium.org, dmurph+watc...@chromium.org, kinuko...@chromium.org, kuragin+web-ap...@chromium.org, loyso...@chromium.org, mgiuca...@chromium.org, philli...@chromium.org, webap...@microsoft.com, zelin+watch-we...@chromium.org
          Attention needed from Daniel Murphy and Thomas Nguyen

          Lia Hiscock added 2 comments

          Patchset-level comments
          Mike West . resolved

          //third_party/blink and mojo LGTM. I think we can defer the discussion of the dcheck to a subsequent CL that could address it more broadly if we decide that's necessary or helpful.

          Lia Hiscock

          SGTM. I've already opened the followup bug (and Dan did +1, but it got reset when I uploaded the sha), so I'll go ahead and resolve the open comment thread.

          File third_party/blink/renderer/core/html/html_install_element.cc
          Line 46, Patchset 16: // We'll update the text ourselves rather than invoking
          // `HTMLPermissionElement::UpdateAppearance()` given the logic here. Like
          // `HTMLGeolocationElement::UpdateAppearance()`, we'll punt the inner text
          // change out to a task on the default task queue.
          Daniel Murphy . resolved

          ```
          // We need `PostTask` here because setInnerText hits a DCHECK.
          ```

          from https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/renderer/core/html/html_geolocation_element.cc;l=60?q=HTMLGeolocationElement::UpdateAppearance&ss=chromium

          @tun...@chromium.org Can you help us make a better comment here? WHY does this DCHECK? we should already be on the kInternalDefault queue if the mojo pipe is bound on that queue?

          Thomas Nguyen

          During the layout phase, the DCHECK hits by setInnerText and another checks hit within event dispatching, `!EventDispatchForbiddenScope::IsEventDispatchForbidden().`
          Because these issues occur inconsistently, I chose to defer the task to the queue. While I did not preserve the stack trace, my previous notes shows the situation is similar to https://g-issues.chromium.org/issues/40901745.

          Daniel Murphy
          A few thought:
          - If we are worried about mojo messages on this pipe being dispatched during layout, then the PostTask actually shouldn't happen here, it should happen after `OnIsInstalledResult`, as we get the reply from that to then call `setInnerText`.
          - I'm suspicious about this, as as far as I can tell, the mojo pipe is already bound on kInternalDefault - but maybe it's not. But - why does kInternalDefault not conflict with layout? I would imagine that it could also be run during layout. But - if it worked to remove the crash, then great.
          - Another idea would be to make sure the mojo pipe is bound on this task runner to begin with, so that ALL calls here will be dispatched at a time when the layout isn't happening. But that can be a follow-up if more research is done.
          - The commend should probably be, if all of this is right, next to the the PostTask in OnIsInstalledResult:

          ```
          // This is posted as a task, as similar code in
          // `HTMLGeolocationElement::UpdateAppearance` would crash due to DCHECKs being
          // hit for calling setInnerText during layout.
          // TODO(https://crbug.com/<number>): If possible, bind the mojo pipe to a task
          // runner that cannot be called during layout, to avoid this.
          ```

          And then file a bug and maybe assign to Thomas to follow up, which will simplify both this and the geolocation element.

          Lia Hiscock

          Thanks for weighing in here Dan. I've moved the PostTask into `OnIsInstalledResult`, added the suggested comment, and opened this bug -
          https://issues.chromium.org/issues/477974745

          I'm going to resolve the other comment thread to consolidate further discussion.

          Lia Hiscock

          @tun...@google.com LMK if you have any other thoughts here too

          Lia Hiscock

          Done

          Open in Gerrit

          Related details

          Attention is currently required from:
          • Daniel Murphy
          • Thomas Nguyen
          Submit Requirements:
            • requirement satisfiedCode-Coverage
            • requirement satisfiedCode-Owners
            • requirement satisfiedCode-Review
            • requirement satisfiedReview-Enforcement
            Gerrit-Comment-Date: Wed, 28 Jan 2026 17:40:40 +0000
            Gerrit-HasComments: Yes
            Gerrit-Has-Labels: No
            Comment-In-Reply-To: Daniel Murphy <dmu...@chromium.org>
            Comment-In-Reply-To: Thomas Nguyen <tun...@chromium.org>
            Comment-In-Reply-To: Lia Hiscock <liahi...@microsoft.com>
            Comment-In-Reply-To: Mike West <mk...@chromium.org>
            satisfied_requirement
            open
            diffy

            Lia Hiscock (Gerrit)

            unread,
            Jan 28, 2026, 12:40:56 PMJan 28
            to Mike West, Daniel Murphy, Chromium IPC Reviews, Thomas Nguyen, Stanley Hon, Robert Paveza, Lu Huang, Kristin Lee, Chromium LUCI CQ, AyeAye, chromium...@chromium.org, tun...@google.com, aixba+wat...@chromium.org, japhet+...@chromium.org, mek+w...@chromium.org, blink-re...@chromium.org, blink-rev...@chromium.org, blink-...@chromium.org, dibyapal+wa...@chromium.org, dmurph+watc...@chromium.org, kinuko...@chromium.org, kuragin+web-ap...@chromium.org, loyso...@chromium.org, mgiuca...@chromium.org, philli...@chromium.org, webap...@microsoft.com, zelin+watch-we...@chromium.org
            Attention needed from Daniel Murphy and Thomas Nguyen

            Lia Hiscock voted Commit-Queue+2

            Commit-Queue+2
            Gerrit-Comment-Date: Wed, 28 Jan 2026 17:40:46 +0000
            Gerrit-HasComments: No
            Gerrit-Has-Labels: Yes
            satisfied_requirement
            open
            diffy

            Lia Hiscock (Gerrit)

            unread,
            Jan 28, 2026, 5:03:26 PMJan 28
            to Mike West, Daniel Murphy, Chromium IPC Reviews, Thomas Nguyen, Stanley Hon, Robert Paveza, Lu Huang, Kristin Lee, Chromium LUCI CQ, AyeAye, chromium...@chromium.org, ipc-securi...@chromium.org, tun...@google.com, aixba+wat...@chromium.org, japhet+...@chromium.org, mek+w...@chromium.org, blink-re...@chromium.org, blink-rev...@chromium.org, blink-...@chromium.org, dibyapal+wa...@chromium.org, dmurph+watc...@chromium.org, kinuko...@chromium.org, kuragin+web-ap...@chromium.org, loyso...@chromium.org, mgiuca...@chromium.org, philli...@chromium.org, webap...@microsoft.com, zelin+watch-we...@chromium.org
            Attention needed from Daniel Murphy and Thomas Nguyen

            Lia Hiscock voted Commit-Queue+2

            Commit-Queue+2
            Open in Gerrit

            Related details

            Attention is currently required from:
            • Daniel Murphy
            • Thomas Nguyen
            Submit Requirements:
            • requirement satisfiedCode-Coverage
            • requirement 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: I12dbb4ded8035e48f248ad7efd7be3c4b9d5c8f2
            Gerrit-Change-Number: 7302388
            Gerrit-PatchSet: 37
            Gerrit-Owner: Lia Hiscock <liahi...@microsoft.com>
            Gerrit-Reviewer: Daniel Murphy <dmu...@chromium.org>
            Gerrit-Reviewer: Lia Hiscock <liahi...@microsoft.com>
            Gerrit-Reviewer: Lu Huang <lu...@microsoft.com>
            Gerrit-Reviewer: Mike West <mk...@chromium.org>
            Gerrit-CC: Chromium IPC Reviews <chrome-ip...@google.com>
            Gerrit-CC: Kristin Lee <krist...@microsoft.com>
            Gerrit-CC: Robert Paveza <Rob.P...@microsoft.com>
            Gerrit-CC: Stanley Hon <sta...@microsoft.com>
            Gerrit-CC: Thomas Nguyen <tun...@chromium.org>
            Gerrit-CC: gwsq
            Gerrit-Attention: Daniel Murphy <dmu...@chromium.org>
            Gerrit-Attention: Thomas Nguyen <tun...@chromium.org>
            Gerrit-Comment-Date: Wed, 28 Jan 2026 22:03:16 +0000
            Gerrit-HasComments: No
            Gerrit-Has-Labels: Yes
            satisfied_requirement
            open
            diffy

            Chromium LUCI CQ (Gerrit)

            unread,
            Jan 28, 2026, 6:39:56 PMJan 28
            to Lia Hiscock, Mike West, Daniel Murphy, Chromium IPC Reviews, Thomas Nguyen, Stanley Hon, Robert Paveza, Lu Huang, Kristin Lee, AyeAye, chromium...@chromium.org, ipc-securi...@chromium.org, tun...@google.com, aixba+wat...@chromium.org, japhet+...@chromium.org, mek+w...@chromium.org, blink-re...@chromium.org, blink-rev...@chromium.org, blink-...@chromium.org, dibyapal+wa...@chromium.org, dmurph+watc...@chromium.org, kinuko...@chromium.org, kuragin+web-ap...@chromium.org, loyso...@chromium.org, mgiuca...@chromium.org, philli...@chromium.org, webap...@microsoft.com, zelin+watch-we...@chromium.org

            Chromium LUCI CQ submitted the change with unreviewed changes

            Unreviewed changes

            36 is the latest approved patch-set.
            The change was submitted with unreviewed changes in the following files:

            ```
            The name of the file: chrome/browser/web_applications/install_element_browsertest.cc
            Insertions: 2, Deletions: 2.

            The diff is too large to show. Please review the diff.
            ```

            Change information

            Commit message:
            [<install> Element] Update string and icon for apps already installed

            * Implement `IsInstalled` for the WebInstallService interface
            * HTMLInstallElement now stores show_as_launch_ status
            * HTMLInstallElement now has its own icon updating logic
            * Add IDS and SVG for 'launch' button string and icon
            * Misc test improvements - use AppMatches, refactor test site paths, etc

            - Feature flag: InstallElement
            - Explainer: https://github.com/WICG/install-element
            - Dev spec:
            https://docs.google.com/document/d/1rGvLhD4SR8Y9M1wVmqgyesPNkbZGU7HOqlttjEFJ5Vo/edit?tab=t.tmx19oox759l#heading=h.j3tt49hqiuck
            - Screenshot:
            https://drive.google.com/file/d/1yEtGZpvA_bdBiVcQkHu_zrbxZckNTL4S/view?usp=drive_link
            - UX review doc:
            https://docs.google.com/document/d/1rGvLhD4SR8Y9M1wVmqgyesPNkbZGU7HOqlttjEFJ5Vo/edit?tab=t.w9u0and0mnhh#heading=h.6ldxrb8j9m13
            Bug: 467351945, 454827186
            Change-Id: I12dbb4ded8035e48f248ad7efd7be3c4b9d5c8f2
            Reviewed-by: Mike West <mk...@chromium.org>
            Commit-Queue: Lia Hiscock <liahi...@microsoft.com>
            Cr-Commit-Position: refs/heads/main@{#1576240}
            Files:
            • M chrome/browser/web_applications/install_element_browsertest.cc
            • M chrome/browser/web_applications/web_install_service_impl.cc
            • M chrome/browser/web_applications/web_install_service_impl.h
            • M chrome/test/data/web_apps/custom_id/manifest.json
            • M chrome/test/data/web_apps/install_element/manifest.json
            • M third_party/blink/public/blink_resources.grd
            • M third_party/blink/public/mojom/web_install/web_install.mojom
            • M third_party/blink/public/strings/permission_element_strings.grd
            • A third_party/blink/public/strings/permission_element_strings_grd/IDS_PERMISSION_REQUEST_LAUNCH.png.sha1
            • M third_party/blink/renderer/core/html/html_install_element.cc
            • M third_party/blink/renderer/core/html/html_install_element.h
            • M third_party/blink/renderer/core/html/html_install_element_test.cc
            • M third_party/blink/renderer/core/html/html_permission_element.cc
            • M third_party/blink/renderer/core/html/html_permission_element.h
            • M third_party/blink/renderer/core/html/html_permission_icon_element.cc
            • M third_party/blink/renderer/core/html/html_permission_icon_element.h
            • A third_party/blink/renderer/core/html/resources/images/permission_icon_install_launch.svg
            Change size: L
            Delta: 17 files changed, 384 insertions(+), 82 deletions(-)
            Branch: refs/heads/main
            Submit Requirements:
            • requirement satisfiedCode-Review: +1 by Mike West
            Open in Gerrit
            Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
            Gerrit-MessageType: merged
            Gerrit-Project: chromium/src
            Gerrit-Branch: main
            Gerrit-Change-Id: I12dbb4ded8035e48f248ad7efd7be3c4b9d5c8f2
            Gerrit-Change-Number: 7302388
            Gerrit-PatchSet: 38
            Gerrit-Owner: Lia Hiscock <liahi...@microsoft.com>
            Gerrit-Reviewer: Chromium LUCI CQ <chromiu...@luci-project-accounts.iam.gserviceaccount.com>
            Gerrit-Reviewer: Daniel Murphy <dmu...@chromium.org>
            Gerrit-Reviewer: Lia Hiscock <liahi...@microsoft.com>
            Gerrit-Reviewer: Lu Huang <lu...@microsoft.com>
            Gerrit-Reviewer: Mike West <mk...@chromium.org>
            Gerrit-CC: Chromium IPC Reviews <chrome-ip...@google.com>
            open
            diffy
            satisfied_requirement
            Reply all
            Reply to author
            Forward
            0 new messages