diff --git a/accessible/jsat/AccessFu.jsm b/accessible/jsat/AccessFu.jsm index 894a919476b1..ab4177fd9dbd 100644 --- a/accessible/jsat/AccessFu.jsm +++ b/accessible/jsat/AccessFu.jsm @@ -67,9 +67,8 @@ var AccessFu = { Services.obs.addObserver(this, "inprocess-browser-shown"); Services.ww.registerNotification(this); - let windows = Services.wm.getEnumerator(null); - while (windows.hasMoreElements()) { - this._attachWindow(windows.getNext()); + for (let win of Services.wm.getEnumerator(null)) { + this._attachWindow(win); } Logger.info("AccessFu:Enabled"); @@ -89,9 +88,8 @@ var AccessFu = { Services.obs.removeObserver(this, "inprocess-browser-shown"); Services.ww.unregisterNotification(this); - let windows = Services.wm.getEnumerator(null); - while (windows.hasMoreElements()) { - this._detachWindow(windows.getNext()); + for (let win of Services.wm.getEnumerator(null)) { + this._detachWindow(win); } delete this._notifyOutputPref; diff --git a/accessible/jsat/Utils.jsm b/accessible/jsat/Utils.jsm index 9d2769d80da3..c6d17095d5f0 100644 --- a/accessible/jsat/Utils.jsm +++ b/accessible/jsat/Utils.jsm @@ -160,13 +160,9 @@ var Utils = { // jshint ignore:line let attributes = {}; if (aAccessible && aAccessible.attributes) { - let attributesEnum = aAccessible.attributes.enumerate(); - // Populate |attributes| object with |aAccessible|'s attribute key-value // pairs. - while (attributesEnum.hasMoreElements()) { - let attribute = attributesEnum.getNext().QueryInterface( - Ci.nsIPropertyElement); + for (let attribute of aAccessible.attributes.enumerate()) { attributes[attribute.key] = attribute.value; } } @@ -757,9 +753,8 @@ PivotContext.prototype = { } }; let getHeaders = function* getHeaders(aHeaderCells) { - let enumerator = aHeaderCells.enumerate(); - while (enumerator.hasMoreElements()) { - yield enumerator.getNext().QueryInterface(Ci.nsIAccessible).name; + for (let {name} of aHeaderCells.enumerate(Ci.nsIAccessible)) { + yield name; } }; diff --git a/accessible/tests/browser/shared-head.js b/accessible/tests/browser/shared-head.js index 55fe7ecd7685..0c73ba455a5c 100644 --- a/accessible/tests/browser/shared-head.js +++ b/accessible/tests/browser/shared-head.js @@ -246,11 +246,8 @@ function addAccessibleTask(doc, task) { } registerCleanupFunction(() => { - let observers = Services.obs.enumerateObservers("accessible-event"); - while (observers.hasMoreElements()) { - Services.obs.removeObserver( - observers.getNext().QueryInterface(Ci.nsIObserver), - "accessible-event"); + for (let observer of Services.obs.enumerateObservers("accessible-event")) { + Services.obs.removeObserver(observer, "accessible-event"); } }); diff --git a/accessible/tests/mochitest/attributes.js b/accessible/tests/mochitest/attributes.js index accaf66bec08..711f2623d3ff 100644 --- a/accessible/tests/mochitest/attributes.js +++ b/accessible/tests/mochitest/attributes.js @@ -319,10 +319,7 @@ function testAttrsInternal(aAccOrElmOrID, aAttrs, aSkipUnexpectedAttrs, function compareAttrs(aErrorMsg, aAttrs, aExpectedAttrs, aSkipUnexpectedAttrs, aAbsentAttrs) { // Check if all obtained attributes are expected and have expected value. - var enumerate = aAttrs.enumerate(); - while (enumerate.hasMoreElements()) { - let prop = enumerate.getNext().QueryInterface(nsIPropertyElement); - + for (let prop of aAttrs.enumerate()) { if (!(prop.key in aExpectedAttrs)) { if (!aSkipUnexpectedAttrs) ok(false, "Unexpected attribute '" + prop.key + "' having '" + @@ -355,9 +352,7 @@ function compareAttrs(aErrorMsg, aAttrs, aExpectedAttrs, aSkipUnexpectedAttrs, for (var name in aAbsentAttrs) { var wasFound = false; - enumerate = aAttrs.enumerate(); - while (enumerate.hasMoreElements()) { - let prop = enumerate.getNext().QueryInterface(nsIPropertyElement); + for (let prop of aAttrs.enumerate()) { if (prop.key == name) wasFound = true; } diff --git a/accessible/tests/mochitest/relations.js b/accessible/tests/mochitest/relations.js index 767e468f9c42..4c4fc830925d 100644 --- a/accessible/tests/mochitest/relations.js +++ b/accessible/tests/mochitest/relations.js @@ -76,9 +76,7 @@ function testRelation(aIdentifier, aRelType, aRelatedIdentifiers) { // Check if all given related accessibles are targets of obtained relation. for (let idx = 0; idx < targets.length; idx++) { var isFound = false; - let enumerate = actualTargets.enumerate(); - while (enumerate.hasMoreElements()) { - let relatedAcc = enumerate.getNext().QueryInterface(nsIAccessible); + for (let relatedAcc of actualTargets.enumerate(Ci.nsIAccessible)) { if (targets[idx] == relatedAcc) { isFound = true; break; @@ -89,9 +87,7 @@ function testRelation(aIdentifier, aRelType, aRelatedIdentifiers) { } // Check if all obtained targets are given related accessibles. - let enumerate = actualTargets.enumerate(); - while (enumerate.hasMoreElements()) { - let relatedAcc = enumerate.getNext().QueryInterface(nsIAccessible); + for (let relatedAcc of actualTargets.enumerate(Ci.nsIAccessible)) { let idx; for (idx = 0; idx < targets.length && relatedAcc != targets[idx]; idx++); @@ -140,9 +136,7 @@ function testAbsentRelation(aIdentifier, aRelType, aUnrelatedIdentifiers) { // Any found targets that match given accessibles should be called out. for (let idx = 0; idx < targets.length; idx++) { var notFound = true; - var enumerate = actualTargets.enumerate(); - while (enumerate.hasMoreElements()) { - var relatedAcc = enumerate.getNext().QueryInterface(nsIAccessible); + for (let relatedAcc of actualTargets.enumerate(Ci.nsIAccessible)) { if (targets[idx] == relatedAcc) { notFound = false; break; diff --git a/docshell/test/browser/file_bug1328501_framescript.js b/docshell/test/browser/file_bug1328501_framescript.js index 1107f5ad4092..bf76711e2100 100644 --- a/docshell/test/browser/file_bug1328501_framescript.js +++ b/docshell/test/browser/file_bug1328501_framescript.js @@ -31,10 +31,5 @@ function getChildDocShells() { Ci.nsIDocShell.ENUMERATE_FORWARDS ); - let docShells = []; - while (docShellsEnum.hasMoreElements()) { - let ds = docShellsEnum.getNext(); - docShells.push(ds); - } - return docShells; + return Array.from(docShellsEnum); } diff --git a/docshell/test/navigation/NavigationUtils.js b/docshell/test/navigation/NavigationUtils.js index 4822ff0e6ade..219c5cbabf39 100644 --- a/docshell/test/navigation/NavigationUtils.js +++ b/docshell/test/navigation/NavigationUtils.js @@ -102,12 +102,10 @@ function xpcEnumerateContentWindows(callback) { var Ci = SpecialPowers.Ci; var ww = SpecialPowers.Cc["@mozilla.org/embedcomp/window-watcher;1"] .getService(Ci.nsIWindowWatcher); - var enumerator = ww.getWindowEnumerator(); var contentWindows = []; - while (enumerator.hasMoreElements()) { - var win = enumerator.getNext(); + for (let win of ww.getWindowEnumerator()) { if (win.isChromeWindow) { var docshellTreeNode = win.docShell; var childCount = docshellTreeNode.childCount; diff --git a/dom/html/test/file_cookiemanager.js b/dom/html/test/file_cookiemanager.js index 281d2a8dc5dc..c8f9cfd0f249 100644 --- a/dom/html/test/file_cookiemanager.js +++ b/dom/html/test/file_cookiemanager.js @@ -3,9 +3,7 @@ addMessageListener("getCookieFromManager", ({ host, path }) => { .getService(Ci.nsICookieManager); let values = []; path = path.substring(0, path.lastIndexOf("/") + 1); - let e = cm.enumerator; - while (e.hasMoreElements()) { - let cookie = e.getNext().QueryInterface(Ci.nsICookie); + for (let cookie of cm.enumerator) { if (!cookie) { break; } diff --git a/dom/payments/test/CleanupChromeScript.js b/dom/payments/test/CleanupChromeScript.js index 301c2f105d0f..44fa195518ba 100644 --- a/dom/payments/test/CleanupChromeScript.js +++ b/dom/payments/test/CleanupChromeScript.js @@ -28,20 +28,16 @@ var setPaymentNums = 0; addMessageListener("payment-num-set", function() { setPaymentNums = 0; - const paymentEnum = paymentSrv.enumerate(); - while (paymentEnum.hasMoreElements()) { + for (let payment of paymentSrv.enumerate()) { setPaymentNums = setPaymentNums + 1; - paymentEnum.getNext(); } sendAsyncMessage("payment-num-set-complete"); }); addMessageListener("payment-num-check", function(expectedNumPayments) { - const paymentEnum = paymentSrv.enumerate(); let numPayments = 0; - while (paymentEnum.hasMoreElements()) { + for (let payment of paymentSrv.enumerate()) { numPayments = numPayments + 1; - paymentEnum.getNext(); } if (numPayments !== expectedNumPayments + setPaymentNums) { emitTestFail("Expected '" + expectedNumPayments + diff --git a/dom/payments/test/ConstructorChromeScript.js b/dom/payments/test/ConstructorChromeScript.js index bb1990425b62..9ce4448db547 100644 --- a/dom/payments/test/ConstructorChromeScript.js +++ b/dom/payments/test/ConstructorChromeScript.js @@ -353,8 +353,7 @@ function checkSimplestRequestHandler() { if (!paymentEnum.hasMoreElements()) { emitTestFail("PaymentRequestService should have at least one payment request."); } - while (paymentEnum.hasMoreElements()) { - let payRequest = paymentEnum.getNext().QueryInterface(Ci.nsIPaymentRequest); + for (let payRequest of paymentEnum) { if (!payRequest) { emitTestFail("Fail to get existing payment request."); break; @@ -370,8 +369,7 @@ function checkComplexRequestHandler() { if (!paymentEnum.hasMoreElements()) { emitTestFail("PaymentRequestService should have at least one payment request."); } - while (paymentEnum.hasMoreElements()) { - let payRequest = paymentEnum.getNext().QueryInterface(Ci.nsIPaymentRequest); + for (let payRequest of paymentEnum) { if (!payRequest) { emitTestFail("Fail to get existing payment request."); break; @@ -387,8 +385,7 @@ function checkNonBasicCardRequestHandler() { if (!paymentEnum.hasMoreElements()) { emitTestFail("PaymentRequestService should have at least one payment request."); } - while (paymentEnum.hasMoreElements()) { - let payRequest = paymentEnum.getNext().QueryInterface(Ci.nsIPaymentRequest); + for (let payRequest of paymentEnum) { if (!payRequest) { emitTestFail("Fail to get existing payment request."); break; @@ -404,8 +401,7 @@ function checkMultipleRequestsHandler () { if (!paymentEnum.hasMoreElements()) { emitTestFail("PaymentRequestService should have at least one payment request."); } - while (paymentEnum.hasMoreElements()) { - let payRequest = paymentEnum.getNext().QueryInterface(Ci.nsIPaymentRequest); + for (let payRequest of paymentEnum) { if (!payRequest) { emitTestFail("Fail to get existing payment request."); break; @@ -425,8 +421,7 @@ function checkCrossOriginTopLevelPrincipalHandler() { if (!paymentEnum.hasMoreElements()) { emitTestFail("PaymentRequestService should have at least one payment request."); } - while (paymentEnum.hasMoreElements()) { - let payRequest = paymentEnum.getNext().QueryInterface(Ci.nsIPaymentRequest); + for (let payRequest of paymentEnum) { if (!payRequest) { emitTestFail("Fail to get existing payment request."); break; diff --git a/dom/payments/test/CurrencyAmountValidationChromeScript.js b/dom/payments/test/CurrencyAmountValidationChromeScript.js index 3a24c813c4bb..3ff74c3a77de 100644 --- a/dom/payments/test/CurrencyAmountValidationChromeScript.js +++ b/dom/payments/test/CurrencyAmountValidationChromeScript.js @@ -36,10 +36,7 @@ function checkLowerCaseCurrency() { "PaymentRequestService should have at least one payment request."; sendAsyncMessage("test-fail", msg); } - while (paymentEnum.hasMoreElements()) { - const payRequest = paymentEnum - .getNext() - .QueryInterface(Ci.nsIPaymentRequest); + for (let payRequest of paymentEnum) { if (!payRequest) { sendAsyncMessage("test-fail", "Fail to get existing payment request."); break; diff --git a/dom/payments/test/browser_payment_in_different_tabs.js b/dom/payments/test/browser_payment_in_different_tabs.js index 515fc328c77d..5cc68b65a486 100644 --- a/dom/payments/test/browser_payment_in_different_tabs.js +++ b/dom/payments/test/browser_payment_in_different_tabs.js @@ -17,15 +17,13 @@ add_task(async () => { const paymentSrv = Cc[ "@mozilla.org/dom/payments/payment-request-service;1" ].getService(Ci.nsIPaymentRequestService); - ok(paymentSrv, "Fail to get PaymentRequestService."); const paymentEnum = paymentSrv.enumerate(); ok( paymentEnum.hasMoreElements(), "PaymentRequestService should have at least one payment request." ); const payments = new Set(); - while (paymentEnum.hasMoreElements()) { - const payment = paymentEnum.getNext().QueryInterface(Ci.nsIPaymentRequest); + for (let payment of paymentEnum) { ok(payment, "Fail to get existing payment request."); checkSimplePayment(payment); payments.add(payment); diff --git a/dom/plugins/test/unit/head_plugins.js b/dom/plugins/test/unit/head_plugins.js index 8acaa902b247..c545cd532be7 100644 --- a/dom/plugins/test/unit/head_plugins.js +++ b/dom/plugins/test/unit/head_plugins.js @@ -16,9 +16,7 @@ function allow_all_plugins() { // Finds the test plugin library function get_test_plugin(secondplugin=false) { - var pluginEnum = gDirSvc.get("APluginsDL", Ci.nsISimpleEnumerator); - while (pluginEnum.hasMoreElements()) { - let dir = pluginEnum.getNext().QueryInterface(Ci.nsIFile); + for (let dir of gDirSvc.get("APluginsDL", Ci.nsISimpleEnumerator)) { let name = get_platform_specific_plugin_name(secondplugin); let plugin = dir.clone(); plugin.append(name); @@ -100,9 +98,7 @@ function get_platform_specific_plugin_suffix() { function get_test_plugin_no_symlink() { let dirSvc = Cc["@mozilla.org/file/directory_service;1"] .getService(Ci.nsIProperties); - let pluginEnum = dirSvc.get("APluginsDL", Ci.nsISimpleEnumerator); - while (pluginEnum.hasMoreElements()) { - let dir = pluginEnum.getNext().QueryInterface(Ci.nsIFile); + for (let dir of dirSvc.get("APluginsDL", Ci.nsISimpleEnumerator)) { let plugin = dir.clone(); plugin.append(get_platform_specific_plugin_name()); if (plugin.exists()) { diff --git a/dom/push/PushRecord.jsm b/dom/push/PushRecord.jsm index 99cdc36de9dc..c38ba89b6a09 100644 --- a/dom/push/PushRecord.jsm +++ b/dom/push/PushRecord.jsm @@ -182,9 +182,7 @@ PushRecord.prototype = { }, isTabOpen() { - let windows = Services.wm.getEnumerator("navigator:browser"); - while (windows.hasMoreElements()) { - let window = windows.getNext(); + for (let window of Services.wm.getEnumerator("navigator:browser")) { if (window.closed || PrivateBrowsingUtils.isWindowPrivate(window)) { continue; } diff --git a/dom/workers/test/dom_worker_helper.js b/dom/workers/test/dom_worker_helper.js index a457d9457264..76695d556023 100644 --- a/dom/workers/test/dom_worker_helper.js +++ b/dom/workers/test/dom_worker_helper.js @@ -38,12 +38,8 @@ function assertThrows(fun, message) { ok(throws, message); } -function* generateDebuggers() { - let e = wdm.getWorkerDebuggerEnumerator(); - while (e.hasMoreElements()) { - let dbg = e.getNext().QueryInterface(Ci.nsIWorkerDebugger); - yield dbg; - } +function generateDebuggers() { + return wdm.getWorkerDebuggerEnumerator(); } function findDebugger(url) { diff --git a/extensions/cookie/test/file_chromecommon.js b/extensions/cookie/test/file_chromecommon.js index abc15eed6977..5b38ee0ffcf4 100644 --- a/extensions/cookie/test/file_chromecommon.js +++ b/extensions/cookie/test/file_chromecommon.js @@ -3,7 +3,7 @@ let cs = Cc["@mozilla.org/cookiemanager;1"] addMessageListener("getCookieCountAndClear", () => { let count = 0; - for (let list = cs.enumerator; list.hasMoreElements(); list.getNext()) + for (let cookie of cs.enumerator) ++count; cs.removeAll(); diff --git a/extensions/cookie/test/file_testloadflags_chromescript.js b/extensions/cookie/test/file_testloadflags_chromescript.js index f14996ab31ad..26619c1cadfa 100644 --- a/extensions/cookie/test/file_testloadflags_chromescript.js +++ b/extensions/cookie/test/file_testloadflags_chromescript.js @@ -62,9 +62,7 @@ obs.prototype = { function getCookieCount(cs) { let count = 0; - let list = cs.enumerator; - while (list.hasMoreElements()) { - let cookie = list.getNext().QueryInterface(Ci.nsICookie); + for (let cookie of cs.enumerator) { info("cookie: " + cookie); info("cookie host " + cookie.host + " path " + cookie.path + " name " + cookie.name + " value " + cookie.value + " isSecure " + cookie.isSecure + " expires " + cookie.expires); diff --git a/extensions/cookie/test/unit/head_cookies.js b/extensions/cookie/test/unit/head_cookies.js index 9890868aa356..d08d67cb6521 100644 --- a/extensions/cookie/test/unit/head_cookies.js +++ b/extensions/cookie/test/unit/head_cookies.js @@ -123,8 +123,8 @@ function do_set_cookies(uri, channel, session, expected) { function do_count_enumerator(enumerator) { let i = 0; - while (enumerator.hasMoreElements()) { - enumerator.getNext(); + for (let cookie of enumerator) { + void cookie; ++i; } return i; diff --git a/extensions/cookie/test/unit/test_bug526789.js b/extensions/cookie/test/unit/test_bug526789.js index ff630d3cd209..57704b0ff081 100644 --- a/extensions/cookie/test/unit/test_bug526789.js +++ b/extensions/cookie/test/unit/test_bug526789.js @@ -185,10 +185,7 @@ function run_test() { function getCookieCount() { var count = 0; var cm = Cc["@mozilla.org/cookiemanager;1"].getService(Ci.nsICookieManager); - var enumerator = cm.enumerator; - while (enumerator.hasMoreElements()) { - if (!(enumerator.getNext() instanceof Ci.nsICookie2)) - throw new Error("not a cookie"); + for (let cookie of cm.enumerator) { ++count; } return count; diff --git a/extensions/cookie/test/unit/test_domain_eviction.js b/extensions/cookie/test/unit/test_domain_eviction.js index 50bc25f12d58..17783fc4fad5 100644 --- a/extensions/cookie/test/unit/test_domain_eviction.js +++ b/extensions/cookie/test/unit/test_domain_eviction.js @@ -56,10 +56,7 @@ function* do_run_test() setCookies("tasty.horse.radish", 50, futureExpiry); Assert.equal(countCookies("horse.radish", "horse.radish"), 50); - let enumerator = Services.cookiemgr.enumerator; - while (enumerator.hasMoreElements()) { - let cookie = enumerator.getNext().QueryInterface(Ci.nsICookie2); - + for (let cookie of Services.cookiemgr.enumerator) { if (cookie.host == "horse.radish") do_throw("cookies not evicted by lastAccessed order"); } @@ -77,9 +74,7 @@ function* do_run_test() false, false, false, futureExpiry, {}); Assert.equal(countCookies("captchart.com", "captchart.com"), 50); - enumerator = Services.cookiemgr.getCookiesFromHost("captchart.com", {}); - while (enumerator.hasMoreElements()) { - let cookie = enumerator.getNext().QueryInterface(Ci.nsICookie2); + for (let cookie of Services.cookiemgr.getCookiesFromHost("captchart.com", {})) { Assert.ok(cookie.expiry == futureExpiry); } @@ -104,14 +99,10 @@ setCookies(aHost, aNumber, aExpiry) function countCookies(aBaseDomain, aHost) { - let enumerator = Services.cookiemgr.enumerator; - // count how many cookies are within domain 'aBaseDomain' using the cookie // enumerator. let cookies = []; - while (enumerator.hasMoreElements()) { - let cookie = enumerator.getNext().QueryInterface(Ci.nsICookie2); - + for (let cookie of Services.cookiemgr.enumerator) { if (cookie.host.length >= aBaseDomain.length && cookie.host.slice(cookie.host.length - aBaseDomain.length) == aBaseDomain) cookies.push(cookie); @@ -123,10 +114,7 @@ countCookies(aBaseDomain, aHost) cookies.length); Assert.equal(Services.cookiemgr.countCookiesFromHost(aHost), cookies.length); - enumerator = Services.cookiemgr.getCookiesFromHost(aHost, {}); - while (enumerator.hasMoreElements()) { - let cookie = enumerator.getNext().QueryInterface(Ci.nsICookie2); - + for (let cookie of Services.cookiemgr.getCookiesFromHost(aHost, {})) { if (cookie.host.length >= aBaseDomain.length && cookie.host.slice(cookie.host.length - aBaseDomain.length) == aBaseDomain) { let found = false; diff --git a/extensions/cookie/test/unit/test_eviction.js b/extensions/cookie/test/unit/test_eviction.js index e59797871c2f..415b3b9b673f 100644 --- a/extensions/cookie/test/unit/test_eviction.js +++ b/extensions/cookie/test/unit/test_eviction.js @@ -231,11 +231,8 @@ function get_creationTime(i) // time, if both the limit on total cookies (maxNumber + 10%) and the purge age // + 10% are exceeded. function check_remaining_cookies(aNumberTotal, aNumberOld, aNumberToExpect) { - var enumerator = Services.cookiemgr.enumerator; - let i = 0; - while (enumerator.hasMoreElements()) { - var cookie = enumerator.getNext().QueryInterface(Ci.nsICookie2); + for (let cookie of Services.cookiemgr.enumerator) { ++i; if (aNumberTotal != aNumberToExpect) { diff --git a/extensions/cookie/test/unit/test_permmanager_defaults.js b/extensions/cookie/test/unit/test_permmanager_defaults.js index 38c526773e09..50e74ff9c36a 100644 --- a/extensions/cookie/test/unit/test_permmanager_defaults.js +++ b/extensions/cookie/test/unit/test_permmanager_defaults.js @@ -215,9 +215,7 @@ add_task(async function do_test() { // be found. function findCapabilityViaEnum(origin = TEST_ORIGIN, type = TEST_PERMISSION) { let result = undefined; - let e = Services.perms.enumerator; - while (e.hasMoreElements()) { - let perm = e.getNext().QueryInterface(Ci.nsIPermission); + for (let perm of Services.perms.enumerator) { if (perm.matchesURI(origin, true) && perm.type == type) { if (result !== undefined) { diff --git a/extensions/cookie/test/unit/test_permmanager_migrate_4-7.js b/extensions/cookie/test/unit/test_permmanager_migrate_4-7.js index 3e87d03e6a92..ba8f03cd6d17 100644 --- a/extensions/cookie/test/unit/test_permmanager_migrate_4-7.js +++ b/extensions/cookie/test/unit/test_permmanager_migrate_4-7.js @@ -159,9 +159,7 @@ add_task(async function test() { await PlacesTestUtils.addVisits(Services.io.newURI("ftp://some.subdomain.of.foo.com:8000/some/subdirectory")); // Force initialization of the nsPermissionManager - let enumerator = Services.perms.enumerator; - while (enumerator.hasMoreElements()) { - let permission = enumerator.getNext().QueryInterface(Ci.nsIPermission); + for (let permission of Services.perms.enumerator) { let isExpected = false; expected.forEach((it, i) => { diff --git a/extensions/cookie/test/unit/test_permmanager_migrate_4-7_no_history.js b/extensions/cookie/test/unit/test_permmanager_migrate_4-7_no_history.js index e19e4fa8b9b3..a62def2d89e7 100644 --- a/extensions/cookie/test/unit/test_permmanager_migrate_4-7_no_history.js +++ b/extensions/cookie/test/unit/test_permmanager_migrate_4-7_no_history.js @@ -176,9 +176,7 @@ add_task(function test() { let found = expected.map((it) => 0); // Force initialization of the nsPermissionManager - let enumerator = Services.perms.enumerator; - while (enumerator.hasMoreElements()) { - let permission = enumerator.getNext().QueryInterface(Ci.nsIPermission); + for (let permission of Services.perms.enumerator) { let isExpected = false; expected.forEach((it, i) => { diff --git a/extensions/cookie/test/unit/test_permmanager_migrate_5-7a.js b/extensions/cookie/test/unit/test_permmanager_migrate_5-7a.js index 51165a47184a..45de4c1a86d8 100644 --- a/extensions/cookie/test/unit/test_permmanager_migrate_5-7a.js +++ b/extensions/cookie/test/unit/test_permmanager_migrate_5-7a.js @@ -218,9 +218,7 @@ add_task(async function test() { await PlacesTestUtils.addVisits(Services.io.newURI("ftp://some.subdomain.of.foo.com:8000/some/subdirectory")); // Force initialization of the nsPermissionManager - let enumerator = Services.perms.enumerator; - while (enumerator.hasMoreElements()) { - let permission = enumerator.getNext().QueryInterface(Ci.nsIPermission); + for (let permission of Services.perms.enumerator) { let isExpected = false; expected.forEach((it, i) => { diff --git a/extensions/cookie/test/unit/test_permmanager_migrate_5-7b.js b/extensions/cookie/test/unit/test_permmanager_migrate_5-7b.js index c1a32e236116..0949887a2dcc 100644 --- a/extensions/cookie/test/unit/test_permmanager_migrate_5-7b.js +++ b/extensions/cookie/test/unit/test_permmanager_migrate_5-7b.js @@ -100,9 +100,7 @@ add_task(function test() { let found = expected.map((it) => 0); // Force initialization of the nsPermissionManager - let enumerator = Services.perms.enumerator; - while (enumerator.hasMoreElements()) { - let permission = enumerator.getNext().QueryInterface(Ci.nsIPermission); + for (let permission of Services.perms.enumerator) { let isExpected = false; expected.forEach((it, i) => { diff --git a/extensions/cookie/test/unit/test_permmanager_migrate_6-7a.js b/extensions/cookie/test/unit/test_permmanager_migrate_6-7a.js index e99298ea6f9b..d5392f90e88d 100644 --- a/extensions/cookie/test/unit/test_permmanager_migrate_6-7a.js +++ b/extensions/cookie/test/unit/test_permmanager_migrate_6-7a.js @@ -218,9 +218,7 @@ add_task(async function test() { await PlacesTestUtils.addVisits(Services.io.newURI("ftp://some.subdomain.of.foo.com:8000/some/subdirectory")); // Force initialization of the nsPermissionManager - let enumerator = Services.perms.enumerator; - while (enumerator.hasMoreElements()) { - let permission = enumerator.getNext().QueryInterface(Ci.nsIPermission); + for (let permission of Services.perms.enumerator) { let isExpected = false; expected.forEach((it, i) => { diff --git a/extensions/cookie/test/unit/test_permmanager_migrate_6-7b.js b/extensions/cookie/test/unit/test_permmanager_migrate_6-7b.js index b0b42339461d..0e7e53b46969 100644 --- a/extensions/cookie/test/unit/test_permmanager_migrate_6-7b.js +++ b/extensions/cookie/test/unit/test_permmanager_migrate_6-7b.js @@ -94,9 +94,7 @@ add_task(function test() { let found = expected.map((it) => 0); // Force initialization of the nsPermissionManager - let enumerator = Services.perms.enumerator; - while (enumerator.hasMoreElements()) { - let permission = enumerator.getNext().QueryInterface(Ci.nsIPermission); + for (let permission of Services.perms.enumerator) { let isExpected = false; expected.forEach((it, i) => { diff --git a/extensions/cookie/test/unit/test_permmanager_migrate_7-8.js b/extensions/cookie/test/unit/test_permmanager_migrate_7-8.js index 8f026c22fb3d..808c0a40fca0 100644 --- a/extensions/cookie/test/unit/test_permmanager_migrate_7-8.js +++ b/extensions/cookie/test/unit/test_permmanager_migrate_7-8.js @@ -198,9 +198,7 @@ add_task(async function test() { await PlacesTestUtils.addVisits(Services.io.newURI("https://localhost:8080")); // Force initialization of the nsPermissionManager - let enumerator = Services.perms.enumerator; - while (enumerator.hasMoreElements()) { - let permission = enumerator.getNext().QueryInterface(Ci.nsIPermission); + for (let permission of Services.perms.enumerator) { let isExpected = false; expected.forEach((it, i) => { diff --git a/js/xpconnect/loader/XPCOMUtils.jsm b/js/xpconnect/loader/XPCOMUtils.jsm index 8647a212f3d5..4f0b79ad73c2 100644 --- a/js/xpconnect/loader/XPCOMUtils.jsm +++ b/js/xpconnect/loader/XPCOMUtils.jsm @@ -413,10 +413,9 @@ var XPCOMUtils = { * @param e The nsISimpleEnumerator to iterate over. * @param i The expected interface for each element. */ - IterSimpleEnumerator: function* XPCU_IterSimpleEnumerator(e, i) + IterSimpleEnumerator: function XPCU_IterSimpleEnumerator(e, i) { - while (e.hasMoreElements()) - yield e.getNext().QueryInterface(i); + return e.entries(i); }, /** @@ -437,7 +436,7 @@ var XPCOMUtils = { enumerateCategoryEntries: function* XPCOMUtils_enumerateCategoryEntries(aCategory) { let category = this.categoryManager.enumerateCategory(aCategory); - for (let entry of this.IterSimpleEnumerator(category, Ci.nsISupportsCString)) { + for (let entry of category) { yield [entry.data, this.categoryManager.getCategoryEntry(aCategory, entry.data)]; } }, diff --git a/layout/tools/reftest/bootstrap.js b/layout/tools/reftest/bootstrap.js index 07d290af6e78..40118f222e45 100644 --- a/layout/tools/reftest/bootstrap.js +++ b/layout/tools/reftest/bootstrap.js @@ -24,9 +24,7 @@ var WindowListener = { let win = xulWin.docShell.domWindow; win.addEventListener("load", function listener() { // Load into any existing windows. - let windows = Services.wm.getEnumerator("navigator:browser"); - while (windows.hasMoreElements()) { - win = windows.getNext().QueryInterface(Ci.nsIDOMWindow); + for (win of Services.wm.getEnumerator("navigator:browser")) { break; } diff --git a/netwerk/cookie/test/browser/browser_originattributes.js b/netwerk/cookie/test/browser/browser_originattributes.js index 40be81800671..e60c6c5a0713 100644 --- a/netwerk/cookie/test/browser/browser_originattributes.js +++ b/netwerk/cookie/test/browser/browser_originattributes.js @@ -84,8 +84,7 @@ async function checkCookies(expectedValues, time) { function getCookiesFromManager(userContextId) { let cookies = {}; let enumerator = cm.getCookiesWithOriginAttributes(JSON.stringify({userContextId})); - while (enumerator.hasMoreElements()) { - let cookie = enumerator.getNext().QueryInterface(Ci.nsICookie); + for (let cookie of enumerator) { cookies[cookie.name] = cookie.value; } return cookies; diff --git a/netwerk/cookie/test/unit/test_bug1267910.js b/netwerk/cookie/test/unit/test_bug1267910.js index 6d7ee25ad6b5..8ad734994005 100644 --- a/netwerk/cookie/test/unit/test_bug1267910.js +++ b/netwerk/cookie/test/unit/test_bug1267910.js @@ -55,12 +55,10 @@ function checkCookie(cookie, cookieObj) { function countCookies(enumerator) { let cnt = 0; - - while (enumerator.hasMoreElements()) { + for (let cookie of enumerator) { + void cookie; cnt++; - enumerator.getNext(); } - return cnt; } diff --git a/netwerk/cookie/test/unit/test_eviction.js b/netwerk/cookie/test/unit/test_eviction.js index cd8f5e2c1f20..7c5abd6e714e 100644 --- a/netwerk/cookie/test/unit/test_eviction.js +++ b/netwerk/cookie/test/unit/test_eviction.js @@ -223,10 +223,8 @@ async function test_basic_eviction(base_host, subdomain_host, other_subdomain_ho // Verify that the given cookie names exist, and are ordered from least to most recently accessed function verifyCookies(names, uri) { Assert.equal(cm.countCookiesFromHost(uri.host), names.length); - let cookies = cm.getCookiesFromHost(uri.host, {}); let actual_cookies = []; - while (cookies.hasMoreElements()) { - let cookie = cookies.getNext().QueryInterface(Ci.nsICookie2); + for (let cookie of cm.getCookiesFromHost(uri.host, {})) { actual_cookies.push(cookie); } if (names.length != actual_cookies.length) { diff --git a/netwerk/dns/mdns/libmdns/MulticastDNSAndroid.jsm b/netwerk/dns/mdns/libmdns/MulticastDNSAndroid.jsm index a1155e1e1e12..abe231ba3974 100644 --- a/netwerk/dns/mdns/libmdns/MulticastDNSAndroid.jsm +++ b/netwerk/dns/mdns/libmdns/MulticastDNSAndroid.jsm @@ -146,9 +146,7 @@ function parsePropertyBag2(bag) { } let attributes = []; - let enumerator = bag.enumerator; - while (enumerator.hasMoreElements()) { - let name = enumerator.getNext().QueryInterface(Ci.nsIProperty).name; + for (let {name} of bag.enumerator) { let value = bag.getPropertyAsACString(name); attributes.push({ "name": name, diff --git a/netwerk/dns/mdns/libmdns/fallback/MulticastDNS.jsm b/netwerk/dns/mdns/libmdns/fallback/MulticastDNS.jsm index e2e04a9ba398..4998772ad7c6 100644 --- a/netwerk/dns/mdns/libmdns/fallback/MulticastDNS.jsm +++ b/netwerk/dns/mdns/libmdns/fallback/MulticastDNS.jsm @@ -838,9 +838,7 @@ function _propertyBagToObject(propBag) { let result = {}; if (propBag.QueryInterface) { propBag.QueryInterface(Ci.nsIPropertyBag2); - let propEnum = propBag.enumerator; - while (propEnum.hasMoreElements()) { - let prop = propEnum.getNext().QueryInterface(Ci.nsIProperty); + for (let prop of propBag.enumerator) { result[prop.name] = prop.value.toString(); } } else { diff --git a/netwerk/test/unit/test_bug411952.js b/netwerk/test/unit/test_bug411952.js index e83413fb36ed..393614cf4753 100644 --- a/netwerk/test/unit/test_bug411952.js +++ b/netwerk/test/unit/test_bug411952.js @@ -8,9 +8,8 @@ function run_test() { cm.add("example.com", "/", "C", "V", false, true, false, time, {}); const now = Math.floor((new Date()).getTime() / 1000); - var enumerator = cm.enumerator, found = false; - while (enumerator.hasMoreElements()) { - var cookie = enumerator.getNext().QueryInterface(Ci.nsICookie2); + var found = false; + for (let cookie of cm.enumerator) { if (cookie.host == "example.com" && cookie.path == "/" && cookie.name == "C") { diff --git a/netwerk/test/unit/test_network_activity.js b/netwerk/test/unit/test_network_activity.js index 19458f6f182b..4729b09a0b57 100644 --- a/netwerk/test/unit/test_network_activity.js +++ b/netwerk/test/unit/test_network_activity.js @@ -44,10 +44,7 @@ function run_test() { // setting up an observer let networkActivity = function(subject, topic, value) { subject.QueryInterface(Ci.nsIMutableArray); - let enumerator = subject.enumerate(); - while (enumerator.hasMoreElements()) { - let data = enumerator.getNext(); - data.QueryInterface(Ci.nsINetworkActivityData); + for (let data of subject.enumerate()) { results.push(data); } }; diff --git a/netwerk/test/unit/test_permmgr.js b/netwerk/test/unit/test_permmgr.js index 3b6adb8a7fad..29b56f45a042 100644 --- a/netwerk/test/unit/test_permmgr.js +++ b/netwerk/test/unit/test_permmgr.js @@ -61,13 +61,7 @@ function run_test() { } // test the enumerator ... - var j = 0; - var perms = new Array(); - var enumerator = pm.enumerator; - while (enumerator.hasMoreElements()) { - perms[j] = enumerator.getNext().QueryInterface(Ci.nsIPermission); - ++j; - } + var perms = Array.from(pm.enumerator); Assert.equal(perms.length, hosts.length); // ... remove all the hosts ... diff --git a/security/manager/pki/resources/content/device_manager.js b/security/manager/pki/resources/content/device_manager.js index 368e8672cd3d..7873971048aa 100644 --- a/security/manager/pki/resources/content/device_manager.js +++ b/security/manager/pki/resources/content/device_manager.js @@ -40,9 +40,7 @@ function doConfirm(msg) { } function RefreshDeviceList() { - let modules = secmoddb.listModules(); - for (let module of XPCOMUtils.IterSimpleEnumerator(modules, - Ci.nsIPKCS11Module)) { + for (let module of secmoddb.listModules()) { let slots = module.listSlots(); AddModule(module, slots); } @@ -81,7 +79,7 @@ function AddModule(module, slots) { row.appendChild(cell); item.appendChild(row); var parent = document.createElement("treechildren"); - for (let slot of XPCOMUtils.IterSimpleEnumerator(slots, Ci.nsIPKCS11Slot)) { + for (let slot of slots) { var child_item = document.createElement("treeitem"); var child_row = document.createElement("treerow"); var child_cell = document.createElement("treecell"); diff --git a/security/manager/pki/resources/content/pippki.js b/security/manager/pki/resources/content/pippki.js index d16475a05ca3..db438395bafe 100644 --- a/security/manager/pki/resources/content/pippki.js +++ b/security/manager/pki/resources/content/pippki.js @@ -288,13 +288,7 @@ function getChainForUsage(results, usage) { for (let result of results) { if (certificateUsages[result.usageString] == usage && result.errorCode == PRErrorCodeSuccess) { - let array = []; - let enumerator = result.chain.getEnumerator(); - while (enumerator.hasMoreElements()) { - let cert = enumerator.getNext().QueryInterface(Ci.nsIX509Cert); - array.push(cert); - } - return array; + return Array.from(result.chain.getEnumerator()); } } return null; diff --git a/security/manager/ssl/tests/mochitest/browser/browser_clientAuth_ui.js b/security/manager/ssl/tests/mochitest/browser/browser_clientAuth_ui.js index 15bb0056435f..7903b41c4e07 100644 --- a/security/manager/ssl/tests/mochitest/browser/browser_clientAuth_ui.js +++ b/security/manager/ssl/tests/mochitest/browser/browser_clientAuth_ui.js @@ -90,9 +90,7 @@ function checkDialogContents(win, notBefore, notAfter) { } function findCertByCommonName(commonName) { - let certEnumerator = certDB.getCerts().getEnumerator(); - while (certEnumerator.hasMoreElements()) { - let cert = certEnumerator.getNext().QueryInterface(Ci.nsIX509Cert); + for (let cert of certDB.getCerts().getEnumerator()) { if (cert.commonName == commonName) { return cert; } diff --git a/security/manager/ssl/tests/unit/test_certDB_export_pkcs12.js b/security/manager/ssl/tests/unit/test_certDB_export_pkcs12.js index 0d9aaa817c20..89d7ffd5d52e 100644 --- a/security/manager/ssl/tests/unit/test_certDB_export_pkcs12.js +++ b/security/manager/ssl/tests/unit/test_certDB_export_pkcs12.js @@ -17,9 +17,7 @@ const TEST_CERT_PASSWORD = "黒い"; const TEST_OUTPUT_PASSWORD = "other password"; function findCertByCommonName(commonName) { - let certEnumerator = gCertDB.getCerts().getEnumerator(); - while (certEnumerator.hasMoreElements()) { - let cert = certEnumerator.getNext().QueryInterface(Ci.nsIX509Cert); + for (let cert of gCertDB.getCerts().getEnumerator()) { if (cert.commonName == commonName) { return cert; } diff --git a/security/manager/ssl/tests/unit/test_certDB_export_pkcs12_with_master_password.js b/security/manager/ssl/tests/unit/test_certDB_export_pkcs12_with_master_password.js index 0db86ee8140b..94e2670557c3 100644 --- a/security/manager/ssl/tests/unit/test_certDB_export_pkcs12_with_master_password.js +++ b/security/manager/ssl/tests/unit/test_certDB_export_pkcs12_with_master_password.js @@ -45,9 +45,7 @@ const gPromptFactory = { }; function findCertByCommonName(commonName) { - let certEnumerator = gCertDB.getCerts().getEnumerator(); - while (certEnumerator.hasMoreElements()) { - let cert = certEnumerator.getNext().QueryInterface(Ci.nsIX509Cert); + for (let cert of gCertDB.getCerts().getEnumerator()) { if (cert.commonName == commonName) { return cert; } diff --git a/security/manager/ssl/tests/unit/test_certDB_import.js b/security/manager/ssl/tests/unit/test_certDB_import.js index 8d258933918f..e80798dc128b 100644 --- a/security/manager/ssl/tests/unit/test_certDB_import.js +++ b/security/manager/ssl/tests/unit/test_certDB_import.js @@ -65,9 +65,7 @@ function getCertAsByteArray(certPath) { } function commonFindCertBy(propertyName, value) { - let certEnumerator = gCertDB.getCerts().getEnumerator(); - while (certEnumerator.hasMoreElements()) { - let cert = certEnumerator.getNext().QueryInterface(Ci.nsIX509Cert); + for (let cert of gCertDB.getCerts().getEnumerator()) { if (cert[propertyName] == value) { return cert; } diff --git a/security/manager/ssl/tests/unit/test_certDB_import_pkcs12.js b/security/manager/ssl/tests/unit/test_certDB_import_pkcs12.js index ef83c042e8be..dc2668b7602a 100644 --- a/security/manager/ssl/tests/unit/test_certDB_import_pkcs12.js +++ b/security/manager/ssl/tests/unit/test_certDB_import_pkcs12.js @@ -74,9 +74,7 @@ let gTestcases = [ function doesCertExist(commonName) { let allCerts = gCertDB.getCerts(); - let enumerator = allCerts.getEnumerator(); - while (enumerator.hasMoreElements()) { - let cert = enumerator.getNext().QueryInterface(Ci.nsIX509Cert); + for (let cert of allCerts.getEnumerator()) { if (cert.isBuiltInRoot) { continue; } diff --git a/security/manager/ssl/tests/unit/test_certDB_import_with_master_password.js b/security/manager/ssl/tests/unit/test_certDB_import_with_master_password.js index cfc420d90a81..8164d1b04d88 100644 --- a/security/manager/ssl/tests/unit/test_certDB_import_with_master_password.js +++ b/security/manager/ssl/tests/unit/test_certDB_import_with_master_password.js @@ -82,9 +82,7 @@ function getCertAsByteArray(certPath) { } function findCertByCommonName(commonName) { - let certEnumerator = gCertDB.getCerts().getEnumerator(); - while (certEnumerator.hasMoreElements()) { - let cert = certEnumerator.getNext().QueryInterface(Ci.nsIX509Cert); + for (let cert of gCertDB.getCerts().getEnumerator()) { if (cert.commonName == commonName) { return cert; } diff --git a/security/manager/ssl/tests/unit/test_enterprise_roots.js b/security/manager/ssl/tests/unit/test_enterprise_roots.js index 940969e66393..2d04c34b424a 100644 --- a/security/manager/ssl/tests/unit/test_enterprise_roots.js +++ b/security/manager/ssl/tests/unit/test_enterprise_roots.js @@ -31,11 +31,9 @@ function check_no_enterprise_roots_imported(certDB, dbKey = undefined) { function check_some_enterprise_roots_imported(certDB) { let enterpriseRoots = certDB.getEnterpriseRoots(); notEqual(enterpriseRoots, null, "should have imported some enterprise roots"); - let enumerator = enterpriseRoots.getEnumerator(); let foundNonBuiltIn = false; let savedDBKey = null; - while (enumerator.hasMoreElements()) { - let cert = enumerator.getNext().QueryInterface(Ci.nsIX509Cert); + for (let cert of enterpriseRoots.getEnumerator()) { if (!cert.isBuiltInRoot && !savedDBKey) { foundNonBuiltIn = true; savedDBKey = cert.dbKey; diff --git a/security/manager/ssl/tests/unit/test_pkcs11_module.js b/security/manager/ssl/tests/unit/test_pkcs11_module.js index ef7d6037a634..2c9f4b97528f 100644 --- a/security/manager/ssl/tests/unit/test_pkcs11_module.js +++ b/security/manager/ssl/tests/unit/test_pkcs11_module.js @@ -16,8 +16,7 @@ function checkTestModuleNotPresent() { let modules = gModuleDB.listModules(); ok(modules.hasMoreElements(), "One or more modules should be present with test module not present"); - while (modules.hasMoreElements()) { - let module = modules.getNext().QueryInterface(Ci.nsIPKCS11Module); + for (let module of modules) { notEqual(module.name, "PKCS11 Test Module", "Non-test module name shouldn't equal 'PKCS11 Test Module'"); ok(!(module.libName && module.libName.includes("pkcs11testmodule")), @@ -37,8 +36,7 @@ function checkTestModuleExists() { ok(modules.hasMoreElements(), "One or more modules should be present with test module present"); let testModule = null; - while (modules.hasMoreElements()) { - let module = modules.getNext().QueryInterface(Ci.nsIPKCS11Module); + for (let module of modules) { if (module.name == "PKCS11 Test Module") { testModule = module; break; @@ -90,12 +88,8 @@ function run_test() { let testModule = checkTestModuleExists(); // Check that listing the slots for the test module works. - let slots = testModule.listSlots(); - let testModuleSlotNames = []; - while (slots.hasMoreElements()) { - let slot = slots.getNext().QueryInterface(Ci.nsIPKCS11Slot); - testModuleSlotNames.push(slot.name); - } + let testModuleSlotNames = Array.from(testModule.listSlots(), + slot => slot.name); testModuleSlotNames.sort(); const expectedSlotNames = ["Empty PKCS11 Slot", "Test PKCS11 Slot", "Test PKCS11 Slot 二"]; deepEqual(testModuleSlotNames, expectedSlotNames, diff --git a/security/manager/ssl/tests/unit/test_pkcs11_moduleDB.js b/security/manager/ssl/tests/unit/test_pkcs11_moduleDB.js index 48f8f955e7c0..f0775fca791e 100644 --- a/security/manager/ssl/tests/unit/test_pkcs11_moduleDB.js +++ b/security/manager/ssl/tests/unit/test_pkcs11_moduleDB.js @@ -30,8 +30,7 @@ function run_test() { Services.strings.createBundle("chrome://pipnss/locale/pipnss.properties"); let rootsModuleName = bundle.GetStringFromName("RootCertModuleName"); let foundRootsModule = false; - for (let module of XPCOMUtils.IterSimpleEnumerator(moduleDB.listModules(), - Ci.nsIPKCS11Module)) { + for (let module of moduleDB.listModules()) { if (module.name == rootsModuleName) { foundRootsModule = true; break; diff --git a/security/manager/ssl/tests/unit/test_pkcs11_slot.js b/security/manager/ssl/tests/unit/test_pkcs11_slot.js index ee332c2947a8..eaee4a54c562 100644 --- a/security/manager/ssl/tests/unit/test_pkcs11_slot.js +++ b/security/manager/ssl/tests/unit/test_pkcs11_slot.js @@ -9,8 +9,7 @@ do_get_profile(); function find_slot_by_name(module, name) { - for (let slot of XPCOMUtils.IterSimpleEnumerator(module.listSlots(), - Ci.nsIPKCS11Slot)) { + for (let slot of module.listSlots()) { if (slot.name == name) { return slot; } @@ -19,8 +18,7 @@ function find_slot_by_name(module, name) { } function find_module_by_name(moduleDB, name) { - for (let slot of XPCOMUtils.IterSimpleEnumerator(moduleDB.listModules(), - Ci.nsIPKCS11Module)) { + for (let slot of moduleDB.listModules()) { if (slot.name == name) { return slot; } diff --git a/security/manager/ssl/tests/unit/test_sss_enumerate.js b/security/manager/ssl/tests/unit/test_sss_enumerate.js index 6daff17a5e8b..c258554a69c7 100644 --- a/security/manager/ssl/tests/unit/test_sss_enumerate.js +++ b/security/manager/ssl/tests/unit/test_sss_enumerate.js @@ -64,13 +64,7 @@ function insertEntries() { } function getEntries(type) { - let entryEnumerator = sss.enumerate(type); - let entries = []; - while (entryEnumerator.hasMoreElements()) { - let entry = entryEnumerator.getNext(); - entries.push(entry.QueryInterface(Ci.nsISiteSecurityState)); - } - return entries; + return Array.from(sss.enumerate(type)); } function checkSiteSecurityStateAttrs(entries) { @@ -92,11 +86,9 @@ function checkSiteSecurityStateAttrs(entries) { function checkSha256Keys(hpkpEntries) { for (let hpkpEntry of hpkpEntries) { - let enumerator = hpkpEntry.QueryInterface(Ci.nsISiteHPKPState).sha256Keys; - let keys = []; - while (enumerator.hasMoreElements()) { - keys.push(enumerator.getNext().QueryInterface(Ci.nsIVariant)); - } + let keys = Array.from(hpkpEntry.QueryInterface(Ci.nsISiteHPKPState).sha256Keys, + key => key.QueryInterface(Ci.nsIVariant)); + equal(keys.length, KEY_HASHES.length, "Should get correct number of keys"); keys.sort(); for (let i = 0; i < KEY_HASHES.length; i++) { diff --git a/security/manager/tools/genHPKPStaticPins.js b/security/manager/tools/genHPKPStaticPins.js index aab462cb2c71..fe0e47a93770 100644 --- a/security/manager/tools/genHPKPStaticPins.js +++ b/security/manager/tools/genHPKPStaticPins.js @@ -375,11 +375,9 @@ function downloadAndParseChromePins(filename, // nicknames and digests of the SPKInfo for the mozilla trust store function loadNSSCertinfo(extraCertificates) { let allCerts = gCertDB.getCerts(); - let enumerator = allCerts.getEnumerator(); let certNameToSKD = {}; let certSKDToName = {}; - while (enumerator.hasMoreElements()) { - let cert = enumerator.getNext().QueryInterface(Ci.nsIX509Cert); + for (let cert of allCerts.getEnumerator()) { if (!cert.isBuiltInRoot) { continue; } diff --git a/security/manager/tools/genRootCAHashes.js b/security/manager/tools/genRootCAHashes.js index b6e71e51b14f..83e61df77967 100644 --- a/security/manager/tools/genRootCAHashes.js +++ b/security/manager/tools/genRootCAHashes.js @@ -172,10 +172,7 @@ function insertTrustAnchorsFromDatabase() { const TRUST_TYPE = Ci.nsIX509CertDB.TRUSTED_SSL; // Iterate through the whole Cert DB - let enumerator = CertDb.getCerts().getEnumerator(); - while (enumerator.hasMoreElements()) { - let cert = enumerator.getNext().QueryInterface(Ci.nsIX509Cert); - + for (let cert of CertDb.getCerts().getEnumerator()) { // Find the certificate in our existing list. Do it here because we need to check if // it's untrusted too. diff --git a/services/common/tests/unit/test_logmanager.js b/services/common/tests/unit/test_logmanager.js index 5d707a5cb8c1..4d6fea809458 100644 --- a/services/common/tests/unit/test_logmanager.js +++ b/services/common/tests/unit/test_logmanager.js @@ -227,10 +227,9 @@ add_task(async function test_logFileError() { function countLogFiles() { let logsdir = FileUtils.getDir("ProfD", ["weave", "logs"], true); let count = 0; - let entries = logsdir.directoryEntries; - while (entries.hasMoreElements()) { + for (let entry of logsdir.directoryEntries) { + void entry; count += 1; - entries.getNext(); } return count; } diff --git a/services/sync/modules/engines/tabs.js b/services/sync/modules/engines/tabs.js index 675554e65a70..da0f01daaadc 100644 --- a/services/sync/modules/engines/tabs.js +++ b/services/sync/modules/engines/tabs.js @@ -135,9 +135,7 @@ TabStore.prototype = { let allTabs = []; - let winEnum = this.getWindowEnumerator(); - while (winEnum.hasMoreElements()) { - let win = winEnum.getNext(); + for (let win of this.getWindowEnumerator()) { if (this.shouldSkipWindow(win)) { continue; } @@ -235,9 +233,8 @@ TabStore.prototype = { // first syncs. let ids = {}; let allWindowsArePrivate = false; - let wins = Services.wm.getEnumerator("navigator:browser"); - while (wins.hasMoreElements()) { - if (PrivateBrowsingUtils.isWindowPrivate(wins.getNext())) { + for (let win of Services.wm.getEnumerator("navigator:browser")) { + if (PrivateBrowsingUtils.isWindowPrivate(win)) { // Ensure that at least there is a private window. allWindowsArePrivate = true; } else { @@ -320,17 +317,15 @@ TabTracker.prototype = { onStart() { Svc.Obs.add("domwindowopened", this.asyncObserver); - let wins = Services.wm.getEnumerator("navigator:browser"); - while (wins.hasMoreElements()) { - this._registerListenersForWindow(wins.getNext()); + for (let win of Services.wm.getEnumerator("navigator:browser")) { + this._registerListenersForWindow(win); } }, onStop() { Svc.Obs.remove("domwindowopened", this.asyncObserver); - let wins = Services.wm.getEnumerator("navigator:browser"); - while (wins.hasMoreElements()) { - this._unregisterListenersForWindow(wins.getNext()); + for (let win of Services.wm.getEnumerator("navigator:browser")) { + this._unregisterListenersForWindow(win); } }, diff --git a/services/sync/tests/unit/head_helpers.js b/services/sync/tests/unit/head_helpers.js index 00a154ce38a3..81bdd39e08fc 100644 --- a/services/sync/tests/unit/head_helpers.js +++ b/services/sync/tests/unit/head_helpers.js @@ -241,14 +241,7 @@ function mockGetWindowEnumerator(url, numWindows, numTabs, indexes, moreURLs) { }, }); - return { - hasMoreElements() { - return elements.length; - }, - getNext() { - return elements.shift(); - }, - }; + return elements.values(); } // Helper function to get the sync telemetry and add the typically used test diff --git a/services/sync/tests/unit/test_tab_tracker.js b/services/sync/tests/unit/test_tab_tracker.js index 56ae7ed7eb1c..cc6d44e50d03 100644 --- a/services/sync/tests/unit/test_tab_tracker.js +++ b/services/sync/tests/unit/test_tab_tracker.js @@ -16,34 +16,31 @@ function fakeSvcWinMediator() { // actions on windows are captured in logs let logs = []; delete Services.wm; + + function getNext() { + let elt = {addTopics: [], remTopics: [], numAPL: 0, numRPL: 0}; + logs.push(elt); + return { + addEventListener(topic) { + elt.addTopics.push(topic); + }, + removeEventListener(topic) { + elt.remTopics.push(topic); + }, + gBrowser: { + addProgressListener() { + elt.numAPL++; + }, + removeProgressListener() { + elt.numRPL++; + }, + }, + }; + } + Services.wm = { getEnumerator() { - return { - cnt: 2, - hasMoreElements() { - return this.cnt-- > 0; - }, - getNext() { - let elt = {addTopics: [], remTopics: [], numAPL: 0, numRPL: 0}; - logs.push(elt); - return { - addEventListener(topic) { - elt.addTopics.push(topic); - }, - removeEventListener(topic) { - elt.remTopics.push(topic); - }, - gBrowser: { - addProgressListener() { - elt.numAPL++; - }, - removeProgressListener() { - elt.numRPL++; - }, - }, - }; - } - }; + return [getNext(), getNext()]; } }; return logs; diff --git a/storage/test/unit/test_vacuum.js b/storage/test/unit/test_vacuum.js index 884671fff0cd..d2c422279b31 100644 --- a/storage/test/unit/test_vacuum.js +++ b/storage/test/unit/test_vacuum.js @@ -23,9 +23,7 @@ function load_test_vacuum_component() { let catMan = Cc["@mozilla.org/categorymanager;1"]. getService(Ci.nsICategoryManager); let found = false; - let entries = catMan.enumerateCategory(CATEGORY_NAME); - while (entries.hasMoreElements()) { - let entry = entries.getNext().QueryInterface(Ci.nsISupportsCString).data; + for (let {data: entry} of catMan.enumerateCategory(CATEGORY_NAME)) { print("Check if the found category entry (" + entry + ") is expected."); if (EXPECTED_ENTRIES.includes(entry)) { print("Check that only one test entry exists."); diff --git a/taskcluster/docker/periodic-updates/scripts/genHPKPStaticPins.js b/taskcluster/docker/periodic-updates/scripts/genHPKPStaticPins.js index 1b96a18fc071..843fad31250a 100644 --- a/taskcluster/docker/periodic-updates/scripts/genHPKPStaticPins.js +++ b/taskcluster/docker/periodic-updates/scripts/genHPKPStaticPins.js @@ -370,11 +370,9 @@ function downloadAndParseChromePins(filename, // nicknames and digests of the SPKInfo for the mozilla trust store function loadNSSCertinfo(extraCertificates) { let allCerts = gCertDB.getCerts(); - let enumerator = allCerts.getEnumerator(); let certNameToSKD = {}; let certSKDToName = {}; - while (enumerator.hasMoreElements()) { - let cert = enumerator.getNext().QueryInterface(Ci.nsIX509Cert); + for (let cert of allCerts.getEnumerator()) { if (!cert.isBuiltInRoot) { continue; } diff --git a/testing/marionette/components/marionette.js b/testing/marionette/components/marionette.js index 860ec9e7937b..296cec662801 100644 --- a/testing/marionette/components/marionette.js +++ b/testing/marionette/components/marionette.js @@ -383,9 +383,7 @@ class MarionetteParentProcess { // When Firefox starts on Windows, an additional GFX sanity test // window may appear off-screen. Marionette should wait for it // to close. - let winEn = Services.wm.getEnumerator(null); - while (winEn.hasMoreElements()) { - let win = winEn.getNext(); + for (let win of Services.wm.getEnumerator(null)) { if (win.document.documentURI == "chrome://gfxsanity/content/sanityparent.html") { this.gfxWindow = win; break; diff --git a/testing/marionette/cookie.js b/testing/marionette/cookie.js index eb8c2b626c44..9037d6ac799d 100644 --- a/testing/marionette/cookie.js +++ b/testing/marionette/cookie.js @@ -209,9 +209,8 @@ cookie.iter = function* (host, currentPath = "/") { const isForCurrentPath = path => currentPath.includes(path); - let en = cookie.manager.getCookiesFromHost(host, {}); - while (en.hasMoreElements()) { - let cookie = en.getNext().QueryInterface(Ci.nsICookie2); + let cookies = cookie.manager.getCookiesFromHost(host, {}); + for (let cookie of cookies) { // take the hostname and progressively shorten let hostname = host; do { diff --git a/testing/marionette/driver.js b/testing/marionette/driver.js index 2e761cd49bc2..81de638f47fe 100644 --- a/testing/marionette/driver.js +++ b/testing/marionette/driver.js @@ -92,24 +92,6 @@ const globalMessageManager = Services.mm; * @namespace driver */ -/** - * Helper function for converting a {@link nsISimpleEnumerator} to a - * JavaScript iterator. - * - * @memberof driver - * - * @param {nsISimpleEnumerator} enumerator - * Enumerator to turn into iterator. - * - * @return {Iterable} - * Iterator. - */ -function* enumeratorIterator(enumerator) { - while (enumerator.hasMoreElements()) { - yield enumerator.getNext(); - } -} - /** * Implements (parts of) the W3C WebDriver protocol. GeckoDriver lives * in chrome space and mediates calls to the message listener of the current @@ -243,7 +225,7 @@ Object.defineProperty(GeckoDriver.prototype, "timeouts", { Object.defineProperty(GeckoDriver.prototype, "windows", { get() { - return enumeratorIterator(Services.wm.getEnumerator(null)); + return Services.wm.getEnumerator(null); }, }); diff --git a/testing/marionette/modal.js b/testing/marionette/modal.js index a7723afec373..70c91d035338 100644 --- a/testing/marionette/modal.js +++ b/testing/marionette/modal.js @@ -62,10 +62,7 @@ modal.addHandler = function(handler) { modal.findModalDialogs = function(context) { // First check if there is a modal dialog already present for the // current browser window. - let winEn = Services.wm.getEnumerator(null); - while (winEn.hasMoreElements()) { - let win = winEn.getNext(); - + for (let win of Services.wm.getEnumerator(null)) { // Modal dialogs which do not have an opener set, we cannot detect // as long as GetZOrderDOMWindowEnumerator doesn't work on Linux // (Bug 156333). diff --git a/testing/marionette/test/unit/test_cookie.js b/testing/marionette/test/unit/test_cookie.js index 77340002ee63..3a3a2c770eb2 100644 --- a/testing/marionette/test/unit/test_cookie.js +++ b/testing/marionette/test/unit/test_cookie.js @@ -42,21 +42,8 @@ cookie.manager = { getCookiesFromHost(host) { let hostCookies = this.cookies.filter(c => c.host === host || c.host === "." + host); - let nextIndex = 0; - return { - hasMoreElements() { - return nextIndex < hostCookies.length; - }, - - getNext() { - return { - QueryInterface() { - return hostCookies[nextIndex++]; - }, - }; - }, - }; + return hostCookies; }, }; diff --git a/testing/mochitest/api.js b/testing/mochitest/api.js index 2cdcb42a22d4..b1a79e90d438 100644 --- a/testing/mochitest/api.js +++ b/testing/mochitest/api.js @@ -129,9 +129,7 @@ this.mochikit = class extends ExtensionAPI { onShutdown() { if (AppConstants.platform != "android") { - let windows = Services.wm.getEnumerator("navigator:browser"); - while (windows.hasMoreElements()) { - let win = windows.getNext().QueryInterface(Ci.nsIDOMWindow); + for (let win of Services.wm.getEnumerator("navigator:browser")) { WindowListener.tearDownWindow(win); } diff --git a/testing/mochitest/browser-test.js b/testing/mochitest/browser-test.js index 1b296fd6e14d..80ddf88701e4 100644 --- a/testing/mochitest/browser-test.js +++ b/testing/mochitest/browser-test.js @@ -537,9 +537,7 @@ Tester.prototype = { }, waitForGraphicsTestWindowToBeGone(aCallback) { - let windowsEnum = Services.wm.getEnumerator(null); - while (windowsEnum.hasMoreElements()) { - let win = windowsEnum.getNext(); + for (let win of Services.wm.getEnumerator(null)) { if (win != window && !win.closed && win.document.documentURI == "chrome://gfxsanity/content/sanityparent.html") { this.BrowserTestUtils.domWindowClosed(win).then(aCallback); @@ -586,9 +584,7 @@ Tester.prototype = { // Remove stale windows this.structuredLogger.info("checking window state"); - let windowsEnum = Services.wm.getEnumerator(null); - while (windowsEnum.hasMoreElements()) { - let win = windowsEnum.getNext(); + for (let win of Services.wm.getEnumerator(null)) { if (win != window && !win.closed && win.document.documentElement.getAttribute("id") != "browserTestHarness") { let type = win.document.documentElement.getAttribute("windowtype"); diff --git a/testing/specialpowers/content/SpecialPowersObserverAPI.js b/testing/specialpowers/content/SpecialPowersObserverAPI.js index 740ab5f54478..9e2c722a9a5a 100644 --- a/testing/specialpowers/content/SpecialPowersObserverAPI.js +++ b/testing/specialpowers/content/SpecialPowersObserverAPI.js @@ -262,13 +262,10 @@ SpecialPowersObserverAPI.prototype = { // First create observers from the category manager. let cm = Cc["@mozilla.org/categorymanager;1"].getService(Ci.nsICategoryManager); - let enumerator = cm.enumerateCategory(topic); let observers = []; - while (enumerator.hasMoreElements()) { - let entry = - enumerator.getNext().QueryInterface(Ci.nsISupportsCString).data; + for (let {data: entry} of cm.enumerateCategory(topic)) { let contractID = cm.getCategoryEntry(topic, entry); let factoryFunction; @@ -289,14 +286,11 @@ SpecialPowersObserverAPI.prototype = { } // Next enumerate the registered observers. - enumerator = Services.obs.enumerateObservers(topic); - while (enumerator.hasMoreElements()) { - try { - let observer = enumerator.getNext().QueryInterface(Ci.nsIObserver); - if (!observers.includes(observer)) { - observers.push(observer); - } - } catch (e) { } + for (let observer of Services.obs.enumerateObservers(topic)) { + if (observer instanceof Ci.nsIObserver && + !observers.includes(observer)) { + observers.push(observer); + } } observers.forEach(function(observer) { diff --git a/testing/talos/talos/talos-powers/bootstrap.js b/testing/talos/talos/talos-powers/bootstrap.js index d8cf85456e53..1f7f7c158aae 100644 --- a/testing/talos/talos/talos-powers/bootstrap.js +++ b/testing/talos/talos/talos-powers/bootstrap.js @@ -245,9 +245,7 @@ TalosPowersService.prototype = { }); } - let enumerator = Services.wm.getEnumerator(null); - while (enumerator.hasMoreElements()) { - let domWindow = enumerator.getNext(); + for (let domWindow of Services.wm.getEnumerator(null)) { domWindow.close(); } diff --git a/uriloader/exthandler/HandlerService.js b/uriloader/exthandler/HandlerService.js index 8c1cb6c1a8e3..83ab7b885de3 100644 --- a/uriloader/exthandler/HandlerService.js +++ b/uriloader/exthandler/HandlerService.js @@ -252,9 +252,7 @@ HandlerService.prototype = { if (handlerInfo.preferredApplicationHandler) { handlers.push(handlerInfo.preferredApplicationHandler); } - let enumerator = handlerInfo.possibleApplicationHandlers.enumerate(); - while (enumerator.hasMoreElements()) { - let handler = enumerator.getNext().QueryInterface(Ci.nsIHandlerApp); + for (let handler of handlerInfo.possibleApplicationHandlers.enumerate(Ci.nsIHandlerApp)) { // If the caller stored duplicate handlers, we save them only once. if (!handlers.some(h => h.equals(handler))) { handlers.push(handler); diff --git a/uriloader/exthandler/tests/HandlerServiceTestUtils.jsm b/uriloader/exthandler/tests/HandlerServiceTestUtils.jsm index c94758a0498b..f43c2b7a86e8 100644 --- a/uriloader/exthandler/tests/HandlerServiceTestUtils.jsm +++ b/uriloader/exthandler/tests/HandlerServiceTestUtils.jsm @@ -35,14 +35,9 @@ var HandlerServiceTestUtils = { * alphabetically regardless of category. */ getAllHandlerInfoTypes() { - let handlerInfoTypes = []; - let handlerInfoEnumerator = gHandlerService.enumerate(); - while (handlerInfoEnumerator.hasMoreElements()) { - let handlerInfo = handlerInfoEnumerator.getNext() - .QueryInterface(Ci.nsIHandlerInfo); - handlerInfoTypes.push(handlerInfo.type); - } - return handlerInfoTypes.sort(); + return Array.from(gHandlerService.enumerate(), + info => info.type) + .sort(); }, /** diff --git a/uriloader/exthandler/tests/mochitest/browser_remember_download_option.js b/uriloader/exthandler/tests/mochitest/browser_remember_download_option.js index d81fc37bad4e..fe7f11d5705d 100644 --- a/uriloader/exthandler/tests/mochitest/browser_remember_download_option.js +++ b/uriloader/exthandler/tests/mochitest/browser_remember_download_option.js @@ -29,9 +29,7 @@ add_task(async function() { // check the extension. var mimeType = gHandlerSvc.getTypeFromExtension("abc"); is(mimeType, launcher.MIMEInfo.type, "Got correct mime type."); - var handlerInfos = gHandlerSvc.enumerate(); - while (handlerInfos.hasMoreElements()) { - let handlerInfo = handlerInfos.getNext().QueryInterface(Ci.nsIHandlerInfo); + for (let handlerInfo of gHandlerSvc.enumerate()) { if (handlerInfo.type == launcher.MIMEInfo.type) { // check the alwaysAskBeforeHandling ok(!handlerInfo.alwaysAskBeforeHandling, diff --git a/uriloader/exthandler/tests/unit/test_handlerService.js b/uriloader/exthandler/tests/unit/test_handlerService.js index b24ead758fe9..4ec927f280c1 100644 --- a/uriloader/exthandler/tests/unit/test_handlerService.js +++ b/uriloader/exthandler/tests/unit/test_handlerService.js @@ -240,9 +240,7 @@ function run_test() { handlerTypes.push("irc"); handlerTypes.push("ircs"); } - var handlers = handlerSvc.enumerate(); - while (handlers.hasMoreElements()) { - var handler = handlers.getNext().QueryInterface(Ci.nsIHandlerInfo); + for (let handler of handlerSvc.enumerate()) { Assert.notEqual(handlerTypes.indexOf(handler.type), -1); handlerTypes.splice(handlerTypes.indexOf(handler.type), 1); } diff --git a/xpcom/tests/unit/test_nsIMutableArray.js b/xpcom/tests/unit/test_nsIMutableArray.js index 454c6679f27d..9043b6147819 100644 --- a/xpcom/tests/unit/test_nsIMutableArray.js +++ b/xpcom/tests/unit/test_nsIMutableArray.js @@ -84,10 +84,8 @@ function test_clear() { function test_enumerate() { var arr = create_n_element_array(5); Assert.equal(5, arr.length); - var en = arr.enumerate(); var i = 0; - while (en.hasMoreElements()) { - let str = en.getNext(); + for (let str of arr.enumerate()) { Assert.ok(str instanceof Ci.nsISupportsString); Assert.equal(str.data, "element " + i); i++;