[Linux] Implement First Run EULA dialog [chromium/src : main]

0 views
Skip to first unread message

Thomas Anderson (Gerrit)

unread,
Dec 18, 2025, 1:26:51 PM12/18/25
to Lei Zhang, chromium...@chromium.org, srahim...@chromium.org
Attention needed from Lei Zhang

Thomas Anderson voted Commit-Queue+1

Commit-Queue+1
Open in Gerrit

Related details

Attention is currently required from:
  • Lei Zhang
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: I8f20d27ad5e33317b5152c69ab173586522168d8
Gerrit-Change-Number: 7269380
Gerrit-PatchSet: 12
Gerrit-Owner: Thomas Anderson <thomasa...@chromium.org>
Gerrit-Reviewer: Lei Zhang <the...@chromium.org>
Gerrit-Reviewer: Thomas Anderson <thomasa...@chromium.org>
Gerrit-Attention: Lei Zhang <the...@chromium.org>
Gerrit-Comment-Date: Thu, 18 Dec 2025 18:26:40 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: Yes
satisfied_requirement
unsatisfied_requirement
open
diffy

Lei Zhang (Gerrit)

unread,
Dec 18, 2025, 2:17:20 PM12/18/25
to Thomas Anderson, Chromium LUCI CQ, Lei Zhang, chromium...@chromium.org, srahim...@chromium.org
Attention needed from Thomas Anderson

Lei Zhang added 12 comments

Commit Message
Line 9, Patchset 14 (Latest):Adds a views-based EULA dialog for Linux that appears during the first
Lei Zhang . unresolved

Does Windows do this as well? If so, are there any opportunities to share code?

Line 15, Patchset 13:UI demo:
Lei Zhang . unresolved

Out of curiosity, does it need to mention Chrome OS?

Line 19, Patchset 13:- Adds HTML-to-text conversion for displaying the EULA in a
Lei Zhang . unresolved

... because the cross-platform EULA is HTML?

Just curious, is spinning up a renderer to displaying HTML not a thing that Views can do?

I'm also somewhat worried that the HTML parsing is fragile.

File chrome/browser/chrome_browser_main.cc
Line 1626, Patchset 13:#if BUILDFLAG(IS_LINUX)
Lei Zhang . unresolved

Does it make sense to integrate this with ChromeBrowserMainParts::ApplyFirstRunPrefs()?

