Commit 361b1126 authored by John Lee's avatar John Lee Committed by Commit Bot

WebUI Tab Strip: Add event for when a tab is replaced

Bug: 989131
Change-Id: I08b4da7bf37dcd0353f3553844ef7c9e8bf1cf14
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1900659
Commit-Queue: John Lee <johntlee@chromium.org>
Reviewed-by: default avatarDemetrios Papadopoulos <dpapad@chromium.org>
Cr-Commit-Position: refs/heads/master@{#714072}
parent cf0b4429
...@@ -170,6 +170,8 @@ class TabListElement extends CustomElement { ...@@ -170,6 +170,8 @@ class TabListElement extends CustomElement {
addWebUIListener( addWebUIListener(
'tab-moved', (tabId, newIndex) => this.onTabMoved_(tabId, newIndex)); 'tab-moved', (tabId, newIndex) => this.onTabMoved_(tabId, newIndex));
addWebUIListener('tab-removed', tabId => this.onTabRemoved_(tabId)); addWebUIListener('tab-removed', tabId => this.onTabRemoved_(tabId));
addWebUIListener(
'tab-replaced', (oldId, newId) => this.onTabReplaced_(oldId, newId));
addWebUIListener('tab-updated', tab => this.onTabUpdated_(tab)); addWebUIListener('tab-updated', tab => this.onTabUpdated_(tab));
addWebUIListener( addWebUIListener(
'tab-active-changed', tabId => this.onTabActivated_(tabId)); 'tab-active-changed', tabId => this.onTabActivated_(tabId));
...@@ -413,6 +415,21 @@ class TabListElement extends CustomElement { ...@@ -413,6 +415,21 @@ class TabListElement extends CustomElement {
} }
} }
/**
* @param {number} oldId
* @param {number} newId
* @private
*/
onTabReplaced_(oldId, newId) {
const tabElement = this.findTabElement_(oldId);
if (!tabElement) {
return;
}
tabElement.tab = /** @type {!TabData} */ (
Object.assign({}, tabElement.tab, {id: newId}));
}
/** /**
* @param {!TabData} tab * @param {!TabData} tab
* @private * @private
......
...@@ -171,11 +171,21 @@ class TabStripUIHandler : public content::WebUIMessageHandler, ...@@ -171,11 +171,21 @@ class TabStripUIHandler : public content::WebUIMessageHandler,
base::Value(move->to_index)); base::Value(move->to_index));
break; break;
} }
case TabStripModelChange::kReplaced: {
case TabStripModelChange::kReplaced: auto* replace = change.GetReplace();
case TabStripModelChange::kGroupChanged: FireWebUIListener("tab-replaced",
base::Value(extensions::ExtensionTabUtil::GetTabId(
replace->old_contents)),
base::Value(extensions::ExtensionTabUtil::GetTabId(
replace->new_contents)));
break;
}
case TabStripModelChange::kGroupChanged: {
// Not yet implmented.
break;
}
case TabStripModelChange::kSelectionOnly: case TabStripModelChange::kSelectionOnly:
// Not yet implemented. // Multi-selection is not supported for touch.
break; break;
} }
......
...@@ -522,4 +522,10 @@ suite('TabList', () => { ...@@ -522,4 +522,10 @@ suite('TabList', () => {
window.dispatchEvent(new Event('blur')); window.dispatchEvent(new Event('blur'));
assertEquals(tabList.shadowRoot.activeElement, null); assertEquals(tabList.shadowRoot.activeElement, null);
}); });
test('should update the ID when a tab is replaced', () => {
assertEquals(getUnpinnedTabs()[0].tab.id, 0);
webUIListenerCallback('tab-replaced', tabs[0].id, 1000);
assertEquals(getUnpinnedTabs()[0].tab.id, 1000);
});
}); });
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment