Bug 1398630: Part 5 - User iteration helpers for nsISimpleEnumerator. r?zombie
MozReview-Commit-ID: Iw25XozakK0
--- 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) {