1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
"use strict";
const {
DEBUG_TARGETS,
REQUEST_TABS_SUCCESS,
} = require("devtools/client/aboutdebugging/src/constants");
/**
* This middleware converts tabs object that get from DevToolsClient.listTabs() to data
* which is used in DebugTargetItem.
*/
const tabComponentDataMiddleware = store => next => action => {
switch (action.type) {
case REQUEST_TABS_SUCCESS: {
action.tabs = toComponentData(action.tabs);
break;
}
}
return next(action);
};
function toComponentData(tabs) {
return tabs.map(tab => {
const type = DEBUG_TARGETS.TAB;
const id = tab.outerWindowID;
const icon = tab.favicon
? `data:image/png;base64,${btoa(
String.fromCharCode.apply(String, tab.favicon)
)}`
: "chrome://devtools/skin/images/globe.svg";
const name = tab.title || tab.url;
const { url, isZombieTab } = tab;
return {
name,
icon,
id,
type,
details: {
isZombieTab,
url,
},
};
});
}
module.exports = tabComponentDataMiddleware;
|