55 lines
1.6 KiB
JavaScript
55 lines
1.6 KiB
JavaScript
// eslint-disable-next-line no-unused-vars
|
|
const tabPageCounter = {
|
|
counters: {},
|
|
|
|
initTabCounter(tab) {
|
|
if (tab.id in this.counters) {
|
|
if (!("activity" in this.counters[tab.id])) {
|
|
this.counters[tab.id].activity = {
|
|
"cookieStoreId": tab.cookieStoreId,
|
|
"pageRequests": 0
|
|
};
|
|
}
|
|
if (!("tab" in this.counters[tab.id])) {
|
|
this.counters[tab.id].tab = {
|
|
"cookieStoreId": tab.cookieStoreId,
|
|
"pageRequests": 0
|
|
};
|
|
}
|
|
} else {
|
|
this.counters[tab.id] = {};
|
|
this.counters[tab.id].tab = {
|
|
"cookieStoreId": tab.cookieStoreId,
|
|
"pageRequests": 0
|
|
};
|
|
this.counters[tab.id].activity = {
|
|
"cookieStoreId": tab.cookieStoreId,
|
|
"pageRequests": 0
|
|
};
|
|
}
|
|
},
|
|
|
|
sendTabCountAndDelete(tabId, why = "user-closed-tab") {
|
|
if (!(this.counters[tabId])) {
|
|
return;
|
|
}
|
|
if (why === "user-closed-tab" && this.counters[tabId].tab) {
|
|
// When we send the ping because the user closed the tab,
|
|
// delete both the 'tab' and 'activity' counters
|
|
delete this.counters[tabId];
|
|
} else if (why === "user-went-idle" && this.counters[tabId].activity) {
|
|
// When we send the ping because the user went idle,
|
|
// only reset the 'activity' counter
|
|
this.counters[tabId].activity = {
|
|
"cookieStoreId": this.counters[tabId].tab.cookieStoreId,
|
|
"pageRequests": 0
|
|
};
|
|
}
|
|
},
|
|
|
|
incrementTabCount(tab) {
|
|
this.initTabCounter(tab);
|
|
this.counters[tab.id].tab.pageRequests++;
|
|
this.counters[tab.id].activity.pageRequests++;
|
|
}
|
|
};
|