2444 lines
102 KiB
JavaScript
2444 lines
102 KiB
JavaScript
/*
|
|
# 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';
|
|
|
|
import {
|
|
log as internalLogger,
|
|
configs,
|
|
sanitizeAccesskeyMark,
|
|
} from '/common/common.js';
|
|
import * as ApiTabs from '/common/api-tabs.js';
|
|
import * as Constants from '/common/constants.js';
|
|
import * as Permissions from '/common/permissions.js';
|
|
|
|
function log(...args) {
|
|
internalLogger('background/browser-action-menu', ...args);
|
|
}
|
|
|
|
const delimiter = browser.i18n.getMessage('config_terms_delimiter');
|
|
|
|
function indent(level = 1) {
|
|
let result = '';
|
|
for (let i = 0, maxi = level; i < maxi; i++) {
|
|
result += '\u00A0\u00A0\u00A0';
|
|
}
|
|
return result;
|
|
}
|
|
|
|
const mItems = [
|
|
{
|
|
title: browser.i18n.getMessage('config_appearance_caption'),
|
|
children: [
|
|
{
|
|
title: browser.i18n.getMessage('config_sidebarPosition_caption'),
|
|
children: [
|
|
{
|
|
title: browser.i18n.getMessage('config_sidebarPosition_left'),
|
|
key: 'sidebarPosition',
|
|
value: Constants.kTABBAR_POSITION_LEFT,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_sidebarPosition_right'),
|
|
key: 'sidebarPosition',
|
|
value: Constants.kTABBAR_POSITION_RIGHT,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_sidebarPosition_auto'),
|
|
key: 'sidebarPosition',
|
|
value: Constants.kTABBAR_POSITION_AUTO,
|
|
type: 'radio'
|
|
},
|
|
]
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_style_caption'),
|
|
children: [
|
|
{
|
|
title: browser.i18n.getMessage('config_style_proton'),
|
|
key: 'style',
|
|
value: 'proton',
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_style_photon'),
|
|
key: 'style',
|
|
value: 'photon',
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_style_sidebar'),
|
|
key: 'style',
|
|
value: 'sidebar',
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_style_highcontrast'),
|
|
key: 'style',
|
|
value: 'highcontrast',
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_style_none'),
|
|
key: 'style',
|
|
value: 'none',
|
|
type: 'radio'
|
|
}
|
|
]
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_animation_label'),
|
|
key: 'animation',
|
|
type: 'checkbox'
|
|
},
|
|
{
|
|
title: indent() + browser.i18n.getMessage('config_animationForce_label'),
|
|
key: 'animationForce',
|
|
type: 'checkbox',
|
|
expert: true
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_labelOverflowStyle_caption'),
|
|
expert: true,
|
|
children: [
|
|
{
|
|
title: browser.i18n.getMessage('config_labelOverflowStyle_fade'),
|
|
key: 'labelOverflowStyle',
|
|
value: 'fade',
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_labelOverflowStyle_crop'),
|
|
key: 'labelOverflowStyle',
|
|
value: 'crop',
|
|
type: 'radio'
|
|
}
|
|
],
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_faviconizePinnedTabs_label'),
|
|
key: 'faviconizePinnedTabs',
|
|
type: 'checkbox',
|
|
expert: true
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_tabPreviewTooltip_label'),
|
|
key: 'tabPreviewTooltip',
|
|
type: 'checkbox',
|
|
permissions: Permissions.ALL_URLS,
|
|
get canRevoke() {
|
|
return !configs.tabPreviewTooltip && !configs.skipCollapsedTabsForTabSwitchingShortcuts;
|
|
},
|
|
},
|
|
{
|
|
title: indent() + browser.i18n.getMessage('config_tabPreviewTooltipRenderIn_label_before') + browser.i18n.getMessage('config_tabPreviewTooltipRenderIn_anywhere') + browser.i18n.getMessage('config_tabPreviewTooltipRenderIn_label_after'),
|
|
key: 'tabPreviewTooltipRenderIn',
|
|
value: Constants.kIN_CONTENT_PANEL_RENDER_IN_ANYWHERE,
|
|
type: 'radio',
|
|
expert: true
|
|
},
|
|
{
|
|
title: indent() + browser.i18n.getMessage('config_tabPreviewTooltipRenderIn_label_before') + browser.i18n.getMessage('config_tabPreviewTooltipRenderIn_content') + browser.i18n.getMessage('config_tabPreviewTooltipRenderIn_label_after'),
|
|
key: 'tabPreviewTooltipRenderIn',
|
|
value: Constants.kIN_CONTENT_PANEL_RENDER_IN_CONTENT,
|
|
type: 'radio',
|
|
expert: true
|
|
},
|
|
{
|
|
title: indent() + browser.i18n.getMessage('config_tabPreviewTooltipRenderIn_label_before') + browser.i18n.getMessage('config_tabPreviewTooltipRenderIn_sidebar') + browser.i18n.getMessage('config_tabPreviewTooltipRenderIn_label_after'),
|
|
key: 'tabPreviewTooltipRenderIn',
|
|
value: Constants.kIN_CONTENT_PANEL_RENDER_IN_SIDEBAR,
|
|
type: 'radio',
|
|
expert: true
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_showCollapsedDescendantsByTooltip_label'),
|
|
key: 'showCollapsedDescendantsByTooltip',
|
|
type: 'checkbox',
|
|
expert: true
|
|
},
|
|
{
|
|
dynamicTitle: true,
|
|
get title() {
|
|
return browser.i18n.getMessage('config_shiftTabsForScrollbarDistance_label_before') + configs.shiftTabsForScrollbarDistance + browser.i18n.getMessage('config_shiftTabsForScrollbarDistance_label_after')
|
|
},
|
|
enabled: false,
|
|
expert: true
|
|
},
|
|
{
|
|
title: indent() + browser.i18n.getMessage('config_shiftTabsForScrollbarOnlyOnHover_label'),
|
|
key: 'shiftTabsForScrollbarOnlyOnHover',
|
|
type: 'checkbox',
|
|
expert: true
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_suppressGapFromShownOrHiddenToolbar_caption'),
|
|
enabled: false,
|
|
expert: true
|
|
},
|
|
{
|
|
title: indent() + browser.i18n.getMessage('config_suppressGapFromShownOrHiddenToolbarOnFullScreen_label'),
|
|
key: 'suppressGapFromShownOrHiddenToolbarOnFullScreen',
|
|
type: 'checkbox',
|
|
expert: true
|
|
},
|
|
{
|
|
title: indent() + browser.i18n.getMessage('config_suppressGapFromShownOrHiddenToolbarOnNewTab_label'),
|
|
key: 'suppressGapFromShownOrHiddenToolbarOnNewTab',
|
|
type: 'checkbox',
|
|
expert: true
|
|
},
|
|
{
|
|
title: indent() + browser.i18n.getMessage('config_suppressGapFromShownOrHiddenToolbarOnlyOnMouseOperation_label'),
|
|
key: 'suppressGapFromShownOrHiddenToolbarOnlyOnMouseOperation',
|
|
type: 'checkbox',
|
|
expert: true
|
|
},
|
|
{ type: 'separator',
|
|
expert: true, },
|
|
{
|
|
title: browser.i18n.getMessage('config_showDialogInSidebar_label'),
|
|
key: 'showDialogInSidebar',
|
|
type: 'checkbox',
|
|
expert: true,
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_renderHiddenTabs_label'),
|
|
key: 'renderHiddenTabs',
|
|
type: 'checkbox',
|
|
expert: true,
|
|
},
|
|
]
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_context_caption'),
|
|
children: [
|
|
{
|
|
title: browser.i18n.getMessage('config_extraItems_tabs_topLevel'),
|
|
enabled: false,
|
|
expert: true,
|
|
},
|
|
{
|
|
title: indent() + browser.i18n.getMessage('context_toggleSticky_command'),
|
|
key: 'context_topLevel_toggleSticky',
|
|
type: 'checkbox',
|
|
expert: true,
|
|
},
|
|
{
|
|
title: indent() + browser.i18n.getMessage('context_reloadTree_command'),
|
|
key: 'context_topLevel_reloadTree',
|
|
type: 'checkbox',
|
|
expert: true,
|
|
},
|
|
{
|
|
title: indent() + browser.i18n.getMessage('context_reloadDescendants_command'),
|
|
key: 'context_topLevel_reloadDescendants',
|
|
type: 'checkbox',
|
|
expert: true,
|
|
},
|
|
{
|
|
title: indent() + browser.i18n.getMessage('context_unblockAutoplayTree_command'),
|
|
key: 'context_topLevel_unblockAutoplayTree',
|
|
type: 'checkbox',
|
|
get visible() {
|
|
return configs.exposeUnblockAutoplayFeatures;
|
|
},
|
|
expert: true,
|
|
},
|
|
{
|
|
title: indent() + browser.i18n.getMessage('context_unblockAutoplayDescendants_command'),
|
|
key: 'context_topLevel_unblockAutoplayDescendants',
|
|
type: 'checkbox',
|
|
get visible() {
|
|
return configs.exposeUnblockAutoplayFeatures;
|
|
},
|
|
expert: true,
|
|
},
|
|
{
|
|
title: indent() + browser.i18n.getMessage('context_toggleMuteTree_command'),
|
|
key: 'context_topLevel_toggleMuteTree',
|
|
type: 'checkbox',
|
|
expert: true,
|
|
},
|
|
{
|
|
title: indent() + browser.i18n.getMessage('context_toggleMuteDescendants_command'),
|
|
key: 'context_topLevel_toggleMuteDescendants',
|
|
type: 'checkbox',
|
|
expert: true,
|
|
},
|
|
{
|
|
title: indent() + browser.i18n.getMessage('context_closeTree_command'),
|
|
key: 'context_topLevel_closeTree',
|
|
type: 'checkbox',
|
|
expert: true,
|
|
},
|
|
{
|
|
title: indent() + browser.i18n.getMessage('context_closeDescendants_command'),
|
|
key: 'context_topLevel_closeDescendants',
|
|
type: 'checkbox',
|
|
expert: true,
|
|
},
|
|
{
|
|
title: indent() + browser.i18n.getMessage('context_closeOthers_command'),
|
|
key: 'context_topLevel_closeOthers',
|
|
type: 'checkbox',
|
|
expert: true,
|
|
},
|
|
{
|
|
title: indent() + browser.i18n.getMessage('context_collapseTree_command'),
|
|
key: 'context_topLevel_collapseTree',
|
|
type: 'checkbox',
|
|
expert: true,
|
|
},
|
|
{
|
|
title: indent() + browser.i18n.getMessage('context_collapseTreeRecursively_command'),
|
|
key: 'context_topLevel_collapseTreeRecursively',
|
|
type: 'checkbox',
|
|
expert: true,
|
|
},
|
|
{
|
|
title: indent() + browser.i18n.getMessage('context_collapseAll_command'),
|
|
key: 'context_topLevel_collapseAll',
|
|
type: 'checkbox',
|
|
expert: true,
|
|
},
|
|
{
|
|
title: indent() + browser.i18n.getMessage('context_expandTree_command'),
|
|
key: 'context_topLevel_expandTree',
|
|
type: 'checkbox',
|
|
expert: true,
|
|
},
|
|
{
|
|
title: indent() + browser.i18n.getMessage('context_expandTreeRecursively_command'),
|
|
key: 'context_topLevel_expandTreeRecursively',
|
|
type: 'checkbox',
|
|
expert: true,
|
|
},
|
|
{
|
|
title: indent() + browser.i18n.getMessage('context_expandAll_command'),
|
|
key: 'context_topLevel_expandAll',
|
|
type: 'checkbox',
|
|
expert: true,
|
|
},
|
|
{
|
|
title: indent() + browser.i18n.getMessage('context_bookmarkTree_command'),
|
|
key: 'context_topLevel_bookmarkTree',
|
|
type: 'checkbox',
|
|
expert: true,
|
|
},
|
|
{
|
|
title: indent() + browser.i18n.getMessage('context_sendTreeToDevice_command'),
|
|
key: 'context_topLevel_sendTreeToDevice',
|
|
type: 'checkbox',
|
|
expert: true,
|
|
},
|
|
{ type: 'separator',
|
|
expert: true, },
|
|
{
|
|
title: browser.i18n.getMessage('config_requestPermissions_bookmarks'),
|
|
type: 'checkbox',
|
|
permissions: Permissions.BOOKMARKS
|
|
},
|
|
{ type: 'separator',
|
|
expert: true, },
|
|
{
|
|
title: browser.i18n.getMessage('config_extraItems_tabs_subMenu'),
|
|
enabled: false,
|
|
expert: true,
|
|
},
|
|
{
|
|
title: indent() + browser.i18n.getMessage('context_toggleSticky_command'),
|
|
key: 'context_toggleSticky',
|
|
type: 'checkbox',
|
|
expert: true,
|
|
},
|
|
{
|
|
title: indent() + browser.i18n.getMessage('context_reloadTree_command'),
|
|
key: 'context_reloadTree',
|
|
type: 'checkbox',
|
|
expert: true,
|
|
},
|
|
{
|
|
title: indent() + browser.i18n.getMessage('context_reloadDescendants_command'),
|
|
key: 'context_reloadDescendants',
|
|
type: 'checkbox',
|
|
expert: true,
|
|
},
|
|
{
|
|
title: indent() + browser.i18n.getMessage('context_unblockAutoplayTree_command'),
|
|
key: 'context_unblockAutoplayTree',
|
|
type: 'checkbox',
|
|
get visible() {
|
|
return configs.exposeUnblockAutoplayFeatures;
|
|
},
|
|
expert: true,
|
|
},
|
|
{
|
|
title: indent() + browser.i18n.getMessage('context_unblockAutoplayDescendants_command'),
|
|
key: 'context_unblockAutoplayDescendants',
|
|
type: 'checkbox',
|
|
get visible() {
|
|
return configs.exposeUnblockAutoplayFeatures;
|
|
},
|
|
expert: true,
|
|
},
|
|
{
|
|
title: indent() + browser.i18n.getMessage('context_toggleMuteTree_command'),
|
|
key: 'context_toggleMuteTree',
|
|
type: 'checkbox',
|
|
expert: true,
|
|
},
|
|
{
|
|
title: indent() + browser.i18n.getMessage('context_toggleMuteDescendants_command'),
|
|
key: 'context_toggleMuteDescendants',
|
|
type: 'checkbox',
|
|
expert: true,
|
|
},
|
|
{
|
|
title: indent() + browser.i18n.getMessage('context_closeTree_command'),
|
|
key: 'context_closeTree',
|
|
type: 'checkbox',
|
|
expert: true,
|
|
},
|
|
{
|
|
title: indent() + browser.i18n.getMessage('context_closeDescendants_command'),
|
|
key: 'context_closeDescendants',
|
|
type: 'checkbox',
|
|
expert: true,
|
|
},
|
|
{
|
|
title: indent() + browser.i18n.getMessage('context_closeOthers_command'),
|
|
key: 'context_closeOthers',
|
|
type: 'checkbox',
|
|
expert: true,
|
|
},
|
|
{
|
|
title: indent() + browser.i18n.getMessage('context_collapseTree_command'),
|
|
key: 'context_collapseTree',
|
|
type: 'checkbox',
|
|
expert: true,
|
|
},
|
|
{
|
|
title: indent() + browser.i18n.getMessage('context_collapseTreeRecursively_command'),
|
|
key: 'context_collapseTreeRecursively',
|
|
type: 'checkbox',
|
|
expert: true,
|
|
},
|
|
{
|
|
title: indent() + browser.i18n.getMessage('context_collapseAll_command'),
|
|
key: 'context_collapseAll',
|
|
type: 'checkbox',
|
|
expert: true,
|
|
},
|
|
{
|
|
title: indent() + browser.i18n.getMessage('context_expandTree_command'),
|
|
key: 'context_expandTree',
|
|
type: 'checkbox',
|
|
expert: true,
|
|
},
|
|
{
|
|
title: indent() + browser.i18n.getMessage('context_expandTreeRecursively_command'),
|
|
key: 'context_expandTreeRecursively',
|
|
type: 'checkbox',
|
|
expert: true,
|
|
},
|
|
{
|
|
title: indent() + browser.i18n.getMessage('context_expandAll_command'),
|
|
key: 'context_expandAll',
|
|
type: 'checkbox',
|
|
expert: true,
|
|
},
|
|
{
|
|
title: indent() + browser.i18n.getMessage('context_bookmarkTree_command'),
|
|
key: 'context_bookmarkTree',
|
|
type: 'checkbox',
|
|
expert: true,
|
|
},
|
|
{
|
|
title: indent() + browser.i18n.getMessage('context_sendTreeToDevice_command'),
|
|
key: 'context_sendTreeToDevice',
|
|
type: 'checkbox',
|
|
expert: true,
|
|
},
|
|
{ type: 'separator',
|
|
expert: true, },
|
|
{
|
|
title: browser.i18n.getMessage('config_showTreeCommandsInTabsContextMenuGlobally_label'),
|
|
key: 'showTreeCommandsInTabsContextMenuGlobally',
|
|
type: 'checkbox',
|
|
expert: true,
|
|
},
|
|
{ type: 'separator',
|
|
expert: true, },
|
|
{
|
|
title: browser.i18n.getMessage('config_extraItems_bookmarks_caption'),
|
|
enabled: false,
|
|
expert: true,
|
|
},
|
|
{
|
|
title: indent() + sanitizeAccesskeyMark(browser.i18n.getMessage('context_openAllBookmarksWithStructure_label')),
|
|
key: 'context_openAllBookmarksWithStructure',
|
|
type: 'checkbox',
|
|
expert: true,
|
|
},
|
|
{
|
|
title: indent() + sanitizeAccesskeyMark(browser.i18n.getMessage('context_openAllBookmarksWithStructureRecursively_label')),
|
|
key: 'context_openAllBookmarksWithStructureRecursively',
|
|
type: 'checkbox',
|
|
expert: true,
|
|
},
|
|
{ type: 'separator',
|
|
expert: true, },
|
|
{
|
|
title: indent() + browser.i18n.getMessage('config_openAllBookmarksWithStructureDiscarded_label'),
|
|
key: 'openAllBookmarksWithStructureDiscarded',
|
|
type: 'checkbox',
|
|
expert: true,
|
|
},
|
|
{
|
|
title: indent() + browser.i18n.getMessage('config_suppressGroupTabForStructuredTabsFromBookmarks_label'),
|
|
key: 'suppressGroupTabForStructuredTabsFromBookmarks',
|
|
type: 'checkbox',
|
|
expert: true,
|
|
},
|
|
{ type: 'separator',
|
|
expert: true },
|
|
{
|
|
title: indent() + browser.i18n.getMessage('config_autoAttachOnContextNewTabCommand_before'),
|
|
expert: true,
|
|
children: [
|
|
{
|
|
title: browser.i18n.getMessage('config_autoAttachOnContextNewTabCommand_noControl') + delimiter + browser.i18n.getMessage('config_autoAttachOnContextNewTabCommand_after'),
|
|
key: 'autoAttachOnContextNewTabCommand',
|
|
value: Constants.kNEWTAB_DO_NOTHING,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_autoAttachOnContextNewTabCommand_independent') + delimiter + browser.i18n.getMessage('config_autoAttachOnContextNewTabCommand_after'),
|
|
key: 'autoAttachOnContextNewTabCommand',
|
|
value: Constants.kNEWTAB_OPEN_AS_ORPHAN,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_autoAttachOnContextNewTabCommand_childTop') + delimiter + browser.i18n.getMessage('config_autoAttachOnContextNewTabCommand_after'),
|
|
key: 'autoAttachOnContextNewTabCommand',
|
|
value: Constants.kNEWTAB_OPEN_AS_CHILD_TOP,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_autoAttachOnContextNewTabCommand_childEnd') + delimiter + browser.i18n.getMessage('config_autoAttachOnContextNewTabCommand_after'),
|
|
key: 'autoAttachOnContextNewTabCommand',
|
|
value: Constants.kNEWTAB_OPEN_AS_CHILD_END,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_autoAttachOnContextNewTabCommand_sibling') + delimiter + browser.i18n.getMessage('config_autoAttachOnContextNewTabCommand_after'),
|
|
key: 'autoAttachOnContextNewTabCommand',
|
|
value: Constants.kNEWTAB_OPEN_AS_SIBLING,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_autoAttachOnContextNewTabCommand_nextSibling') + delimiter + browser.i18n.getMessage('config_autoAttachOnContextNewTabCommand_after'),
|
|
key: 'autoAttachOnContextNewTabCommand',
|
|
value: Constants.kNEWTAB_OPEN_AS_NEXT_SIBLING,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_autoAttachOnContextNewTabCommand_nextSiblingWithInheritedContainer') + delimiter + browser.i18n.getMessage('config_autoAttachOnContextNewTabCommand_after') + ' ' + browser.i18n.getMessage('config_firefoxCompatible_choice'),
|
|
key: 'autoAttachOnContextNewTabCommand',
|
|
value: Constants.kNEWTAB_OPEN_AS_NEXT_SIBLING_WITH_INHERITED_CONTAINER,
|
|
type: 'radio'
|
|
}
|
|
]
|
|
},
|
|
]
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_newTabWithOwner_caption'),
|
|
children: [
|
|
{
|
|
title: browser.i18n.getMessage('config_autoAttachOnOpenedWithOwner_before'),
|
|
children: [
|
|
{
|
|
title: browser.i18n.getMessage('config_autoAttachOnOpenedWithOwner_noControl') + delimiter + browser.i18n.getMessage('config_autoAttachOnOpenedWithOwner_after'),
|
|
key: 'autoAttachOnOpenedWithOwner',
|
|
value: Constants.kNEWTAB_DO_NOTHING,
|
|
type: 'radio',
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_autoAttachOnOpenedWithOwner_independent') + delimiter + browser.i18n.getMessage('config_autoAttachOnOpenedWithOwner_after'),
|
|
key: 'autoAttachOnOpenedWithOwner',
|
|
value: Constants.kNEWTAB_OPEN_AS_ORPHAN,
|
|
type: 'radio',
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_autoAttachOnOpenedWithOwner_childTop') + delimiter + browser.i18n.getMessage('config_autoAttachOnOpenedWithOwner_after'),
|
|
key: 'autoAttachOnOpenedWithOwner',
|
|
value: Constants.kNEWTAB_OPEN_AS_CHILD_TOP,
|
|
type: 'radio',
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_autoAttachOnOpenedWithOwner_childEnd') + delimiter + browser.i18n.getMessage('config_autoAttachOnOpenedWithOwner_after') + ' ' + browser.i18n.getMessage('config_recommended_choice'),
|
|
key: 'autoAttachOnOpenedWithOwner',
|
|
value: Constants.kNEWTAB_OPEN_AS_CHILD_END,
|
|
type: 'radio',
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_autoAttachOnOpenedWithOwner_childNextToLastRelatedTab') + delimiter + browser.i18n.getMessage('config_autoAttachOnOpenedWithOwner_after') + ' ' + browser.i18n.getMessage('config_firefoxCompatible_choice'),
|
|
key: 'autoAttachOnOpenedWithOwner',
|
|
value: Constants.kNEWTAB_OPEN_AS_CHILD_NEXT_TO_LAST_RELATED_TAB,
|
|
type: 'radio',
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_autoAttachOnOpenedWithOwner_sibling') + delimiter + browser.i18n.getMessage('config_autoAttachOnOpenedWithOwner_after'),
|
|
key: 'autoAttachOnOpenedWithOwner',
|
|
value: Constants.kNEWTAB_OPEN_AS_SIBLING,
|
|
type: 'radio',
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_autoAttachOnOpenedWithOwner_nextSibling') + delimiter + browser.i18n.getMessage('config_autoAttachOnOpenedWithOwner_after'),
|
|
key: 'autoAttachOnOpenedWithOwner',
|
|
value: Constants.kNEWTAB_OPEN_AS_NEXT_SIBLING,
|
|
type: 'radio',
|
|
},
|
|
],
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_insertNewTabFromFirefoxViewAt_caption'),
|
|
expert: true,
|
|
children: [
|
|
{
|
|
title: browser.i18n.getMessage('config_insertNewTabFromFirefoxViewAt_noControl'),
|
|
key: 'insertNewTabFromFirefoxViewAt',
|
|
value: Constants.kINSERT_NO_CONTROL,
|
|
type: 'radio',
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_insertNewTabFromFirefoxViewAt_nextToLastRelatedTab') + ' ' + browser.i18n.getMessage('config_firefoxCompatible_choice'),
|
|
key: 'insertNewTabFromFirefoxViewAt',
|
|
value: Constants.kINSERT_NEXT_TO_LAST_RELATED_TAB,
|
|
type: 'radio',
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_insertNewTabFromFirefoxViewAt_top'),
|
|
key: 'insertNewTabFromFirefoxViewAt',
|
|
value: Constants.kINSERT_TOP,
|
|
type: 'radio',
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_insertNewTabFromFirefoxViewAt_end'),
|
|
key: 'insertNewTabFromFirefoxViewAt',
|
|
value: Constants.kINSERT_END,
|
|
type: 'radio',
|
|
},
|
|
],
|
|
},
|
|
//{ type: 'separator' },
|
|
{
|
|
title: browser.i18n.getMessage('config_autoGroupNewTabsFromFirefoxView_label'),
|
|
key: 'autoGroupNewTabsFromFirefoxView',
|
|
type: 'checkbox',
|
|
expert: true,
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_groupTabTemporaryStateForChildrenOfFirefoxView_label'),
|
|
expert: true,
|
|
children: [
|
|
{
|
|
title: browser.i18n.getMessage('config_groupTabTemporaryState_option_default'),
|
|
key: 'groupTabTemporaryStateForChildrenOfFirefoxView',
|
|
value: Constants.kGROUP_TAB_TEMPORARY_STATE_NOTHING,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: `${browser.i18n.getMessage('config_groupTabTemporaryState_option_checked_before')}${browser.i18n.getMessage('groupTab_temporary_label')}${browser.i18n.getMessage('config_groupTabTemporaryState_option_checked_after')}`,
|
|
key: 'groupTabTemporaryStateForChildrenOfFirefoxView',
|
|
value: Constants.kGROUP_TAB_TEMPORARY_STATE_PASSIVE,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: `${browser.i18n.getMessage('config_groupTabTemporaryState_option_checked_before')}${browser.i18n.getMessage('groupTab_temporaryAggressive_label')}${browser.i18n.getMessage('config_groupTabTemporaryState_option_checked_after')}`,
|
|
key: 'groupTabTemporaryStateForChildrenOfFirefoxView',
|
|
value: Constants.kGROUP_TAB_TEMPORARY_STATE_AGGRESSIVE,
|
|
type: 'radio'
|
|
}
|
|
],
|
|
},
|
|
{ type: 'separator',
|
|
expert: true, },
|
|
{
|
|
title: browser.i18n.getMessage('config_insertNewTabFromPinnedTabAt_caption'),
|
|
expert: true,
|
|
children: [
|
|
{
|
|
title: browser.i18n.getMessage('config_insertNewTabFromPinnedTabAt_noControl'),
|
|
key: 'insertNewTabFromPinnedTabAt',
|
|
value: Constants.kINSERT_NO_CONTROL,
|
|
type: 'radio',
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_insertNewTabFromPinnedTabAt_nextToLastRelatedTab') + ' ' + browser.i18n.getMessage('config_firefoxCompatible_choice'),
|
|
key: 'insertNewTabFromPinnedTabAt',
|
|
value: Constants.kINSERT_NEXT_TO_LAST_RELATED_TAB,
|
|
type: 'radio',
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_insertNewTabFromPinnedTabAt_top'),
|
|
key: 'insertNewTabFromPinnedTabAt',
|
|
value: Constants.kINSERT_TOP,
|
|
type: 'radio',
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_insertNewTabFromPinnedTabAt_end'),
|
|
key: 'insertNewTabFromPinnedTabAt',
|
|
value: Constants.kINSERT_END,
|
|
type: 'radio',
|
|
},
|
|
],
|
|
},
|
|
//{ type: 'separator' },
|
|
{
|
|
title: browser.i18n.getMessage('config_autoGroupNewTabsFromPinned_label'),
|
|
key: 'autoGroupNewTabsFromPinned',
|
|
type: 'checkbox',
|
|
expert: true,
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_groupTabTemporaryStateForChildrenOfPinned_label'),
|
|
expert: true,
|
|
children: [
|
|
{
|
|
title: browser.i18n.getMessage('config_groupTabTemporaryState_option_default'),
|
|
key: 'groupTabTemporaryStateForChildrenOfPinned',
|
|
value: Constants.kGROUP_TAB_TEMPORARY_STATE_NOTHING,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: `${browser.i18n.getMessage('config_groupTabTemporaryState_option_checked_before')}${browser.i18n.getMessage('groupTab_temporary_label')}${browser.i18n.getMessage('config_groupTabTemporaryState_option_checked_after')}`,
|
|
key: 'groupTabTemporaryStateForChildrenOfPinned',
|
|
value: Constants.kGROUP_TAB_TEMPORARY_STATE_PASSIVE,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: `${browser.i18n.getMessage('config_groupTabTemporaryState_option_checked_before')}${browser.i18n.getMessage('groupTab_temporaryAggressive_label')}${browser.i18n.getMessage('config_groupTabTemporaryState_option_checked_after')}`,
|
|
key: 'groupTabTemporaryStateForChildrenOfPinned',
|
|
value: Constants.kGROUP_TAB_TEMPORARY_STATE_AGGRESSIVE,
|
|
type: 'radio'
|
|
}
|
|
]
|
|
},
|
|
]
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_newTab_caption'),
|
|
children: [
|
|
{
|
|
title: browser.i18n.getMessage('config_newTabAction_caption'),
|
|
enabled: false
|
|
},
|
|
{
|
|
title: indent() + browser.i18n.getMessage('config_autoAttachOnNewTabCommand_before'),
|
|
children: [
|
|
{
|
|
title: browser.i18n.getMessage('config_autoAttachOnNewTabCommand_noControl') + delimiter + browser.i18n.getMessage('config_autoAttachOnNewTabCommand_after') + ' ' + browser.i18n.getMessage('config_recommended_choice'),
|
|
key: 'autoAttachOnNewTabCommand',
|
|
value: Constants.kNEWTAB_DO_NOTHING,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_autoAttachOnNewTabCommand_independent') + delimiter + browser.i18n.getMessage('config_autoAttachOnNewTabCommand_after') + ' ' + browser.i18n.getMessage('config_firefoxCompatible_choice'),
|
|
key: 'autoAttachOnNewTabCommand',
|
|
value: Constants.kNEWTAB_OPEN_AS_ORPHAN,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_autoAttachOnNewTabCommand_childTop') + delimiter + browser.i18n.getMessage('config_autoAttachOnNewTabCommand_after'),
|
|
key: 'autoAttachOnNewTabCommand',
|
|
value: Constants.kNEWTAB_OPEN_AS_CHILD_TOP,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_autoAttachOnNewTabCommand_childEnd') + delimiter + browser.i18n.getMessage('config_autoAttachOnNewTabCommand_after'),
|
|
key: 'autoAttachOnNewTabCommand',
|
|
value: Constants.kNEWTAB_OPEN_AS_CHILD_END,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_autoAttachOnNewTabCommand_sibling') + delimiter + browser.i18n.getMessage('config_autoAttachOnNewTabCommand_after'),
|
|
key: 'autoAttachOnNewTabCommand',
|
|
value: Constants.kNEWTAB_OPEN_AS_SIBLING,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_autoAttachOnNewTabCommand_nextSibling') + delimiter + browser.i18n.getMessage('config_autoAttachOnNewTabCommand_after'),
|
|
key: 'autoAttachOnNewTabCommand',
|
|
value: Constants.kNEWTAB_OPEN_AS_NEXT_SIBLING,
|
|
type: 'radio'
|
|
}
|
|
]
|
|
},
|
|
{
|
|
title: indent() + browser.i18n.getMessage('config_inheritContextualIdentityToChildTabMode_label'),
|
|
expert: true,
|
|
children: [
|
|
{
|
|
title: browser.i18n.getMessage('config_inheritContextualIdentityToChildTabMode_default'),
|
|
key: 'inheritContextualIdentityToChildTabMode',
|
|
value: Constants.kCONTEXTUAL_IDENTITY_DEFAULT,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_inheritContextualIdentityToChildTabMode_parent'),
|
|
key: 'inheritContextualIdentityToChildTabMode',
|
|
value: Constants.kCONTEXTUAL_IDENTITY_FROM_PARENT,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_inheritContextualIdentityToChildTabMode_lastActive'),
|
|
key: 'inheritContextualIdentityToChildTabMode',
|
|
value: Constants.kCONTEXTUAL_IDENTITY_FROM_LAST_ACTIVE,
|
|
type: 'radio'
|
|
}
|
|
]
|
|
},
|
|
{ type: 'separator',
|
|
expert: true, },
|
|
{
|
|
title: browser.i18n.getMessage('config_newTabButton_caption'),
|
|
enabled: false,
|
|
expert: true,
|
|
},
|
|
{
|
|
title: indent() + browser.i18n.getMessage('config_autoAttachOnNewTabButtonMiddleClick_before'),
|
|
expert: true,
|
|
children: [
|
|
{
|
|
title: browser.i18n.getMessage('config_autoAttachOnNewTabButtonMiddleClick_noControl') + delimiter + browser.i18n.getMessage('config_autoAttachOnNewTabButtonMiddleClick_after'),
|
|
key: 'autoAttachOnNewTabButtonMiddleClick',
|
|
value: Constants.kNEWTAB_DO_NOTHING,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_autoAttachOnNewTabButtonMiddleClick_independent') + delimiter + browser.i18n.getMessage('config_autoAttachOnNewTabButtonMiddleClick_after'),
|
|
key: 'autoAttachOnNewTabButtonMiddleClick',
|
|
value: Constants.kNEWTAB_OPEN_AS_ORPHAN,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_autoAttachOnNewTabButtonMiddleClick_childTop') + delimiter + browser.i18n.getMessage('config_autoAttachOnNewTabButtonMiddleClick_after'),
|
|
key: 'autoAttachOnNewTabButtonMiddleClick',
|
|
value: Constants.kNEWTAB_OPEN_AS_CHILD_TOP,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_autoAttachOnNewTabButtonMiddleClick_childEnd') + delimiter + browser.i18n.getMessage('config_autoAttachOnNewTabButtonMiddleClick_after'),
|
|
key: 'autoAttachOnNewTabButtonMiddleClick',
|
|
value: Constants.kNEWTAB_OPEN_AS_CHILD_END,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_autoAttachOnNewTabButtonMiddleClick_sibling') + delimiter + browser.i18n.getMessage('config_autoAttachOnNewTabButtonMiddleClick_after'),
|
|
key: 'autoAttachOnNewTabButtonMiddleClick',
|
|
value: Constants.kNEWTAB_OPEN_AS_SIBLING,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_autoAttachOnNewTabButtonMiddleClick_nextSibling') + delimiter + browser.i18n.getMessage('config_autoAttachOnNewTabButtonMiddleClick_after'),
|
|
key: 'autoAttachOnNewTabButtonMiddleClick',
|
|
value: Constants.kNEWTAB_OPEN_AS_NEXT_SIBLING,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_autoAttachOnNewTabButtonMiddleClick_nextSiblingWithInheritedContainer') + delimiter + browser.i18n.getMessage('config_autoAttachOnNewTabButtonMiddleClick_after') + ' ' + browser.i18n.getMessage('config_firefoxCompatible_choice'),
|
|
key: 'autoAttachOnNewTabButtonMiddleClick',
|
|
value: Constants.kNEWTAB_OPEN_AS_NEXT_SIBLING_WITH_INHERITED_CONTAINER,
|
|
type: 'radio'
|
|
}
|
|
],
|
|
},
|
|
{
|
|
title: indent() + browser.i18n.getMessage('config_middleClickPasteURLOnNewTabButton_label'),
|
|
expert: true,
|
|
key: 'middleClickPasteURLOnNewTabButton',
|
|
type: 'checkbox',
|
|
permissions: Permissions.CLIPBOARD_READ,
|
|
},
|
|
{
|
|
title: indent() + browser.i18n.getMessage('config_autoAttachOnNewTabButtonAccelClick_before'),
|
|
expert: true,
|
|
children: [
|
|
{
|
|
title: browser.i18n.getMessage('config_autoAttachOnNewTabButtonAccelClick_noControl') + delimiter + browser.i18n.getMessage('config_autoAttachOnNewTabButtonAccelClick_after'),
|
|
key: 'autoAttachOnNewTabButtonAccelClick',
|
|
value: Constants.kNEWTAB_DO_NOTHING,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_autoAttachOnNewTabButtonAccelClick_independent') + delimiter + browser.i18n.getMessage('config_autoAttachOnNewTabButtonAccelClick_after'),
|
|
key: 'autoAttachOnNewTabButtonAccelClick',
|
|
value: Constants.kNEWTAB_OPEN_AS_ORPHAN,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_autoAttachOnNewTabButtonAccelClick_childTop') + delimiter + browser.i18n.getMessage('config_autoAttachOnNewTabButtonAccelClick_after'),
|
|
key: 'autoAttachOnNewTabButtonAccelClick',
|
|
value: Constants.kNEWTAB_OPEN_AS_CHILD_TOP,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_autoAttachOnNewTabButtonAccelClick_childEnd') + delimiter + browser.i18n.getMessage('config_autoAttachOnNewTabButtonAccelClick_after'),
|
|
key: 'autoAttachOnNewTabButtonAccelClick',
|
|
value: Constants.kNEWTAB_OPEN_AS_CHILD_END,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_autoAttachOnNewTabButtonAccelClick_sibling') + delimiter + browser.i18n.getMessage('config_autoAttachOnNewTabButtonAccelClick_after'),
|
|
key: 'autoAttachOnNewTabButtonAccelClick',
|
|
value: Constants.kNEWTAB_OPEN_AS_SIBLING,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_autoAttachOnNewTabButtonAccelClick_nextSibling') + delimiter + browser.i18n.getMessage('config_autoAttachOnNewTabButtonAccelClick_after'),
|
|
key: 'autoAttachOnNewTabButtonAccelClick',
|
|
value: Constants.kNEWTAB_OPEN_AS_NEXT_SIBLING,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_autoAttachOnNewTabButtonAccelClick_nextSiblingWithInheritedContainer') + delimiter + browser.i18n.getMessage('config_autoAttachOnNewTabButtonAccelClick_after') + ' ' + browser.i18n.getMessage('config_firefoxCompatible_choice'),
|
|
key: 'autoAttachOnNewTabButtonAccelClick',
|
|
value: Constants.kNEWTAB_OPEN_AS_NEXT_SIBLING_WITH_INHERITED_CONTAINER,
|
|
type: 'radio'
|
|
}
|
|
]
|
|
},
|
|
{
|
|
title: indent() + browser.i18n.getMessage('config_longPressOnNewTabButton_before'),
|
|
expert: true,
|
|
children: [
|
|
{
|
|
title: browser.i18n.getMessage('config_longPressOnNewTabButton_newTabAction') + delimiter + browser.i18n.getMessage('config_longPressOnNewTabButton_after'),
|
|
key: 'longPressOnNewTabButton',
|
|
value: 'newtab-action-selector',
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_longPressOnNewTabButton_contextualIdentities') + delimiter + browser.i18n.getMessage('config_longPressOnNewTabButton_after'),
|
|
key: 'longPressOnNewTabButton',
|
|
value: 'contextual-identities-selector',
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_longPressOnNewTabButton_none') + delimiter + browser.i18n.getMessage('config_longPressOnNewTabButton_after'),
|
|
key: 'longPressOnNewTabButton',
|
|
value: '',
|
|
type: 'radio'
|
|
}
|
|
],
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_showNewTabActionSelector_label'),
|
|
key: 'showNewTabActionSelector',
|
|
type: 'checkbox',
|
|
expert: true,
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_showContextualIdentitiesSelector_label'),
|
|
key: 'showContextualIdentitiesSelector',
|
|
type: 'checkbox',
|
|
expert: true,
|
|
},
|
|
{ type: 'separator',
|
|
expert: true, },
|
|
{
|
|
title: browser.i18n.getMessage('config_autoAttachWithURL_caption'),
|
|
enabled: false,
|
|
expert: true,
|
|
},
|
|
{
|
|
title: indent() + browser.i18n.getMessage('config_autoAttachOnDuplicated_before'),
|
|
expert: true,
|
|
children: [
|
|
{
|
|
title: browser.i18n.getMessage('config_autoAttachOnDuplicated_noControl') + delimiter + browser.i18n.getMessage('config_autoAttachOnDuplicated_after'),
|
|
key: 'autoAttachOnDuplicated',
|
|
value: Constants.kNEWTAB_DO_NOTHING,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_autoAttachOnDuplicated_independent') + delimiter + browser.i18n.getMessage('config_autoAttachOnDuplicated_after'),
|
|
key: 'autoAttachOnDuplicated',
|
|
value: Constants.kNEWTAB_OPEN_AS_ORPHAN,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_autoAttachOnDuplicated_childTop') + delimiter + browser.i18n.getMessage('config_autoAttachOnDuplicated_after'),
|
|
key: 'autoAttachOnDuplicated',
|
|
value: Constants.kNEWTAB_OPEN_AS_CHILD_TOP,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_autoAttachOnDuplicated_childEnd') + delimiter + browser.i18n.getMessage('config_autoAttachOnDuplicated_after'),
|
|
key: 'autoAttachOnDuplicated',
|
|
value: Constants.kNEWTAB_OPEN_AS_CHILD_END,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_autoAttachOnDuplicated_sibling') + delimiter + browser.i18n.getMessage('config_autoAttachOnDuplicated_after'),
|
|
key: 'autoAttachOnDuplicated',
|
|
value: Constants.kNEWTAB_OPEN_AS_SIBLING,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_autoAttachOnDuplicated_nextSibling') + delimiter + browser.i18n.getMessage('config_autoAttachOnDuplicated_after') + ' ' + browser.i18n.getMessage('config_recommended_choice'),
|
|
key: 'autoAttachOnDuplicated',
|
|
value: Constants.kNEWTAB_OPEN_AS_NEXT_SIBLING,
|
|
type: 'radio'
|
|
}
|
|
]
|
|
},
|
|
{
|
|
title: indent() + browser.i18n.getMessage('config_sameSiteOrphan_caption'),
|
|
expert: true,
|
|
children: [
|
|
{
|
|
title: browser.i18n.getMessage('config_autoAttachSameSiteOrphan_before') + delimiter + browser.i18n.getMessage('config_autoAttachSameSiteOrphan_noControl') + delimiter + browser.i18n.getMessage('config_autoAttachSameSiteOrphan_after'),
|
|
key: 'autoAttachSameSiteOrphan',
|
|
value: Constants.kNEWTAB_DO_NOTHING,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_autoAttachSameSiteOrphan_before') + delimiter + browser.i18n.getMessage('config_autoAttachSameSiteOrphan_independent') + delimiter + browser.i18n.getMessage('config_autoAttachSameSiteOrphan_after'),
|
|
key: 'autoAttachSameSiteOrphan',
|
|
value: Constants.kNEWTAB_OPEN_AS_ORPHAN,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_autoAttachSameSiteOrphan_before') + delimiter + browser.i18n.getMessage('config_autoAttachSameSiteOrphan_childTop') + delimiter + browser.i18n.getMessage('config_autoAttachSameSiteOrphan_after'),
|
|
key: 'autoAttachSameSiteOrphan',
|
|
value: Constants.kNEWTAB_OPEN_AS_CHILD_TOP,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_autoAttachSameSiteOrphan_before') + delimiter + browser.i18n.getMessage('config_autoAttachSameSiteOrphan_childEnd') + delimiter + browser.i18n.getMessage('config_autoAttachSameSiteOrphan_after') + ' ' + browser.i18n.getMessage('config_recommended_choice'),
|
|
key: 'autoAttachSameSiteOrphan',
|
|
value: Constants.kNEWTAB_OPEN_AS_CHILD_END,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_autoAttachSameSiteOrphan_before') + delimiter + browser.i18n.getMessage('config_autoAttachSameSiteOrphan_sibling') + delimiter + browser.i18n.getMessage('config_autoAttachSameSiteOrphan_after'),
|
|
key: 'autoAttachSameSiteOrphan',
|
|
value: Constants.kNEWTAB_OPEN_AS_SIBLING,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_autoAttachSameSiteOrphan_before') + delimiter + browser.i18n.getMessage('config_autoAttachSameSiteOrphan_nextSibling') + delimiter + browser.i18n.getMessage('config_autoAttachSameSiteOrphan_after'),
|
|
key: 'autoAttachSameSiteOrphan',
|
|
value: Constants.kNEWTAB_OPEN_AS_NEXT_SIBLING,
|
|
type: 'radio'
|
|
},
|
|
{ type: 'separator' },
|
|
{
|
|
title: browser.i18n.getMessage('config_inheritContextualIdentityToSameSiteOrphanMode_label'),
|
|
children: [
|
|
{
|
|
title: browser.i18n.getMessage('config_inheritContextualIdentityToSameSiteOrphanMode_default'),
|
|
key: 'inheritContextualIdentityToSameSiteOrphanMode',
|
|
value: Constants.kCONTEXTUAL_IDENTITY_DEFAULT,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_inheritContextualIdentityToSameSiteOrphanMode_parent'),
|
|
key: 'inheritContextualIdentityToSameSiteOrphanMode',
|
|
value: Constants.kCONTEXTUAL_IDENTITY_FROM_PARENT,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_inheritContextualIdentityToSameSiteOrphanMode_lastActive'),
|
|
key: 'inheritContextualIdentityToSameSiteOrphanMode',
|
|
value: Constants.kCONTEXTUAL_IDENTITY_FROM_LAST_ACTIVE,
|
|
type: 'radio'
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
title: indent() + browser.i18n.getMessage('config_fromExternal_caption'),
|
|
expert: true,
|
|
children: [
|
|
{
|
|
title: browser.i18n.getMessage('config_autoAttachOnOpenedFromExternal_before') + delimiter + browser.i18n.getMessage('config_autoAttachOnOpenedFromExternal_noControl') + delimiter + browser.i18n.getMessage('config_autoAttachOnOpenedFromExternal_after') + ' ' + browser.i18n.getMessage('config_recommended_choice'),
|
|
key: 'autoAttachOnOpenedFromExternal',
|
|
value: Constants.kNEWTAB_DO_NOTHING,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_autoAttachOnOpenedFromExternal_before') + delimiter + browser.i18n.getMessage('config_autoAttachOnOpenedFromExternal_independent') + delimiter + browser.i18n.getMessage('config_autoAttachOnOpenedFromExternal_after'),
|
|
key: 'autoAttachOnOpenedFromExternal',
|
|
value: Constants.kNEWTAB_OPEN_AS_ORPHAN,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_autoAttachOnOpenedFromExternal_before') + delimiter + browser.i18n.getMessage('config_autoAttachOnOpenedFromExternal_childTop') + delimiter + browser.i18n.getMessage('config_autoAttachOnOpenedFromExternal_after'),
|
|
key: 'autoAttachOnOpenedFromExternal',
|
|
value: Constants.kNEWTAB_OPEN_AS_CHILD_TOP,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_autoAttachOnOpenedFromExternal_before') + delimiter + browser.i18n.getMessage('config_autoAttachOnOpenedFromExternal_childEnd') + delimiter + browser.i18n.getMessage('config_autoAttachOnOpenedFromExternal_after'),
|
|
key: 'autoAttachOnOpenedFromExternal',
|
|
value: Constants.kNEWTAB_OPEN_AS_CHILD_END,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_autoAttachOnOpenedFromExternal_before') + delimiter + browser.i18n.getMessage('config_autoAttachOnOpenedFromExternal_sibling') + delimiter + browser.i18n.getMessage('config_autoAttachOnOpenedFromExternal_after'),
|
|
key: 'autoAttachOnOpenedFromExternal',
|
|
value: Constants.kNEWTAB_OPEN_AS_SIBLING,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_autoAttachOnOpenedFromExternal_before') + delimiter + browser.i18n.getMessage('config_autoAttachOnOpenedFromExternal_nextSibling') + delimiter + browser.i18n.getMessage('config_autoAttachOnOpenedFromExternal_after'),
|
|
key: 'autoAttachOnOpenedFromExternal',
|
|
value: Constants.kNEWTAB_OPEN_AS_NEXT_SIBLING,
|
|
type: 'radio'
|
|
},
|
|
{ type: 'separator' },
|
|
{
|
|
title: browser.i18n.getMessage('config_inheritContextualIdentityToTabsFromExternalMode_label'),
|
|
children: [
|
|
{
|
|
title: browser.i18n.getMessage('config_inheritContextualIdentityToTabsFromExternalMode_default'),
|
|
key: 'inheritContextualIdentityToTabsFromExternalMode',
|
|
value: Constants.kCONTEXTUAL_IDENTITY_DEFAULT,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_inheritContextualIdentityToTabsFromExternalMode_parent'),
|
|
key: 'inheritContextualIdentityToTabsFromExternalMode',
|
|
value: Constants.kCONTEXTUAL_IDENTITY_FROM_PARENT,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_inheritContextualIdentityToTabsFromExternalMode_lastActive'),
|
|
key: 'inheritContextualIdentityToTabsFromExternalMode',
|
|
value: Constants.kCONTEXTUAL_IDENTITY_FROM_LAST_ACTIVE,
|
|
type: 'radio'
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{ type: 'separator',
|
|
expert: true, },
|
|
{
|
|
title: indent() + browser.i18n.getMessage('config_anyOtherTrigger_caption'),
|
|
expert: true,
|
|
children: [
|
|
{
|
|
title: browser.i18n.getMessage('config_autoAttachOnAnyOtherTrigger_before') + delimiter + browser.i18n.getMessage('config_autoAttachOnAnyOtherTrigger_noControl') + delimiter + browser.i18n.getMessage('config_autoAttachOnAnyOtherTrigger_after') + ' ' + browser.i18n.getMessage('config_recommended_choice'),
|
|
key: 'autoAttachOnAnyOtherTrigger',
|
|
value: Constants.kNEWTAB_DO_NOTHING,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_autoAttachOnAnyOtherTrigger_before') + delimiter + browser.i18n.getMessage('config_autoAttachOnAnyOtherTrigger_independent') + delimiter + browser.i18n.getMessage('config_autoAttachOnAnyOtherTrigger_after'),
|
|
key: 'autoAttachOnAnyOtherTrigger',
|
|
value: Constants.kNEWTAB_OPEN_AS_ORPHAN,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_autoAttachOnAnyOtherTrigger_before') + delimiter + browser.i18n.getMessage('config_autoAttachOnAnyOtherTrigger_childTop') + delimiter + browser.i18n.getMessage('config_autoAttachOnAnyOtherTrigger_after'),
|
|
key: 'autoAttachOnAnyOtherTrigger',
|
|
value: Constants.kNEWTAB_OPEN_AS_CHILD_TOP,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_autoAttachOnAnyOtherTrigger_before') + delimiter + browser.i18n.getMessage('config_autoAttachOnAnyOtherTrigger_childEnd') + delimiter + browser.i18n.getMessage('config_autoAttachOnAnyOtherTrigger_after'),
|
|
key: 'autoAttachOnAnyOtherTrigger',
|
|
value: Constants.kNEWTAB_OPEN_AS_CHILD_END,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_autoAttachOnAnyOtherTrigger_before') + delimiter + browser.i18n.getMessage('config_autoAttachOnAnyOtherTrigger_sibling') + delimiter + browser.i18n.getMessage('config_autoAttachOnAnyOtherTrigger_after'),
|
|
key: 'autoAttachOnAnyOtherTrigger',
|
|
value: Constants.kNEWTAB_OPEN_AS_SIBLING,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_autoAttachOnAnyOtherTrigger_before') + delimiter + browser.i18n.getMessage('config_autoAttachOnAnyOtherTrigger_nextSibling') + delimiter + browser.i18n.getMessage('config_autoAttachOnAnyOtherTrigger_after'),
|
|
key: 'autoAttachOnAnyOtherTrigger',
|
|
value: Constants.kNEWTAB_OPEN_AS_NEXT_SIBLING,
|
|
type: 'radio'
|
|
},
|
|
{ type: 'separator' },
|
|
{
|
|
title: browser.i18n.getMessage('config_inheritContextualIdentityToTabsFromAnyOtherTriggerMode_label'),
|
|
get enabled() {
|
|
return configs.autoAttachOnAnyOtherTrigger != Constants.kNEWTAB_DO_NOTHING;
|
|
},
|
|
children: [
|
|
{
|
|
title: browser.i18n.getMessage('config_inheritContextualIdentityToTabsFromAnyOtherTriggerMode_default'),
|
|
key: 'inheritContextualIdentityToTabsFromAnyOtherTriggerMode',
|
|
value: Constants.kCONTEXTUAL_IDENTITY_DEFAULT,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_inheritContextualIdentityToTabsFromAnyOtherTriggerMode_parent'),
|
|
key: 'inheritContextualIdentityToTabsFromAnyOtherTriggerMode',
|
|
value: Constants.kCONTEXTUAL_IDENTITY_FROM_PARENT,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_inheritContextualIdentityToTabsFromAnyOtherTriggerMode_lastActive'),
|
|
key: 'inheritContextualIdentityToTabsFromAnyOtherTriggerMode',
|
|
value: Constants.kCONTEXTUAL_IDENTITY_FROM_LAST_ACTIVE,
|
|
type: 'radio'
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{ type: 'separator',
|
|
expert: true, },
|
|
{
|
|
title: browser.i18n.getMessage('config_groupTab_caption'),
|
|
enabled: false,
|
|
expert: true,
|
|
},
|
|
{
|
|
dynamicTitle: true,
|
|
get title() {
|
|
return indent() + browser.i18n.getMessage('config_tabBunchesDetectionTimeout_before') + delimiter + configs.tabBunchesDetectionTimeout + delimiter + browser.i18n.getMessage('config_tabBunchesDetectionTimeout_after');
|
|
},
|
|
enabled: false,
|
|
expert: true,
|
|
},
|
|
{
|
|
title: indent(2) + browser.i18n.getMessage('config_autoGroupNewTabsFromBookmarks_label'),
|
|
key: 'autoGroupNewTabsFromBookmarks',
|
|
type: 'checkbox',
|
|
expert: true
|
|
},
|
|
{
|
|
title: indent(2) + browser.i18n.getMessage('config_restoreTreeForTabsFromBookmarks_label'),
|
|
key: 'restoreTreeForTabsFromBookmarks',
|
|
type: 'checkbox',
|
|
expert: true
|
|
},
|
|
{
|
|
title: indent() + browser.i18n.getMessage('config_autoGroupNewTabsFromOthers_label'),
|
|
key: 'autoGroupNewTabsFromOthers',
|
|
type: 'checkbox',
|
|
expert: true
|
|
},
|
|
{
|
|
title: indent(2) + browser.i18n.getMessage('config_warnOnAutoGroupNewTabs_label'),
|
|
key: 'warnOnAutoGroupNewTabs',
|
|
type: 'checkbox',
|
|
expert: true
|
|
},
|
|
{
|
|
title: indent(4) + browser.i18n.getMessage('config_warnOnAutoGroupNewTabsWithListing_label'),
|
|
key: 'warnOnAutoGroupNewTabsWithListing',
|
|
type: 'checkbox',
|
|
expert: true
|
|
},
|
|
{ type: 'separator',
|
|
expert: true },
|
|
{
|
|
title: indent() + browser.i18n.getMessage('config_renderTreeInGroupTabs_label'),
|
|
key: 'renderTreeInGroupTabs',
|
|
type: 'checkbox',
|
|
expert: true
|
|
},
|
|
{ type: 'separator',
|
|
expert: true },
|
|
{
|
|
title: browser.i18n.getMessage('config_groupTabTemporaryState_caption'),
|
|
enabled: false,
|
|
expert: true
|
|
},
|
|
{
|
|
title: indent() + browser.i18n.getMessage('config_groupTabTemporaryStateForNewTabsFromBookmarks_label'),
|
|
expert: true,
|
|
children: [
|
|
{
|
|
title: browser.i18n.getMessage('config_groupTabTemporaryState_option_default'),
|
|
key: 'groupTabTemporaryStateForNewTabsFromBookmarks',
|
|
value: Constants.kGROUP_TAB_TEMPORARY_STATE_NOTHING,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: `${browser.i18n.getMessage('config_groupTabTemporaryState_option_checked_before')}${browser.i18n.getMessage('groupTab_temporary_label')}${browser.i18n.getMessage('config_groupTabTemporaryState_option_checked_after')}`,
|
|
key: 'groupTabTemporaryStateForNewTabsFromBookmarks',
|
|
value: Constants.kGROUP_TAB_TEMPORARY_STATE_PASSIVE,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: `${browser.i18n.getMessage('config_groupTabTemporaryState_option_checked_before')}${browser.i18n.getMessage('groupTab_temporaryAggressive_label')}${browser.i18n.getMessage('config_groupTabTemporaryState_option_checked_after')}`,
|
|
key: 'groupTabTemporaryStateForNewTabsFromBookmarks',
|
|
value: Constants.kGROUP_TAB_TEMPORARY_STATE_AGGRESSIVE,
|
|
type: 'radio'
|
|
}
|
|
]
|
|
},
|
|
{
|
|
title: indent() + browser.i18n.getMessage('config_groupTabTemporaryStateForNewTabsFromOthers_label'),
|
|
expert: true,
|
|
children: [
|
|
{
|
|
title: browser.i18n.getMessage('config_groupTabTemporaryState_option_default'),
|
|
key: 'groupTabTemporaryStateForNewTabsFromOthers',
|
|
value: Constants.kGROUP_TAB_TEMPORARY_STATE_NOTHING,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: `${browser.i18n.getMessage('config_groupTabTemporaryState_option_checked_before')}${browser.i18n.getMessage('groupTab_temporary_label')}${browser.i18n.getMessage('config_groupTabTemporaryState_option_checked_after')}`,
|
|
key: 'groupTabTemporaryStateForNewTabsFromOthers',
|
|
value: Constants.kGROUP_TAB_TEMPORARY_STATE_PASSIVE,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: `${browser.i18n.getMessage('config_groupTabTemporaryState_option_checked_before')}${browser.i18n.getMessage('groupTab_temporaryAggressive_label')}${browser.i18n.getMessage('config_groupTabTemporaryState_option_checked_after')}`,
|
|
key: 'groupTabTemporaryStateForNewTabsFromOthers',
|
|
value: Constants.kGROUP_TAB_TEMPORARY_STATE_AGGRESSIVE,
|
|
type: 'radio'
|
|
}
|
|
]
|
|
},
|
|
{
|
|
title: indent() + browser.i18n.getMessage('config_groupTabTemporaryStateForOrphanedTabs_label'),
|
|
expert: true,
|
|
children: [
|
|
{
|
|
title: browser.i18n.getMessage('config_groupTabTemporaryState_option_default'),
|
|
key: 'groupTabTemporaryStateForOrphanedTabs',
|
|
value: Constants.kGROUP_TAB_TEMPORARY_STATE_NOTHING,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: `${browser.i18n.getMessage('config_groupTabTemporaryState_option_checked_before')}${browser.i18n.getMessage('groupTab_temporary_label')}${browser.i18n.getMessage('config_groupTabTemporaryState_option_checked_after')}`,
|
|
key: 'groupTabTemporaryStateForOrphanedTabs',
|
|
value: Constants.kGROUP_TAB_TEMPORARY_STATE_PASSIVE,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: `${browser.i18n.getMessage('config_groupTabTemporaryState_option_checked_before')}${browser.i18n.getMessage('groupTab_temporaryAggressive_label')}${browser.i18n.getMessage('config_groupTabTemporaryState_option_checked_after')}`,
|
|
key: 'groupTabTemporaryStateForOrphanedTabs',
|
|
value: Constants.kGROUP_TAB_TEMPORARY_STATE_AGGRESSIVE,
|
|
type: 'radio'
|
|
}
|
|
]
|
|
},
|
|
{
|
|
title: indent() + browser.i18n.getMessage('config_groupTabTemporaryStateForAPI_label'),
|
|
expert: true,
|
|
children: [
|
|
{
|
|
title: browser.i18n.getMessage('config_groupTabTemporaryState_option_default'),
|
|
key: 'groupTabTemporaryStateForAPI',
|
|
value: Constants.kGROUP_TAB_TEMPORARY_STATE_NOTHING,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: `${browser.i18n.getMessage('config_groupTabTemporaryState_option_checked_before')}${browser.i18n.getMessage('groupTab_temporary_label')}${browser.i18n.getMessage('config_groupTabTemporaryState_option_checked_after')}`,
|
|
key: 'groupTabTemporaryStateForAPI',
|
|
value: Constants.kGROUP_TAB_TEMPORARY_STATE_PASSIVE,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: `${browser.i18n.getMessage('config_groupTabTemporaryState_option_checked_before')}${browser.i18n.getMessage('groupTab_temporaryAggressive_label')}${browser.i18n.getMessage('config_groupTabTemporaryState_option_checked_after')}`,
|
|
key: 'groupTabTemporaryStateForAPI',
|
|
value: Constants.kGROUP_TAB_TEMPORARY_STATE_AGGRESSIVE,
|
|
type: 'radio'
|
|
},
|
|
],
|
|
},
|
|
],
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_treeBehavior_caption'),
|
|
children: [
|
|
{
|
|
title: browser.i18n.getMessage('config_autoCollapseExpandSubtreeOnAttach_label'),
|
|
key: 'autoCollapseExpandSubtreeOnAttach',
|
|
type: 'checkbox',
|
|
expert: true,
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_autoCollapseExpandSubtreeOnSelect_label'),
|
|
key: 'autoCollapseExpandSubtreeOnSelect',
|
|
type: 'checkbox',
|
|
expert: true,
|
|
},
|
|
{
|
|
title: indent() + browser.i18n.getMessage('config_autoCollapseExpandSubtreeOnSelectExceptActiveTabRemove_label'),
|
|
key: 'autoCollapseExpandSubtreeOnSelectExceptActiveTabRemove',
|
|
type: 'checkbox',
|
|
expert: true
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_unfocusableCollapsedTab_label'),
|
|
key: 'unfocusableCollapsedTab',
|
|
type: 'checkbox',
|
|
expert: true
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_autoDiscardTabForUnexpectedFocus_label'),
|
|
key: 'autoDiscardTabForUnexpectedFocus',
|
|
type: 'checkbox',
|
|
expert: true
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_avoidDiscardedTabToBeActivatedIfPossible_label'),
|
|
key: 'avoidDiscardedTabToBeActivatedIfPossible',
|
|
type: 'checkbox',
|
|
expert: true,
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_requestPermissions_allUrls_ctrlTabTracking'),
|
|
key: 'skipCollapsedTabsForTabSwitchingShortcuts',
|
|
type: 'checkbox',
|
|
permissions: Permissions.ALL_URLS,
|
|
get canRevoke() {
|
|
return !configs.tabPreviewTooltip && !configs.skipCollapsedTabsForTabSwitchingShortcuts;
|
|
},
|
|
},
|
|
{
|
|
dynamicTitle: true,
|
|
get title() {
|
|
return indent() + browser.i18n.getMessage('config_autoExpandOnTabSwitchingShortcutsDelay_before') + delimiter + configs.autoExpandOnTabSwitchingShortcutsDelay + delimiter + browser.i18n.getMessage('config_autoExpandOnTabSwitchingShortcutsDelay_after');
|
|
},
|
|
key: 'autoExpandOnTabSwitchingShortcuts',
|
|
type: 'checkbox',
|
|
expert: true
|
|
},
|
|
{
|
|
title: indent() + browser.i18n.getMessage('config_accelKey_label'),
|
|
enabled: false,
|
|
expert: true
|
|
},
|
|
{
|
|
title: indent(2) + browser.i18n.getMessage('config_accelKey_auto'),
|
|
key: 'accelKey',
|
|
value: '',
|
|
type: 'radio',
|
|
expert: true,
|
|
},
|
|
{
|
|
title: indent(2) + browser.i18n.getMessage('config_accelKey_alt'),
|
|
key: 'accelKey',
|
|
value: 'alt',
|
|
type: 'radio',
|
|
expert: true,
|
|
},
|
|
{
|
|
title: indent(2) + browser.i18n.getMessage('config_accelKey_control'),
|
|
key: 'accelKey',
|
|
value: 'control',
|
|
type: 'radio',
|
|
expert: true,
|
|
},
|
|
{
|
|
title: indent(2) + browser.i18n.getMessage('config_accelKey_meta'),
|
|
key: 'accelKey',
|
|
value: 'meta',
|
|
type: 'radio',
|
|
expert: true,
|
|
},
|
|
{ type: 'separator', expert: true },
|
|
{
|
|
title: browser.i18n.getMessage('config_treeDoubleClickBehavior_caption'),
|
|
expert: true,
|
|
children: [
|
|
{
|
|
title: browser.i18n.getMessage('config_treeDoubleClickBehavior_toggleCollapsed'),
|
|
key: 'treeDoubleClickBehavior',
|
|
value: Constants.kTREE_DOUBLE_CLICK_BEHAVIOR_TOGGLE_COLLAPSED,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_treeDoubleClickBehavior_toggleSticky'),
|
|
key: 'treeDoubleClickBehavior',
|
|
value: Constants.kTREE_DOUBLE_CLICK_BEHAVIOR_TOGGLE_STICKY,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: `${browser.i18n.getMessage('config_treeDoubleClickBehavior_close')}${browser.i18n.getMessage('config_treeDoubleClickBehavior_close_note')}`,
|
|
key: 'treeDoubleClickBehavior',
|
|
value: Constants.kTREE_DOUBLE_CLICK_BEHAVIOR_CLOSE,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_treeDoubleClickBehavior_none'),
|
|
key: 'treeDoubleClickBehavior',
|
|
value: Constants.kTREE_DOUBLE_CLICK_BEHAVIOR_NONE,
|
|
type: 'radio'
|
|
}
|
|
]
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_successorTabControlLevel_caption'),
|
|
expert: true,
|
|
children: [
|
|
{
|
|
title: browser.i18n.getMessage('config_successorTabControlLevel_inTree'),
|
|
key: 'successorTabControlLevel',
|
|
value: Constants.kSUCCESSOR_TAB_CONTROL_IN_TREE,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_successorTabControlLevel_simulateDefault'),
|
|
key: 'successorTabControlLevel',
|
|
value: Constants.kSUCCESSOR_TAB_CONTROL_SIMULATE_DEFAULT,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_successorTabControlLevel_never'),
|
|
key: 'successorTabControlLevel',
|
|
value: Constants.kSUCCESSOR_TAB_CONTROL_NEVER,
|
|
type: 'radio'
|
|
}
|
|
]
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_simulateSelectOwnerOnClose_label'),
|
|
key: 'simulateSelectOwnerOnClose',
|
|
type: 'checkbox',
|
|
get visible() {
|
|
return typeof browser.tabs.moveInSuccession == 'function';
|
|
},
|
|
expert: true,
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_parentTabOperationBehaviorMode_caption'),
|
|
children: [
|
|
{
|
|
title: browser.i18n.getMessage('config_parentTabOperationBehaviorMode_parallel'),
|
|
key: 'parentTabOperationBehaviorMode',
|
|
value: Constants.kPARENT_TAB_OPERATION_BEHAVIOR_MODE_PARALLEL,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: indent() + browser.i18n.getMessage('config_closeParentBehavior_insideSidebar'),
|
|
expert: true,
|
|
children: [
|
|
{
|
|
title: browser.i18n.getMessage('config_parentTabOperationBehavior_replaceWithGroupTab'),
|
|
key: 'closeParentBehavior_insideSidebar_expanded',
|
|
value: Constants.kPARENT_TAB_OPERATION_BEHAVIOR_REPLACE_WITH_GROUP_TAB,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_parentTabOperationBehavior_promoteFirst'),
|
|
key: 'closeParentBehavior_insideSidebar_expanded',
|
|
value: Constants.kPARENT_TAB_OPERATION_BEHAVIOR_PROMOTE_FIRST_CHILD,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_parentTabOperationBehavior_promoteAll'),
|
|
key: 'closeParentBehavior_insideSidebar_expanded',
|
|
value: Constants.kPARENT_TAB_OPERATION_BEHAVIOR_PROMOTE_ALL_CHILDREN,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_parentTabOperationBehavior_promoteIntelligently'),
|
|
key: 'closeParentBehavior_insideSidebar_expanded',
|
|
value: Constants.kPARENT_TAB_OPERATION_BEHAVIOR_PROMOTE_INTELLIGENTLY,
|
|
type: 'radio'
|
|
}
|
|
]
|
|
},
|
|
{
|
|
title: indent() + browser.i18n.getMessage('config_closeParentBehavior_outsideSidebar'),
|
|
expert: true,
|
|
children: [
|
|
{
|
|
title: browser.i18n.getMessage('config_parentTabOperationBehavior_replaceWithGroupTab'),
|
|
key: 'closeParentBehavior_outsideSidebar_expanded',
|
|
value: Constants.kPARENT_TAB_OPERATION_BEHAVIOR_REPLACE_WITH_GROUP_TAB,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_parentTabOperationBehavior_promoteFirst'),
|
|
key: 'closeParentBehavior_outsideSidebar_expanded',
|
|
value: Constants.kPARENT_TAB_OPERATION_BEHAVIOR_PROMOTE_FIRST_CHILD,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_parentTabOperationBehavior_promoteAll'),
|
|
key: 'closeParentBehavior_outsideSidebar_expanded',
|
|
value: Constants.kPARENT_TAB_OPERATION_BEHAVIOR_PROMOTE_ALL_CHILDREN,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_parentTabOperationBehavior_promoteIntelligently'),
|
|
key: 'closeParentBehavior_outsideSidebar_expanded',
|
|
value: Constants.kPARENT_TAB_OPERATION_BEHAVIOR_PROMOTE_INTELLIGENTLY,
|
|
type: 'radio'
|
|
}
|
|
]
|
|
},
|
|
{ type: 'separator',
|
|
expert: true, },
|
|
{
|
|
title: browser.i18n.getMessage('config_parentTabOperationBehaviorMode_consistent'),
|
|
key: 'parentTabOperationBehaviorMode',
|
|
value: Constants.kPARENT_TAB_OPERATION_BEHAVIOR_MODE_CONSISTENT,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: indent() + browser.i18n.getMessage('config_parentTabOperationBehaviorMode_consistent_caption'),
|
|
expert: true,
|
|
children: [
|
|
{
|
|
title: browser.i18n.getMessage('config_parentTabOperationBehavior_replaceWithGroupTab'),
|
|
key: 'closeParentBehavior_insideSidebar_expanded',
|
|
value: Constants.kPARENT_TAB_OPERATION_BEHAVIOR_REPLACE_WITH_GROUP_TAB,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_parentTabOperationBehavior_promoteFirst'),
|
|
key: 'closeParentBehavior_insideSidebar_expanded',
|
|
value: Constants.kPARENT_TAB_OPERATION_BEHAVIOR_PROMOTE_FIRST_CHILD,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_parentTabOperationBehavior_promoteAll'),
|
|
key: 'closeParentBehavior_insideSidebar_expanded',
|
|
value: Constants.kPARENT_TAB_OPERATION_BEHAVIOR_PROMOTE_ALL_CHILDREN,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_parentTabOperationBehavior_promoteIntelligently'),
|
|
key: 'closeParentBehavior_insideSidebar_expanded',
|
|
value: Constants.kPARENT_TAB_OPERATION_BEHAVIOR_PROMOTE_INTELLIGENTLY,
|
|
type: 'radio'
|
|
}
|
|
]
|
|
},
|
|
{ type: 'separator',
|
|
expert: true, },
|
|
{
|
|
title: browser.i18n.getMessage('config_parentTabOperationBehaviorMode_custom'),
|
|
key: 'parentTabOperationBehaviorMode',
|
|
value: Constants.kPARENT_TAB_OPERATION_BEHAVIOR_MODE_CUSTOM,
|
|
type: 'radio',
|
|
expert: true,
|
|
},
|
|
{
|
|
title: indent() + browser.i18n.getMessage('config_closeParentBehavior_insideSidebar_expanded_caption'),
|
|
expert: true,
|
|
children: [
|
|
{
|
|
title: browser.i18n.getMessage('config_closeParentBehavior_entireTree'),
|
|
key: 'closeParentBehavior_insideSidebar_expanded',
|
|
value: Constants.kPARENT_TAB_OPERATION_BEHAVIOR_ENTIRE_TREE,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_closeParentBehavior_replaceWithGroupTab'),
|
|
key: 'closeParentBehavior_insideSidebar_expanded',
|
|
value: Constants.kPARENT_TAB_OPERATION_BEHAVIOR_REPLACE_WITH_GROUP_TAB,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_closeParentBehavior_promoteFirst'),
|
|
key: 'closeParentBehavior_insideSidebar_expanded',
|
|
value: Constants.kPARENT_TAB_OPERATION_BEHAVIOR_PROMOTE_FIRST_CHILD,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_closeParentBehavior_promoteAll'),
|
|
key: 'closeParentBehavior_insideSidebar_expanded',
|
|
value: Constants.kPARENT_TAB_OPERATION_BEHAVIOR_PROMOTE_ALL_CHILDREN,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_closeParentBehavior_promoteIntelligently'),
|
|
key: 'closeParentBehavior_insideSidebar_expanded',
|
|
value: Constants.kPARENT_TAB_OPERATION_BEHAVIOR_PROMOTE_INTELLIGENTLY,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_closeParentBehavior_detach'),
|
|
key: 'closeParentBehavior_insideSidebar_expanded',
|
|
value: Constants.kPARENT_TAB_OPERATION_BEHAVIOR_DETACH_ALL_CHILDREN,
|
|
type: 'radio'
|
|
}
|
|
]
|
|
},
|
|
{
|
|
title: indent() + browser.i18n.getMessage('config_closeParentBehavior_outsideSidebar_collapsed_caption'),
|
|
expert: true,
|
|
children: [
|
|
{
|
|
title: browser.i18n.getMessage('config_closeParentBehavior_entireTree'),
|
|
key: 'closeParentBehavior_outsideSidebar_collapsed',
|
|
value: Constants.kPARENT_TAB_OPERATION_BEHAVIOR_ENTIRE_TREE,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_closeParentBehavior_replaceWithGroupTab'),
|
|
key: 'closeParentBehavior_outsideSidebar_collapsed',
|
|
value: Constants.kPARENT_TAB_OPERATION_BEHAVIOR_REPLACE_WITH_GROUP_TAB,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_closeParentBehavior_promoteFirst'),
|
|
key: 'closeParentBehavior_outsideSidebar_collapsed',
|
|
value: Constants.kPARENT_TAB_OPERATION_BEHAVIOR_PROMOTE_FIRST_CHILD,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_closeParentBehavior_promoteAll'),
|
|
key: 'closeParentBehavior_outsideSidebar_collapsed',
|
|
value: Constants.kPARENT_TAB_OPERATION_BEHAVIOR_PROMOTE_ALL_CHILDREN,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_closeParentBehavior_promoteIntelligently'),
|
|
key: 'closeParentBehavior_outsideSidebar_collapsed',
|
|
value: Constants.kPARENT_TAB_OPERATION_BEHAVIOR_PROMOTE_INTELLIGENTLY,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_closeParentBehavior_detach'),
|
|
key: 'closeParentBehavior_outsideSidebar_collapsed',
|
|
value: Constants.kPARENT_TAB_OPERATION_BEHAVIOR_DETACH_ALL_CHILDREN,
|
|
type: 'radio'
|
|
}
|
|
]
|
|
},
|
|
{
|
|
title: indent(2) + browser.i18n.getMessage('config_closeParentBehavior_noSidebar_collapsed_caption'),
|
|
expert: true,
|
|
children: [
|
|
{
|
|
title: browser.i18n.getMessage('config_closeParentBehavior_entireTree'),
|
|
key: 'closeParentBehavior_noSidebar_collapsed',
|
|
value: Constants.kPARENT_TAB_OPERATION_BEHAVIOR_ENTIRE_TREE,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_closeParentBehavior_replaceWithGroupTab'),
|
|
key: 'closeParentBehavior_noSidebar_collapsed',
|
|
value: Constants.kPARENT_TAB_OPERATION_BEHAVIOR_REPLACE_WITH_GROUP_TAB,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_closeParentBehavior_promoteFirst'),
|
|
key: 'closeParentBehavior_noSidebar_collapsed',
|
|
value: Constants.kPARENT_TAB_OPERATION_BEHAVIOR_PROMOTE_FIRST_CHILD,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_closeParentBehavior_promoteAll'),
|
|
key: 'closeParentBehavior_noSidebar_collapsed',
|
|
value: Constants.kPARENT_TAB_OPERATION_BEHAVIOR_PROMOTE_ALL_CHILDREN,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_closeParentBehavior_promoteIntelligently'),
|
|
key: 'closeParentBehavior_noSidebar_collapsed',
|
|
value: Constants.kPARENT_TAB_OPERATION_BEHAVIOR_PROMOTE_INTELLIGENTLY,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_closeParentBehavior_detach'),
|
|
key: 'closeParentBehavior_noSidebar_collapsed',
|
|
value: Constants.kPARENT_TAB_OPERATION_BEHAVIOR_DETACH_ALL_CHILDREN,
|
|
type: 'radio'
|
|
}
|
|
]
|
|
},
|
|
{
|
|
title: indent() + browser.i18n.getMessage('config_closeParentBehavior_outsideSidebar_expanded_caption'),
|
|
expert: true,
|
|
children: [
|
|
{
|
|
title: browser.i18n.getMessage('config_closeParentBehavior_entireTree'),
|
|
key: 'closeParentBehavior_outsideSidebar_expanded',
|
|
value: Constants.kPARENT_TAB_OPERATION_BEHAVIOR_ENTIRE_TREE,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_closeParentBehavior_replaceWithGroupTab'),
|
|
key: 'closeParentBehavior_outsideSidebar_expanded',
|
|
value: Constants.kPARENT_TAB_OPERATION_BEHAVIOR_REPLACE_WITH_GROUP_TAB,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_closeParentBehavior_promoteFirst'),
|
|
key: 'closeParentBehavior_outsideSidebar_expanded',
|
|
value: Constants.kPARENT_TAB_OPERATION_BEHAVIOR_PROMOTE_FIRST_CHILD,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_closeParentBehavior_promoteAll'),
|
|
key: 'closeParentBehavior_outsideSidebar_expanded',
|
|
value: Constants.kPARENT_TAB_OPERATION_BEHAVIOR_PROMOTE_ALL_CHILDREN,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_closeParentBehavior_promoteIntelligently'),
|
|
key: 'closeParentBehavior_outsideSidebar_expanded',
|
|
value: Constants.kPARENT_TAB_OPERATION_BEHAVIOR_PROMOTE_INTELLIGENTLY,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_closeParentBehavior_detach'),
|
|
key: 'closeParentBehavior_outsideSidebar_expanded',
|
|
value: Constants.kPARENT_TAB_OPERATION_BEHAVIOR_DETACH_ALL_CHILDREN,
|
|
type: 'radio'
|
|
}
|
|
]
|
|
},
|
|
{
|
|
title: indent(2) + browser.i18n.getMessage('config_closeParentBehavior_noSidebar_expanded_caption'),
|
|
expert: true,
|
|
children: [
|
|
{
|
|
title: browser.i18n.getMessage('config_closeParentBehavior_entireTree'),
|
|
key: 'closeParentBehavior_noSidebar_expanded',
|
|
value: Constants.kPARENT_TAB_OPERATION_BEHAVIOR_ENTIRE_TREE,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_closeParentBehavior_replaceWithGroupTab'),
|
|
key: 'closeParentBehavior_noSidebar_expanded',
|
|
value: Constants.kPARENT_TAB_OPERATION_BEHAVIOR_REPLACE_WITH_GROUP_TAB,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_closeParentBehavior_promoteFirst'),
|
|
key: 'closeParentBehavior_noSidebar_expanded',
|
|
value: Constants.kPARENT_TAB_OPERATION_BEHAVIOR_PROMOTE_FIRST_CHILD,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_closeParentBehavior_promoteAll'),
|
|
key: 'closeParentBehavior_noSidebar_expanded',
|
|
value: Constants.kPARENT_TAB_OPERATION_BEHAVIOR_PROMOTE_ALL_CHILDREN,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_closeParentBehavior_promoteIntelligently'),
|
|
key: 'closeParentBehavior_noSidebar_expanded',
|
|
value: Constants.kPARENT_TAB_OPERATION_BEHAVIOR_PROMOTE_INTELLIGENTLY,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_closeParentBehavior_detach'),
|
|
key: 'closeParentBehavior_noSidebar_expanded',
|
|
value: Constants.kPARENT_TAB_OPERATION_BEHAVIOR_DETACH_ALL_CHILDREN,
|
|
type: 'radio'
|
|
}
|
|
]
|
|
},
|
|
{
|
|
title: indent() + browser.i18n.getMessage('config_moveParentBehavior_outsideSidebar_collapsed_caption'),
|
|
expert: true,
|
|
children: [
|
|
{
|
|
title: browser.i18n.getMessage('config_moveParentBehavior_entireTree'),
|
|
key: 'moveParentBehavior_outsideSidebar_collapsed',
|
|
value: Constants.kPARENT_TAB_OPERATION_BEHAVIOR_ENTIRE_TREE,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_moveParentBehavior_replaceWithGroupTab'),
|
|
key: 'moveParentBehavior_outsideSidebar_collapsed',
|
|
value: Constants.kPARENT_TAB_OPERATION_BEHAVIOR_REPLACE_WITH_GROUP_TAB,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_moveParentBehavior_promoteFirst'),
|
|
key: 'moveParentBehavior_outsideSidebar_collapsed',
|
|
value: Constants.kPARENT_TAB_OPERATION_BEHAVIOR_PROMOTE_FIRST_CHILD,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_moveParentBehavior_promoteAll'),
|
|
key: 'moveParentBehavior_outsideSidebar_collapsed',
|
|
value: Constants.kPARENT_TAB_OPERATION_BEHAVIOR_PROMOTE_ALL_CHILDREN,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_moveParentBehavior_promoteIntelligently'),
|
|
key: 'moveParentBehavior_outsideSidebar_collapsed',
|
|
value: Constants.kPARENT_TAB_OPERATION_BEHAVIOR_PROMOTE_INTELLIGENTLY,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_moveParentBehavior_detach'),
|
|
key: 'moveParentBehavior_outsideSidebar_collapsed',
|
|
value: Constants.kPARENT_TAB_OPERATION_BEHAVIOR_DETACH_ALL_CHILDREN,
|
|
type: 'radio'
|
|
}
|
|
]
|
|
},
|
|
{
|
|
title: indent(2) + browser.i18n.getMessage('config_moveParentBehavior_noSidebar_collapsed_caption'),
|
|
expert: true,
|
|
children: [
|
|
{
|
|
title: browser.i18n.getMessage('config_moveParentBehavior_entireTree'),
|
|
key: 'moveParentBehavior_noSidebar_collapsed',
|
|
value: Constants.kPARENT_TAB_OPERATION_BEHAVIOR_ENTIRE_TREE,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_moveParentBehavior_replaceWithGroupTab'),
|
|
key: 'moveParentBehavior_noSidebar_collapsed',
|
|
value: Constants.kPARENT_TAB_OPERATION_BEHAVIOR_REPLACE_WITH_GROUP_TAB,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_moveParentBehavior_promoteFirst'),
|
|
key: 'moveParentBehavior_noSidebar_collapsed',
|
|
value: Constants.kPARENT_TAB_OPERATION_BEHAVIOR_PROMOTE_FIRST_CHILD,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_moveParentBehavior_promoteAll'),
|
|
key: 'moveParentBehavior_noSidebar_collapsed',
|
|
value: Constants.kPARENT_TAB_OPERATION_BEHAVIOR_PROMOTE_ALL_CHILDREN,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_moveParentBehavior_promoteIntelligently'),
|
|
key: 'moveParentBehavior_noSidebar_collapsed',
|
|
value: Constants.kPARENT_TAB_OPERATION_BEHAVIOR_PROMOTE_INTELLIGENTLY,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_moveParentBehavior_detach'),
|
|
key: 'moveParentBehavior_noSidebar_collapsed',
|
|
value: Constants.kPARENT_TAB_OPERATION_BEHAVIOR_DETACH_ALL_CHILDREN,
|
|
type: 'radio'
|
|
}
|
|
]
|
|
},
|
|
{
|
|
title: indent() + browser.i18n.getMessage('config_moveParentBehavior_outsideSidebar_expanded_caption'),
|
|
expert: true,
|
|
children: [
|
|
{
|
|
title: browser.i18n.getMessage('config_moveParentBehavior_entireTree'),
|
|
key: 'moveParentBehavior_outsideSidebar_expanded',
|
|
value: Constants.kPARENT_TAB_OPERATION_BEHAVIOR_ENTIRE_TREE,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_moveParentBehavior_replaceWithGroupTab'),
|
|
key: 'moveParentBehavior_outsideSidebar_expanded',
|
|
value: Constants.kPARENT_TAB_OPERATION_BEHAVIOR_REPLACE_WITH_GROUP_TAB,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_moveParentBehavior_promoteFirst'),
|
|
key: 'moveParentBehavior_outsideSidebar_expanded',
|
|
value: Constants.kPARENT_TAB_OPERATION_BEHAVIOR_PROMOTE_FIRST_CHILD,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_moveParentBehavior_promoteAll'),
|
|
key: 'moveParentBehavior_outsideSidebar_expanded',
|
|
value: Constants.kPARENT_TAB_OPERATION_BEHAVIOR_PROMOTE_ALL_CHILDREN,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_moveParentBehavior_promoteIntelligently'),
|
|
key: 'moveParentBehavior_outsideSidebar_expanded',
|
|
value: Constants.kPARENT_TAB_OPERATION_BEHAVIOR_PROMOTE_INTELLIGENTLY,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_moveParentBehavior_detach'),
|
|
key: 'moveParentBehavior_outsideSidebar_expanded',
|
|
value: Constants.kPARENT_TAB_OPERATION_BEHAVIOR_DETACH_ALL_CHILDREN,
|
|
type: 'radio'
|
|
}
|
|
]
|
|
},
|
|
{
|
|
title: indent(2) + browser.i18n.getMessage('config_moveParentBehavior_noSidebar_expanded_caption'),
|
|
expert: true,
|
|
children: [
|
|
{
|
|
title: browser.i18n.getMessage('config_moveParentBehavior_entireTree'),
|
|
key: 'moveParentBehavior_noSidebar_expanded',
|
|
value: Constants.kPARENT_TAB_OPERATION_BEHAVIOR_ENTIRE_TREE,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_moveParentBehavior_replaceWithGroupTab'),
|
|
key: 'moveParentBehavior_noSidebar_expanded',
|
|
value: Constants.kPARENT_TAB_OPERATION_BEHAVIOR_REPLACE_WITH_GROUP_TAB,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_moveParentBehavior_promoteFirst'),
|
|
key: 'moveParentBehavior_noSidebar_expanded',
|
|
value: Constants.kPARENT_TAB_OPERATION_BEHAVIOR_PROMOTE_FIRST_CHILD,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_moveParentBehavior_promoteAll'),
|
|
key: 'moveParentBehavior_noSidebar_expanded',
|
|
value: Constants.kPARENT_TAB_OPERATION_BEHAVIOR_PROMOTE_ALL_CHILDREN,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_moveParentBehavior_promoteIntelligently'),
|
|
key: 'moveParentBehavior_noSidebar_expanded',
|
|
value: Constants.kPARENT_TAB_OPERATION_BEHAVIOR_PROMOTE_INTELLIGENTLY,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_moveParentBehavior_detach'),
|
|
key: 'moveParentBehavior_noSidebar_expanded',
|
|
value: Constants.kPARENT_TAB_OPERATION_BEHAVIOR_DETACH_ALL_CHILDREN,
|
|
type: 'radio'
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_fixupTreeOnTabVisibilityChanged_caption'),
|
|
children: [
|
|
{
|
|
title: browser.i18n.getMessage('config_fixupTreeOnTabVisibilityChanged_fix'),
|
|
key: 'fixupTreeOnTabVisibilityChanged',
|
|
value: true,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_fixupTreeOnTabVisibilityChanged_keep'),
|
|
key: 'fixupTreeOnTabVisibilityChanged',
|
|
value: false,
|
|
type: 'radio'
|
|
}
|
|
]
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_insertNewChildAt_caption'),
|
|
expert: true,
|
|
children: [
|
|
{
|
|
title: browser.i18n.getMessage('config_insertNewChildAt_noControl'),
|
|
key: 'insertNewChildAt',
|
|
value: Constants.kINSERT_NO_CONTROL,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_insertNewChildAt_nextToLastRelatedTab'),
|
|
key: 'insertNewChildAt',
|
|
value: Constants.kINSERT_NEXT_TO_LAST_RELATED_TAB,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_insertNewChildAt_top'),
|
|
key: 'insertNewChildAt',
|
|
value: Constants.kINSERT_TOP,
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_insertNewChildAt_end'),
|
|
key: 'insertNewChildAt',
|
|
value: Constants.kINSERT_END,
|
|
type: 'radio'
|
|
}
|
|
]
|
|
},
|
|
]
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_more_caption'),
|
|
children: [
|
|
{
|
|
title: browser.i18n.getMessage('config_drag_caption'),
|
|
enabled: false,
|
|
},
|
|
//{ type: 'separator' },
|
|
{
|
|
title: indent() + browser.i18n.getMessage('config_tabDragBehavior_caption'),
|
|
enabled: false,
|
|
},
|
|
// These options are too complex to put in the menu UI, so I simply redirect to the options page.
|
|
{
|
|
title: indent(2) + browser.i18n.getMessage('config_tabDragBehavior_label') + '...',
|
|
url: `${Constants.kSHORTHAND_URIS.options}#tabDragBehaviorConfigsGroup`,
|
|
},
|
|
{
|
|
title: indent(2) + browser.i18n.getMessage('config_tabDragBehaviorShift_label') + '...',
|
|
url: `${Constants.kSHORTHAND_URIS.options}#tabDragBehaviorConfigsGroup`,
|
|
},
|
|
{
|
|
title: indent(2) + browser.i18n.getMessage('config_showTabDragBehaviorNotification_label'),
|
|
key: 'showTabDragBehaviorNotification',
|
|
type: 'checkbox',
|
|
expert: true,
|
|
},
|
|
//{ type: 'separator' },
|
|
{
|
|
title: indent() + browser.i18n.getMessage('config_dropLinksOnTabBehavior_caption'),
|
|
enabled: false,
|
|
expert: true,
|
|
},
|
|
{
|
|
title: indent(2) + browser.i18n.getMessage('config_dropLinksOnTabBehavior_ask'),
|
|
key: 'dropLinksOnTabBehavior',
|
|
value: Constants.kDROPLINK_ASK,
|
|
type: 'radio',
|
|
expert: true,
|
|
},
|
|
{
|
|
title: indent(2) + browser.i18n.getMessage('config_dropLinksOnTabBehavior_load'),
|
|
key: 'dropLinksOnTabBehavior',
|
|
value: Constants.kDROPLINK_LOAD,
|
|
type: 'radio',
|
|
expert: true,
|
|
},
|
|
{
|
|
title: indent(2) + browser.i18n.getMessage('config_dropLinksOnTabBehavior_newtab'),
|
|
key: 'dropLinksOnTabBehavior',
|
|
value: Constants.kDROPLINK_NEWTAB,
|
|
type: 'radio',
|
|
expert: true,
|
|
},
|
|
{
|
|
title: indent() + browser.i18n.getMessage('config_simulateTabsLoadInBackgroundInverted_label'),
|
|
type: 'checkbox',
|
|
key: 'simulateTabsLoadInBackgroundInverted',
|
|
expert: true,
|
|
},
|
|
{
|
|
title: indent(2) + browser.i18n.getMessage('config_tabsLoadInBackgroundDiscarded_label'),
|
|
type: 'checkbox',
|
|
key: 'tabsLoadInBackgroundDiscarded',
|
|
expert: true,
|
|
},
|
|
//{ type: 'separator', expert: true },
|
|
{
|
|
title: indent() + browser.i18n.getMessage('config_insertDroppedTabsAt_caption'),
|
|
enabled: false,
|
|
expert: true,
|
|
},
|
|
{
|
|
title: indent(2) + browser.i18n.getMessage('config_insertDroppedTabsAt_inherit'),
|
|
key: 'insertDroppedTabsAt',
|
|
value: Constants.kINSERT_INHERIT,
|
|
type: 'radio',
|
|
expert: true,
|
|
},
|
|
{
|
|
title: indent(2) + browser.i18n.getMessage('config_insertDroppedTabsAt_first'),
|
|
key: 'insertDroppedTabsAt',
|
|
value: Constants.kINSERT_TOP,
|
|
type: 'radio',
|
|
expert: true,
|
|
},
|
|
{
|
|
title: indent(2) + browser.i18n.getMessage('config_insertDroppedTabsAt_end'),
|
|
key: 'insertDroppedTabsAt',
|
|
value: Constants.kINSERT_END,
|
|
type: 'radio',
|
|
expert: true,
|
|
},
|
|
//{ type: 'separator', expert: true },
|
|
{
|
|
dynamicTitle: true,
|
|
get title() {
|
|
return indent() + browser.i18n.getMessage('config_autoExpandOnLongHoverDelay_before') + delimiter + configs.autoExpandOnLongHoverDelay + delimiter + browser.i18n.getMessage('config_autoExpandOnLongHoverDelay_after');
|
|
},
|
|
key: 'autoExpandOnLongHover',
|
|
type: 'checkbox',
|
|
expert: true,
|
|
},
|
|
{
|
|
title: indent(2) + browser.i18n.getMessage('config_autoExpandOnLongHoverRestoreIniitalState_label'),
|
|
key: 'autoExpandOnLongHoverRestoreIniitalState',
|
|
type: 'checkbox',
|
|
expert: true,
|
|
},
|
|
{
|
|
title: indent(2) + browser.i18n.getMessage('config_autoExpandIntelligently_label'),
|
|
key: 'autoExpandIntelligently',
|
|
type: 'checkbox',
|
|
expert: true,
|
|
},
|
|
{
|
|
title: indent() + browser.i18n.getMessage('config_ignoreTabDropNearSidebarArea_label'),
|
|
key: 'ignoreTabDropNearSidebarArea',
|
|
type: 'checkbox',
|
|
expert: true,
|
|
},
|
|
{ type: 'separator' },
|
|
{
|
|
title: browser.i18n.getMessage('config_advanced_caption'),
|
|
enabled: false
|
|
},
|
|
{
|
|
title: indent() + browser.i18n.getMessage('config_warnOnCloseTabs_label'),
|
|
key: 'warnOnCloseTabs',
|
|
type: 'checkbox'
|
|
},
|
|
{
|
|
title: indent(2) + browser.i18n.getMessage('config_warnOnCloseTabsByClosebox_label'),
|
|
key: 'warnOnCloseTabsByClosebox',
|
|
type: 'checkbox',
|
|
},
|
|
{
|
|
title: indent(2) + browser.i18n.getMessage('config_warnOnCloseTabsWithListing_label'),
|
|
key: 'warnOnCloseTabsWithListing',
|
|
type: 'checkbox',
|
|
expert: true
|
|
},
|
|
{
|
|
title: indent() + browser.i18n.getMessage('config_useCachedTree_label'),
|
|
key: 'useCachedTree',
|
|
type: 'checkbox',
|
|
expert: true,
|
|
},
|
|
{
|
|
title: indent(2) + browser.i18n.getMessage('config_persistCachedTree_label'),
|
|
key: 'persistCachedTree',
|
|
type: 'checkbox',
|
|
expert: true,
|
|
},
|
|
{
|
|
title: indent() + browser.i18n.getMessage('config_tabGroupsEnabled_label'),
|
|
key: 'tabGroupsEnabled',
|
|
type: 'checkbox',
|
|
expert: true,
|
|
},
|
|
{
|
|
title: indent() + browser.i18n.getMessage('config_undoMultipleTabsClose_label'),
|
|
key: 'undoMultipleTabsClose',
|
|
type: 'checkbox',
|
|
expert: true,
|
|
},
|
|
{
|
|
title: indent() + browser.i18n.getMessage('config_requestPermissions_bookmarks_context'),
|
|
type: 'checkbox',
|
|
permissions: Permissions.BOOKMARKS
|
|
},
|
|
{ type: 'separator' },
|
|
{
|
|
title: browser.i18n.getMessage('config_debug_caption'),
|
|
enabled: false
|
|
},
|
|
{
|
|
title: indent() + browser.i18n.getMessage('config_colorScheme_caption'),
|
|
children: [
|
|
{
|
|
title: browser.i18n.getMessage('config_colorScheme_photon'),
|
|
key: 'colorScheme',
|
|
value: 'photon',
|
|
type: 'radio'
|
|
},
|
|
{
|
|
title: browser.i18n.getMessage('config_colorScheme_systemColor'),
|
|
key: 'colorScheme',
|
|
value: 'system-color',
|
|
type: 'radio'
|
|
}
|
|
]
|
|
},
|
|
{
|
|
title: indent() + browser.i18n.getMessage('config_enableLinuxBehaviors_label'),
|
|
key: 'enableLinuxBehaviors',
|
|
type: 'checkbox',
|
|
expert: true,
|
|
},
|
|
{
|
|
title: indent() + browser.i18n.getMessage('config_enableMacOSBehaviors_label'),
|
|
key: 'enableMacOSBehaviors',
|
|
type: 'checkbox',
|
|
expert: true,
|
|
},
|
|
{
|
|
title: indent() + browser.i18n.getMessage('config_enableWindowsBehaviors_label'),
|
|
key: 'enableWindowsBehaviors',
|
|
type: 'checkbox',
|
|
expert: true,
|
|
},
|
|
{
|
|
title: indent() + browser.i18n.getMessage('config_loggingQueries_label'),
|
|
key: 'loggingQueries',
|
|
type: 'checkbox',
|
|
expert: true,
|
|
},
|
|
{
|
|
title: indent(2) + browser.i18n.getMessage('config_loggingConnectionMessages_label'),
|
|
key: 'loggingConnectionMessages',
|
|
type: 'checkbox',
|
|
expert: true,
|
|
},
|
|
{
|
|
title: indent() + browser.i18n.getMessage('config_debug_label'),
|
|
key: 'debug',
|
|
type: 'checkbox'
|
|
},
|
|
{ type: 'separator' },
|
|
{
|
|
title: browser.i18n.getMessage('config_showExpertOptions_label'),
|
|
key: 'showExpertOptions',
|
|
type: 'checkbox'
|
|
}
|
|
]
|
|
}
|
|
];
|
|
|
|
const mItemsById = new Map();
|
|
const mUpdatableItemsById = new Map();
|
|
const mExpertItems = new Set();
|
|
|
|
const MENU_CONTEXT = browser.browserAction ?
|
|
'browser_action' : // Manifest V2
|
|
'action'; // Manifest V3
|
|
|
|
function createItem(id, item, parent) {
|
|
if (item.visible === false)
|
|
return;
|
|
|
|
const parentId = parent ? parent.id : null ;
|
|
item.id = id;
|
|
mItemsById.set(id, item);
|
|
|
|
if (item.dynamicTitle) {
|
|
item.lastTitle = item.title;
|
|
mUpdatableItemsById.set(id, item);
|
|
}
|
|
if (item.type == 'checkbox' || item.type == 'radio') {
|
|
mUpdatableItemsById.set(id, item);
|
|
}
|
|
|
|
const params = {
|
|
id,
|
|
title: item.title?.replace(/^:|:$/g, ''),
|
|
type: item.type || 'normal',
|
|
contexts: [MENU_CONTEXT],
|
|
parentId
|
|
};
|
|
if ('enabled' in item)
|
|
params.enabled = item.enabled;
|
|
log('create: ', params);
|
|
id = browser.menus.create(params);
|
|
if (item.expert)
|
|
mExpertItems.add(id);
|
|
if (item.children) {
|
|
for (let i = 0, maxi = item.children.length; i < maxi; i++) {
|
|
const child = item.children[i];
|
|
createItem(`${id}:${i}`, child, item);
|
|
}
|
|
}
|
|
}
|
|
|
|
if (browser.action/* Manifest V2 */ || browser.browserAction/* Manifest V3 */) {
|
|
for (let i = 0, maxi = mItems.length; i < maxi; i++) {
|
|
createItem(`browserActionItem:${i}`, mItems[i]);
|
|
}
|
|
|
|
browser.menus.onShown.addListener((info, _tab) => {
|
|
if (!info.contexts.includes(MENU_CONTEXT))
|
|
return;
|
|
|
|
let updated = false;
|
|
for (const item of mUpdatableItemsById.values()) {
|
|
const params = {};
|
|
if (item.dynamicTitle) {
|
|
const title = item.title;
|
|
if (title != item.lastTitle) {
|
|
item.lastTitle = title;
|
|
params.title = title;
|
|
}
|
|
}
|
|
if (item.type == 'checkbox' || item.type == 'radio') {
|
|
const checkedFromConfigs = 'value' in item ? configs[item.key] == item.value : configs[item.key];
|
|
params.checked = checkedFromConfigs;
|
|
if (item.permissions) {
|
|
Permissions.isGranted(item.permissions)
|
|
.then(async granted => {
|
|
const checked = granted && (!('key' in item) || checkedFromConfigs);
|
|
if (checked == granted &&
|
|
params.checked == granted)
|
|
return;
|
|
item.checked = checked;
|
|
await browser.menus.update(item.id, { checked }).catch(ApiTabs.createErrorSuppressor());
|
|
await browser.menus.refresh().catch(ApiTabs.createErrorSuppressor());
|
|
});
|
|
delete params.checked;
|
|
}
|
|
}
|
|
if ('visible' in item)
|
|
params.visible = item.visible;
|
|
if ('checked' in params || 'title' in params) {
|
|
browser.menus.update(item.id, params).catch(ApiTabs.createErrorSuppressor());
|
|
updated = true;
|
|
}
|
|
}
|
|
if (updated)
|
|
browser.menus.refresh().catch(ApiTabs.createErrorSuppressor());
|
|
});
|
|
|
|
browser.menus.onClicked.addListener((info, _tab) => {
|
|
const item = mItemsById.get(info.menuItemId);
|
|
log('onClicked ', { id: info.menuItemId, item });
|
|
if (!item)
|
|
return;
|
|
|
|
if (item.url) {
|
|
browser.tabs.create({ url: item.url });
|
|
return;
|
|
}
|
|
if (item.key) {
|
|
if (info.checked)
|
|
configs[item.key] = 'value' in item ? item.value : true;
|
|
else if (!('value' in item))
|
|
configs[item.key] = false;
|
|
}
|
|
if (item.permissions) {
|
|
if (!info.checked) {
|
|
if (item.canRevoke !== false)
|
|
browser.permissions.remove(item.permissions).catch(ApiTabs.createErrorSuppressor());
|
|
}
|
|
else {
|
|
browser.permissions.request(item.permissions)
|
|
.then(async granted => {
|
|
if (granted === undefined)
|
|
granted = await Permissions.isGranted(item.permissions);
|
|
if (granted) {
|
|
browser.runtime.sendMessage({
|
|
type: Constants.kCOMMAND_NOTIFY_PERMISSIONS_GRANTED,
|
|
permissions: item.permissions
|
|
}).catch(_error => {});
|
|
}
|
|
})
|
|
.catch(ApiTabs.createErrorHandler());
|
|
}
|
|
}
|
|
});
|
|
|
|
|
|
function updateExpertOptionsVisibility() {
|
|
for (const id of mExpertItems) {
|
|
browser.menus.update(id, { visible: configs.showExpertOptions });
|
|
}
|
|
browser.menus.refresh();
|
|
}
|
|
configs.$addObserver(key => {
|
|
if (key == 'showExpertOptions')
|
|
updateExpertOptionsVisibility();
|
|
});
|
|
configs.$loaded.then(updateExpertOptionsVisibility);
|
|
}
|