/* Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ */ "use strict"; const TEST_URI = "data:text/html;charset=UTF-8," + "

browser_inspector_addtabbar.js

"; const CONTENT_TEXT = "Hello World!"; /** * Verify InspectorPanel.addSidebarTab() API that can be consumed * by DevTools extensions as well as DevTools code base. */ add_task(async function () { const { inspector } = await openInspectorForURL(TEST_URI); const { Component, createFactory } = inspector.React; const dom = require("resource://devtools/client/shared/vendor/react-dom-factories.js"); const { div } = dom; info("Adding custom panel."); // Define custom side-panel. class myTabPanel extends Component { render() { return div({ className: "my-tab-panel" }, CONTENT_TEXT); } } let tabPanel = createFactory(myTabPanel); // Append custom panel (tab) into the Inspector panel and // make sure it's selected by default (the last arg = true). inspector.addSidebarTab("myPanel", "My Panel", tabPanel, true); is( inspector.sidebar.getCurrentTabID(), "myPanel", "My Panel is selected by default" ); // Define another custom side-panel. class myTabPanel2 extends Component { render() { return div({ className: "my-tab-panel2" }, "Another Content"); } } tabPanel = createFactory(myTabPanel2); // Append second panel, but don't select it by default. inspector.addSidebarTab("myPanel", "My Panel", tabPanel, false); is( inspector.sidebar.getCurrentTabID(), "myPanel", "My Panel is selected by default" ); // Check the the panel content is properly rendered. const tabPanelNode = inspector.panelDoc.querySelector(".my-tab-panel"); is( tabPanelNode.textContent, CONTENT_TEXT, "Side panel content has been rendered." ); });