fix_of_relative_position_of_window_on_mac
This commit is contained in:
1 parent
4299251ee0
commit
2757ed3a1c
1 file changed
+148
-1
+148
-1
@@ -1,8 +1,155 @@
|
||||
// Copyright 2017; Licensed under the Apache License, Version 2.0: https://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
if (typeof globalThis.browser === "undefined" && typeof chrome !== "undefined") {
|
||||
globalThis.browser = chrome;
|
||||
globalThis.browser = {
|
||||
...chrome,
|
||||
|
||||
runtime: {
|
||||
...chrome.runtime,
|
||||
|
||||
sendMessage: function(message) {
|
||||
return new Promise((resolve, reject) => {
|
||||
chrome.runtime.sendMessage(message, response => {
|
||||
const err = chrome.runtime.lastError;
|
||||
|
||||
// Chrome sets lastError when a message intentionally has no direct response.
|
||||
// Firefox-style Nazeka code often uses async side-channel replies instead.
|
||||
if (err) {
|
||||
console.warn("Nazeka sendMessage warning:", err.message);
|
||||
resolve(undefined);
|
||||
} else {
|
||||
resolve(response);
|
||||
}
|
||||
});
|
||||
});
|
||||
},
|
||||
|
||||
getPlatformInfo: function() {
|
||||
return new Promise((resolve, reject) => {
|
||||
chrome.runtime.getPlatformInfo(info => {
|
||||
const err = chrome.runtime.lastError;
|
||||
if (err) reject(err);
|
||||
else resolve(info);
|
||||
});
|
||||
});
|
||||
},
|
||||
|
||||
getURL: chrome.runtime.getURL.bind(chrome.runtime),
|
||||
|
||||
onMessage: {
|
||||
addListener: function(listener) {
|
||||
chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {
|
||||
try {
|
||||
const result = listener(message, sender);
|
||||
|
||||
if (result && typeof result.then === "function") {
|
||||
result.then(sendResponse).catch(error => {
|
||||
console.error("Nazeka message listener error:", error);
|
||||
sendResponse(undefined);
|
||||
});
|
||||
return true;
|
||||
}
|
||||
|
||||
if (result !== undefined) {
|
||||
sendResponse(result);
|
||||
}
|
||||
|
||||
return false;
|
||||
} catch (error) {
|
||||
console.error("Nazeka message listener exception:", error);
|
||||
sendResponse(undefined);
|
||||
return false;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
storage: {
|
||||
...chrome.storage,
|
||||
|
||||
local: {
|
||||
...chrome.storage.local,
|
||||
|
||||
get: function(keys) {
|
||||
return new Promise((resolve, reject) => {
|
||||
chrome.storage.local.get(keys, result => {
|
||||
const err = chrome.runtime.lastError;
|
||||
if (err) reject(err);
|
||||
else resolve(result);
|
||||
});
|
||||
});
|
||||
},
|
||||
|
||||
set: function(items) {
|
||||
return new Promise((resolve, reject) => {
|
||||
chrome.storage.local.set(items, () => {
|
||||
const err = chrome.runtime.lastError;
|
||||
if (err) reject(err);
|
||||
else resolve();
|
||||
});
|
||||
});
|
||||
},
|
||||
|
||||
remove: function(keys) {
|
||||
return new Promise((resolve, reject) => {
|
||||
chrome.storage.local.remove(keys, () => {
|
||||
const err = chrome.runtime.lastError;
|
||||
if (err) reject(err);
|
||||
else resolve();
|
||||
});
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
onChanged: chrome.storage.onChanged
|
||||
},
|
||||
|
||||
tabs: chrome.tabs ? {
|
||||
...chrome.tabs,
|
||||
|
||||
getCurrent: function() {
|
||||
return new Promise((resolve, reject) => {
|
||||
chrome.tabs.getCurrent(tab => {
|
||||
const err = chrome.runtime.lastError;
|
||||
if (err) reject(err);
|
||||
else resolve(tab);
|
||||
});
|
||||
});
|
||||
},
|
||||
|
||||
sendMessage: function(tabId, message) {
|
||||
return new Promise((resolve, reject) => {
|
||||
chrome.tabs.sendMessage(tabId, message, response => {
|
||||
const err = chrome.runtime.lastError;
|
||||
if (err) {
|
||||
console.warn("Nazeka tabs.sendMessage warning:", err.message);
|
||||
resolve(undefined);
|
||||
} else {
|
||||
resolve(response);
|
||||
}
|
||||
});
|
||||
});
|
||||
},
|
||||
|
||||
create: chrome.tabs.create.bind(chrome.tabs)
|
||||
} : undefined,
|
||||
|
||||
windows: chrome.windows ? {
|
||||
...chrome.windows,
|
||||
create: chrome.windows.create.bind(chrome.windows)
|
||||
} : undefined,
|
||||
|
||||
extension: {
|
||||
...chrome.extension,
|
||||
getURL: chrome.runtime.getURL.bind(chrome.runtime)
|
||||
},
|
||||
|
||||
browserAction: chrome.browserAction || undefined,
|
||||
contextMenus: chrome.contextMenus || undefined
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
function storageGet(key) {
|
||||
return new Promise((resolve, reject) => {
|
||||
|
||||
Reference in new issue
Block a user