xhr测试
Some checks failed
build / Build (push) Failing after 10s
test / Run tests (push) Failing after 10s

This commit is contained in:
2025-02-05 18:01:59 +08:00
parent 8dd5bdaa56
commit 65b231911e
11 changed files with 199 additions and 12 deletions

View File

@ -20,5 +20,5 @@ export function proxyUpdateRunStatus(
msg: WindowMessage,
data: { uuid: string; runStatus: SCRIPT_RUN_STATUS; error?: any; nextruntime?: number }
) {
return sendMessageToServiceWorker(msg, "updateRunStatus", data);
return sendMessageToServiceWorker(msg, "serviceWorker/script/updateRunStatus", data);
}

View File

@ -37,7 +37,7 @@ export class OffscreenManager {
return sendMessage(this.extensionMessage, data.action, data.data);
}
initManager() {
async initManager() {
// 监听消息
const group = this.api.group("offscreen");
this.windowApi.on("logger", this.logger.bind(this));
@ -53,5 +53,19 @@ export class OffscreenManager {
script.init();
// 转发gm api请求
forwardMessage("serviceWorker/runtime/gmApi", this.windowApi, this.extensionMessage);
// 处理gm xhr请求
this.api.on("gmXhr", (data) => {
console.log("123");
});
// 测试xhr
const ret = await sendMessage(this.extensionMessage, "serviceWorker/testGmApi");
console.log("test xhr", ret);
const xhr = new XMLHttpRequest();
xhr.onload = () => {
console.log(xhr);
};
xhr.open("GET", "https://scriptcat.org/zh-CN");
xhr.send();
}
}

View File

@ -31,5 +31,79 @@ export default class ServiceWorkerManager {
script.init();
const runtime = new RuntimeService(group.group("runtime"), this.mq, value);
runtime.init();
// 测试xhr
setTimeout(() => {
chrome.tabs.query(
{
url: chrome.runtime.getURL("src/offscreen.html"),
},
(result) => {
console.log(result);
}
);
}, 2000);
group.on("testGmApi", () => {
console.log(chrome.runtime.getURL("src/offscreen.html"));
return new Promise((resolve) => {
chrome.tabs.query({}, (tabs) => {
const excludedTabIds: number[] = [];
tabs.forEach((tab) => {
if (tab.id) {
excludedTabIds.push(tab.id);
}
});
chrome.declarativeNetRequest.updateSessionRules(
{
removeRuleIds: [100],
addRules: [
{
id: 100,
priority: 1,
action: {
type: chrome.declarativeNetRequest.RuleActionType.MODIFY_HEADERS,
requestHeaders: [
{
header: "cookie",
operation: chrome.declarativeNetRequest.HeaderOperation.SET,
value: "test=1234314",
},
{
header: "origin",
operation: chrome.declarativeNetRequest.HeaderOperation.SET,
value: "https://learn.scriptcat.org",
},
{
header: "user-agent",
operation: chrome.declarativeNetRequest.HeaderOperation.SET,
value: "test",
},
],
},
condition: {
resourceTypes: [chrome.declarativeNetRequest.ResourceType.XMLHTTPREQUEST],
urlFilter: "https://scriptcat.org/zh-CN",
excludedTabIds: excludedTabIds,
},
},
],
},
() => {
resolve(1);
}
);
});
});
});
chrome.webRequest.onHeadersReceived.addListener(
(details) => {
console.log(details);
},
{
urls: ["<all_urls>"],
types: ["xmlhttprequest"],
},
["responseHeaders", "extraHeaders"]
);
}
}

View File

@ -236,12 +236,17 @@ export class ScriptService {
async updateRunStatus(params: { uuid: string; runStatus: SCRIPT_RUN_STATUS; error?: string; nextruntime?: number }) {
this.mq.publish("updateRunStatus", params);
return this.scriptDAO.update(params.uuid, {
runStatus: params.runStatus,
lastruntime: new Date().getTime(),
error: params.error,
nextruntime: params.nextruntime,
});
if (
(await this.scriptDAO.update(params.uuid, {
runStatus: params.runStatus,
lastruntime: new Date().getTime(),
error: params.error,
nextruntime: params.nextruntime,
})) === false
) {
return Promise.reject("update error");
}
return Promise.resolve(true);
}
getCode(uuid: string) {