Bug 1530402 - Emit |location-change| from mobile's TabTracker. r=snorp

This matches desktop's TabTracker. Also, remove Tab:Selected which is an event
that was coming from Fennec.

Differential Revision: https://phabricator.services.mozilla.com/D52252

--HG--
extra : moz-landing-system : lando
This commit is contained in:
Agi Sferro 2019-11-13 20:29:13 +00:00
Родитель eb04f82023
Коммит b085048f45
1 изменённых файлов: 27 добавлений и 25 удалений

Просмотреть файл

@ -404,13 +404,35 @@ class TabContext extends EventEmitter {
constructor(getDefaultPrototype) {
super();
windowTracker.addListener("progress", this);
this.getDefaultPrototype = getDefaultPrototype;
this.tabData = new Map();
}
GlobalEventDispatcher.registerListener(this, [
"Tab:Selected",
"Tab:Closed",
]);
onLocationChange(browser, webProgress, request, locationURI, flags) {
if (!webProgress.isTopLevel) {
// Only pageAction and browserAction are consuming the "location-change" event
// to update their per-tab status, and they should only do so in response of
// location changes related to the top level frame (See Bug 1493470 for a rationale).
return;
}
const gBrowser = browser.ownerGlobal.gBrowser;
const tab = gBrowser.getTabForBrowser(browser);
// fromBrowse will be false in case of e.g. a hash change or history.pushState
const fromBrowse = !(
flags & Ci.nsIWebProgressListener.LOCATION_CHANGE_SAME_DOCUMENT
);
this.emit(
"location-change",
{
id: tab.id,
linkedBrowser: browser,
// TODO: we don't support selected so we just alway say we are
selected: true,
},
fromBrowse
);
}
get(tabId) {
@ -426,28 +448,8 @@ class TabContext extends EventEmitter {
this.tabData.delete(tabId);
}
/**
* Required by the GlobalEventDispatcher module. This event will get
* called whenever one of the registered listeners fires.
* @param {string} event The event which fired.
* @param {object} data Information about the event which fired.
*/
onEvent(event, data) {
switch (event) {
case "Tab:Selected":
this.emit("tab-selected", data.id);
break;
case "Tab:Closed":
this.emit("tab-closed", data.tabId);
break;
}
}
shutdown() {
GlobalEventDispatcher.unregisterListener(this, [
"Tab:Selected",
"Tab:Closed",
]);
windowTracker.removeListener("progress", this);
}
}