FileSystemAccess: Block sensitive paths in TWA launch [chromium/src : main]

0 views
Skip to first unread message

Nate Chapin (Gerrit)

unread,
May 20, 2026, 7:13:43 PM (8 days ago) May 20
to Daniel Murphy, chromium...@chromium.org, aixba+wat...@chromium.org, dibyapal+wa...@chromium.org, dmurph+watc...@chromium.org, japhet+...@chromium.org, kuragin+web-ap...@chromium.org, loyso...@chromium.org, mek+w...@chromium.org, mgiuca...@chromium.org, philli...@chromium.org, pkotwic...@chromium.org, webapks-...@chromium.org, webap...@microsoft.com, zelin+watch-we...@chromium.org
Attention needed from Daniel Murphy

Nate Chapin added 1 comment

File chrome/browser/android/webapps/twa_launch_queue_delegate.cc
Line 20, Patchset 1 (Latest):bool IsSensitivePath(const base::FilePath& path) {
Nate Chapin . unresolved

Gemini decided what cases to filter here. It passes a sniff test, but I'm not confident I've thought of every case 😊

Open in Gerrit

Related details

Attention is currently required from:
  • Daniel Murphy
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: I18debb3231454f5a7885952f58f66f42862499c9
Gerrit-Change-Number: 7865764
Gerrit-PatchSet: 1
Gerrit-Owner: Nate Chapin <jap...@chromium.org>
Gerrit-Reviewer: Daniel Murphy <dmu...@chromium.org>
Gerrit-Attention: Daniel Murphy <dmu...@chromium.org>
Gerrit-Comment-Date: Wed, 20 May 2026 23:13:34 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
satisfied_requirement
unsatisfied_requirement
open
diffy

Daniel Murphy (Gerrit)

unread,
May 20, 2026, 7:35:18 PM (8 days ago) May 20
to Nate Chapin, Daniel Murphy, chromium...@chromium.org, aixba+wat...@chromium.org, dibyapal+wa...@chromium.org, dmurph+watc...@chromium.org, japhet+...@chromium.org, kuragin+web-ap...@chromium.org, loyso...@chromium.org, mek+w...@chromium.org, mgiuca...@chromium.org, philli...@chromium.org, pkotwic...@chromium.org, webapks-...@chromium.org, webap...@microsoft.com, zelin+watch-we...@chromium.org
Attention needed from Nate Chapin

Daniel Murphy added 1 comment

File chrome/browser/android/webapps/twa_launch_queue_delegate.cc
Line 20, Patchset 1 (Latest):bool IsSensitivePath(const base::FilePath& path) {
Nate Chapin . unresolved

Gemini decided what cases to filter here. It passes a sniff test, but I'm not confident I've thought of every case 😊

Attention is currently required from:
  • Nate Chapin
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: I18debb3231454f5a7885952f58f66f42862499c9
Gerrit-Change-Number: 7865764
Gerrit-PatchSet: 1
Gerrit-Owner: Nate Chapin <jap...@chromium.org>
Gerrit-Reviewer: Daniel Murphy <dmu...@chromium.org>
Gerrit-Attention: Nate Chapin <jap...@chromium.org>
Gerrit-Comment-Date: Wed, 20 May 2026 23:35:10 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Comment-In-Reply-To: Nate Chapin <jap...@chromium.org>
satisfied_requirement
unsatisfied_requirement
open
diffy

Nate Chapin (Gerrit)

unread,
May 22, 2026, 3:44:34 PM (6 days ago) May 22
to Chromium LUCI CQ, Daniel Murphy, chromium...@chromium.org, aixba+wat...@chromium.org, dibyapal+wa...@chromium.org, dmurph+watc...@chromium.org, japhet+...@chromium.org, kuragin+web-ap...@chromium.org, loyso...@chromium.org, mek+w...@chromium.org, mgiuca...@chromium.org, philli...@chromium.org, pkotwic...@chromium.org, webapks-...@chromium.org, webap...@microsoft.com, zelin+watch-we...@chromium.org
Attention needed from Daniel Murphy

Nate Chapin added 1 comment

File chrome/browser/android/webapps/twa_launch_queue_delegate.cc
Line 20, Patchset 1:bool IsSensitivePath(const base::FilePath& path) {
Nate Chapin . unresolved

Gemini decided what cases to filter here. It passes a sniff test, but I'm not confident I've thought of every case 😊

Daniel Murphy

Looking at other bugs, I see:
https://source.chromium.org/chromium/chromium/src/+/main:android_webview/browser/file_system_access/aw_file_system_access_permission_context.cc;l=59;drc=6921036f402c9e2fecd9f01ea498bb836934a72a;bpv=1;bpt=1

maybe other at:
https://source.chromium.org/search?q=::ConfirmSensitiveEntryAccess%20&sq=&ss=chromium

that might help?

Nate Chapin

Ok, this mostly matches https://source.chromium.org/chromium/chromium/src/+/main:android_webview/browser/file_system_access/aw_file_system_access_permission_context.cc;l=59;drc=6921036f402c9e2fecd9f01ea498bb836934a72a now.

I don't see a good way to share the logic, given the layering.

Differences:

  • We can't rely on content URIs already been filtered for us (that logic looks more like the general chrome logic in chrome/browser/file_system_access/chrome_file_system_access_permission_context.cc)
  • Gemini thinks we should block `file://` urls because they're effectively absolute paths. I'm not certain whether we can get `file://` urls here.
Open in Gerrit

Related details

Attention is currently required from:
  • Daniel Murphy
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: I18debb3231454f5a7885952f58f66f42862499c9
Gerrit-Change-Number: 7865764
Gerrit-PatchSet: 3
Gerrit-Owner: Nate Chapin <jap...@chromium.org>
Gerrit-Reviewer: Daniel Murphy <dmu...@chromium.org>
Gerrit-Reviewer: Nate Chapin <jap...@chromium.org>
Gerrit-Attention: Daniel Murphy <dmu...@chromium.org>
Gerrit-Comment-Date: Fri, 22 May 2026 19:44:10 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Comment-In-Reply-To: Daniel Murphy <dmu...@chromium.org>
Comment-In-Reply-To: Nate Chapin <jap...@chromium.org>
satisfied_requirement
unsatisfied_requirement
open
diffy

Daniel Murphy (Gerrit)

unread,
May 22, 2026, 7:04:00 PM (6 days ago) May 22
to Nate Chapin, Daniel Murphy, Chromium LUCI CQ, chromium...@chromium.org, aixba+wat...@chromium.org, dibyapal+wa...@chromium.org, dmurph+watc...@chromium.org, japhet+...@chromium.org, kuragin+web-ap...@chromium.org, loyso...@chromium.org, mek+w...@chromium.org, mgiuca...@chromium.org, philli...@chromium.org, pkotwic...@chromium.org, webapks-...@chromium.org, webap...@microsoft.com, zelin+watch-we...@chromium.org
Attention needed from Nate Chapin

Daniel Murphy voted and added 1 comment

Votes added by Daniel Murphy

Code-Review+1

1 comment

File chrome/browser/android/webapps/twa_launch_queue_delegate.cc
Line 20, Patchset 1:bool IsSensitivePath(const base::FilePath& path) {
Nate Chapin . unresolved

Gemini decided what cases to filter here. It passes a sniff test, but I'm not confident I've thought of every case 😊

Daniel Murphy

Looking at other bugs, I see:
https://source.chromium.org/chromium/chromium/src/+/main:android_webview/browser/file_system_access/aw_file_system_access_permission_context.cc;l=59;drc=6921036f402c9e2fecd9f01ea498bb836934a72a;bpv=1;bpt=1

maybe other at:
https://source.chromium.org/search?q=::ConfirmSensitiveEntryAccess%20&sq=&ss=chromium

that might help?

Nate Chapin

Ok, this mostly matches https://source.chromium.org/chromium/chromium/src/+/main:android_webview/browser/file_system_access/aw_file_system_access_permission_context.cc;l=59;drc=6921036f402c9e2fecd9f01ea498bb836934a72a now.

I don't see a good way to share the logic, given the layering.

Differences:

  • We can't rely on content URIs already been filtered for us (that logic looks more like the general chrome logic in chrome/browser/file_system_access/chrome_file_system_access_permission_context.cc)
  • Gemini thinks we should block `file://` urls because they're effectively absolute paths. I'm not certain whether we can get `file://` urls here.
Daniel Murphy

I think we can install file:// urls on desktop on non-android, so we might? But happy to block here for now.

Open in Gerrit

Related details

Attention is currently required from:
  • Nate Chapin
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: I18debb3231454f5a7885952f58f66f42862499c9
    Gerrit-Change-Number: 7865764
    Gerrit-PatchSet: 3
    Gerrit-Owner: Nate Chapin <jap...@chromium.org>
    Gerrit-Reviewer: Daniel Murphy <dmu...@chromium.org>
    Gerrit-Reviewer: Nate Chapin <jap...@chromium.org>
    Gerrit-Attention: Nate Chapin <jap...@chromium.org>
    Gerrit-Comment-Date: Fri, 22 May 2026 23:03:46 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: Yes
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Nate Chapin (Gerrit)

    unread,
    May 26, 2026, 12:32:52 PM (2 days ago) May 26
    to Daniel Murphy, Chromium LUCI CQ, chromium...@chromium.org, aixba+wat...@chromium.org, dibyapal+wa...@chromium.org, dmurph+watc...@chromium.org, japhet+...@chromium.org, kuragin+web-ap...@chromium.org, loyso...@chromium.org, mek+w...@chromium.org, mgiuca...@chromium.org, philli...@chromium.org, pkotwic...@chromium.org, webapks-...@chromium.org, webap...@microsoft.com, zelin+watch-we...@chromium.org

    Nate Chapin voted and added 1 comment

    Votes added by Nate Chapin

    Commit-Queue+2

    1 comment

    File chrome/browser/android/webapps/twa_launch_queue_delegate.cc
    Line 20, Patchset 1:bool IsSensitivePath(const base::FilePath& path) {
    Nate Chapin . resolved

    Gemini decided what cases to filter here. It passes a sniff test, but I'm not confident I've thought of every case 😊

    Daniel Murphy

    Looking at other bugs, I see:
    https://source.chromium.org/chromium/chromium/src/+/main:android_webview/browser/file_system_access/aw_file_system_access_permission_context.cc;l=59;drc=6921036f402c9e2fecd9f01ea498bb836934a72a;bpv=1;bpt=1

    maybe other at:
    https://source.chromium.org/search?q=::ConfirmSensitiveEntryAccess%20&sq=&ss=chromium

    that might help?

    Nate Chapin

    Ok, this mostly matches https://source.chromium.org/chromium/chromium/src/+/main:android_webview/browser/file_system_access/aw_file_system_access_permission_context.cc;l=59;drc=6921036f402c9e2fecd9f01ea498bb836934a72a now.

    I don't see a good way to share the logic, given the layering.

    Differences:

    • We can't rely on content URIs already been filtered for us (that logic looks more like the general chrome logic in chrome/browser/file_system_access/chrome_file_system_access_permission_context.cc)
    • Gemini thinks we should block `file://` urls because they're effectively absolute paths. I'm not certain whether we can get `file://` urls here.
    Daniel Murphy

    I think we can install file:// urls on desktop on non-android, so we might? But happy to block here for now.

    Nate Chapin

    Non-android, sure. But this android-specific code. I'll leave it for now, and can remove it in a followup if you think that makes sense.

    Open in Gerrit

    Related details

    Attention set is empty
    Submit Requirements:
      • requirement satisfiedCode-Coverage
      • requirement is not satisfiedCode-Owners
      • requirement satisfiedCode-Review
      • requirement satisfiedReview-Enforcement
      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
      Gerrit-MessageType: comment
      Gerrit-Project: chromium/src
      Gerrit-Branch: main
      Gerrit-Change-Id: I18debb3231454f5a7885952f58f66f42862499c9
      Gerrit-Change-Number: 7865764
      Gerrit-PatchSet: 3
      Gerrit-Owner: Nate Chapin <jap...@chromium.org>
      Gerrit-Reviewer: Daniel Murphy <dmu...@chromium.org>
      Gerrit-Reviewer: Nate Chapin <jap...@chromium.org>
      Gerrit-Comment-Date: Tue, 26 May 2026 16:32:41 +0000
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Nate Chapin (Gerrit)

      unread,
      May 26, 2026, 12:35:18 PM (2 days ago) May 26
      to Glenn Hartmann, Daniel Murphy, Chromium LUCI CQ, chromium...@chromium.org, aixba+wat...@chromium.org, dibyapal+wa...@chromium.org, dmurph+watc...@chromium.org, japhet+...@chromium.org, kuragin+web-ap...@chromium.org, loyso...@chromium.org, mek+w...@chromium.org, mgiuca...@chromium.org, philli...@chromium.org, pkotwic...@chromium.org, webapks-...@chromium.org, webap...@microsoft.com, zelin+watch-we...@chromium.org
      Attention needed from Daniel Murphy and Glenn Hartmann

      Nate Chapin added 2 comments

      Patchset-level comments
      File-level comment, Patchset 3 (Latest):
      Nate Chapin . resolved

      hartmanng: PTAL at `chrome/browser/android/webapps/twa_launch_queue_delegate.cc`

      File chrome/browser/android/webapps/twa_launch_queue_delegate.cc
      Line 20, Patchset 1:bool IsSensitivePath(const base::FilePath& path) {
      Nate Chapin . unresolved

      Gemini decided what cases to filter here. It passes a sniff test, but I'm not confident I've thought of every case 😊

      Daniel Murphy

      Looking at other bugs, I see:
      https://source.chromium.org/chromium/chromium/src/+/main:android_webview/browser/file_system_access/aw_file_system_access_permission_context.cc;l=59;drc=6921036f402c9e2fecd9f01ea498bb836934a72a;bpv=1;bpt=1

      maybe other at:
      https://source.chromium.org/search?q=::ConfirmSensitiveEntryAccess%20&sq=&ss=chromium

      that might help?

      Nate Chapin

      Ok, this mostly matches https://source.chromium.org/chromium/chromium/src/+/main:android_webview/browser/file_system_access/aw_file_system_access_permission_context.cc;l=59;drc=6921036f402c9e2fecd9f01ea498bb836934a72a now.

      I don't see a good way to share the logic, given the layering.

      Differences:

      • We can't rely on content URIs already been filtered for us (that logic looks more like the general chrome logic in chrome/browser/file_system_access/chrome_file_system_access_permission_context.cc)
      • Gemini thinks we should block `file://` urls because they're effectively absolute paths. I'm not certain whether we can get `file://` urls here.
      Daniel Murphy

      I think we can install file:// urls on desktop on non-android, so we might? But happy to block here for now.

      Nate Chapin

      Non-android, sure. But this android-specific code. I'll leave it for now, and can remove it in a followup if you think that makes sense.

      Nate Chapin

      hartmanng, do you have an opinion here on whether the file:// case needs to be considered?

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Daniel Murphy
      • Glenn Hartmann
      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: I18debb3231454f5a7885952f58f66f42862499c9
        Gerrit-Change-Number: 7865764
        Gerrit-PatchSet: 3
        Gerrit-Owner: Nate Chapin <jap...@chromium.org>
        Gerrit-Reviewer: Daniel Murphy <dmu...@chromium.org>
        Gerrit-Reviewer: Glenn Hartmann <hart...@chromium.org>
        Gerrit-Reviewer: Nate Chapin <jap...@chromium.org>
        Gerrit-Attention: Daniel Murphy <dmu...@chromium.org>
        Gerrit-Attention: Glenn Hartmann <hart...@chromium.org>
        Gerrit-Comment-Date: Tue, 26 May 2026 16:35:06 +0000
        Gerrit-HasComments: Yes
        Gerrit-Has-Labels: No
        satisfied_requirement
        unsatisfied_requirement
        open
        diffy

        Glenn Hartmann (Gerrit)

        unread,
        May 26, 2026, 4:13:14 PM (2 days ago) May 26
        to Nate Chapin, Daniel Murphy, Chromium LUCI CQ, chromium...@chromium.org, aixba+wat...@chromium.org, dibyapal+wa...@chromium.org, dmurph+watc...@chromium.org, japhet+...@chromium.org, kuragin+web-ap...@chromium.org, loyso...@chromium.org, mek+w...@chromium.org, mgiuca...@chromium.org, philli...@chromium.org, pkotwic...@chromium.org, webapks-...@chromium.org, webap...@microsoft.com, zelin+watch-we...@chromium.org
        Attention needed from Nate Chapin

        Glenn Hartmann voted and added 1 comment

        Votes added by Glenn Hartmann

        Code-Review+1

        1 comment

        File chrome/browser/android/webapps/twa_launch_queue_delegate.cc
        Line 20, Patchset 1:bool IsSensitivePath(const base::FilePath& path) {
        Nate Chapin . unresolved

        Gemini decided what cases to filter here. It passes a sniff test, but I'm not confident I've thought of every case 😊

        Daniel Murphy

        Looking at other bugs, I see:
        https://source.chromium.org/chromium/chromium/src/+/main:android_webview/browser/file_system_access/aw_file_system_access_permission_context.cc;l=59;drc=6921036f402c9e2fecd9f01ea498bb836934a72a;bpv=1;bpt=1

        maybe other at:
        https://source.chromium.org/search?q=::ConfirmSensitiveEntryAccess%20&sq=&ss=chromium

        that might help?

        Nate Chapin

        Ok, this mostly matches https://source.chromium.org/chromium/chromium/src/+/main:android_webview/browser/file_system_access/aw_file_system_access_permission_context.cc;l=59;drc=6921036f402c9e2fecd9f01ea498bb836934a72a now.

        I don't see a good way to share the logic, given the layering.

        Differences:

        • We can't rely on content URIs already been filtered for us (that logic looks more like the general chrome logic in chrome/browser/file_system_access/chrome_file_system_access_permission_context.cc)
        • Gemini thinks we should block `file://` urls because they're effectively absolute paths. I'm not certain whether we can get `file://` urls here.
        Daniel Murphy

        I think we can install file:// urls on desktop on non-android, so we might? But happy to block here for now.

        Nate Chapin

        Non-android, sure. But this android-specific code. I'll leave it for now, and can remove it in a followup if you think that makes sense.

        Nate Chapin

        hartmanng, do you have an opinion here on whether the file:// case needs to be considered?

        Glenn Hartmann

        I've never heard of a file:// URL being used for a TWA. Doesn't mean it's never happened, but it should be extremely uncommon. I think it's ok to block it.

        Open in Gerrit

        Related details

        Attention is currently required from:
        • Nate Chapin
        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: I18debb3231454f5a7885952f58f66f42862499c9
        Gerrit-Change-Number: 7865764
        Gerrit-PatchSet: 3
        Gerrit-Owner: Nate Chapin <jap...@chromium.org>
        Gerrit-Reviewer: Daniel Murphy <dmu...@chromium.org>
        Gerrit-Reviewer: Glenn Hartmann <hart...@chromium.org>
        Gerrit-Reviewer: Nate Chapin <jap...@chromium.org>
        Gerrit-Attention: Nate Chapin <jap...@chromium.org>
        Gerrit-Comment-Date: Tue, 26 May 2026 20:13:08 +0000
        Gerrit-HasComments: Yes
        Gerrit-Has-Labels: Yes
        satisfied_requirement
        unsatisfied_requirement
        open
        diffy

        Nate Chapin (Gerrit)

        unread,
        12:43 PM (4 hours ago) 12:43 PM
        to Glenn Hartmann, Daniel Murphy, Chromium LUCI CQ, chromium...@chromium.org, aixba+wat...@chromium.org, dibyapal+wa...@chromium.org, dmurph+watc...@chromium.org, japhet+...@chromium.org, kuragin+web-ap...@chromium.org, loyso...@chromium.org, mek+w...@chromium.org, mgiuca...@chromium.org, philli...@chromium.org, pkotwic...@chromium.org, webapks-...@chromium.org, webap...@microsoft.com, zelin+watch-we...@chromium.org

        Nate Chapin voted and added 1 comment

        Votes added by Nate Chapin

        Commit-Queue+2

        1 comment

        File chrome/browser/android/webapps/twa_launch_queue_delegate.cc
        Line 20, Patchset 1:bool IsSensitivePath(const base::FilePath& path) {
        Nate Chapin . resolved

        Gemini decided what cases to filter here. It passes a sniff test, but I'm not confident I've thought of every case 😊

        Daniel Murphy

        Looking at other bugs, I see:
        https://source.chromium.org/chromium/chromium/src/+/main:android_webview/browser/file_system_access/aw_file_system_access_permission_context.cc;l=59;drc=6921036f402c9e2fecd9f01ea498bb836934a72a;bpv=1;bpt=1

        maybe other at:
        https://source.chromium.org/search?q=::ConfirmSensitiveEntryAccess%20&sq=&ss=chromium

        that might help?

        Nate Chapin

        Ok, this mostly matches https://source.chromium.org/chromium/chromium/src/+/main:android_webview/browser/file_system_access/aw_file_system_access_permission_context.cc;l=59;drc=6921036f402c9e2fecd9f01ea498bb836934a72a now.

        I don't see a good way to share the logic, given the layering.

        Differences:

        • We can't rely on content URIs already been filtered for us (that logic looks more like the general chrome logic in chrome/browser/file_system_access/chrome_file_system_access_permission_context.cc)
        • Gemini thinks we should block `file://` urls because they're effectively absolute paths. I'm not certain whether we can get `file://` urls here.
        Daniel Murphy

        I think we can install file:// urls on desktop on non-android, so we might? But happy to block here for now.

        Nate Chapin

        Non-android, sure. But this android-specific code. I'll leave it for now, and can remove it in a followup if you think that makes sense.

        Nate Chapin

        hartmanng, do you have an opinion here on whether the file:// case needs to be considered?

        Glenn Hartmann

        I've never heard of a file:// URL being used for a TWA. Doesn't mean it's never happened, but it should be extremely uncommon. I think it's ok to block it.

        Nate Chapin

        Acknowledged

        Open in Gerrit

        Related details

        Attention set is empty
        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: I18debb3231454f5a7885952f58f66f42862499c9
          Gerrit-Change-Number: 7865764
          Gerrit-PatchSet: 3
          Gerrit-Owner: Nate Chapin <jap...@chromium.org>
          Gerrit-Reviewer: Daniel Murphy <dmu...@chromium.org>
          Gerrit-Reviewer: Glenn Hartmann <hart...@chromium.org>
          Gerrit-Reviewer: Nate Chapin <jap...@chromium.org>
          Gerrit-Comment-Date: Thu, 28 May 2026 16:42:43 +0000
          Gerrit-HasComments: Yes
          Gerrit-Has-Labels: Yes
          Comment-In-Reply-To: Daniel Murphy <dmu...@chromium.org>
          Comment-In-Reply-To: Glenn Hartmann <hart...@chromium.org>
          Comment-In-Reply-To: Nate Chapin <jap...@chromium.org>
          satisfied_requirement
          open
          diffy

          Chromium LUCI CQ (Gerrit)

          unread,
          3:39 PM (1 hour ago) 3:39 PM
          to Nate Chapin, Glenn Hartmann, Daniel Murphy, chromium...@chromium.org, aixba+wat...@chromium.org, dibyapal+wa...@chromium.org, dmurph+watc...@chromium.org, japhet+...@chromium.org, kuragin+web-ap...@chromium.org, loyso...@chromium.org, mek+w...@chromium.org, mgiuca...@chromium.org, philli...@chromium.org, pkotwic...@chromium.org, webapks-...@chromium.org, webap...@microsoft.com, zelin+watch-we...@chromium.org

          Chromium LUCI CQ submitted the change

          Change information

          Commit message:
          FileSystemAccess: Block sensitive paths in TWA launch

          A malicious Android application could bypass the FileSystemAccess API
          blocklist to obtain read and write access to arbitrary files within
          Chrome's private data directory via TWA launch intents.

          This CL implements path validation in TwaLaunchQueueDelegate to block
          sensitive paths (parent references, Chrome's own Content URIs, app data
          and cache directories, system directories).
          It also modifies LaunchQueue to gracefully clear invalid paths instead
          of crashing or bypassing the check.

          TAG=agy
          CONV=614f9db2-61b7-44b4-830b-5ebe9a33ae04
          Bug: 497977983
          Change-Id: I18debb3231454f5a7885952f58f66f42862499c9
          Reviewed-by: Daniel Murphy <dmu...@chromium.org>
          Reviewed-by: Glenn Hartmann <hart...@chromium.org>
          Commit-Queue: Nate Chapin <jap...@chromium.org>
          Cr-Commit-Position: refs/heads/main@{#1637880}
          Files:
          • M chrome/browser/android/webapps/twa_launch_queue_delegate.cc
          • M components/webapps/browser/launch_queue/launch_queue.cc
          • M components/webapps/browser/launch_queue/launch_queue_unittest.cc
          Change size: M
          Delta: 3 files changed, 80 insertions(+), 1 deletion(-)
          Branch: refs/heads/main
          Submit Requirements:
          • requirement satisfiedCode-Review: +1 by Daniel Murphy, +1 by Glenn Hartmann
          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: I18debb3231454f5a7885952f58f66f42862499c9
          Gerrit-Change-Number: 7865764
          Gerrit-PatchSet: 4
          Gerrit-Owner: Nate Chapin <jap...@chromium.org>
          Gerrit-Reviewer: Chromium LUCI CQ <chromiu...@luci-project-accounts.iam.gserviceaccount.com>
          Gerrit-Reviewer: Daniel Murphy <dmu...@chromium.org>
          Gerrit-Reviewer: Glenn Hartmann <hart...@chromium.org>
          Gerrit-Reviewer: Nate Chapin <jap...@chromium.org>
          open
          diffy
          satisfied_requirement
          Reply all
          Reply to author
          Forward
          0 new messages