Fix focus highlight on PWM settings page. <cr-link-row> uses `:last-of-type` to trigger rounding its bottom corners so a hidden <cr-link-row> at the end will break that. Thus the passkey management row needs to be added & removed from the DOM using a `dom-if` instead. Fixed: 1433617 Change-Id: I0f99097e40c22da493b15c6e4dda31e663b62ce4 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4435749 Reviewed-by: Viktor Semeniuk <vsemeniuk@google.com> Commit-Queue: Viktor Semeniuk <vsemeniuk@google.com> Auto-Submit: Adam Langley <agl@chromium.org> Cr-Commit-Position: refs/heads/main@{#1131811}
diff --git a/chrome/browser/resources/password_manager/settings_section.html b/chrome/browser/resources/password_manager/settings_section.html index e7b1207..dc47e5f 100644 --- a/chrome/browser/resources/password_manager/settings_section.html +++ b/chrome/browser/resources/password_manager/settings_section.html
@@ -102,10 +102,12 @@ sub-label="$i18n{addShortcutDescription}" role-description="button"> </cr-link-row> <if expr="is_win or is_macosx"> - <cr-link-row id="managePasskeysRow" external - class="cr-row settings-cr-link-row" hidden$="[[!hasPasskeys_]]" - on-click="onManagePasskeysClick_" label="$i18n{managePasskeysLabel}"> - </cr-link-row> + <template is="dom-if" if="[[hasPasskeys_]]" restamp> + <cr-link-row id="managePasskeysRow" external + class="cr-row settings-cr-link-row" on-click="onManagePasskeysClick_" + label="$i18n{managePasskeysLabel}"> + </cr-link-row> + </template> </if> </div> <h3 id="blockedSitesTitle" class="page-title">$i18n{blockedSitesTitle}</h3>
diff --git a/chrome/browser/resources/password_manager/settings_section.ts b/chrome/browser/resources/password_manager/settings_section.ts index 8e5b11f..57966504 100644 --- a/chrome/browser/resources/password_manager/settings_section.ts +++ b/chrome/browser/resources/password_manager/settings_section.ts
@@ -32,7 +32,6 @@ blockedSitesList: HTMLElement, passwordToggle: PrefToggleButtonElement, trustedVaultBanner: CrLinkRowElement, - managePasskeysRow: CrLinkRowElement, }; }
diff --git a/chrome/test/data/webui/password_manager/settings_section_test.ts b/chrome/test/data/webui/password_manager/settings_section_test.ts index 73ad871..ecfd61cf 100644 --- a/chrome/test/data/webui/password_manager/settings_section_test.ts +++ b/chrome/test/data/webui/password_manager/settings_section_test.ts
@@ -407,7 +407,7 @@ document.body.appendChild(settings); await passkeysProxy.whenCalled('passkeysHasPasskeys'); flush(); - assertFalse(isVisible(settings.$.managePasskeysRow)); + assertFalse(!!settings.shadowRoot!.querySelector('#managePasskeysRow')); }); test('managePasskeysShownWhenNeeded', async function() { @@ -416,10 +416,11 @@ document.body.appendChild(settings); await passkeysProxy.whenCalled('passkeysHasPasskeys'); flush(); - const row = settings.$.managePasskeysRow; - assertTrue(isVisible(row)); + const managePasskeysRow = settings.shadowRoot!.querySelector<HTMLElement>( + '#managePasskeysRow') as HTMLElement; + assertTrue(!!managePasskeysRow); - row.click(); + managePasskeysRow.click(); const url = await openWindowProxy.whenCalled('openUrl'); assertEquals('chrome://settings/passkeys', url); });