[UnifiedFRE] Introduce AppRouter to manage Unified FRE and Glic App [chromium/src : main]

0 views
Skip to first unread message

Dan Harrington (Gerrit)

unread,
Oct 15, 2025, 12:15:16 PM (5 days ago) Oct 15
to Michelle Abreo, Dan Harrington, Chromium LUCI CQ, chromium...@chromium.org
Attention needed from Michelle Abreo

Dan Harrington added 15 comments

File chrome/browser/glic/host/glic_ui.cc
Line 194, Patchset 43 (Latest): bool is_unified_fre_enabled = GlicEnabling::IsUnifiedFreEnabled(
Dan Harrington . unresolved

nit: i suggest to inline these calls instead of using variables

File chrome/browser/glic/host/glic_ui_interactive_uitest.cc
Line 798, Patchset 43 (Latest): net::EmbeddedTestServer glic_server_;
Dan Harrington . unresolved

the base class already sets up a test server to serve glic test data, why isn't that setup enough?

File chrome/browser/resources/glic/app_router.ts
Line 17, Patchset 43 (Latest):
Dan Harrington . unresolved

comment on what this does

Line 30, Patchset 43 (Latest): this.browserProxy = new BrowserProxyImpl(this);
Dan Harrington . unresolved

we shouldn't make more than one BrowserProxyImpl, so we'll need to do some modifications to glic_app_controller

Line 38, Patchset 43 (Latest): navigateTo(view: AppView): void {
Dan Harrington . unresolved

nit: the word 'navigate' makes me think of web navigation, which is not happening here. I'd pick a different term.

File chrome/browser/resources/glic/fre/fre.css
Line 13, Patchset 43 (Latest):html,
Dan Harrington . unresolved

it would be nice to do the work to figure out what's shared between fre.css and glic.css, and make a shared .css file. They probably have similar style requirements. Maybe make a bug to track revisiting this?

File chrome/browser/resources/glic/fre/fre_app_controller.ts
Line 29, Patchset 43 (Parent):const INITIAL_WIDTH = loadTimeData.getInteger('freInitialWidth');
Dan Harrington . unresolved

nit: was there something wrong with this?

Line 33, Patchset 43 (Parent):
interface PageElementTypes {
webviewContainer: HTMLDivElement;
}

const $: PageElementTypes = new Proxy({}, {
get(_target: any, prop: string) {
return getRequiredElement(prop);
},
});
Dan Harrington . unresolved

i don't think this had to change, other than the element name.

Line 89, Patchset 43 (Latest): const container = document.getElementById('fre-app-container');
assert(container, '#fre-app-container not found in constructor');
Dan Harrington . unresolved

getRequiredElement

Line 97, Patchset 43 (Latest): this.webviewContainer =
this.freContainer.querySelector<HTMLElement>('#freWebviewContainer')!;
assert(this.webviewContainer);
Dan Harrington . unresolved

use getRequiredElement?

Line 141, Patchset 43 (Latest): ?.addEventListener('click', (e) => {
Dan Harrington . unresolved

this is old code, but since you're changing names, it would be better to assert that the element exists.

Line 151, Patchset 43 (Latest): this.freContainer.querySelector('#fre-reload')
Dan Harrington . unresolved

better to use getRequiredElement

Line 157, Patchset 43 (Latest): this.freContainer.addEventListener('keydown', (ev: Event) => {
Dan Harrington . unresolved

why can't we use KeyboardEvent here, looks like there's typings for this.

File chrome/browser/resources/glic/glic.html
Line 144, Patchset 43 (Latest): <div id="fre-app-container" hidden>
Dan Harrington . unresolved

how are we going to ensure this stays up to date with fre.html?
I'd be less concerned if we forked the code, but it seems like it would be easy to update one .html file and the .ts file, but not the other .html file.

Can we use grit to include the fre html file? Looks like it's supported https://source.chromium.org/chromium/chromium/src/+/main:tools/grit/grit/testdata/include_test.html

File chrome/browser/resources/glic/main.ts
Line 69, Patchset 43 (Latest): const appRouter = new AppRouter();
window.appRouter = appRouter;
setupCommonListeners(appRouter);
} else {
getRequiredElement('glic-app-container').hidden = false;
const appController = new GlicAppController();
window.appController = appController;
setupCommonListeners(appController);
Dan Harrington . unresolved

I think we should just always use the app router to simplify things.

Open in Gerrit

Related details

Attention is currently required from:
  • Michelle Abreo
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: I995d2d11694d8ab51a525b484c4e9c1e33ed89f0
Gerrit-Change-Number: 7026336
Gerrit-PatchSet: 43
Gerrit-Owner: Michelle Abreo <michel...@google.com>
Gerrit-Reviewer: Dan Harrington <harri...@chromium.org>
Gerrit-Reviewer: Michelle Abreo <michel...@google.com>
Gerrit-Attention: Michelle Abreo <michel...@google.com>
Gerrit-Comment-Date: Wed, 15 Oct 2025 16:14:51 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
satisfied_requirement
unsatisfied_requirement
open
diffy

Michelle Abreo (Gerrit)

unread,
10:48 AM (9 hours ago) 10:48 AM
to Dan Harrington, Chromium LUCI CQ, chromium...@chromium.org
Attention needed from Dan Harrington

Michelle Abreo voted and added 16 comments

Votes added by Michelle Abreo

Commit-Queue+1

16 comments

Patchset-level comments
File-level comment, Patchset 60:
Michelle Abreo . unresolved

Hey Dan,

Thanks for the review! I spent some time trying to unify the shared HTML rather than duplicating it, but I ran into a couple of issues:

We couldn’t use <include src="..."> because it’s discouraged per the style guide
(https://source.chromium.org/chromium/chromium/src/+/main:styleguide/web/web.md;l=710-729?q=%22%3Cinclude%20src%3D%22). The README suggested using a custom JS module instead, which worked for the most part, but it couldn’t resolve the $i18nRaw strings used in the FRE’s admin panel.

I then looked into migrating to CrLitElement, and while that would be the ideal long-term solution, it introduces additional build-system complexity that feels outside the scope of this CL for now.

Given those blockers and the time sensitivity of this change, I’d like to temporarily keep both HTML copies, with a <!-- LINT:IfChange --> comment in both places. I filed a follow-up bug to track migrating to a Lit component and removing the duplicate markup (b/453057582), which I will look into towards the end of the week after this code is checked in.

I wanted to make sure I explored the options before circling back — sorry this took a bit longer than expected! Let me know what you think.

File chrome/browser/glic/host/glic_ui.cc
Line 194, Patchset 43: bool is_unified_fre_enabled = GlicEnabling::IsUnifiedFreEnabled(
Dan Harrington . resolved

nit: i suggest to inline these calls instead of using variables

Michelle Abreo

Done

File chrome/browser/glic/host/glic_ui_interactive_uitest.cc
Line 798, Patchset 43: net::EmbeddedTestServer glic_server_;
Dan Harrington . resolved

the base class already sets up a test server to serve glic test data, why isn't that setup enough?

Michelle Abreo

you're right, updated to use embedded_https_test_server()!

File chrome/browser/resources/glic/app_router.ts
Line 17, Patchset 43:
Dan Harrington . resolved

comment on what this does

Michelle Abreo

Done

Line 30, Patchset 43: this.browserProxy = new BrowserProxyImpl(this);
Dan Harrington . resolved

we shouldn't make more than one BrowserProxyImpl, so we'll need to do some modifications to glic_app_controller

Michelle Abreo

You're right, we should just have one BrowserProxyImpl. The main issue with this was dealing with a new lifecycle timing for the PageHandler. Before the `GlicPageHandler` was created after the user consented in the FRE, so its initial profile ready state was always correct. However now we create the handler before the FRE, which means it can exist in a pre-consent state and needs to know when that state changes. This is what creating a new browser proxy in the `GlicAppController` ctor did, since it just set a new state after consent was given. However, since we want to add it in the `AppRouter` ctor, I've added a subscription in the `GlicPageHandler` constructor, which now correctly listens for the consent update, so it ensures that the `ProfileReadyState` is not stale when we switch to the GLIC app.

This actually also makes the support much easier for multi-instance / multiple FRE panels existing and the user accepting on one. I didn't want to add that in this CL since this is already a large change, but I've created a child CL to update the glic.mojom API to support a boolean for transitioning the view so once the `kGlicCompletedFre` pref is updated on any surface, the panel will automatically transition to the GLIC view.

Line 38, Patchset 43: navigateTo(view: AppView): void {
Dan Harrington . resolved

nit: the word 'navigate' makes me think of web navigation, which is not happening here. I'd pick a different term.

Michelle Abreo

updated to `switchToView`!

File chrome/browser/resources/glic/fre/fre.css
Line 13, Patchset 43:html,
Dan Harrington . resolved

it would be nice to do the work to figure out what's shared between fre.css and glic.css, and make a shared .css file. They probably have similar style requirements. Maybe make a bug to track revisiting this?

Michelle Abreo

Good idea, created b/452964239!

File chrome/browser/resources/glic/fre/fre_app_controller.ts
Line 29, Patchset 43 (Parent):const INITIAL_WIDTH = loadTimeData.getInteger('freInitialWidth');
Dan Harrington . resolved

nit: was there something wrong with this?

Michelle Abreo

I inlined the loadTimeData.getInteger('freInitialWidth') call into the if (this.shouldSizeForDialog) block where it's used. This way the 'freInitialWidth' value is only fetched when needed (for the standalone FRE app's dialog) and isn't unnecessarily included in the loadTimeData for the sidepanel FRE, where this specific width isn't used.

Line 33, Patchset 43 (Parent):
interface PageElementTypes {
webviewContainer: HTMLDivElement;
}

const $: PageElementTypes = new Proxy({}, {
get(_target: any, prop: string) {
return getRequiredElement(prop);
},
});
Dan Harrington . resolved

i don't think this had to change, other than the element name.

Michelle Abreo

I had replaced usages of `$.webviewContainer` with `this.webviewContainer`, so we no longer need the `$` object.

Line 89, Patchset 43: const container = document.getElementById('fre-app-container');

assert(container, '#fre-app-container not found in constructor');
Dan Harrington . resolved

getRequiredElement

Michelle Abreo

Done.

Line 97, Patchset 43: this.webviewContainer =

this.freContainer.querySelector<HTMLElement>('#freWebviewContainer')!;
assert(this.webviewContainer);
Dan Harrington . resolved

use getRequiredElement?

Michelle Abreo

Done.

Line 141, Patchset 43: ?.addEventListener('click', (e) => {
Dan Harrington . resolved

this is old code, but since you're changing names, it would be better to assert that the element exists.

Michelle Abreo

Done

Line 151, Patchset 43: this.freContainer.querySelector('#fre-reload')
Dan Harrington . resolved

better to use getRequiredElement

Michelle Abreo

Done.

Line 157, Patchset 43: this.freContainer.addEventListener('keydown', (ev: Event) => {
Dan Harrington . resolved

why can't we use KeyboardEvent here, looks like there's typings for this.

Michelle Abreo

Done

File chrome/browser/resources/glic/glic.html
Line 144, Patchset 43: <div id="fre-app-container" hidden>
Dan Harrington . resolved

how are we going to ensure this stays up to date with fre.html?
I'd be less concerned if we forked the code, but it seems like it would be easy to update one .html file and the .ts file, but not the other .html file.

Can we use grit to include the fre html file? Looks like it's supported https://source.chromium.org/chromium/chromium/src/+/main:tools/grit/grit/testdata/include_test.html

Michelle Abreo

Addressed in top level comment

File chrome/browser/resources/glic/main.ts
Line 69, Patchset 43: const appRouter = new AppRouter();

window.appRouter = appRouter;
setupCommonListeners(appRouter);
} else {
getRequiredElement('glic-app-container').hidden = false;
const appController = new GlicAppController();
window.appController = appController;
setupCommonListeners(appController);
Dan Harrington . resolved

I think we should just always use the app router to simplify things.

Michelle Abreo

Done

Open in Gerrit

Related details

Attention is currently required from:
  • Dan Harrington
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: I995d2d11694d8ab51a525b484c4e9c1e33ed89f0
Gerrit-Change-Number: 7026336
Gerrit-PatchSet: 79
Gerrit-Owner: Michelle Abreo <michel...@google.com>
Gerrit-Reviewer: Dan Harrington <harri...@chromium.org>
Gerrit-Reviewer: Michelle Abreo <michel...@google.com>
Gerrit-Attention: Dan Harrington <harri...@chromium.org>
Gerrit-Comment-Date: Mon, 20 Oct 2025 14:48:09 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: Yes
Comment-In-Reply-To: Dan Harrington <harri...@chromium.org>
satisfied_requirement
unsatisfied_requirement
open
diffy

Dan Harrington (Gerrit)

unread,
12:06 PM (8 hours ago) 12:06 PM
to Michelle Abreo, Dan Harrington, Chromium LUCI CQ, chromium...@chromium.org
Attention needed from Michelle Abreo

Dan Harrington added 9 comments

Patchset-level comments
File-level comment, Patchset 60:
Michelle Abreo . resolved

Hey Dan,

Thanks for the review! I spent some time trying to unify the shared HTML rather than duplicating it, but I ran into a couple of issues:

We couldn’t use <include src="..."> because it’s discouraged per the style guide
(https://source.chromium.org/chromium/chromium/src/+/main:styleguide/web/web.md;l=710-729?q=%22%3Cinclude%20src%3D%22). The README suggested using a custom JS module instead, which worked for the most part, but it couldn’t resolve the $i18nRaw strings used in the FRE’s admin panel.

I then looked into migrating to CrLitElement, and while that would be the ideal long-term solution, it introduces additional build-system complexity that feels outside the scope of this CL for now.

Given those blockers and the time sensitivity of this change, I’d like to temporarily keep both HTML copies, with a <!-- LINT:IfChange --> comment in both places. I filed a follow-up bug to track migrating to a Lit component and removing the duplicate markup (b/453057582), which I will look into towards the end of the week after this code is checked in.

I wanted to make sure I explored the options before circling back — sorry this took a bit longer than expected! Let me know what you think.

Dan Harrington

Thanks for trying, given this is a temporary situation, i think migrating to Lit doesn't really make sense anyway. As long as the two copies are supposed to be identical, the IfChange lint will hopefully be enough of a reminder to copy/paste.

File chrome/browser/glic/host/glic_ui_interactive_uitest.cc
Line 758, Patchset 79 (Latest): void SetUpCommandLine(base::CommandLine* command_line) override {
GlicUiInteractiveUiTestBase::SetUpCommandLine(command_line);
GURL fre_url = embedded_https_test_server().GetURL(
"glic.test", "/glic/test_client/fre.html");
GURL glic_guest_url = embedded_https_test_server().GetURL(
"glic.test", "/glic/test_client/index.html");
ASSERT_TRUE(fre_url.is_valid()) << "FRE URL is invalid";
command_line->AppendSwitchASCII(switches::kGlicFreURL, fre_url.spec());
ASSERT_TRUE(glic_guest_url.is_valid()) << "Glic Guest URL is invalid";
command_line->AppendSwitchASCII(switches::kGlicGuestURL,
glic_guest_url.spec());
command_line->AppendSwitch(switches::kDisableWebSecurity);
Dan Harrington . unresolved

https://source.chromium.org/chromium/chromium/src/+/main:chrome/browser/glic/test_support/interactive_glic_test.h already sets up the guest URL like this. Can you update that file to also set up the FRE url?

Line 775, Patchset 79 (Latest): embedded_https_test_server().StartAcceptingConnections();
Dan Harrington . unresolved

I think you can just call Start() here, and remove the calls to StartAcceptingConnections() and InitializeAndListen()

File chrome/browser/resources/glic/app_router.ts
Line 43, Patchset 79 (Latest): switchToView(view: AppView): void {
Dan Harrington . unresolved

nit: return early if the view is already the target view.

Line 55, Patchset 79 (Latest): case AppView.FRE:
Dan Harrington . unresolved

assert that the GLIC->FRE transition never happens

Line 89, Patchset 79 (Latest): this.switchToView(AppView.GLIC);
this.freAppController?.destroyWebview();
this.freAppController = undefined;
Dan Harrington . unresolved

i suggest doing this in switchToView, so there's no incomplete way to switch views.

Line 99, Patchset 79 (Latest): if (this.currentView === AppView.GLIC && this.glicController) {
Dan Harrington . unresolved

i think there's never a need to create the glic controller, unless we're showing the glic view. So this can be

```this.glicController?.reload();```

File chrome/browser/resources/glic/glic.html
Line 144, Patchset 79 (Latest): <!-- LINT.IfChange(fre_container) -->
Dan Harrington . unresolved

make it clear what should be changed. I hope we can say these two sections must be identical.

File chrome/browser/resources/glic/glic_app_controller.ts
Line 705, Patchset 79 (Latest): setProfileReadyState(state: ProfileReadyState|undefined) {
Dan Harrington . unresolved

why did this change?

Open in Gerrit

Related details

Attention is currently required from:
  • Michelle Abreo
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: I995d2d11694d8ab51a525b484c4e9c1e33ed89f0
Gerrit-Change-Number: 7026336
Gerrit-PatchSet: 79
Gerrit-Owner: Michelle Abreo <michel...@google.com>
Gerrit-Reviewer: Dan Harrington <harri...@chromium.org>
Gerrit-Reviewer: Michelle Abreo <michel...@google.com>
Gerrit-Attention: Michelle Abreo <michel...@google.com>
Gerrit-Comment-Date: Mon, 20 Oct 2025 16:05:50 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Comment-In-Reply-To: Michelle Abreo <michel...@google.com>
satisfied_requirement
unsatisfied_requirement
open
diffy

Michelle Abreo (Gerrit)

unread,
2:29 PM (5 hours ago) 2:29 PM
to Dan Harrington, Chromium LUCI CQ, chromium...@chromium.org
Attention needed from Dan Harrington

Michelle Abreo added 9 comments

Patchset-level comments
File-level comment, Patchset 80:
Michelle Abreo . resolved

Thanks for the quick review!

File chrome/browser/glic/host/glic_ui_interactive_uitest.cc
Line 758, Patchset 79: void SetUpCommandLine(base::CommandLine* command_line) override {

GlicUiInteractiveUiTestBase::SetUpCommandLine(command_line);
GURL fre_url = embedded_https_test_server().GetURL(
"glic.test", "/glic/test_client/fre.html");
GURL glic_guest_url = embedded_https_test_server().GetURL(
"glic.test", "/glic/test_client/index.html");
ASSERT_TRUE(fre_url.is_valid()) << "FRE URL is invalid";
command_line->AppendSwitchASCII(switches::kGlicFreURL, fre_url.spec());
ASSERT_TRUE(glic_guest_url.is_valid()) << "Glic Guest URL is invalid";
command_line->AppendSwitchASCII(switches::kGlicGuestURL,
glic_guest_url.spec());
command_line->AppendSwitch(switches::kDisableWebSecurity);
Dan Harrington . resolved

https://source.chromium.org/chromium/chromium/src/+/main:chrome/browser/glic/test_support/interactive_glic_test.h already sets up the guest URL like this. Can you update that file to also set up the FRE url?

Michelle Abreo

good idea, this reduces a lot of the complexity in this class' setup. updated!

Line 775, Patchset 79: embedded_https_test_server().StartAcceptingConnections();
Dan Harrington . resolved

I think you can just call Start() here, and remove the calls to StartAcceptingConnections() and InitializeAndListen()

Michelle Abreo

Done

File chrome/browser/resources/glic/app_router.ts
Line 43, Patchset 79: switchToView(view: AppView): void {
Dan Harrington . resolved

nit: return early if the view is already the target view.

Michelle Abreo

Done

Line 55, Patchset 79: case AppView.FRE:
Dan Harrington . resolved

assert that the GLIC->FRE transition never happens

Michelle Abreo

Done

Line 89, Patchset 79: this.switchToView(AppView.GLIC);
this.freAppController?.destroyWebview();
this.freAppController = undefined;
Dan Harrington . resolved

i suggest doing this in switchToView, so there's no incomplete way to switch views.

Michelle Abreo

Done

Line 99, Patchset 79: if (this.currentView === AppView.GLIC && this.glicController) {
Dan Harrington . resolved

i think there's never a need to create the glic controller, unless we're showing the glic view. So this can be

```this.glicController?.reload();```

Michelle Abreo

Done

File chrome/browser/resources/glic/glic.html
Line 144, Patchset 79: <!-- LINT.IfChange(fre_container) -->
Dan Harrington . resolved

make it clear what should be changed. I hope we can say these two sections must be identical.

Michelle Abreo

updated with a comment clarifying in both files, and changed `fre_container` to `fre-app-container` to be match the id of the div.

File chrome/browser/resources/glic/glic_app_controller.ts
Line 705, Patchset 79: setProfileReadyState(state: ProfileReadyState|undefined) {
Dan Harrington . resolved

why did this change?

Michelle Abreo

whoops, this was a changed that was accidentally added from the child CL and not reverted. removed!

Open in Gerrit

Related details

Attention is currently required from:
  • Dan Harrington
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: I995d2d11694d8ab51a525b484c4e9c1e33ed89f0
    Gerrit-Change-Number: 7026336
    Gerrit-PatchSet: 85
    Gerrit-Owner: Michelle Abreo <michel...@google.com>
    Gerrit-Reviewer: Dan Harrington <harri...@chromium.org>
    Gerrit-Reviewer: Michelle Abreo <michel...@google.com>
    Gerrit-Attention: Dan Harrington <harri...@chromium.org>
    Gerrit-Comment-Date: Mon, 20 Oct 2025 18:29:04 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    Comment-In-Reply-To: Dan Harrington <harri...@chromium.org>
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Dan Harrington (Gerrit)

    unread,
    2:37 PM (5 hours ago) 2:37 PM
    to Michelle Abreo, Dan Harrington, Chromium LUCI CQ, chromium...@chromium.org
    Attention needed from Michelle Abreo

    Dan Harrington added 2 comments

    File chrome/browser/glic/host/glic_page_handler.cc
    Line 1686, Patchset 85 (Latest): GetGlicService()->enabling().RegisterAllowedChanged(base::BindRepeating(
    Dan Harrington . unresolved

    glic enabling should instead offer a ProfileReadyStateChanged callback, do you mind doing that instead?

    File chrome/browser/glic/host/glic_ui_interactive_uitest.cc
    Line 199, Patchset 85 (Latest): const controller = window.appRouter.glicController;
    Dan Harrington . unresolved

    I think this also needs updated: http://shortn/_O4Lf26rXN0

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Michelle Abreo
    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: I995d2d11694d8ab51a525b484c4e9c1e33ed89f0
      Gerrit-Change-Number: 7026336
      Gerrit-PatchSet: 85
      Gerrit-Owner: Michelle Abreo <michel...@google.com>
      Gerrit-Reviewer: Dan Harrington <harri...@chromium.org>
      Gerrit-Reviewer: Michelle Abreo <michel...@google.com>
      Gerrit-Attention: Michelle Abreo <michel...@google.com>
      Gerrit-Comment-Date: Mon, 20 Oct 2025 18:37:42 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Michelle Abreo (Gerrit)

      unread,
      3:44 PM (4 hours ago) 3:44 PM
      to Dan Harrington, Chromium LUCI CQ, chromium...@chromium.org
      Attention needed from Dan Harrington

      Michelle Abreo voted and added 2 comments

      Votes added by Michelle Abreo

      Commit-Queue+1

      2 comments

      File chrome/browser/glic/host/glic_page_handler.cc
      Line 1686, Patchset 85: GetGlicService()->enabling().RegisterAllowedChanged(base::BindRepeating(
      Dan Harrington . resolved

      glic enabling should instead offer a ProfileReadyStateChanged callback, do you mind doing that instead?

      Michelle Abreo

      Done.

      File chrome/browser/glic/host/glic_ui_interactive_uitest.cc
      Line 199, Patchset 85: const controller = window.appRouter.glicController;
      Dan Harrington . resolved

      I think this also needs updated: http://shortn/_O4Lf26rXN0

      Michelle Abreo

      good catch, the dry run didn't catch it earlier because the test was disabled! updated.

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Dan Harrington
      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: I995d2d11694d8ab51a525b484c4e9c1e33ed89f0
        Gerrit-Change-Number: 7026336
        Gerrit-PatchSet: 88
        Gerrit-Owner: Michelle Abreo <michel...@google.com>
        Gerrit-Reviewer: Dan Harrington <harri...@chromium.org>
        Gerrit-Reviewer: Michelle Abreo <michel...@google.com>
        Gerrit-Attention: Dan Harrington <harri...@chromium.org>
        Gerrit-Comment-Date: Mon, 20 Oct 2025 19:44:20 +0000
        satisfied_requirement
        unsatisfied_requirement
        open
        diffy

        Dan Harrington (Gerrit)

        unread,
        4:21 PM (4 hours ago) 4:21 PM
        to Michelle Abreo, Dan Harrington, Chromium LUCI CQ, chromium...@chromium.org
        Attention needed from Michelle Abreo

        Dan Harrington voted Code-Review+1

        Code-Review+1
        Open in Gerrit

        Related details

        Attention is currently required from:
        • Michelle Abreo
        Submit Requirements:
        • requirement satisfiedCode-Coverage
        • requirement satisfiedCode-Owners
        • requirement satisfiedCode-Review
        • requirement satisfiedReview-Enforcement
        Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
        Gerrit-MessageType: comment
        Gerrit-Project: chromium/src
        Gerrit-Branch: main
        Gerrit-Change-Id: I995d2d11694d8ab51a525b484c4e9c1e33ed89f0
        Gerrit-Change-Number: 7026336
        Gerrit-PatchSet: 88
        Gerrit-Owner: Michelle Abreo <michel...@google.com>
        Gerrit-Reviewer: Dan Harrington <harri...@chromium.org>
        Gerrit-Reviewer: Michelle Abreo <michel...@google.com>
        Gerrit-Attention: Michelle Abreo <michel...@google.com>
        Gerrit-Comment-Date: Mon, 20 Oct 2025 20:20:57 +0000
        Gerrit-HasComments: No
        Gerrit-Has-Labels: Yes
        satisfied_requirement
        open
        diffy
        Reply all
        Reply to author
        Forward
        0 new messages