Source code
Revision control
Copy as Markdown
Other Tools
/* 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
"use strict";
const {
DEBUG_TARGETS,
REQUEST_TABS_SUCCESS,
} = require("resource://devtools/client/aboutdebugging/src/constants.js");
/**
* This middleware converts tabs object that get from DevToolsClient.listTabs() to data
* which is used in DebugTargetItem.
*/
const tabComponentDataMiddleware = () => 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.browserId;
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;