소스 검색

cancel tasks if tabs are closed manually early

Former-commit-id: fca923251b5517c44c83b0e4d83150dbdff2865a
Gildas 5 년 전
부모
커밋
d7b1f85815
2개의 변경된 파일11개의 추가작업 그리고 6개의 파일을 삭제
  1. 10 5
      extension/core/bg/business.js
  2. 1 1
      extension/core/bg/tabs.js

+ 10 - 5
extension/core/bg/business.js

@@ -165,11 +165,16 @@ singlefile.extension.core.bg.business = (() => {
 				runTasks();
 			};
 			if (!taskInfo.tab.id) {
-				const tab = await tabs.create({ url: taskInfo.tab.url, active: false });
-				taskInfo.tab.id = taskInfo.options.tabId = tab.id;
-				taskInfo.tab.index = taskInfo.options.tabIndex = tab.index;
-				ui.onStart(taskInfo.tab.id, INJECT_SCRIPTS_STEP);
-				const scriptsInjected = await singlefile.extension.injectScript(taskInfo.tab.id, taskInfo.options);
+				let scriptsInjected;
+				try {
+					const tab = await tabs.create({ url: taskInfo.tab.url, active: false });
+					taskInfo.tab.id = taskInfo.options.tabId = tab.id;
+					taskInfo.tab.index = taskInfo.options.tabIndex = tab.index;
+					ui.onStart(taskInfo.tab.id, INJECT_SCRIPTS_STEP);
+					scriptsInjected = await singlefile.extension.injectScript(taskInfo.tab.id, taskInfo.options);
+				} catch (tabId) {
+					taskInfo.tab.id = tabId;
+				}
 				if (scriptsInjected) {
 					ui.onStart(taskInfo.tab.id, EXECUTE_SCRIPTS_STEP);
 				} else {

+ 1 - 1
extension/core/bg/tabs.js

@@ -51,7 +51,7 @@ singlefile.extension.core.bg.tabs = (() => {
 				}
 				function onTabRemoved(tabId) {
 					if (tabId == tab.id) {
-						reject();
+						reject(tabId);
 						browser.tabs.onRemoved.removeListener(onTabRemoved);
 					}
 				}