Bug 1398630: Part 5 - User iteration helpers for nsISimpleEnumerator. r?zombie draft
authorKris Maglione <maglione.k@gmail.com>
Sun, 10 Sep 2017 15:35:46 -0700
changeset 662075 aa548051595e584e6243ff4cc3225e8cfbfa52f7
parent 662074 3e798786990e62f75b5cd5496d7421ab10d5695a
child 662076 bc7292f6e1b0e31cf148e7e4bd154cb3b79af1be
push id78941
push usermaglione.k@gmail.com
push dateSun, 10 Sep 2017 22:46:43 +0000
reviewerszombie
bugs1398630
milestone57.0a1
Bug 1398630: Part 5 - User iteration helpers for nsISimpleEnumerator. r?zombie MozReview-Commit-ID: Iw25XozakK0
browser/components/extensions/ext-browsingData.js
toolkit/components/extensions/ext-cookies.js
--- a/browser/components/extensions/ext-browsingData.js
+++ b/browser/components/extensions/ext-browsingData.js
@@ -45,20 +45,17 @@ const clearCache = () => {
 
 const clearCookies = async function(options) {
   let cookieMgr = Services.cookies;
   // This code has been borrowed from sanitize.js.
   let yieldCounter = 0;
 
   if (options.since || options.hostnames) {
     // Iterate through the cookies and delete any created after our cutoff.
-    let cookiesEnum = cookieMgr.enumerator;
-    while (cookiesEnum.hasMoreElements()) {
-      let cookie = cookiesEnum.getNext().QueryInterface(Ci.nsICookie2);
-
+    for (const cookie of XPCOMUtils.IterSimpleEnumerator(cookieMgr.enumerator, Ci.nsICookie2)) {
       if ((!options.since || cookie.creationTime >= PlacesUtils.toPRTime(options.since)) &&
           (!options.hostnames || options.hostnames.includes(cookie.host.replace(/^\./, "")))) {
         // This cookie was created after our cutoff, clear it.
         cookieMgr.remove(cookie.host, cookie.name, cookie.path,
                          false, cookie.originAttributes);
 
         if (++yieldCounter % YIELD_PERIOD == 0) {
           await new Promise(resolve => setTimeout(resolve, 0)); // Don't block the main thread too long.
--- a/toolkit/components/extensions/ext-cookies.js
+++ b/toolkit/components/extensions/ext-cookies.js
@@ -255,18 +255,17 @@ const query = function* (detailsIn, prop
     // Check that the extension has permissions for this host.
     if (!context.extension.whiteListedHosts.matchesCookie(cookie)) {
       return false;
     }
 
     return true;
   }
 
-  while (enumerator.hasMoreElements()) {
-    let cookie = enumerator.getNext().QueryInterface(Ci.nsICookie2);
+  for (const cookie of XPCOMUtils.IterSimpleEnumerator(enumerator, Ci.nsICookie2)) {
     if (matches(cookie)) {
       yield {cookie, isPrivate, storeId};
     }
   }
 };
 
 this.cookies = class extends ExtensionAPI {
   getAPI(context) {