- commit
- baf9eba88adbc403e76363ab1784acdc60c6fb4e
- parent
- 1e16af11062670a908eda93379f8be889be3686e
- Author
- Tobias Bengfort <tobias.bengfort@posteo.de>
- Date
- 2022-12-23 14:45
combine onOpenTab and createTab
Diffstat
| M | background.js | 4 | +--- |
| M | experiment-api/api.js | 50 | ++++++++++++++++++++++---------------------------- |
| M | experiment-api/schema.json | 18 | ++---------------- |
3 files changed, 25 insertions, 47 deletions
diff --git a/background.js b/background.js
@@ -1,5 +1,3 @@ 1 1 /* global browser */ 2 23 -1 browser.xi.onOpenTab.addListener(ids => {4 -1 browser.xi.createTab('/content/main.html?ids=' + encodeURIComponent(ids));5 -1 });-1 3 browser.xi.patchOpenSelectedMessages();
diff --git a/experiment-api/api.js b/experiment-api/api.js
@@ -79,38 +79,32 @@ var xi = class extends ExtensionCommon.ExtensionAPI {
79 79 var uri = msgHdr.folder.getUriForMsg(msgHdr);
80 80 win.ViewPageSource([uri]);
81 81 },
82 -1 createTab(url) {
83 -1 var win = Services.wm.getMostRecentWindow('mail:3pane');
84 -1 win.openTab('contentTab', {
85 -1 url: context.uri.resolve(url),
86 -1 linkHandler: 'single-page',
87 -1 principal: context.extension.principal,
88 -1 });
89 -1 },
90 82 // cannot be replaced by messageDisplay.OnMessagesDisplayed because
91 83 // we need to replace the original handler
92 -1 onOpenTab: new ExtensionCommon.EventManager({
93 -1 context,
94 -1 name: 'xi.onOpenTab',
95 -1 register(fire) {
96 -1 var observer = (win, topic) => {
97 -1 if (topic === 'domwindowopened' && win.location.href === 'chrome://messenger/content/messenger.xhtml') {
98 -1 win.MsgOpenSelectedMessages = () => {
99 -1 var msgs = win.gFolderDisplay.selectedMessages;
100 -1 fire.async(msgs.map(msgHdr => msgHdr.messageId));
101 -1 };
102 -1 }
103 -1 win.addEventListener('load', () => observer(win, topic));
104 -1 };
-1 84 patchOpenSelectedMessages() {
-1 85 var observer = (win, topic) => {
-1 86 if (topic === 'domwindowopened' && win.location.href === 'chrome://messenger/content/messenger.xhtml') {
-1 87 win.MsgOpenSelectedMessages = () => {
-1 88 var msgs = win.gFolderDisplay.selectedMessages;
-1 89 var ids = msgs.map(msgHdr => msgHdr.messageId);
-1 90 var url = '/content/main.html?ids=' + encodeURIComponent(ids);
-1 91 win.openTab('contentTab', {
-1 92 url: context.uri.resolve(url),
-1 93 linkHandler: 'single-page',
-1 94 principal: context.extension.principal,
-1 95 });
-1 96 };
-1 97 }
-1 98 win.addEventListener('load', () => observer(win, topic));
-1 99 };
105 100
106 -1 Services.ww.registerNotification(observer);
-1 101 Services.ww.registerNotification(observer);
107 102
108 -1 var e = Services.ww.getWindowEnumerator();
109 -1 while (e.hasMoreElements()) {
110 -1 observer(e.getNext(), 'domwindowopened');
111 -1 }
112 -1 },
113 -1 }).api(),
-1 103 var e = Services.ww.getWindowEnumerator();
-1 104 while (e.hasMoreElements()) {
-1 105 observer(e.getNext(), 'domwindowopened');
-1 106 }
-1 107 },
114 108 },
115 109 };
116 110 }
diff --git a/experiment-api/schema.json b/experiment-api/schema.json
@@ -28,23 +28,9 @@ 28 28 "type": "integer" 29 29 }] 30 30 }, {31 -1 "name": "createTab",-1 31 "name": "patchOpenSelectedMessages", 32 32 "type": "function", 33 33 "async": false,34 -1 "parameters": [{35 -1 "name": "url",36 -1 "type": "string"37 -1 }]38 -1 }],39 -1 "events": [{40 -1 "name": "onOpenTab",41 -1 "type": "function",42 -1 "parameters": [{43 -1 "name": "ids",44 -1 "type": "array",45 -1 "items": {46 -1 "type": "string"47 -1 }48 -1 }]-1 34 "parameters": [] 49 35 }] 50 36 }]