Line 1628, Patchset 13: if (!first_run::MaybeShowEulaDialog()) {
Lei Zhang . unresolved

Combine with previous line?

File chrome/browser/first_run/first_run_internal_linux.cc
Line 58, Patchset 13: EulaDialog(base::OnceClosure on_accept, base::OnceClosure on_cancel)
Lei Zhang . unresolved

Why not just 1 Callback that takes a bool?

Line 228, Patchset 13: // Ensure we have a task runner for the loop.
Lei Zhang . unresolved

"there exists"

Line 256, Patchset 13: if (!sentinel.empty()) {
Lei Zhang . unresolved

Always evaluates to true.

Line 257, Patchset 13: base::CreateDirectory(sentinel.DirName());
Lei Zhang . unresolved

The parent dir is `chrome::DIR_USER_DATA`. Does that need to be created?

File chrome/browser/first_run/first_run_internal_linux_unittest.cc
Line 100, Patchset 13: base::PathService::Get(chrome::DIR_USER_DATA, &sentinel);
Lei Zhang . unresolved

In tests, use the checked version.

File chrome/test/BUILD.gn
Line 8602, Patchset 13: sources += [ "../browser/first_run/first_run_internal_linux_unittest.cc" ]
Lei Zhang . unresolved

sources first.

Open in Gerrit

Related details

Attention is currently required from:
  • Thomas Anderson
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: I8f20d27ad5e33317b5152c69ab173586522168d8
    Gerrit-Change-Number: 7269380
    Gerrit-PatchSet: 14
    Gerrit-Owner: Thomas Anderson <thomasa...@chromium.org>
    Gerrit-Reviewer: Lei Zhang <the...@chromium.org>
    Gerrit-Reviewer: Thomas Anderson <thomasa...@chromium.org>
    Gerrit-Attention: Thomas Anderson <thomasa...@chromium.org>
    Gerrit-Comment-Date: Thu, 18 Dec 2025 19:17:10 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Thomas Anderson (Gerrit)

    unread,
    Dec 18, 2025, 6:41:19 PM12/18/25
    to Chromium LUCI CQ, Lei Zhang, chromium...@chromium.org, srahim...@chromium.org
    Attention needed from Lei Zhang

    Thomas Anderson voted and added 12 comments

    Votes added by Thomas Anderson

    Auto-Submit+1
    Commit-Queue+1

    12 comments

    Commit Message
    Line 9, Patchset 14:Adds a views-based EULA dialog for Linux that appears during the first
    Lei Zhang . resolved

    Does Windows do this as well? If so, are there any opportunities to share code?

    Thomas Anderson

    On Windows, the EULA dialog runs in a subprocess (setup.exe), so code cannot be shared with the current design. Windows could theoretically switch to the views impl in the future, but I'm not sure why the subprocess design was made to say if it actually should.

    Lei Zhang . resolved

    Out of curiosity, does it need to mention Chrome OS?

    Thomas Anderson

    The title was copied from the EULA html's <title> tag, and that string also appears several times in the actual EULA. I'm not a lawyer, so I'm too scared to change it.

    Lei Zhang . resolved

    No prefix.

    Thomas Anderson

    Done

    Line 19, Patchset 13:- Adds HTML-to-text conversion for displaying the EULA in a
    Lei Zhang . resolved

    ... because the cross-platform EULA is HTML?

    Just curious, is spinning up a renderer to displaying HTML not a thing that Views can do?

    I'm also somewhat worried that the HTML parsing is fragile.

    Thomas Anderson

    the dialog gets shown too early during init to render web contents.

    You can view how the EULA is supposed to look at chrome://terms. It's just plaintext except the title and "AVC" are bold. We can possibly just get away with changing it to plaintext in the repo.

    For now, I've added DCHECKs in ConvertHtmlEulaToText to ensure all nodes are of a recognized type.

    File chrome/browser/chrome_browser_main.cc
    Line 1626, Patchset 13:#if BUILDFLAG(IS_LINUX)
    Lei Zhang . resolved

    Does it make sense to integrate this with ChromeBrowserMainParts::ApplyFirstRunPrefs()?

    Thomas Anderson

    It needs to run later because UI is not available during ApplyFirstRunPrefs. I chose here because this function already has several first_run:: calls, and this also runs before profile init, which is required since otherwise the first_run codepath wouldn't get hit.

    Line 1628, Patchset 13: if (!first_run::MaybeShowEulaDialog()) {
    Lei Zhang . resolved

    Combine with previous line?

    Thomas Anderson

    Done

    File chrome/browser/first_run/first_run_internal_linux.cc
    Line 58, Patchset 13: EulaDialog(base::OnceClosure on_accept, base::OnceClosure on_cancel)
    Lei Zhang . resolved

    Why not just 1 Callback that takes a bool?

    Thomas Anderson

    Done

    Line 228, Patchset 13: // Ensure we have a task runner for the loop.
    Lei Zhang . resolved

    "there exists"

    Thomas Anderson

    Done

    Line 256, Patchset 13: if (!sentinel.empty()) {
    Lei Zhang . resolved

    Always evaluates to true.

    Thomas Anderson

    Done

    Line 257, Patchset 13: base::CreateDirectory(sentinel.DirName());
    Lei Zhang . resolved

    The parent dir is `chrome::DIR_USER_DATA`. Does that need to be created?

    Thomas Anderson

    It's already created before this gets called (though it doesn't yet have a profile). Changed this to a check that it exists.

    File chrome/browser/first_run/first_run_internal_linux_unittest.cc
    Line 100, Patchset 13: base::PathService::Get(chrome::DIR_USER_DATA, &sentinel);
    Lei Zhang . resolved

    In tests, use the checked version.

    Thomas Anderson

    Done

    File chrome/test/BUILD.gn
    Line 8602, Patchset 13: sources += [ "../browser/first_run/first_run_internal_linux_unittest.cc" ]
    Lei Zhang . resolved

    sources first.

    Thomas Anderson

    Done

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Lei Zhang
    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: I8f20d27ad5e33317b5152c69ab173586522168d8
      Gerrit-Change-Number: 7269380
      Gerrit-PatchSet: 16
      Gerrit-Owner: Thomas Anderson <thomasa...@chromium.org>
      Gerrit-Reviewer: Lei Zhang <the...@chromium.org>
      Gerrit-Reviewer: Thomas Anderson <thomasa...@chromium.org>
      Gerrit-Attention: Lei Zhang <the...@chromium.org>
      Gerrit-Comment-Date: Thu, 18 Dec 2025 23:41:09 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: Yes
      Comment-In-Reply-To: Lei Zhang <the...@chromium.org>
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Lei Zhang (Gerrit)

      unread,
      Dec 18, 2025, 6:56:34 PM12/18/25
      to Thomas Anderson, Chromium LUCI CQ, Lei Zhang, chromium...@chromium.org, srahim...@chromium.org
      Attention needed from Thomas Anderson

      Lei Zhang added 1 comment

      Commit Message
      Line 9, Patchset 14:Adds a views-based EULA dialog for Linux that appears during the first
      Lei Zhang . resolved

      Does Windows do this as well? If so, are there any opportunities to share code?

      Thomas Anderson

      On Windows, the EULA dialog runs in a subprocess (setup.exe), so code cannot be shared with the current design. Windows could theoretically switch to the views impl in the future, but I'm not sure why the subprocess design was made to say if it actually should.

      Lei Zhang

      May be good to get chrome/browser/first_run/OWNERS to review as well.

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Thomas Anderson
      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: I8f20d27ad5e33317b5152c69ab173586522168d8
      Gerrit-Change-Number: 7269380
      Gerrit-PatchSet: 16
      Gerrit-Owner: Thomas Anderson <thomasa...@chromium.org>
      Gerrit-Reviewer: Lei Zhang <the...@chromium.org>
      Gerrit-Reviewer: Thomas Anderson <thomasa...@chromium.org>
      Gerrit-Attention: Thomas Anderson <thomasa...@chromium.org>
      Gerrit-Comment-Date: Thu, 18 Dec 2025 23:56:23 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      Comment-In-Reply-To: Lei Zhang <the...@chromium.org>
      Comment-In-Reply-To: Thomas Anderson <thomasa...@chromium.org>
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Lei Zhang (Gerrit)

      unread,
      Dec 18, 2025, 7:00:49 PM12/18/25
      to Thomas Anderson, Chromium LUCI CQ, Lei Zhang, chromium...@chromium.org, srahim...@chromium.org
      Attention needed from Thomas Anderson

      Lei Zhang added 2 comments

      File chrome/browser/first_run/first_run_internal_linux.cc
      Line 166, Patchset 16 (Latest): return std::any_of(std::begin(kBlockCloseTags), std::end(kBlockCloseTags),
      Lei Zhang . unresolved

      std::ranges::any_of()

      File chrome/browser/first_run/first_run_internal_linux_unittest.cc
      Line 20, Patchset 16 (Latest):constexpr const char html_content[] = R"(<!DOCTYPE html>
      Lei Zhang . unresolved

      Should the test case just parse `IDS_TERMS_HTML` instead of test data?

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Thomas Anderson
      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: I8f20d27ad5e33317b5152c69ab173586522168d8
        Gerrit-Change-Number: 7269380
        Gerrit-PatchSet: 16
        Gerrit-Owner: Thomas Anderson <thomasa...@chromium.org>
        Gerrit-Reviewer: Lei Zhang <the...@chromium.org>
        Gerrit-Reviewer: Thomas Anderson <thomasa...@chromium.org>
        Gerrit-Attention: Thomas Anderson <thomasa...@chromium.org>
        Gerrit-Comment-Date: Fri, 19 Dec 2025 00:00:39 +0000
        Gerrit-HasComments: Yes
        Gerrit-Has-Labels: No
        satisfied_requirement
        unsatisfied_requirement
        open
        diffy

        Thomas Anderson (Gerrit)

        unread,
        Dec 18, 2025, 7:17:55 PM12/18/25
        to Chromium LUCI CQ, Lei Zhang, chromium...@chromium.org, srahim...@chromium.org
        Attention needed from Lei Zhang

        Thomas Anderson voted and added 2 comments

        Votes added by Thomas Anderson

        Auto-Submit+1
        Commit-Queue+1

        2 comments

        File chrome/browser/first_run/first_run_internal_linux.cc
        Line 166, Patchset 16: return std::any_of(std::begin(kBlockCloseTags), std::end(kBlockCloseTags),
        Lei Zhang . resolved

        std::ranges::any_of()

        Thomas Anderson

        Done

        File chrome/browser/first_run/first_run_internal_linux_unittest.cc
        Line 20, Patchset 16:constexpr const char html_content[] = R"(<!DOCTYPE html>
        Lei Zhang . resolved

        Should the test case just parse `IDS_TERMS_HTML` instead of test data?

        Thomas Anderson

        I've added a test that parses IDS_TERMS_HTML (just to verify no DCHECKs are hit), but it doesn't actually check the output since the terms get updated sometimes.

        Open in Gerrit

        Related details

        Attention is currently required from:
        • Lei Zhang
        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: I8f20d27ad5e33317b5152c69ab173586522168d8
          Gerrit-Change-Number: 7269380
          Gerrit-PatchSet: 17
          Gerrit-Owner: Thomas Anderson <thomasa...@chromium.org>
          Gerrit-Reviewer: Lei Zhang <the...@chromium.org>
          Gerrit-Reviewer: Thomas Anderson <thomasa...@chromium.org>
          Gerrit-Attention: Lei Zhang <the...@chromium.org>
          Gerrit-Comment-Date: Fri, 19 Dec 2025 00:17:46 +0000
          satisfied_requirement
          unsatisfied_requirement
          open
          diffy

          Lei Zhang (Gerrit)

          unread,
          Dec 18, 2025, 7:30:54 PM12/18/25
          to Thomas Anderson, Greg Thompson, Chromium LUCI CQ, Lei Zhang, chromium...@chromium.org, srahim...@chromium.org
          Attention needed from Greg Thompson and Thomas Anderson

          Lei Zhang added 3 comments

          Commit Message
          Line 9, Patchset 14:Adds a views-based EULA dialog for Linux that appears during the first
          Lei Zhang . resolved

          Does Windows do this as well? If so, are there any opportunities to share code?

          Thomas Anderson

          On Windows, the EULA dialog runs in a subprocess (setup.exe), so code cannot be shared with the current design. Windows could theoretically switch to the views impl in the future, but I'm not sure why the subprocess design was made to say if it actually should.

          Lei Zhang

          May be good to get chrome/browser/first_run/OWNERS to review as well.

          Lei Zhang

          +grt@

          File chrome/browser/first_run/first_run_internal_linux_unittest.cc
          Line 20, Patchset 16:constexpr const char html_content[] = R"(<!DOCTYPE html>
          Lei Zhang . unresolved

          Should the test case just parse `IDS_TERMS_HTML` instead of test data?

          Thomas Anderson

          I've added a test that parses IDS_TERMS_HTML (just to verify no DCHECKs are hit), but it doesn't actually check the output since the terms get updated sometimes.

          Lei Zhang

          Maybe check for a few key phrases that are lilely to be in the EULA?

          Line 131, Patchset 17 (Latest): if (ui::ResourceBundle::HasSharedInstance()) {
          Lei Zhang . unresolved

          Not sure if this evaluates to true without additional work, like calling ui::ResourceBundle::InitSharedInstanceWithLocale(). This and line 135 should be deterministic in a test.

          Open in Gerrit

          Related details

          Attention is currently required from:
          • Greg Thompson
          • Thomas Anderson
          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: I8f20d27ad5e33317b5152c69ab173586522168d8
            Gerrit-Change-Number: 7269380
            Gerrit-PatchSet: 17
            Gerrit-Owner: Thomas Anderson <thomasa...@chromium.org>
            Gerrit-Reviewer: Greg Thompson <g...@chromium.org>
            Gerrit-Reviewer: Lei Zhang <the...@chromium.org>
            Gerrit-Reviewer: Thomas Anderson <thomasa...@chromium.org>
            Gerrit-Attention: Thomas Anderson <thomasa...@chromium.org>
            Gerrit-Attention: Greg Thompson <g...@chromium.org>
            Gerrit-Comment-Date: Fri, 19 Dec 2025 00:30:44 +0000
            Gerrit-HasComments: Yes
            Gerrit-Has-Labels: No
            satisfied_requirement
            unsatisfied_requirement
            open
            diffy

            Thomas Anderson (Gerrit)

            unread,
            Dec 19, 2025, 1:40:10 PM12/19/25
            to Greg Thompson, Chromium LUCI CQ, Lei Zhang, chromium...@chromium.org, srahim...@chromium.org
            Attention needed from Greg Thompson and Lei Zhang

            Thomas Anderson voted and added 2 comments

            Votes added by Thomas Anderson

            Auto-Submit+1
            Commit-Queue+1

            2 comments

            File chrome/browser/first_run/first_run_internal_linux_unittest.cc
            Line 20, Patchset 16:constexpr const char html_content[] = R"(<!DOCTYPE html>
            Lei Zhang . resolved

            Should the test case just parse `IDS_TERMS_HTML` instead of test data?

            Thomas Anderson

            I've added a test that parses IDS_TERMS_HTML (just to verify no DCHECKs are hit), but it doesn't actually check the output since the terms get updated sometimes.

            Lei Zhang

            Maybe check for a few key phrases that are lilely to be in the EULA?

            Thomas Anderson

            In unbranded builds (which is where the tests would normally run), the contents of the EULA are:

            ```
            This Space Intentionally Blank
            In official builds this space will show the terms of service.
            ```

            (It also has a typo, it should say branded builds, not official builds)

            So there aren't really any strings in common (between branded and non branded) to test against. I've instead added a check that the html and text representations are non-empty.

            Line 131, Patchset 17: if (ui::ResourceBundle::HasSharedInstance()) {
            Lei Zhang . resolved

            Not sure if this evaluates to true without additional work, like calling ui::ResourceBundle::InitSharedInstanceWithLocale(). This and line 135 should be deterministic in a test.

            Thomas Anderson

            I've changed this `if` to an `ASSERT`.

            Open in Gerrit

            Related details

            Attention is currently required from:
            • Greg Thompson
            • Lei Zhang
            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: I8f20d27ad5e33317b5152c69ab173586522168d8
              Gerrit-Change-Number: 7269380
              Gerrit-PatchSet: 18
              Gerrit-Owner: Thomas Anderson <thomasa...@chromium.org>
              Gerrit-Reviewer: Greg Thompson <g...@chromium.org>
              Gerrit-Reviewer: Lei Zhang <the...@chromium.org>
              Gerrit-Reviewer: Thomas Anderson <thomasa...@chromium.org>
              Gerrit-Attention: Lei Zhang <the...@chromium.org>
              Gerrit-Attention: Greg Thompson <g...@chromium.org>
              Gerrit-Comment-Date: Fri, 19 Dec 2025 18:39:52 +0000
              Gerrit-HasComments: Yes
              Gerrit-Has-Labels: Yes
              satisfied_requirement
              unsatisfied_requirement
              open
              diffy

              Lei Zhang (Gerrit)

              unread,
              Dec 19, 2025, 3:29:32 PM12/19/25
              to Thomas Anderson, Greg Thompson, Chromium LUCI CQ, Lei Zhang, chromium...@chromium.org, srahim...@chromium.org
              Attention needed from Greg Thompson and Thomas Anderson

              Lei Zhang added 1 comment

              File chrome/browser/first_run/first_run_internal_linux_unittest.cc
              Line 20, Patchset 16:constexpr const char html_content[] = R"(<!DOCTYPE html>
              Lei Zhang . resolved

              Should the test case just parse `IDS_TERMS_HTML` instead of test data?

              Thomas Anderson

              I've added a test that parses IDS_TERMS_HTML (just to verify no DCHECKs are hit), but it doesn't actually check the output since the terms get updated sometimes.

              Lei Zhang

              Maybe check for a few key phrases that are lilely to be in the EULA?

              Thomas Anderson

              In unbranded builds (which is where the tests would normally run), the contents of the EULA are:

              ```
              This Space Intentionally Blank
              In official builds this space will show the terms of service.
              ```

              (It also has a typo, it should say branded builds, not official builds)

              So there aren't really any strings in common (between branded and non branded) to test against. I've instead added a check that the html and text representations are non-empty.

              Lei Zhang

              Then may test for branded vs. unbranded key phrases?

              Open in Gerrit

              Related details

              Attention is currently required from:
              • Greg Thompson
              • Thomas Anderson
              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: I8f20d27ad5e33317b5152c69ab173586522168d8
              Gerrit-Change-Number: 7269380
              Gerrit-PatchSet: 18
              Gerrit-Owner: Thomas Anderson <thomasa...@chromium.org>
              Gerrit-Reviewer: Greg Thompson <g...@chromium.org>
              Gerrit-Reviewer: Lei Zhang <the...@chromium.org>
              Gerrit-Reviewer: Thomas Anderson <thomasa...@chromium.org>
              Gerrit-Attention: Thomas Anderson <thomasa...@chromium.org>
              Gerrit-Attention: Greg Thompson <g...@chromium.org>
              Gerrit-Comment-Date: Fri, 19 Dec 2025 20:29:21 +0000
              Gerrit-HasComments: Yes
              Gerrit-Has-Labels: No
              satisfied_requirement
              unsatisfied_requirement
              open
              diffy

              Greg Thompson (Gerrit)

              unread,
              Dec 22, 2025, 4:38:09 AM12/22/25
              to Thomas Anderson, Chromium LUCI CQ, Lei Zhang, chromium...@chromium.org, srahim...@chromium.org
              Attention needed from Thomas Anderson

              Greg Thompson added 2 comments

              Commit Message
              Line 9, Patchset 14:Adds a views-based EULA dialog for Linux that appears during the first
              Lei Zhang . unresolved

              Does Windows do this as well? If so, are there any opportunities to share code?

              Thomas Anderson

              On Windows, the EULA dialog runs in a subprocess (setup.exe), so code cannot be shared with the current design. Windows could theoretically switch to the views impl in the future, but I'm not sure why the subprocess design was made to say if it actually should.

              Lei Zhang

              May be good to get chrome/browser/first_run/OWNERS to review as well.

              Lei Zhang

              +grt@

              Greg Thompson

              I wasn't part of the design back then, but my understanding has always been that we use the installer to show the EULA on Windows so that we don't have to worry about accidentally starting the browser (or anything related to it) before the user has had a chance to see the ToS.

              File chrome/browser/chrome_browser_main.cc
              Line 1627, Patchset 18 (Latest): if (!headless::IsHeadlessMode() && !first_run::MaybeShowEulaDialog()) {
              Greg Thompson . unresolved

              is there any way we can do this before the metrics service is started (the EULA is shown during `PreEarlyInitialization` on Windows)? i think we need to take care to not record or report any metrics before the ToS are accepted.

              Open in Gerrit

              Related details

              Attention is currently required from:
              • Thomas Anderson
              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: I8f20d27ad5e33317b5152c69ab173586522168d8
                Gerrit-Change-Number: 7269380
                Gerrit-PatchSet: 18
                Gerrit-Owner: Thomas Anderson <thomasa...@chromium.org>
                Gerrit-Reviewer: Greg Thompson <g...@chromium.org>
                Gerrit-Reviewer: Lei Zhang <the...@chromium.org>
                Gerrit-Reviewer: Thomas Anderson <thomasa...@chromium.org>
                Gerrit-Attention: Thomas Anderson <thomasa...@chromium.org>
                Gerrit-Comment-Date: Mon, 22 Dec 2025 09:37:51 +0000
                satisfied_requirement
                unsatisfied_requirement
                open
                diffy

                Thomas Anderson (Gerrit)

                unread,
                Dec 22, 2025, 10:33:47 AM12/22/25
                to Greg Thompson, Chromium LUCI CQ, Lei Zhang, chromium...@chromium.org, srahim...@chromium.org
                Attention needed from Greg Thompson and Lei Zhang

                Thomas Anderson added 2 comments

                Commit Message
                Line 9, Patchset 14:Adds a views-based EULA dialog for Linux that appears during the first
                Lei Zhang . resolved

                Does Windows do this as well? If so, are there any opportunities to share code?

                Thomas Anderson

                On Windows, the EULA dialog runs in a subprocess (setup.exe), so code cannot be shared with the current design. Windows could theoretically switch to the views impl in the future, but I'm not sure why the subprocess design was made to say if it actually should.

                Lei Zhang

                May be good to get chrome/browser/first_run/OWNERS to review as well.

                Lei Zhang

                +grt@

                Greg Thompson

                I wasn't part of the design back then, but my understanding has always been that we use the installer to show the EULA on Windows so that we don't have to worry about accidentally starting the browser (or anything related to it) before the user has had a chance to see the ToS.

                Thomas Anderson

                Acknowledged

                File chrome/browser/chrome_browser_main.cc
                Line 1627, Patchset 18 (Latest): if (!headless::IsHeadlessMode() && !first_run::MaybeShowEulaDialog()) {
                Greg Thompson . resolved

                is there any way we can do this before the metrics service is started (the EULA is shown during `PreEarlyInitialization` on Windows)? i think we need to take care to not record or report any metrics before the ToS are accepted.

                Thomas Anderson

                Yes, that is done in this CL because this EULA dialog will show **before** the first-run dialog with a checkbox for "Automatically send usage statistics and crash reports to Google".

                Open in Gerrit

                Related details

                Attention is currently required from:
                • Greg Thompson
                • Lei Zhang
                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: I8f20d27ad5e33317b5152c69ab173586522168d8
                  Gerrit-Change-Number: 7269380
                  Gerrit-PatchSet: 18
                  Gerrit-Owner: Thomas Anderson <thomasa...@chromium.org>
                  Gerrit-Reviewer: Greg Thompson <g...@chromium.org>
                  Gerrit-Reviewer: Lei Zhang <the...@chromium.org>
                  Gerrit-Reviewer: Thomas Anderson <thomasa...@chromium.org>
                  Gerrit-Attention: Lei Zhang <the...@chromium.org>
                  Gerrit-Attention: Greg Thompson <g...@chromium.org>
                  Gerrit-Comment-Date: Mon, 22 Dec 2025 15:33:36 +0000
                  Gerrit-HasComments: Yes
                  Gerrit-Has-Labels: No
                  Comment-In-Reply-To: Lei Zhang <the...@chromium.org>
                  Comment-In-Reply-To: Thomas Anderson <thomasa...@chromium.org>
                  Comment-In-Reply-To: Greg Thompson <g...@chromium.org>
                  satisfied_requirement
                  unsatisfied_requirement
                  open
                  diffy

                  Greg Thompson (Gerrit)

                  unread,
                  Dec 23, 2025, 5:54:58 AM12/23/25
                  to Thomas Anderson, Chromium LUCI CQ, Lei Zhang, chromium...@chromium.org, srahim...@chromium.org
                  Attention needed from Lei Zhang and Thomas Anderson

                  Greg Thompson added 12 comments

                  File chrome/browser/chrome_browser_main.cc
                  Line 1627, Patchset 18 (Latest): if (!headless::IsHeadlessMode() && !first_run::MaybeShowEulaDialog()) {
                  Greg Thompson . unresolved

                  is there any way we can do this before the metrics service is started (the EULA is shown during `PreEarlyInitialization` on Windows)? i think we need to take care to not record or report any metrics before the ToS are accepted.

                  Thomas Anderson

                  Yes, that is done in this CL because this EULA dialog will show **before** the first-run dialog with a checkbox for "Automatically send usage statistics and crash reports to Google".

                  Greg Thompson

                  I was referring to line 1620 above. Can that happen after the dialog is accepted or refused?

                  This might be an odd combination, but what happens if an install that requires the ToS is started on a machine that's enterprise-managed and has the "MetricsReportingEnabled" policy enabled? I think we still need to honor showing the ToS before collecting any metrics. Are you certain that not only reporting but also recording will be off at this point in that case?

                  In any case, I think we should have a comment here explaining what the guarantee is so that future refactors are less likely to accidentally move this later. Even better would be some tests for cases like this to prevent regressions.

                  File chrome/browser/first_run/first_run.h
                  Line 148, Patchset 18 (Latest):bool MaybeShowEulaDialog();
                  Greg Thompson . unresolved

                  long ago, i was asked to replace "Maybe" with something more explicit in functions like this. WDYT about `ShowEulaDialogIfRequired`, with the comment explaining the condition(s) under which it's required?

                  on second thought, see my comment in first_run.cc. i think we can avoid "Maybe" and "IfRequired" altogether.

                  Line 147, Patchset 18 (Latest):// or not required. Returns false if the EULA has not been accepted.
                  Greg Thompson . unresolved

                  maybe add to the comment that the process must exit promptly in this case? this is an important details for callers of this function.

                  File chrome/browser/first_run/first_run.cc
                  Line 432, Patchset 18 (Latest): !internal::ShowPostInstallEULAIfNeeded(initial_prefs.get())) {
                  Greg Thompson . unresolved
                  rather than rely on setting a global in this fn that is later used to actually show the eula, i think it's more clean to have two eula-launching paths: windows will do it here as always. linux can continue to ignore the call to `ShowPostInstallEULAIfNeeded`. add a new `bool eula_required;` for linux in the `MasterPrefs` struct that is populated in `SetupInitialPrefsFromInstallPrefs` and then change `ChromeBrowserMainParts::PreMainMessageLoopRunImpl` to something like:
                  ```
                  #if BUILDFLAG(IS_LINUX)
                  // On Linux, the EULA dialog requires Views, so it is shown here rather than
                  // when applying the first-run prefs.
                  if (first_run::IsChromeFirstRun() && master_prefs_->eula_required &&
                  !headless::IsHeadlessMode() !first_run::ShowEulaDialog()) {
                  return CHROME_RESULT_CODE_EULA_REFUSED;
                  }
                  #endif
                  ```
                  this also removes the need for "Maybe" on the function name and "SetRequireEulaForTesting".
                  File chrome/browser/first_run/first_run_internal_chromeos.cc
                  Line 34, Patchset 18 (Latest): // Just continue. The EULA is only used on Windows.
                  Greg Thompson . unresolved

                  ... and Linux

                  File chrome/browser/first_run/first_run_internal_linux.cc
                  Line 62, Patchset 18 (Latest): *path = user_data_dir.AppendASCII("EulaSentinel");
                  Greg Thompson . unresolved

                  could we not use `installer::kEulaSentinelFile` for this?

                  Line 66, Patchset 18 (Latest):class EulaDialog : public views::DialogDelegate {
                  Greg Thompson . unresolved

                  could/should this live in //chrome/browser/ui/views somewhere along with a browser test based on TestBrowserDialog? i'm not a ui/views OWNER, so i'm not the best person to review this.

                  Line 258, Patchset 18 (Latest): // Ensure there exists a task runner for the loop.
                  std::optional<base::SingleThreadTaskExecutor> executor;
                  if (!base::SingleThreadTaskRunner::GetCurrentDefault()) {
                  executor.emplace(base::MessagePumpType::UI);
                  }
                  Greg Thompson . unresolved

                  why is this necessary? hasn't //content already created the UI thread's runner at this point in startup?

                  Line 282, Patchset 18 (Latest): CHECK(base::DirectoryExists(sentinel.DirName()));
                  Greg Thompson . unresolved

                  not needed -- `PathService` guarantees that the directory exists.

                  File chrome/browser/first_run/first_run_internal_linux_unittest.cc
                  Line 79, Patchset 18 (Latest): base::PathService::OverrideAndCreateIfNeeded(chrome::DIR_USER_DATA,
                  Greg Thompson . unresolved

                  please use `base::ScopedPathOverride` from base/test/scoped_path_override.h

                  Line 106, Patchset 18 (Latest): .AppendASCII("EulaSentinel");
                  Greg Thompson . unresolved

                  installer::kEulaSentinelFile?

                  Line 137, Patchset 18 (Latest): EXPECT_FALSE(converted.empty());
                  Greg Thompson . unresolved

                  wdyt about checking in the expected text as a data file and confirming a match? i'm a bit worried that this test as-is could easily pass after a change to the ToS, yet the code could yield something that isn't comprehensible to the user as a ToS.

                  it also only tests en-us. is it possible that a bug in the converter could yield incorrect results for non-ascii input? it would be ideal to run through all translations somehow.

                  Open in Gerrit

                  Related details

                  Attention is currently required from:
                  • Lei Zhang
                  • Thomas Anderson
                  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: I8f20d27ad5e33317b5152c69ab173586522168d8
                    Gerrit-Change-Number: 7269380
                    Gerrit-PatchSet: 18
                    Gerrit-Owner: Thomas Anderson <thomasa...@chromium.org>
                    Gerrit-Reviewer: Greg Thompson <g...@chromium.org>
                    Gerrit-Reviewer: Lei Zhang <the...@chromium.org>
                    Gerrit-Reviewer: Thomas Anderson <thomasa...@chromium.org>
                    Gerrit-Attention: Lei Zhang <the...@chromium.org>
                    Gerrit-Attention: Thomas Anderson <thomasa...@chromium.org>
                    Gerrit-Comment-Date: Tue, 23 Dec 2025 10:54:45 +0000
                    Gerrit-HasComments: Yes
                    Gerrit-Has-Labels: No
                    satisfied_requirement
                    unsatisfied_requirement
                    open
                    diffy

                    Thomas Anderson (Gerrit)

                    unread,
                    Jan 5, 2026, 2:15:51 PM (7 days ago) Jan 5
                    to Greg Thompson, Chromium LUCI CQ, Lei Zhang, chromium...@chromium.org, srahim...@chromium.org
                    Attention needed from Greg Thompson and Lei Zhang

                    Thomas Anderson voted and added 12 comments

                    Votes added by Thomas Anderson

                    Auto-Submit+1

                    12 comments

                    File chrome/browser/chrome_browser_main.cc
                    Line 1627, Patchset 18: if (!headless::IsHeadlessMode() && !first_run::MaybeShowEulaDialog()) {
                    Greg Thompson . resolved

                    is there any way we can do this before the metrics service is started (the EULA is shown during `PreEarlyInitialization` on Windows)? i think we need to take care to not record or report any metrics before the ToS are accepted.

                    Thomas Anderson

                    Yes, that is done in this CL because this EULA dialog will show **before** the first-run dialog with a checkbox for "Automatically send usage statistics and crash reports to Google".

                    Greg Thompson

                    I was referring to line 1620 above. Can that happen after the dialog is accepted or refused?

                    This might be an odd combination, but what happens if an install that requires the ToS is started on a machine that's enterprise-managed and has the "MetricsReportingEnabled" policy enabled? I think we still need to honor showing the ToS before collecting any metrics. Are you certain that not only reporting but also recording will be off at this point in that case?

                    In any case, I think we should have a comment here explaining what the guarantee is so that future refactors are less likely to accidentally move this later. Even better would be some tests for cases like this to prevent regressions.

                    Thomas Anderson

                    resolved by moving this above StartMetricsRecording, and added a comment

                    File chrome/browser/first_run/first_run.h
                    Line 148, Patchset 18:bool MaybeShowEulaDialog();
                    Greg Thompson . resolved

                    long ago, i was asked to replace "Maybe" with something more explicit in functions like this. WDYT about `ShowEulaDialogIfRequired`, with the comment explaining the condition(s) under which it's required?

                    on second thought, see my comment in first_run.cc. i think we can avoid "Maybe" and "IfRequired" altogether.

                    Thomas Anderson

                    Done

                    Line 147, Patchset 18:// or not required. Returns false if the EULA has not been accepted.
                    Greg Thompson . resolved

                    maybe add to the comment that the process must exit promptly in this case? this is an important details for callers of this function.

                    Thomas Anderson

                    Done

                    File chrome/browser/first_run/first_run.cc
                    Line 432, Patchset 18: !internal::ShowPostInstallEULAIfNeeded(initial_prefs.get())) {
                    Greg Thompson . resolved
                    rather than rely on setting a global in this fn that is later used to actually show the eula, i think it's more clean to have two eula-launching paths: windows will do it here as always. linux can continue to ignore the call to `ShowPostInstallEULAIfNeeded`. add a new `bool eula_required;` for linux in the `MasterPrefs` struct that is populated in `SetupInitialPrefsFromInstallPrefs` and then change `ChromeBrowserMainParts::PreMainMessageLoopRunImpl` to something like:
                    ```
                    #if BUILDFLAG(IS_LINUX)
                    // On Linux, the EULA dialog requires Views, so it is shown here rather than
                    // when applying the first-run prefs.
                    if (first_run::IsChromeFirstRun() && master_prefs_->eula_required &&
                    !headless::IsHeadlessMode() !first_run::ShowEulaDialog()) {
                    return CHROME_RESULT_CODE_EULA_REFUSED;
                    }
                    #endif
                    ```
                    this also removes the need for "Maybe" on the function name and "SetRequireEulaForTesting".
                    Thomas Anderson

                    Done

                    File chrome/browser/first_run/first_run_internal_chromeos.cc
                    Line 34, Patchset 18: // Just continue. The EULA is only used on Windows.
                    Greg Thompson . resolved

                    ... and Linux

                    Thomas Anderson

                    Done

                    File chrome/browser/first_run/first_run_internal_linux.cc
                    Line 62, Patchset 18: *path = user_data_dir.AppendASCII("EulaSentinel");
                    Greg Thompson . resolved

                    could we not use `installer::kEulaSentinelFile` for this?

                    Thomas Anderson

                    Done

                    Line 66, Patchset 18:class EulaDialog : public views::DialogDelegate {
                    Greg Thompson . resolved

                    could/should this live in //chrome/browser/ui/views somewhere along with a browser test based on TestBrowserDialog? i'm not a ui/views OWNER, so i'm not the best person to review this.

                    Thomas Anderson

                    Done

                    Line 258, Patchset 18: // Ensure there exists a task runner for the loop.

                    std::optional<base::SingleThreadTaskExecutor> executor;
                    if (!base::SingleThreadTaskRunner::GetCurrentDefault()) {
                    executor.emplace(base::MessagePumpType::UI);
                    }
                    Greg Thompson . resolved

                    why is this necessary? hasn't //content already created the UI thread's runner at this point in startup?

                    Thomas Anderson

                    removed

                    Line 282, Patchset 18: CHECK(base::DirectoryExists(sentinel.DirName()));
                    Greg Thompson . resolved

                    not needed -- `PathService` guarantees that the directory exists.

                    Thomas Anderson

                    Done

                    File chrome/browser/first_run/first_run_internal_linux_unittest.cc
                    Line 79, Patchset 18: base::PathService::OverrideAndCreateIfNeeded(chrome::DIR_USER_DATA,
                    Greg Thompson . resolved

                    please use `base::ScopedPathOverride` from base/test/scoped_path_override.h

                    Thomas Anderson

                    Done

                    Line 106, Patchset 18: .AppendASCII("EulaSentinel");
                    Greg Thompson . resolved

                    installer::kEulaSentinelFile?

                    Thomas Anderson

                    Done

                    Line 137, Patchset 18: EXPECT_FALSE(converted.empty());
                    Greg Thompson . unresolved

                    wdyt about checking in the expected text as a data file and confirming a match? i'm a bit worried that this test as-is could easily pass after a change to the ToS, yet the code could yield something that isn't comprehensible to the user as a ToS.

                    it also only tests en-us. is it possible that a bug in the converter could yield incorrect results for non-ascii input? it would be ideal to run through all translations somehow.

                    Thomas Anderson

                    I'm wondering if attempting to parse the html is the wrong approach. wdyt about adding txt versions of the EULA alongside the html versions?

                    Open in Gerrit

                    Related details

                    Attention is currently required from:
                    • Greg Thompson
                    • Lei Zhang
                    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: I8f20d27ad5e33317b5152c69ab173586522168d8
                    Gerrit-Change-Number: 7269380
                    Gerrit-PatchSet: 19
                    Gerrit-Owner: Thomas Anderson <thomasa...@chromium.org>
                    Gerrit-Reviewer: Greg Thompson <g...@chromium.org>
                    Gerrit-Reviewer: Lei Zhang <the...@chromium.org>
                    Gerrit-Reviewer: Thomas Anderson <thomasa...@chromium.org>
                    Gerrit-Attention: Lei Zhang <the...@chromium.org>
                    Gerrit-Attention: Greg Thompson <g...@chromium.org>
                    Gerrit-Comment-Date: Mon, 05 Jan 2026 19:15:40 +0000
                    Gerrit-HasComments: Yes
                    Gerrit-Has-Labels: Yes
                    satisfied_requirement
                    unsatisfied_requirement
                    open
                    diffy

                    Greg Thompson (Gerrit)

                    unread,
                    Jan 6, 2026, 3:44:59 AM (7 days ago) Jan 6
                    to Thomas Anderson, AyeAye, Chromium LUCI CQ, Lei Zhang, chromium...@chromium.org, wfh+...@chromium.org, grt+...@chromium.org, srahim...@chromium.org
                    Attention needed from Lei Zhang and Thomas Anderson

                    Greg Thompson added 4 comments

                    File chrome/browser/first_run/first_run_internal.h
                    Line 8, Patchset 19 (Latest):#include <string>
                    #include <string_view>
                    Greg Thompson . unresolved

                    unused?

                    File chrome/browser/first_run/first_run_internal_linux.cc
                    Line 55, Patchset 19 (Latest): if (GetEulaSentinelFilePath(&sentinel) && base::PathExists(sentinel)) {
                    Greg Thompson . unresolved

                    if this returns false, we'll continue to show the eula below, but then we'll have an empty `sentinel` path when we reach line 75. i think we should early exit here if we can't determine the path (this means we don't have a usable user data directory).

                    File chrome/browser/first_run/first_run_internal_linux_unittest.cc
                    Line 137, Patchset 18: EXPECT_FALSE(converted.empty());
                    Greg Thompson . unresolved

                    wdyt about checking in the expected text as a data file and confirming a match? i'm a bit worried that this test as-is could easily pass after a change to the ToS, yet the code could yield something that isn't comprehensible to the user as a ToS.

                    it also only tests en-us. is it possible that a bug in the converter could yield incorrect results for non-ascii input? it would be ideal to run through all translations somehow.

                    Thomas Anderson

                    I'm wondering if attempting to parse the html is the wrong approach. wdyt about adding txt versions of the EULA alongside the html versions?

                    Greg Thompson

                    that would add a little bit of work whenever the ToS changes, but it would greatly simplify things here. i think that's a totally valid tradeoff. maybe check with benmason@ to see what they think?

                    File chrome/installer/util/BUILD.gn
                    Line 253, Patchset 19 (Latest): "util_constants.h",
                    Greg Thompson . unresolved

                    doh! i didn't realize that this file wasn't already part of the linux build. now i'm rethinking my request that you use the existing constant since doing so pulls a lot of windows-specific stuff into the linux build.

                    i think it's better to not do this right now. my apologies. could you undo this part of the change, but make sure that the same actual name ("EULA Accepted") is used for the file on both platforms?

                    Open in Gerrit

                    Related details

                    Attention is currently required from:
                    • Lei Zhang
                    • Thomas Anderson
                    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: I8f20d27ad5e33317b5152c69ab173586522168d8
                    Gerrit-Change-Number: 7269380
                    Gerrit-PatchSet: 19
                    Gerrit-Owner: Thomas Anderson <thomasa...@chromium.org>
                    Gerrit-Reviewer: Greg Thompson <g...@chromium.org>
                    Gerrit-Reviewer: Lei Zhang <the...@chromium.org>
                    Gerrit-Reviewer: Thomas Anderson <thomasa...@chromium.org>
                    Gerrit-Attention: Lei Zhang <the...@chromium.org>
                    Gerrit-Attention: Thomas Anderson <thomasa...@chromium.org>
                    Gerrit-Comment-Date: Tue, 06 Jan 2026 08:44:46 +0000
                    Gerrit-HasComments: Yes
                    Gerrit-Has-Labels: No
                    satisfied_requirement
                    unsatisfied_requirement
                    open
                    diffy

                    Thomas Anderson (Gerrit)

                    unread,
                    Jan 6, 2026, 1:36:32 PM (6 days ago) Jan 6
                    to AyeAye, Greg Thompson, Chromium LUCI CQ, Lei Zhang, chromium...@chromium.org, wfh+...@chromium.org, grt+...@chromium.org, srahim...@chromium.org
                    Attention needed from Greg Thompson and Lei Zhang

                    Thomas Anderson voted and added 3 comments

                    Votes added by Thomas Anderson

                    Auto-Submit+1

                    3 comments

                    File chrome/browser/first_run/first_run_internal.h
                    Line 8, Patchset 19:#include <string>
                    #include <string_view>
                    Greg Thompson . resolved

                    unused?

                    Thomas Anderson

                    Done

                    File chrome/browser/first_run/first_run_internal_linux.cc
                    Line 55, Patchset 19: if (GetEulaSentinelFilePath(&sentinel) && base::PathExists(sentinel)) {
                    Greg Thompson . resolved

                    if this returns false, we'll continue to show the eula below, but then we'll have an empty `sentinel` path when we reach line 75. i think we should early exit here if we can't determine the path (this means we don't have a usable user data directory).

                    Thomas Anderson

                    Done

                    File chrome/installer/util/BUILD.gn
                    Line 253, Patchset 19: "util_constants.h",
                    Greg Thompson . resolved

                    doh! i didn't realize that this file wasn't already part of the linux build. now i'm rethinking my request that you use the existing constant since doing so pulls a lot of windows-specific stuff into the linux build.

                    i think it's better to not do this right now. my apologies. could you undo this part of the change, but make sure that the same actual name ("EULA Accepted") is used for the file on both platforms?

                    Thomas Anderson

                    Done

                    Open in Gerrit

                    Related details

                    Attention is currently required from:
                    • Greg Thompson
                    • Lei Zhang
                    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: I8f20d27ad5e33317b5152c69ab173586522168d8
                    Gerrit-Change-Number: 7269380
                    Gerrit-PatchSet: 20
                    Gerrit-Owner: Thomas Anderson <thomasa...@chromium.org>
                    Gerrit-Reviewer: Greg Thompson <g...@chromium.org>
                    Gerrit-Reviewer: Lei Zhang <the...@chromium.org>
                    Gerrit-Reviewer: Thomas Anderson <thomasa...@chromium.org>
                    Gerrit-Attention: Lei Zhang <the...@chromium.org>
                    Gerrit-Attention: Greg Thompson <g...@chromium.org>
                    Gerrit-Comment-Date: Tue, 06 Jan 2026 18:36:20 +0000
                    Gerrit-HasComments: Yes
                    Gerrit-Has-Labels: Yes
                    Comment-In-Reply-To: Greg Thompson <g...@chromium.org>
                    satisfied_requirement
                    unsatisfied_requirement
                    open
                    diffy

                    Thomas Anderson (Gerrit)

                    unread,
                    Jan 6, 2026, 1:36:54 PM (6 days ago) Jan 6
                    to Ben Mason, AyeAye, Greg Thompson, Chromium LUCI CQ, Lei Zhang, chromium...@chromium.org, wfh+...@chromium.org, grt+...@chromium.org, srahim...@chromium.org
                    Attention needed from Ben Mason, Greg Thompson and Lei Zhang

                    Thomas Anderson voted and added 1 comment

                    Votes added by Thomas Anderson

                    Auto-Submit+0

                    1 comment

                    File chrome/browser/first_run/first_run_internal_linux_unittest.cc
                    Line 137, Patchset 18: EXPECT_FALSE(converted.empty());
                    Greg Thompson . unresolved

                    wdyt about checking in the expected text as a data file and confirming a match? i'm a bit worried that this test as-is could easily pass after a change to the ToS, yet the code could yield something that isn't comprehensible to the user as a ToS.

                    it also only tests en-us. is it possible that a bug in the converter could yield incorrect results for non-ascii input? it would be ideal to run through all translations somehow.

                    Thomas Anderson

                    I'm wondering if attempting to parse the html is the wrong approach. wdyt about adding txt versions of the EULA alongside the html versions?

                    Greg Thompson

                    that would add a little bit of work whenever the ToS changes, but it would greatly simplify things here. i think that's a totally valid tradeoff. maybe check with benmason@ to see what they think?

                    Thomas Anderson

                    +benmason@ for comment

                    Open in Gerrit

                    Related details

                    Attention is currently required from:
                    • Ben Mason
                    • Greg Thompson
                    • Lei Zhang
                    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: I8f20d27ad5e33317b5152c69ab173586522168d8
                    Gerrit-Change-Number: 7269380
                    Gerrit-PatchSet: 20
                    Gerrit-Owner: Thomas Anderson <thomasa...@chromium.org>
                    Gerrit-Reviewer: Ben Mason <benm...@chromium.org>
                    Gerrit-Reviewer: Greg Thompson <g...@chromium.org>
                    Gerrit-Reviewer: Lei Zhang <the...@chromium.org>
                    Gerrit-Reviewer: Thomas Anderson <thomasa...@chromium.org>
                    Gerrit-Attention: Ben Mason <benm...@chromium.org>
                    Gerrit-Attention: Lei Zhang <the...@chromium.org>
                    Gerrit-Attention: Greg Thompson <g...@chromium.org>
                    Gerrit-Comment-Date: Tue, 06 Jan 2026 18:36:44 +0000
                    Gerrit-HasComments: Yes
                    Gerrit-Has-Labels: Yes
                    satisfied_requirement
                    unsatisfied_requirement
                    open
                    diffy

                    Greg Thompson (Gerrit)

                    unread,
                    Jan 7, 2026, 2:59:01 AM (6 days ago) Jan 7
                    to Thomas Anderson, Ben Mason, AyeAye, Chromium LUCI CQ, Lei Zhang, chromium...@chromium.org, wfh+...@chromium.org, grt+...@chromium.org, srahim...@chromium.org
                    Attention needed from Ben Mason, Lei Zhang and Thomas Anderson

                    Greg Thompson added 1 comment

                    Patchset-level comments
                    File-level comment, Patchset 20 (Latest):
                    Greg Thompson . resolved

                    everything lgtm % the result of the html vs. text discussion. thanks.

                    Open in Gerrit

                    Related details

                    Attention is currently required from:
                    • Ben Mason
                    • Lei Zhang
                    • Thomas Anderson
                    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: I8f20d27ad5e33317b5152c69ab173586522168d8
                    Gerrit-Change-Number: 7269380
                    Gerrit-PatchSet: 20
                    Gerrit-Owner: Thomas Anderson <thomasa...@chromium.org>
                    Gerrit-Reviewer: Ben Mason <benm...@chromium.org>
                    Gerrit-Reviewer: Greg Thompson <g...@chromium.org>
                    Gerrit-Reviewer: Lei Zhang <the...@chromium.org>
                    Gerrit-Reviewer: Thomas Anderson <thomasa...@chromium.org>
                    Gerrit-Attention: Ben Mason <benm...@chromium.org>
                    Gerrit-Attention: Lei Zhang <the...@chromium.org>
                    Gerrit-Attention: Thomas Anderson <thomasa...@chromium.org>
                    Gerrit-Comment-Date: Wed, 07 Jan 2026 07:58:43 +0000
                    Gerrit-HasComments: Yes
                    Gerrit-Has-Labels: No
                    satisfied_requirement
                    unsatisfied_requirement
                    open
                    diffy

                    Thomas Anderson (Gerrit)

                    unread,
                    Jan 8, 2026, 12:33:05 PM (4 days ago) Jan 8
                    to Ben Mason, AyeAye, Greg Thompson, Chromium LUCI CQ, Lei Zhang, chromium...@chromium.org, wfh+...@chromium.org, grt+...@chromium.org, srahim...@chromium.org
                    Attention needed from Ben Mason and Lei Zhang

                    Thomas Anderson added 1 comment

                    Patchset-level comments
                    Thomas Anderson . resolved

                    pinging benmason@

                    Open in Gerrit

                    Related details

                    Attention is currently required from:
                    • Ben Mason
                    • Lei Zhang
                    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: I8f20d27ad5e33317b5152c69ab173586522168d8
                    Gerrit-Change-Number: 7269380
                    Gerrit-PatchSet: 20
                    Gerrit-Owner: Thomas Anderson <thomasa...@chromium.org>
                    Gerrit-Reviewer: Ben Mason <benm...@chromium.org>
                    Gerrit-Reviewer: Greg Thompson <g...@chromium.org>
                    Gerrit-Reviewer: Lei Zhang <the...@chromium.org>
                    Gerrit-Reviewer: Thomas Anderson <thomasa...@chromium.org>
                    Gerrit-Attention: Ben Mason <benm...@chromium.org>
                    Gerrit-Attention: Lei Zhang <the...@chromium.org>
                    Gerrit-Comment-Date: Thu, 08 Jan 2026 17:32:55 +0000
                    Gerrit-HasComments: Yes
                    Gerrit-Has-Labels: No
                    satisfied_requirement
                    unsatisfied_requirement
                    open
                    diffy

                    Lei Zhang (Gerrit)

                    unread,
                    Jan 8, 2026, 12:45:26 PM (4 days ago) Jan 8
                    to Thomas Anderson, Ben Mason, AyeAye, Greg Thompson, Chromium LUCI CQ, Lei Zhang, chromium...@chromium.org, wfh+...@chromium.org, grt+...@chromium.org, srahim...@chromium.org
                    Attention needed from Ben Mason and Thomas Anderson

                    Lei Zhang added 4 comments

                    File chrome/browser/first_run/first_run_internal_linux.cc
                    Line 25, Patchset 20 (Latest):// This must match kEulaSentinelFile in chrome/installer/util/util_constants.cc
                    Lei Zhang . unresolved

                    Use IFTTT to help enforce this? `// LINT.IfChange(...)`

                    File chrome/browser/ui/views/eula_dialog.h
                    Line 34, Patchset 20 (Latest):// Exposed for testing.
                    Lei Zhang . unresolved

                    1. Should have a ForTest(ing) suffix then?
                    2. Maybe make it a EulaDialog static method, instead of putting it in the global scope?

                    Lei Zhang . unresolved

                    Maybe rename to eula_dialog_linux.h to make it obvious this is only used on Linux?

                    File chrome/browser/ui/views/eula_dialog_unittest.cc
                    Line 22, Patchset 20 (Latest):// This must match kEulaSentinelFile in chrome/installer/util/util_constants.cc
                    Lei Zhang . unresolved

                    I haven't used IFTTT enough to know if a 3 way check is possible.

                    Open in Gerrit

                    Related details

                    Attention is currently required from:
                    • Ben Mason
                    • Thomas Anderson
                    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: I8f20d27ad5e33317b5152c69ab173586522168d8
                    Gerrit-Change-Number: 7269380
                    Gerrit-PatchSet: 20
                    Gerrit-Owner: Thomas Anderson <thomasa...@chromium.org>
                    Gerrit-Reviewer: Ben Mason <benm...@chromium.org>
                    Gerrit-Reviewer: Greg Thompson <g...@chromium.org>
                    Gerrit-Reviewer: Lei Zhang <the...@chromium.org>
                    Gerrit-Reviewer: Thomas Anderson <thomasa...@chromium.org>
                    Gerrit-Attention: Ben Mason <benm...@chromium.org>
                    Gerrit-Attention: Thomas Anderson <thomasa...@chromium.org>
                    Gerrit-Comment-Date: Thu, 08 Jan 2026 17:45:14 +0000
                    Gerrit-HasComments: Yes
                    Gerrit-Has-Labels: No
                    satisfied_requirement
                    unsatisfied_requirement
                    open
                    diffy

                    Lei Zhang (Gerrit)

                    unread,
                    Jan 8, 2026, 12:58:33 PM (4 days ago) Jan 8
                    to Thomas Anderson, Ben Mason, AyeAye, Greg Thompson, Chromium LUCI CQ, Lei Zhang, chromium...@chromium.org, wfh+...@chromium.org, grt+...@chromium.org, srahim...@chromium.org
                    Attention needed from Ben Mason and Thomas Anderson

                    Lei Zhang added 2 comments

                    File chrome/browser/ui/views/eula_dialog.cc
                    Line 81, Patchset 20 (Latest): new EulaDialog(std::move(callback)), nullptr, nullptr);
                    Lei Zhang . unresolved

                    What's the ownership model for this dialog? I don't see anyone deleting it.

                    File chrome/browser/ui/views/eula_dialog_unittest.cc
                    Line 23, Patchset 20 (Latest):constexpr const char kEulaSentinelFile[] = "EULA Accepted";
                    Lei Zhang . unresolved

                    `constexpr char` sufficient. More of this below.

                    Gerrit-Comment-Date: Thu, 08 Jan 2026 17:58:17 +0000
                    Gerrit-HasComments: Yes
                    Gerrit-Has-Labels: No
                    satisfied_requirement
                    unsatisfied_requirement
                    open
                    diffy

                    Thomas Anderson (Gerrit)

                    unread,
                    Jan 8, 2026, 2:44:35 PM (4 days ago) Jan 8
                    to Ben Mason, AyeAye, Greg Thompson, Chromium LUCI CQ, Lei Zhang, chromium...@chromium.org, wfh+...@chromium.org, grt+...@chromium.org, srahim...@chromium.org
                    Attention needed from Ben Mason and Lei Zhang

                    Thomas Anderson voted and added 6 comments

                    Votes added by Thomas Anderson

                    Commit-Queue+1

                    6 comments

                    File chrome/browser/first_run/first_run_internal_linux.cc
                    Line 25, Patchset 20:// This must match kEulaSentinelFile in chrome/installer/util/util_constants.cc
                    Lei Zhang . resolved

                    Use IFTTT to help enforce this? `// LINT.IfChange(...)`

                    Thomas Anderson

                    Done in chrome/installer/util/util_constants.cc

                    File chrome/browser/ui/views/eula_dialog.h
                    Line 34, Patchset 20:// Exposed for testing.
                    Lei Zhang . resolved

                    1. Should have a ForTest(ing) suffix then?
                    2. Maybe make it a EulaDialog static method, instead of putting it in the global scope?

                    Thomas Anderson

                    Done

                    Maybe rename to eula_dialog_linux.h to make it obvious this is only used on Linux?

                    Thomas Anderson

                    Done

                    File chrome/browser/ui/views/eula_dialog.cc
                    Line 81, Patchset 20: new EulaDialog(std::move(callback)), nullptr, nullptr);
                    Lei Zhang . resolved

                    What's the ownership model for this dialog? I don't see anyone deleting it.

                    Thomas Anderson

                    Widgets are NATIVE_WIDGET_OWNS_WIDGET by default. So they are destroyed when the native window is destroyed.

                    File chrome/browser/ui/views/eula_dialog_unittest.cc
                    Line 22, Patchset 20:// This must match kEulaSentinelFile in chrome/installer/util/util_constants.cc
                    Lei Zhang . resolved

                    I haven't used IFTTT enough to know if a 3 way check is possible.

                    Thomas Anderson

                    Done in chrome/installer/util/util_constants.cc

                    Line 23, Patchset 20:constexpr const char kEulaSentinelFile[] = "EULA Accepted";
                    Lei Zhang . resolved

                    `constexpr char` sufficient. More of this below.

                    Thomas Anderson

                    Done

                    Open in Gerrit

                    Related details

                    Attention is currently required from:
                    • Ben Mason
                    • Lei Zhang
                    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: I8f20d27ad5e33317b5152c69ab173586522168d8
                    Gerrit-Change-Number: 7269380
                    Gerrit-PatchSet: 21
                    Gerrit-Owner: Thomas Anderson <thomasa...@chromium.org>
                    Gerrit-Reviewer: Ben Mason <benm...@chromium.org>
                    Gerrit-Reviewer: Greg Thompson <g...@chromium.org>
                    Gerrit-Reviewer: Lei Zhang <the...@chromium.org>
                    Gerrit-Reviewer: Thomas Anderson <thomasa...@chromium.org>
                    Gerrit-Attention: Ben Mason <benm...@chromium.org>
                    Gerrit-Attention: Lei Zhang <the...@chromium.org>
                    Gerrit-Comment-Date: Thu, 08 Jan 2026 19:44:26 +0000
                    Gerrit-HasComments: Yes
                    Gerrit-Has-Labels: Yes
                    Comment-In-Reply-To: Lei Zhang <the...@chromium.org>
                    satisfied_requirement
                    unsatisfied_requirement
                    open
                    diffy

                    Lei Zhang (Gerrit)

                    unread,
                    Jan 8, 2026, 2:57:35 PM (4 days ago) Jan 8
                    to Thomas Anderson, Ben Mason, AyeAye, Greg Thompson, Chromium LUCI CQ, Lei Zhang, chromium...@chromium.org, wfh+...@chromium.org, grt+...@chromium.org, srahim...@chromium.org
                    Attention needed from Ben Mason and Thomas Anderson

                    Lei Zhang added 3 comments

                    File chrome/browser/first_run/first_run_internal_linux.cc
                    Line 25, Patchset 20:// This must match kEulaSentinelFile in chrome/installer/util/util_constants.cc
                    Lei Zhang . resolved

                    Use IFTTT to help enforce this? `// LINT.IfChange(...)`

                    Thomas Anderson

                    Done in chrome/installer/util/util_constants.cc

                    Lei Zhang

                    I think the same comment needs to be here as well.

                    File chrome/browser/ui/views/eula_dialog.cc
                    Line 81, Patchset 20: new EulaDialog(std::move(callback)), nullptr, nullptr);
                    Lei Zhang . resolved

                    What's the ownership model for this dialog? I don't see anyone deleting it.

                    Thomas Anderson

                    Widgets are NATIVE_WIDGET_OWNS_WIDGET by default. So they are destroyed when the native window is destroyed.

                    Lei Zhang

                    In ui/views/widget/widget.h, `NATIVE_WIDGET_OWNS_WIDGET` is marked as deprecated. I think this is done for backward compatibility purposes. The top of that header says "All widgets should use ownership = CLIENT_OWNS_WIDGET.".

                    File chrome/browser/ui/views/eula_dialog_linux.cc
                    Line 67, Patchset 21 (Latest): textarea->SetText(EulaDialog::ConvertHtmlEulaToText(html_content));
                    Lei Zhang . unresolved

                    EulaDialog can call it without the EulaDialog:: prefix.

                    Open in Gerrit

                    Related details

                    Attention is currently required from:
                    • Ben Mason
                    • Thomas Anderson
                    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: I8f20d27ad5e33317b5152c69ab173586522168d8
                    Gerrit-Change-Number: 7269380
                    Gerrit-PatchSet: 21
                    Gerrit-Owner: Thomas Anderson <thomasa...@chromium.org>
                    Gerrit-Reviewer: Ben Mason <benm...@chromium.org>
                    Gerrit-Reviewer: Greg Thompson <g...@chromium.org>
                    Gerrit-Reviewer: Lei Zhang <the...@chromium.org>
                    Gerrit-Reviewer: Thomas Anderson <thomasa...@chromium.org>
                    Gerrit-Attention: Ben Mason <benm...@chromium.org>
                    Gerrit-Attention: Thomas Anderson <thomasa...@chromium.org>
                    Gerrit-Comment-Date: Thu, 08 Jan 2026 19:57:26 +0000
                    Gerrit-HasComments: Yes
                    satisfied_requirement
                    unsatisfied_requirement
                    open
                    diffy

                    Thomas Anderson (Gerrit)

                    unread,
                    Jan 8, 2026, 4:32:55 PM (4 days ago) Jan 8
                    to Ben Mason, AyeAye, Greg Thompson, Chromium LUCI CQ, Lei Zhang, chromium...@chromium.org, wfh+...@chromium.org, grt+...@chromium.org, srahim...@chromium.org
                    Attention needed from Ben Mason

                    Thomas Anderson added 1 comment

                    File chrome/browser/ui/views/eula_dialog_linux.cc
                    Line 67, Patchset 21: textarea->SetText(EulaDialog::ConvertHtmlEulaToText(html_content));
                    Lei Zhang . resolved

                    EulaDialog can call it without the EulaDialog:: prefix.

                    Thomas Anderson

                    Done

                    Open in Gerrit

                    Related details

                    Attention is currently required from:
                    • Ben Mason
                    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: I8f20d27ad5e33317b5152c69ab173586522168d8
                    Gerrit-Change-Number: 7269380
                    Gerrit-PatchSet: 22
                    Gerrit-Owner: Thomas Anderson <thomasa...@chromium.org>
                    Gerrit-Reviewer: Ben Mason <benm...@chromium.org>
                    Gerrit-Reviewer: Greg Thompson <g...@chromium.org>
                    Gerrit-Reviewer: Lei Zhang <the...@chromium.org>
                    Gerrit-Reviewer: Thomas Anderson <thomasa...@chromium.org>
                    Gerrit-Attention: Ben Mason <benm...@chromium.org>
                    Gerrit-Comment-Date: Thu, 08 Jan 2026 21:32:48 +0000
                    satisfied_requirement
                    unsatisfied_requirement
                    open
                    diffy

                    Greg Thompson (Gerrit)

                    unread,
                    Jan 9, 2026, 4:38:33 AM (4 days ago) Jan 9
                    to Thomas Anderson, Ben Mason, AyeAye, Chromium LUCI CQ, Lei Zhang, chromium...@chromium.org, wfh+...@chromium.org, grt+...@chromium.org, srahim...@chromium.org
                    Attention needed from Ben Mason and Thomas Anderson

                    Greg Thompson added 1 comment

                    File chrome/browser/ui/views/eula_dialog_linux.h
                    File-level comment, Patchset 22 (Latest):
                    Greg Thompson . unresolved

                    question from one who is not a ui/views OWNER:

                    should we have a browser test derived from TestBrowserDialog for this (see chrome/browser/ui/test/test_browser_dialog.h and chrome/browser/ui/test/test_browser_ui.h)? this not only ensures that there's no crash when the dialog is shown/dismissed, but also makes it easy for developers to see the dialog via the instructions here: https://source.chromium.org/chromium/chromium/src/+/main:chrome/browser/ui/test/test_browser_ui.h;drc=a9f09a1411a697ace066a84efd018f49c28cc8a3;l=93.

                    Open in Gerrit

                    Related details

                    Attention is currently required from:
                    • Ben Mason
                    • Thomas Anderson
                    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: I8f20d27ad5e33317b5152c69ab173586522168d8
                    Gerrit-Change-Number: 7269380
                    Gerrit-PatchSet: 22
                    Gerrit-Owner: Thomas Anderson <thomasa...@chromium.org>
                    Gerrit-Reviewer: Ben Mason <benm...@chromium.org>
                    Gerrit-Reviewer: Greg Thompson <g...@chromium.org>
                    Gerrit-Reviewer: Lei Zhang <the...@chromium.org>
                    Gerrit-Reviewer: Thomas Anderson <thomasa...@chromium.org>
                    Gerrit-Attention: Ben Mason <benm...@chromium.org>
                    Gerrit-Attention: Thomas Anderson <thomasa...@chromium.org>
                    Gerrit-Comment-Date: Fri, 09 Jan 2026 09:38:20 +0000
                    Gerrit-HasComments: Yes
                    Gerrit-Has-Labels: No
                    satisfied_requirement
                    unsatisfied_requirement
                    open
                    diffy

                    Thomas Anderson (Gerrit)

                    unread,
                    10:56 AM (8 hours ago) 10:56 AM
                    to Ben Mason, AyeAye, Greg Thompson, Chromium LUCI CQ, Lei Zhang, chromium...@chromium.org, jshin...@chromium.org, wfh+...@chromium.org, grt+...@chromium.org, srahim...@chromium.org
                    Attention needed from Ben Mason and Greg Thompson

                    Thomas Anderson voted and added 2 comments

                    Votes added by Thomas Anderson

                    Commit-Queue+1

                    2 comments

                    File chrome/browser/first_run/first_run_internal_linux_unittest.cc
                    Line 137, Patchset 18: EXPECT_FALSE(converted.empty());
                    Greg Thompson . resolved

                    wdyt about checking in the expected text as a data file and confirming a match? i'm a bit worried that this test as-is could easily pass after a change to the ToS, yet the code could yield something that isn't comprehensible to the user as a ToS.

                    it also only tests en-us. is it possible that a bug in the converter could yield incorrect results for non-ascii input? it would be ideal to run through all translations somehow.

                    Thomas Anderson

                    I'm wondering if attempting to parse the html is the wrong approach. wdyt about adding txt versions of the EULA alongside the html versions?

                    Greg Thompson

                    that would add a little bit of work whenever the ToS changes, but it would greatly simplify things here. i think that's a totally valid tradeoff. maybe check with benmason@ to see what they think?

                    Thomas Anderson

                    +benmason@ for comment

                    Thomas Anderson

                    I've added the converted txt files in the repo and removed ConvertHtmlEulaToText.

                    File chrome/browser/ui/views/eula_dialog_linux.h
                    File-level comment, Patchset 22:
                    Greg Thompson . resolved

                    question from one who is not a ui/views OWNER:

                    should we have a browser test derived from TestBrowserDialog for this (see chrome/browser/ui/test/test_browser_dialog.h and chrome/browser/ui/test/test_browser_ui.h)? this not only ensures that there's no crash when the dialog is shown/dismissed, but also makes it easy for developers to see the dialog via the instructions here: https://source.chromium.org/chromium/chromium/src/+/main:chrome/browser/ui/test/test_browser_ui.h;drc=a9f09a1411a697ace066a84efd018f49c28cc8a3;l=93.

                    Thomas Anderson

                    Done

                    Open in Gerrit

                    Related details

                    Attention is currently required from:
                    • Ben Mason
                    • Greg Thompson
                    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: I8f20d27ad5e33317b5152c69ab173586522168d8
                      Gerrit-Change-Number: 7269380
                      Gerrit-PatchSet: 23
                      Gerrit-Owner: Thomas Anderson <thomasa...@chromium.org>
                      Gerrit-Reviewer: Ben Mason <benm...@chromium.org>
                      Gerrit-Reviewer: Greg Thompson <g...@chromium.org>
                      Gerrit-Reviewer: Lei Zhang <the...@chromium.org>
                      Gerrit-Reviewer: Thomas Anderson <thomasa...@chromium.org>
                      Gerrit-Attention: Ben Mason <benm...@chromium.org>
                      Gerrit-Attention: Greg Thompson <g...@chromium.org>
                      Gerrit-Comment-Date: Mon, 12 Jan 2026 15:56:05 +0000
                      Gerrit-HasComments: Yes
                      Gerrit-Has-Labels: Yes
                      satisfied_requirement
                      unsatisfied_requirement
                      open
                      diffy

                      Lei Zhang (Gerrit)

                      unread,
                      1:39 PM (5 hours ago) 1:39 PM
                      to Thomas Anderson, Ben Mason, AyeAye, Greg Thompson, Chromium LUCI CQ, Lei Zhang, chromium...@chromium.org, jshin...@chromium.org, wfh+...@chromium.org, grt+...@chromium.org, srahim...@chromium.org
                      Attention needed from Ben Mason, Greg Thompson and Thomas Anderson

                      Lei Zhang added 2 comments

                      File components/components_locale_settings.grd
                      Line 321, Patchset 23 (Latest): <!-- The text for the about:terms page -->
                      Lei Zhang . unresolved

                      Maybe add this in a separate CL first?

                      Line 322, Patchset 23 (Latest): <if expr="not is_android and not is_ios">
                      Lei Zhang . unresolved

                      Make this just Linux?

                      Open in Gerrit

                      Related details

                      Attention is currently required from:
                      • Ben Mason
                      • Greg Thompson
                      • Thomas Anderson
                      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: I8f20d27ad5e33317b5152c69ab173586522168d8
                        Gerrit-Change-Number: 7269380
                        Gerrit-PatchSet: 23
                        Gerrit-Owner: Thomas Anderson <thomasa...@chromium.org>
                        Gerrit-Reviewer: Ben Mason <benm...@chromium.org>
                        Gerrit-Reviewer: Greg Thompson <g...@chromium.org>
                        Gerrit-Reviewer: Lei Zhang <the...@chromium.org>
                        Gerrit-Reviewer: Thomas Anderson <thomasa...@chromium.org>
                        Gerrit-Attention: Ben Mason <benm...@chromium.org>
                        Gerrit-Attention: Thomas Anderson <thomasa...@chromium.org>
                        Gerrit-Attention: Greg Thompson <g...@chromium.org>
                        Gerrit-Comment-Date: Mon, 12 Jan 2026 18:39:36 +0000
                        Gerrit-HasComments: Yes
                        Gerrit-Has-Labels: No
                        satisfied_requirement
                        unsatisfied_requirement
                        open
                        diffy
                        Reply all
                        Reply to author
                        Forward
                        0 new messages