browser_setting_group_in_progress.js (4005B)
1 /* Any copyright is dedicated to the Public Domain. 2 https://creativecommons.org/publicdomain/zero/1.0/ */ 3 4 "use strict"; 5 6 async function openPrefsWithSettings({ allEnabled, sectionEnabled }) { 7 await SpecialPowers.pushPrefEnv({ 8 set: [ 9 ["browser.settings-redesign.enabled", allEnabled], 10 ["browser.settings-redesign.mysection.enabled", sectionEnabled], 11 ], 12 }); 13 await openPreferencesViaOpenPreferencesAPI("privacy", { leaveOpen: true }); 14 let doc = gBrowser.selectedBrowser.contentDocument; 15 let win = doc.ownerGlobal; 16 win.Preferences.addSetting({ 17 id: "testSetting", 18 get: () => true, 19 }); 20 win.SettingGroupManager.registerGroup("mysection", { 21 inProgress: true, 22 l10nId: "downloads-header-2", 23 headingLevel: 2, 24 items: [ 25 { 26 id: "testSetting", 27 controlAttrs: { 28 label: "Test setting", 29 }, 30 }, 31 ], 32 }); 33 let zoomGroup = doc.getElementById("zoomGroup"); 34 let legacyGroup = doc.createXULElement("groupbox"); 35 legacyGroup.id = "mysectionGroup"; 36 legacyGroup.setAttribute("data-srd-groupid", "mysection"); 37 legacyGroup.setAttribute("data-category", "paneGeneral"); 38 legacyGroup.hidden = true; 39 let mysectionGroup = doc.createElement("setting-group"); 40 mysectionGroup.setAttribute("groupid", "mysection"); 41 mysectionGroup.setAttribute("data-category", "paneGeneral"); 42 mysectionGroup.hidden = true; 43 zoomGroup.parentElement.insertBefore(mysectionGroup, zoomGroup); 44 zoomGroup.parentElement.insertBefore(legacyGroup, zoomGroup); 45 win.initSettingGroup("mysection"); 46 let paneLoaded = waitForPaneChange("general"); 47 EventUtils.synthesizeMouseAtCenter( 48 doc.getElementById("category-general"), 49 {}, 50 win 51 ); 52 await paneLoaded; 53 return doc; 54 } 55 56 add_task(async function test_section_disabled() { 57 try { 58 let doc = await openPrefsWithSettings({ 59 allEnabled: false, 60 sectionEnabled: false, 61 }); 62 let legacyGroup = doc.getElementById("mysectionGroup"); 63 let redesignGroup = doc.querySelector('setting-group[groupid="mysection"]'); 64 ok(legacyGroup.checkVisibility(), "The legacy group is visible"); 65 is( 66 legacyGroup.dataset.category, 67 "paneGeneral", 68 "The legacy group has a category" 69 ); 70 ok( 71 !legacyGroup.hasAttribute("data-hidden-from-search"), 72 "The legacy group is visible to search" 73 ); 74 ok(!redesignGroup, "The redesign group was removed"); 75 } finally { 76 gBrowser.removeCurrentTab(); 77 } 78 }); 79 80 add_task(async function test_section_enabled() { 81 let doc = await openPrefsWithSettings({ 82 allEnabled: false, 83 sectionEnabled: true, 84 }); 85 let legacyGroup = doc.getElementById("mysectionGroup"); 86 let redesignGroup = doc.querySelector('setting-group[groupid="mysection"]'); 87 ok(!legacyGroup.checkVisibility(), "The legacy group is hidden"); 88 ok(!legacyGroup.dataset.category, "The legacy group category is removed"); 89 is( 90 legacyGroup.getAttribute("data-hidden-from-search"), 91 "true", 92 "The legacy group is hidden from search" 93 ); 94 ok(redesignGroup.checkVisibility(), "The redesign group is visible"); 95 is( 96 redesignGroup.dataset.category, 97 "paneGeneral", 98 "The redesign group has a category" 99 ); 100 gBrowser.removeCurrentTab(); 101 }); 102 103 add_task(async function test_all_enabled() { 104 let doc = await openPrefsWithSettings({ 105 allEnabled: true, 106 sectionEnabled: false, 107 }); 108 let legacyGroup = doc.getElementById("mysectionGroup"); 109 let redesignGroup = doc.querySelector('setting-group[groupid="mysection"]'); 110 ok(!legacyGroup.checkVisibility(), "The legacy group is hidden"); 111 ok(!legacyGroup.dataset.category, "The legacy group category is removed"); 112 is( 113 legacyGroup.getAttribute("data-hidden-from-search"), 114 "true", 115 "The legacy group is hidden from search" 116 ); 117 ok(redesignGroup.checkVisibility(), "The redesign group is visible"); 118 is( 119 redesignGroup.dataset.category, 120 "paneGeneral", 121 "The redesign group has a category" 122 ); 123 gBrowser.removeCurrentTab(); 124 });