Skip to content
This repository has been archived by the owner on Dec 19, 2023. It is now read-only.

Commit

Permalink
Some fixes with messaging
Browse files Browse the repository at this point in the history
  • Loading branch information
Serega007RU committed Oct 4, 2023
1 parent f2e5ae7 commit f7d42a5
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 52 deletions.
74 changes: 39 additions & 35 deletions src/background.js
Original file line number Diff line number Diff line change
Expand Up @@ -55,46 +55,50 @@ chrome.runtime.onMessage.addListener(function (
sender,
sendResponse
) {
(async () => {
if (type === 'KV_SET') {
if (label.tab_specific) {
label.key = `${sender.tab.id}_${label.key}`;
}
kvStorage[label.key] = label.value;
sendResponse({ status: 'success' });
} else if (type === 'KV_GET') {
if (label.tab_specific) {
label.key = `${sender.tab.id}_${label.key}`;
}
sendResponse({ status: 'success', value: kvStorage[label.key] });
} else if (type === 'HackTimer') {
if (label.name === 'setInterval') {
fakeIdToId[label.fakeId] = setInterval(function () {
triggerTimer(label.name, sender.tab.id, label.fakeId);
}, label.time);
} else if (label.name === 'clearInterval') {
clearInterval(fakeIdToId[label.fakeId]);
delete fakeIdToId[label.fakeId];
} else if (label.name === 'setTimeout') {
fakeIdToId[label.fakeId] = setTimeout(function () {
triggerTimer(label.name, sender.tab.id, label.fakeId);
delete fakeIdToId[label.fakeId];
}, label.time);
} else if (label.name === 'clearTimeout') {
clearTimeout(fakeIdToId[label.fakeId]);
if (type === 'KV_SET') {
if (label.tab_specific) {
label.key = `${sender.tab.id}_${label.key}`;
}
kvStorage[label.key] = label.value;
sendResponse({ status: 'success' });
} else if (type === 'KV_GET') {
if (label.tab_specific) {
label.key = `${sender.tab.id}_${label.key}`;
}
sendResponse({ status: 'success', value: kvStorage[label.key] });
} else if (type === 'HackTimer') {
if (label.name === 'setInterval') {
fakeIdToId[label.fakeId] = setInterval(function () {
triggerTimer(label.name, sender, label.fakeId);
}, label.time);
} else if (label.name === 'clearInterval') {
clearInterval(fakeIdToId[label.fakeId]);
delete fakeIdToId[label.fakeId];
} else if (label.name === 'setTimeout') {
fakeIdToId[label.fakeId] = setTimeout(function () {
triggerTimer(label.name, sender, label.fakeId);
delete fakeIdToId[label.fakeId];
}
}, label.time);
} else if (label.name === 'clearTimeout') {
clearTimeout(fakeIdToId[label.fakeId]);
delete fakeIdToId[label.fakeId];
}
})();
return true;
}
});

async function triggerTimer(name, tabId, fakeId) {
async function triggerTimer(name, sender, fakeId) {
try {
await chrome.tabs.sendMessage(tabId, {
type: 'HackTimer',
label: { fakeId },
});
await chrome.tabs.sendMessage(
sender.tab.id,
{
type: 'HackTimer',
label: { fakeId },
},
{
documentId: sender.documentId,
frameId: sender.frameId,
}
);
} catch (error) {
if (name === 'setInterval') clearInterval(fakeIdToId[fakeId]);
delete fakeIdToId[fakeId];
Expand Down
20 changes: 3 additions & 17 deletions src/hacktimer.js
Original file line number Diff line number Diff line change
@@ -1,21 +1,7 @@
let fakeIdToCallback = {},
lastFakeId = 0,
maxFakeId = 0x7fffffff; // 2 ^ 31 - 1, 31 bit, positive values of signed 32 bit integer
window.fakeIdToCallback = fakeIdToCallback;

function getFakeId() {
do {
if (lastFakeId === maxFakeId) {
lastFakeId = 0;
} else {
lastFakeId++;
}
} while (fakeIdToCallback.hasOwnProperty(lastFakeId));
return lastFakeId;
}
let fakeIdToCallback = {};

window.setInterval = function (callback, time /* , parameters */) {
let fakeId = getFakeId();
let fakeId = crypto.randomUUID();
fakeIdToCallback[fakeId] = {
callback: callback,
parameters: Array.prototype.slice.call(arguments, 2),
Expand Down Expand Up @@ -43,7 +29,7 @@ window.clearInterval = function (fakeId) {
}
};
window.setTimeout = function (callback, time /* , parameters */) {
let fakeId = getFakeId();
let fakeId = crypto.randomUUID();
fakeIdToCallback[fakeId] = {
callback: callback,
parameters: Array.prototype.slice.call(arguments, 2),
Expand Down

0 comments on commit f7d42a5

Please sign in to comment.