[Tab Resume 1.0] Reland Send all tabs to handler upon dismissal
Bind tabs to getVisibleTabs so the visible tabs update when the tabs
update.
As only 5 urls were sent to the handler to be saved upon dismissal but
the handler was checking all the urls that were sent to the UI for
matches with those 5, the same tabs would always show up if after
they were already dismissed if there are more than 5 tabs. Now all the
tabs are sent to the handler to be checked against the new tabs.
Reverted CL: https://chromium-review.googlesource.com/c/chromium/src/+/5593239
Bug: 333913960
Change-Id: I78eb54a7cacbd7a835ebfa786c8fddce236045a5
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5630460
Code-Coverage: findit-for-me@appspot.gserviceaccount.com <findit-for-me@appspot.gserviceaccount.com>
Reviewed-by: Tibor Goldschwendt <tiborg@chromium.org>
Commit-Queue: Marlon Facey <mfacey@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1315386}
diff --git a/chrome/browser/resources/new_tab_page/modules/v2/most_relevant_tab_resumption/module.html b/chrome/browser/resources/new_tab_page/modules/v2/most_relevant_tab_resumption/module.html
index 2e07152..d2a320df 100644
--- a/chrome/browser/resources/new_tab_page/modules/v2/most_relevant_tab_resumption/module.html
+++ b/chrome/browser/resources/new_tab_page/modules/v2/most_relevant_tab_resumption/module.html
@@ -142,7 +142,7 @@
on-menu-button-click="onMenuButtonClick_">
</ntp-module-header-v2>
<div id="tabs">
- <template id="tabRepeat" is="dom-repeat" items="[[getVisibleTabs_()]]">
+ <template id="tabRepeat" is="dom-repeat" items="[[getVisibleTabs_(tabs)]]">
<a class="tab" href="[[item.url.url]]" on-click="onTabClick_">
<div id="hover-layer"></div>
<page-favicon class="icon" url="[[item.url]]"
diff --git a/chrome/browser/resources/new_tab_page/modules/v2/tab_resumption/module.html b/chrome/browser/resources/new_tab_page/modules/v2/tab_resumption/module.html
index 738ea989..d81a0bb 100644
--- a/chrome/browser/resources/new_tab_page/modules/v2/tab_resumption/module.html
+++ b/chrome/browser/resources/new_tab_page/modules/v2/tab_resumption/module.html
@@ -171,7 +171,7 @@
[[i18n('modulesTabResumptionTitle')]]
</ntp-module-header>
<div id="tabs">
- <template id="tabRepeat" is="dom-repeat" items="[[tabs]]">
+ <template id="tabRepeat" is="dom-repeat" items="[[getVisibleTabs_(tabs)]]">
<a class="tab" href="[[item.url.url]]" on-click="onTabClick_">
<div id="hover-layer"></div>
<page-favicon class="icon" url="[[item.url]]"
diff --git a/chrome/browser/resources/new_tab_page/modules/v2/tab_resumption/module.ts b/chrome/browser/resources/new_tab_page/modules/v2/tab_resumption/module.ts
index 8be7ee2..e8ae7e9 100644
--- a/chrome/browser/resources/new_tab_page/modules/v2/tab_resumption/module.ts
+++ b/chrome/browser/resources/new_tab_page/modules/v2/tab_resumption/module.ts
@@ -174,6 +174,10 @@
private computeFaviconSize_(): number {
return loadTimeData.getBoolean('modulesRedesignedEnabled') ? 18 : 19;
}
+
+ private getVisibleTabs_(): Tab[] {
+ return this.tabs.slice(0, MAX_TABS);
+ }
}
customElements.define(
@@ -186,7 +190,7 @@
}
const element = new TabResumptionModuleElement();
- element.tabs = tabs.slice(0, MAX_TABS);
+ element.tabs = tabs;
chrome.metricsPrivate.recordSmallCount('NewTabPage.TabResumption.TabCount',
element.tabs.length);
diff --git a/chrome/test/data/webui/new_tab_page/modules/v2/tab_resumption/module_test.ts b/chrome/test/data/webui/new_tab_page/modules/v2/tab_resumption/module_test.ts
index 58672a36..78b0533 100644
--- a/chrome/test/data/webui/new_tab_page/modules/v2/tab_resumption/module_test.ts
+++ b/chrome/test/data/webui/new_tab_page/modules/v2/tab_resumption/module_test.ts
@@ -123,12 +123,17 @@
test('Header dismiss button dispatches dismiss module event', async () => {
// Arrange.
- const moduleElement = await initializeModule(createSampleTabs(1));
+ const moduleElement = await initializeModule(createSampleTabs(6));
// Assert.
assertTrue(!!moduleElement);
const headerElement = $$(moduleElement, 'ntp-module-header-v2');
assertTrue(!!headerElement);
+ assertEquals(
+ 5,
+ $$<HTMLElement>(moduleElement, '#tabs')
+ ?.querySelectorAll('.tab')
+ .length);
const waitForDismissEvent =
eventToPromise('dismiss-module-instance', moduleElement);
headerElement!.dispatchEvent(new Event('dismiss-button-click'));
@@ -136,6 +141,7 @@
const dismissEvent: DismissModuleInstanceEvent =
await waitForDismissEvent;
assertEquals(`Tabs hidden`, dismissEvent.detail.message);
+ assertEquals(6, handler.getArgs('dismissModule')[0].length);
// Act.
const restoreCallback = dismissEvent.detail.restoreCallback!;