Backed out changeset f14b6d618dee (bug 1906140) for causing mochitest failures
This commit is contained in:
@@ -17,7 +17,7 @@ add_task(async function testFilterFeatures() {
|
|||||||
id: "test-featureA",
|
id: "test-featureA",
|
||||||
preference: "test.featureA",
|
preference: "test.featureA",
|
||||||
title: "Experimental Feature 1",
|
title: "Experimental Feature 1",
|
||||||
group: "experimental-features-group-customize-browsing",
|
group: "experimental-features-group-browsing",
|
||||||
description: "This is a fun experimental feature you can enable",
|
description: "This is a fun experimental feature you can enable",
|
||||||
result: true,
|
result: true,
|
||||||
},
|
},
|
||||||
@@ -25,7 +25,7 @@ add_task(async function testFilterFeatures() {
|
|||||||
id: "test-featureB",
|
id: "test-featureB",
|
||||||
preference: "test.featureB",
|
preference: "test.featureB",
|
||||||
title: "Experimental Thing 2",
|
title: "Experimental Thing 2",
|
||||||
group: "experimental-features-group-customize-browsing",
|
group: "experimental-features-group-browsing",
|
||||||
description: "This is a very boring experimental tool",
|
description: "This is a very boring experimental tool",
|
||||||
// Visible since it's grouped with other features that match the search.
|
// Visible since it's grouped with other features that match the search.
|
||||||
result: true,
|
result: true,
|
||||||
@@ -34,7 +34,7 @@ add_task(async function testFilterFeatures() {
|
|||||||
id: "test-featureC",
|
id: "test-featureC",
|
||||||
preference: "test.featureC",
|
preference: "test.featureC",
|
||||||
title: "Experimental Thing 3",
|
title: "Experimental Thing 3",
|
||||||
group: "experimental-features-group-customize-browsing",
|
group: "experimental-features-group-browsing",
|
||||||
description: "This is a fun experimental feature for you can enable",
|
description: "This is a fun experimental feature for you can enable",
|
||||||
result: true,
|
result: true,
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -203,7 +203,7 @@ class DefinitionServer {
|
|||||||
id: "test-feature",
|
id: "test-feature",
|
||||||
// These l10n IDs are just random so we have some text to display
|
// These l10n IDs are just random so we have some text to display
|
||||||
title: "experimental-features-media-jxl",
|
title: "experimental-features-media-jxl",
|
||||||
group: "experimental-features-group-customize-browsing",
|
group: "experimental-features-group-browsing",
|
||||||
description: "pane-experimental-description3",
|
description: "pane-experimental-description3",
|
||||||
restartRequired: false,
|
restartRequired: false,
|
||||||
type: "boolean",
|
type: "boolean",
|
||||||
|
|||||||
@@ -166,6 +166,7 @@ class TestSessionRestore(SessionStoreTestCase):
|
|||||||
self.marionette.execute_script(
|
self.marionette.execute_script(
|
||||||
"""
|
"""
|
||||||
const window = BrowserWindowTracker.getTopWindow();
|
const window = BrowserWindowTracker.getTopWindow();
|
||||||
|
window.SidebarController.toolbarButton.click();
|
||||||
return window.SidebarController.sidebarContainer.hidden;
|
return window.SidebarController.sidebarContainer.hidden;
|
||||||
"""
|
"""
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -21,8 +21,7 @@ var SidebarController = {
|
|||||||
return document.getElementById(elementId);
|
return document.getElementById(elementId);
|
||||||
},
|
},
|
||||||
get title() {
|
get title() {
|
||||||
let element = document.getElementById(elementId);
|
return document.getElementById(elementId).getAttribute("label");
|
||||||
return element?.getAttribute("label");
|
|
||||||
},
|
},
|
||||||
...rest,
|
...rest,
|
||||||
};
|
};
|
||||||
@@ -38,9 +37,8 @@ var SidebarController = {
|
|||||||
const viewItem = document.getElementById(sidebar.menuId);
|
const viewItem = document.getElementById(sidebar.menuId);
|
||||||
viewItem.hidden = !visible;
|
viewItem.hidden = !visible;
|
||||||
|
|
||||||
let menuItem = document.getElementById(config.elementId);
|
|
||||||
// Add/remove switcher menu item.
|
// Add/remove switcher menu item.
|
||||||
if (visible && !menuItem) {
|
if (visible) {
|
||||||
switcherMenuitem = this.createMenuItem(commandID, sidebar);
|
switcherMenuitem = this.createMenuItem(commandID, sidebar);
|
||||||
switcherMenuitem.setAttribute("id", config.elementId);
|
switcherMenuitem.setAttribute("id", config.elementId);
|
||||||
switcherMenuitem.removeAttribute("type");
|
switcherMenuitem.removeAttribute("type");
|
||||||
@@ -69,10 +67,6 @@ var SidebarController = {
|
|||||||
return this._sidebars;
|
return this._sidebars;
|
||||||
}
|
}
|
||||||
|
|
||||||
return this.generateSidebarsMap();
|
|
||||||
},
|
|
||||||
|
|
||||||
generateSidebarsMap() {
|
|
||||||
this._sidebars = new Map([
|
this._sidebars = new Map([
|
||||||
[
|
[
|
||||||
"viewHistorySidebar",
|
"viewHistorySidebar",
|
||||||
@@ -204,9 +198,6 @@ var SidebarController = {
|
|||||||
_switcherTarget: null,
|
_switcherTarget: null,
|
||||||
_switcherArrow: null,
|
_switcherArrow: null,
|
||||||
_inited: false,
|
_inited: false,
|
||||||
_switcherListenersAdded: false,
|
|
||||||
_verticalNewTabListenerAdded: false,
|
|
||||||
_localesObserverAdded: false,
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @type {MutationObserver | null}
|
* @type {MutationObserver | null}
|
||||||
@@ -255,6 +246,11 @@ var SidebarController = {
|
|||||||
this._switcherPanel = document.getElementById("sidebarMenu-popup");
|
this._switcherPanel = document.getElementById("sidebarMenu-popup");
|
||||||
this._switcherTarget = document.getElementById("sidebar-switcher-target");
|
this._switcherTarget = document.getElementById("sidebar-switcher-target");
|
||||||
this._switcherArrow = document.getElementById("sidebar-switcher-arrow");
|
this._switcherArrow = document.getElementById("sidebar-switcher-arrow");
|
||||||
|
let newTabButton = document.getElementById("vertical-tabs-newtab-button");
|
||||||
|
|
||||||
|
newTabButton.addEventListener("command", event => {
|
||||||
|
BrowserCommands.openTab({ event });
|
||||||
|
});
|
||||||
if (
|
if (
|
||||||
Services.prefs.getBoolPref(
|
Services.prefs.getBoolPref(
|
||||||
"browser.tabs.allow_transparent_browser",
|
"browser.tabs.allow_transparent_browser",
|
||||||
@@ -298,16 +294,8 @@ var SidebarController = {
|
|||||||
if (this.sidebarVerticalTabsEnabled) {
|
if (this.sidebarVerticalTabsEnabled) {
|
||||||
this.toggleTabstrip();
|
this.toggleTabstrip();
|
||||||
}
|
}
|
||||||
let newTabButton = document.getElementById("vertical-tabs-newtab-button");
|
|
||||||
if (!this._verticalNewTabListenerAdded) {
|
|
||||||
newTabButton.addEventListener("command", event => {
|
|
||||||
BrowserCommands.openTab({ event });
|
|
||||||
});
|
|
||||||
this._verticalNewTabListenerAdded = true;
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
this._switcherCloseButton = document.getElementById("sidebar-close");
|
this._switcherCloseButton = document.getElementById("sidebar-close");
|
||||||
if (!this._switcherListenersAdded) {
|
|
||||||
this._switcherCloseButton.addEventListener("command", () => {
|
this._switcherCloseButton.addEventListener("command", () => {
|
||||||
this.hide();
|
this.hide();
|
||||||
});
|
});
|
||||||
@@ -317,16 +305,11 @@ var SidebarController = {
|
|||||||
this._switcherTarget.addEventListener("keydown", event => {
|
this._switcherTarget.addEventListener("keydown", event => {
|
||||||
this.handleKeydown(event);
|
this.handleKeydown(event);
|
||||||
});
|
});
|
||||||
this._switcherListenersAdded = true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
this._inited = true;
|
this._inited = true;
|
||||||
|
|
||||||
if (!this._localesObserverAdded) {
|
|
||||||
Services.obs.addObserver(this, "intl:app-locales-changed");
|
Services.obs.addObserver(this, "intl:app-locales-changed");
|
||||||
this._localesObserverAdded = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
this._initDeferred.resolve();
|
this._initDeferred.resolve();
|
||||||
},
|
},
|
||||||
@@ -525,41 +508,6 @@ var SidebarController = {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
|
||||||
* Show/hide new sidebar based on sidebar.revamp pref
|
|
||||||
*/
|
|
||||||
async toggleRevampSidebar() {
|
|
||||||
if (this.isOpen) {
|
|
||||||
this.hide();
|
|
||||||
}
|
|
||||||
// Reset sidebars map but preserve any existing extensions
|
|
||||||
let extensionsArr = [];
|
|
||||||
for (const [commandID, sidebar] of this.sidebars.entries()) {
|
|
||||||
if (sidebar.hasOwnProperty("extensionId")) {
|
|
||||||
extensionsArr.push({ commandID, sidebar });
|
|
||||||
}
|
|
||||||
}
|
|
||||||
this.sidebars = this.generateSidebarsMap();
|
|
||||||
for (const extension of extensionsArr) {
|
|
||||||
this.sidebars.set(extension.commandID, extension.sidebar);
|
|
||||||
}
|
|
||||||
if (!this.sidebarRevampEnabled) {
|
|
||||||
this.sidebarMain.hidden = true;
|
|
||||||
document.getElementById("sidebar-header").hidden = false;
|
|
||||||
// Disable vertical tabs if revamped sidebar is turned off
|
|
||||||
if (this.sidebarVerticalTabsEnabled) {
|
|
||||||
Services.prefs.setBoolPref("sidebar.verticalTabs", false);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
this.sidebarMain.hidden = false;
|
|
||||||
}
|
|
||||||
if (!this._sidebars.get(this.lastOpenedId)) {
|
|
||||||
this.lastOpenedId = this.DEFAULT_SIDEBAR_ID;
|
|
||||||
}
|
|
||||||
this.show(this.lastOpenedId);
|
|
||||||
this.init();
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Try and adopt the status of the sidebar from another window.
|
* Try and adopt the status of the sidebar from another window.
|
||||||
*
|
*
|
||||||
@@ -1203,7 +1151,7 @@ var SidebarController = {
|
|||||||
// until about:blank has loaded (which does not happen as long as the
|
// until about:blank has loaded (which does not happen as long as the
|
||||||
// element is hidden).
|
// element is hidden).
|
||||||
this.browser.setAttribute("src", "about:blank");
|
this.browser.setAttribute("src", "about:blank");
|
||||||
this.browser.docShell?.createAboutBlankDocumentViewer(null, null);
|
this.browser.docShell.createAboutBlankDocumentViewer(null, null);
|
||||||
|
|
||||||
this._box.removeAttribute("checked");
|
this._box.removeAttribute("checked");
|
||||||
this._box.hidden = this._splitter.hidden = true;
|
this._box.hidden = this._splitter.hidden = true;
|
||||||
@@ -1258,11 +1206,6 @@ var SidebarController = {
|
|||||||
arrowScrollbox.setAttribute("orient", "vertical");
|
arrowScrollbox.setAttribute("orient", "vertical");
|
||||||
tabStrip.setAttribute("orient", "vertical");
|
tabStrip.setAttribute("orient", "vertical");
|
||||||
verticalTabs.append(tabStrip);
|
verticalTabs.append(tabStrip);
|
||||||
|
|
||||||
// Enable revamped sidebar if vertical tabs is enabled
|
|
||||||
if (!this.sidebarRevampEnabled) {
|
|
||||||
Services.prefs.setBoolPref("sidebar.revamp", true);
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
arrowScrollbox.setAttribute("orient", "horizontal");
|
arrowScrollbox.setAttribute("orient", "horizontal");
|
||||||
tabStrip.setAttribute("orient", "horizontal");
|
tabStrip.setAttribute("orient", "horizontal");
|
||||||
@@ -1298,8 +1241,7 @@ XPCOMUtils.defineLazyPreferenceGetter(
|
|||||||
SidebarController,
|
SidebarController,
|
||||||
"sidebarRevampEnabled",
|
"sidebarRevampEnabled",
|
||||||
"sidebar.revamp",
|
"sidebar.revamp",
|
||||||
false,
|
false
|
||||||
SidebarController.toggleRevampSidebar.bind(SidebarController)
|
|
||||||
);
|
);
|
||||||
XPCOMUtils.defineLazyPreferenceGetter(
|
XPCOMUtils.defineLazyPreferenceGetter(
|
||||||
SidebarController,
|
SidebarController,
|
||||||
|
|||||||
@@ -36,4 +36,3 @@ run-if = ["os == 'mac'"] # Mac only feature
|
|||||||
["browser_vertical_tabs.js"]
|
["browser_vertical_tabs.js"]
|
||||||
|
|
||||||
["browser_view_sidebar_menu.js"]
|
["browser_view_sidebar_menu.js"]
|
||||||
skip-if = ["os == 'linux' && debug"] # Bug 1896421
|
|
||||||
|
|||||||
@@ -142,53 +142,3 @@ add_task(async function test_conditional_tools() {
|
|||||||
|
|
||||||
await BrowserTestUtils.closeWindow(win);
|
await BrowserTestUtils.closeWindow(win);
|
||||||
});
|
});
|
||||||
|
|
||||||
/**
|
|
||||||
* Check that the new sidebar is hidden/shown automatically (without a browser restart)
|
|
||||||
* when flipping the sidebar.revamp pref
|
|
||||||
*/
|
|
||||||
add_task(async function test_flip_revamp_pref() {
|
|
||||||
const win = await BrowserTestUtils.openNewBrowserWindow();
|
|
||||||
const sidebar = win.document.querySelector("sidebar-main");
|
|
||||||
await sidebar.updateComplete;
|
|
||||||
|
|
||||||
let verticalTabs = win.document.querySelector("#vertical-tabs");
|
|
||||||
ok(
|
|
||||||
!BrowserTestUtils.isVisible(verticalTabs),
|
|
||||||
"Vertical tabs slot is not visible initially"
|
|
||||||
);
|
|
||||||
// Open history sidebar
|
|
||||||
await toggleSidebarPanel(win, "viewHistorySidebar");
|
|
||||||
|
|
||||||
await SpecialPowers.pushPrefEnv({ set: [["sidebar.verticalTabs", true]] });
|
|
||||||
ok(BrowserTestUtils.isVisible(verticalTabs), "Vertical tabs slot is visible");
|
|
||||||
|
|
||||||
ok(sidebar, "Revamped sidebar is shown initially.");
|
|
||||||
|
|
||||||
await SpecialPowers.pushPrefEnv({ set: [["sidebar.revamp", false]] });
|
|
||||||
|
|
||||||
await TestUtils.waitForCondition(() => {
|
|
||||||
let isSidebarMainShown = !win.document.querySelector("sidebar-main").hidden;
|
|
||||||
let isSwitcherPanelShown =
|
|
||||||
!win.document.getElementById("sidebar-header").hidden;
|
|
||||||
// Vertical tabs pref should be turned off when revamp pref is turned off
|
|
||||||
let isVerticalTabsShown = BrowserTestUtils.isVisible(verticalTabs);
|
|
||||||
return !isSidebarMainShown && isSwitcherPanelShown && !isVerticalTabsShown;
|
|
||||||
}, "The new sidebar is hidden and the old sidebar is shown.");
|
|
||||||
|
|
||||||
ok(true, "The new sidebar is hidden and the old sidebar is shown.");
|
|
||||||
|
|
||||||
await SpecialPowers.pushPrefEnv({
|
|
||||||
set: [["sidebar.revamp", true]],
|
|
||||||
});
|
|
||||||
await sidebar.updateComplete;
|
|
||||||
await TestUtils.waitForCondition(() => {
|
|
||||||
let isSidebarMainShown = !document.querySelector("sidebar-main").hidden;
|
|
||||||
let isSwitcherPanelShown =
|
|
||||||
!win.document.getElementById("sidebar-header").hidden;
|
|
||||||
return isSidebarMainShown && !isSwitcherPanelShown;
|
|
||||||
}, "The old sidebar is hidden and the new sidebar is shown.");
|
|
||||||
|
|
||||||
ok(true, "The old sidebar is hidden and the new sidebar is shown.");
|
|
||||||
await BrowserTestUtils.closeWindow(win);
|
|
||||||
});
|
|
||||||
|
|||||||
@@ -134,11 +134,6 @@ add_task(async function test_expanded_state_for_always_show() {
|
|||||||
await SpecialPowers.popPrefEnv();
|
await SpecialPowers.popPrefEnv();
|
||||||
});
|
});
|
||||||
|
|
||||||
/*
|
|
||||||
This test is failing after changes in bug 1906140 where we're hot swapping the sidebar.revamp pref.
|
|
||||||
We should investigate as part of bug 1896421 - Tidy up tests with extra windows after sidebar revamp
|
|
||||||
pref is made the default sidebar.
|
|
||||||
|
|
||||||
add_task(async function test_states_for_hide_sidebar() {
|
add_task(async function test_states_for_hide_sidebar() {
|
||||||
await SpecialPowers.pushPrefEnv({
|
await SpecialPowers.pushPrefEnv({
|
||||||
set: [[SIDEBAR_VISIBILITY_PREF, "hide-sidebar"]],
|
set: [[SIDEBAR_VISIBILITY_PREF, "hide-sidebar"]],
|
||||||
@@ -206,4 +201,4 @@ pref is made the default sidebar.
|
|||||||
await BrowserTestUtils.closeWindow(win);
|
await BrowserTestUtils.closeWindow(win);
|
||||||
await BrowserTestUtils.closeWindow(newWin);
|
await BrowserTestUtils.closeWindow(newWin);
|
||||||
await SpecialPowers.popPrefEnv();
|
await SpecialPowers.popPrefEnv();
|
||||||
}); */
|
});
|
||||||
|
|||||||
@@ -14,32 +14,8 @@
|
|||||||
# based on the order of appearance in this file. Settings within
|
# based on the order of appearance in this file. Settings within
|
||||||
# a group will also be determined by their order in this file.
|
# a group will also be determined by their order in this file.
|
||||||
|
|
||||||
[sidebar]
|
|
||||||
group = "experimental-features-group-customize-browsing"
|
|
||||||
title = "sidebar-title"
|
|
||||||
description = "sidebar-description"
|
|
||||||
description-links = {connect= "https://connect.mozilla.org/t5/discussions/firefox-sidebar-and-vertical-tabs-try-them-out-in-nightly/m-p/63231#M22243"}
|
|
||||||
restart-required = false
|
|
||||||
preference = "sidebar.revamp"
|
|
||||||
type = "boolean"
|
|
||||||
bug-numbers = [1906140]
|
|
||||||
is-public-jexl = "nightly_build"
|
|
||||||
default-value-jexl = "false"
|
|
||||||
|
|
||||||
[vertical-tabs]
|
|
||||||
group = "experimental-features-group-customize-browsing"
|
|
||||||
title = "vertical-tabs-title"
|
|
||||||
description = "vertical-tabs-description"
|
|
||||||
description-links = {connect= "https://connect.mozilla.org/t5/discussions/firefox-sidebar-and-vertical-tabs-try-them-out-in-nightly/m-p/63231#M22243"}
|
|
||||||
restart-required = false
|
|
||||||
preference = "sidebar.verticalTabs"
|
|
||||||
type = "boolean"
|
|
||||||
bug-numbers = [1906140]
|
|
||||||
is-public-jexl = "nightly_build"
|
|
||||||
default-value-jexl = "false"
|
|
||||||
|
|
||||||
[genai-chat]
|
[genai-chat]
|
||||||
group = "experimental-features-group-customize-browsing"
|
group = "experimental-features-group-browsing"
|
||||||
title = "genai-settings-chat-title"
|
title = "genai-settings-chat-title"
|
||||||
description = "genai-settings-chat-description"
|
description = "genai-settings-chat-description"
|
||||||
description-links = {connect= "https://connect.mozilla.org/t5/discussions/share-your-feedback-on-the-ai-services-experiment-in-nightly/m-p/60519#M21202"}
|
description-links = {connect= "https://connect.mozilla.org/t5/discussions/share-your-feedback-on-the-ai-services-experiment-in-nightly/m-p/60519#M21202"}
|
||||||
@@ -51,7 +27,7 @@ is-public-jexl = "nightly_build"
|
|||||||
default-value-jexl = "false"
|
default-value-jexl = "false"
|
||||||
|
|
||||||
[url-bar-ime-search]
|
[url-bar-ime-search]
|
||||||
group = "experimental-features-group-customize-browsing"
|
group = "experimental-features-group-browsing"
|
||||||
title = "experimental-features-ime-search"
|
title = "experimental-features-ime-search"
|
||||||
description = "experimental-features-ime-search-description"
|
description = "experimental-features-ime-search-description"
|
||||||
restart-required = false
|
restart-required = false
|
||||||
@@ -62,7 +38,7 @@ is-public-jexl = "true"
|
|||||||
default-value-jexl = "false"
|
default-value-jexl = "false"
|
||||||
|
|
||||||
[auto-pip]
|
[auto-pip]
|
||||||
group = "experimental-features-group-customize-browsing"
|
group = "experimental-features-group-browsing"
|
||||||
title = "experimental-features-auto-pip"
|
title = "experimental-features-auto-pip"
|
||||||
description = "experimental-features-auto-pip-description"
|
description = "experimental-features-auto-pip-description"
|
||||||
restart-required = false
|
restart-required = false
|
||||||
@@ -73,7 +49,7 @@ is-public-jexl = "true"
|
|||||||
default-value-jexl = "false"
|
default-value-jexl = "false"
|
||||||
|
|
||||||
[webrtc-global-mute-toggles]
|
[webrtc-global-mute-toggles]
|
||||||
group = "experimental-features-group-customize-browsing"
|
group = "experimental-features-group-browsing"
|
||||||
title = "experimental-features-webrtc-global-mute-toggles"
|
title = "experimental-features-webrtc-global-mute-toggles"
|
||||||
description = "experimental-features-webrtc-global-mute-toggles-description"
|
description = "experimental-features-webrtc-global-mute-toggles-description"
|
||||||
restart-required = false
|
restart-required = false
|
||||||
@@ -84,7 +60,7 @@ is-public-jexl = "nightly_build"
|
|||||||
default-value-jexl = "false"
|
default-value-jexl = "false"
|
||||||
|
|
||||||
[cookie-samesite-none-requires-secure]
|
[cookie-samesite-none-requires-secure]
|
||||||
group = "experimental-features-group-customize-browsing"
|
group = "experimental-features-group-browsing"
|
||||||
title = "experimental-features-cookie-samesite-none-requires-secure2"
|
title = "experimental-features-cookie-samesite-none-requires-secure2"
|
||||||
description = "experimental-features-cookie-samesite-none-requires-secure2-description"
|
description = "experimental-features-cookie-samesite-none-requires-secure2-description"
|
||||||
restart-required = false
|
restart-required = false
|
||||||
|
|||||||
@@ -51,18 +51,10 @@ experimental-features-auto-pip =
|
|||||||
.label = Picture-in-Picture: auto-open on tab switch
|
.label = Picture-in-Picture: auto-open on tab switch
|
||||||
experimental-features-auto-pip-description = Enable Picture-in-Picture on active videos when switching tabs.
|
experimental-features-auto-pip-description = Enable Picture-in-Picture on active videos when switching tabs.
|
||||||
|
|
||||||
# Updated sidebar settings
|
|
||||||
sidebar-title =
|
|
||||||
.label = Sidebar
|
|
||||||
sidebar-description = Easily access your history, tabs from other devices, sidebar extensions, and more as you browse. <a data-l10n-name="connect">Share feedback</a>
|
|
||||||
vertical-tabs-title =
|
|
||||||
.label = Vertical tabs
|
|
||||||
vertical-tabs-description = Move your tabs from the top of the browser to the side. Requires you also try the sidebar. <a data-l10n-name="connect">Share feedback</a>
|
|
||||||
|
|
||||||
|
experimental-features-group-browsing =
|
||||||
|
.label = Browsing
|
||||||
experimental-features-group-developer-tools =
|
experimental-features-group-developer-tools =
|
||||||
.label = Developer Tools
|
.label = Developer Tools
|
||||||
experimental-features-group-webpage-display =
|
experimental-features-group-webpage-display =
|
||||||
.label = Webpage Display
|
.label = Webpage Display
|
||||||
experimental-features-group-customize-browsing =
|
|
||||||
.label = Customize your browsing
|
|
||||||
experimental-features-group-customize-browsing-description = If you try these features, <a data-l10n-name="connect">share your thoughts on Connect</a>
|
|
||||||
|
|||||||
Reference in New Issue
Block a user