Como criar um botão de ação do navegador que pareça e atue como uma alternância

O objetivo é obter um WebExtension for Firefox que possa ser ativado / desativado por um usuário na barra de ferramentas, como um botão liga / desliga.

Estou usando umbackground.js com este código:

browser.browserAction.onClicked.addListener(function (tab) {
    switch (button) {
        case 'turn-on':
            enable();
            break;
        case 'turn-off':
            disable();
            break;
    }
});
function enable() {
    browser.browserAction.setIcon({ path: '/ui/is-on.png', });
    browser.browserAction.setPopup({ popup: '/ui/turn-off.js', });
    browser.webNavigation.onCommitted.addListener(onTabLoad); 
} 
function disable() {
    browser.browserAction.setIcon({ path: '/ui/is-off.png', });
    browser.browserAction.setPopup({ popup: '/ui/turn-on.js', });
    browser.webNavigation.onCommitted.removeListener(onTabLoad); 
}
function onTabLoad(details) {
    browser.tabs.executeScript(details.tabId, {
        file: '/gc.js',
        allFrames true,
    }); 
}
enable(); // enable or disable by default

Obviamente, estou fazendo algo errado. Eu sou tipo novato em codificação. Este é um projeto pessoal que estou tentando concluir.

questionAnswers(1)

yourAnswerToTheQuestion