MCPcopy Create free account
hub / github.com/Tampermonkey/tampermonkey / connectHandler

Function connectHandler

src/background.js:3833–3906  ·  view source on GitHub ↗
(port)

Source from the content-addressed store, hash-verified

3831/* ###### Request Handler ####### */
3832
3833var connectHandler = function(port) {
3834 if (!ginit) {
3835 window.setTimeout(function() { connectHandler(port); }, 10);
3836 return;
3837 }
3838 var connectMsgHandler = function(request) {
3839 var disconnectHandler = null;
3840 var sender = port.sender;
3841 var sendResponse = function(o) {
3842 try {
3843 port.postMessage(o);
3844 } catch (e) {
3845 console.log('bg: Error sending port (' + port.name + ') message: ' + JSON.stringify(o));
3846 }
3847 };
3848
3849 if (request.method == "xhr") {
3850 var done = function() {
3851 port.disconnect();
3852 }
3853 var cbe = function(req) { sendResponse({error: true, data: req});};
3854 var cbs = function(req) { sendResponse({success: true, data: req});};
3855 var cbc = function(req) { sendResponse({change: true, data: req});};
3856 xmlhttpRequest(request.details, cbs, cbc, cbe, done);
3857 } else if (request.method == "addStorageListener") {
3858 if (typeof sender.tab != 'undefined') {
3859 if (V || SV) console.log("storage add listener " + request.name + " " + request.id);
3860 TM_storageListener.push({ tabid: sender.tab.id, id: request.id, name: request.name, time: (new Date()).getTime(), response: sendResponse});
3861 disconnectHandler = function() {
3862 // there is no need to try to send some data when we're already disconnected
3863 removeStorageListeners(request.name, request.id, false);
3864 };
3865 } else {
3866 console.log(I18N.getMessage("Unable_to_load_storage_due_to_empty_tabID_"));
3867 sendResponse({ error: true });
3868 }
3869 } else if (request.method == "removeStorageListener") {
3870 if (typeof sender.tab != 'undefined') {
3871 if (V) console.log("storage remove listener " + request.name + " " + request.id);
3872 /* do not store the whole storage as it already should be modifed with every GM_setValue
3873 if (request.name) {
3874 var s = loadScriptStorage(request.name);
3875 if (request.storage.ts != undefined &&
3876 request.storage.ts > s.ts) {
3877 if (V || SV) console.log("storage store " + request.name);
3878 storeScriptStorage(request.name, request.storage);
3879 }
3880 } */
3881 removeStorageListeners(request.name, request.id);
3882 sendResponse({ error: false });
3883 } else {
3884 console.log("Unable to remove storage listener due to empty tabID!");
3885 sendResponse({ error: true });
3886 }
3887 } else if (request.method == "saveStorageKey") {
3888 if (typeof sender.tab != 'undefined') {
3889 if (request.name) {
3890 var s = loadScriptStorage(request.name);

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…