Bug 1422365 - Introduce nsIClearDataService - part 10 - push notification, r=johannh

This commit is contained in:
Andrea Marchesini 2018-06-01 14:30:01 +02:00
Родитель e247e19c68
Коммит fc92907077
4 изменённых файлов: 41 добавлений и 30 удалений

Просмотреть файл

@ -505,22 +505,7 @@ var Sanitizer = {
}
// Clear all push notification subscriptions
try {
await new Promise((resolve, reject) => {
let push = Cc["@mozilla.org/push/Service;1"]
.getService(Ci.nsIPushService);
push.clearForDomain("*", status => {
if (Components.isSuccessCode(status)) {
resolve();
} else {
reject(new Error("Error clearing push subscriptions: " +
status));
}
});
});
} catch (ex) {
seenException = ex;
}
await clearData(range, Ci.nsIClearDataService.CLEAR_DOM_PUSH_NOTIFICATIONS);
TelemetryStopwatch.finish("FX_SANITIZE_SITESETTINGS", refObj);
if (seenException) {

Просмотреть файл

@ -399,6 +399,36 @@ const PredictorNetworkCleaner = {
},
};
const PushNotificationsCleaner = {
deleteByHost(aHost, aOriginAttributes) {
return new Promise((aResolve, aReject) => {
let push = Cc["@mozilla.org/push/Service;1"]
.getService(Ci.nsIPushService);
push.clearForDomain(aHost, aStatus => {
if (!Components.isSuccessCode(aStatus)) {
aReject();
} else {
aResolve();
}
});
});
},
deleteAll() {
return new Promise((aResolve, aReject) => {
let push = Cc["@mozilla.org/push/Service;1"]
.getService(Ci.nsIPushService);
push.clearForDomain("*", aStatus => {
if (!Components.isSuccessCode(aStatus)) {
aReject();
} else {
aResolve();
}
});
});
},
};
// Here the map of Flags-Cleaner.
const FLAGS_MAP = [
{ flag: Ci.nsIClearDataService.CLEAR_COOKIES,
@ -430,6 +460,9 @@ const FLAGS_MAP = [
{ flag: Ci.nsIClearDataService.CLEAR_PREDICTOR_NETWORK_DATA,
cleaner: PredictorNetworkCleaner, },
{ flag: Ci.nsIClearDataService.CLEAR_DOM_PUSH_NOTIFICATIONS,
cleaner: PushNotificationsCleaner, },
];
this.ClearDataService = function() {};

Просмотреть файл

@ -133,11 +133,15 @@ interface nsIClearDataService : nsISupports
*/
const uint32_t CLEAR_PREDICTOR_NETWORK_DATA = 1 << 9;
/**
* DOM Push notifications
*/
const uint32_t CLEAR_DOM_PUSH_NOTIFICATIONS = 1 << 10;
/* TODO
const uint32_t CLEAR_EME = 1 << 4;
const uint32_t CLEAR_PERMISSIONS = 1 << 7;
const uint32_t CLEAR_CONTENT_PREFERENCES = 1 << 9;
const uint32_t CLEAR_DOM_PUSH_NOTIFICATIONS = 1 << 11;
const uint32_t CLEAR_HSTS = 1 << 12;
const uint32_t CLEAR_HPKP = 1 << 13;
const uint32_t CLEAR_HISTORY = 1 << 14;
@ -165,9 +169,9 @@ interface nsIClearDataService : nsISupports
/**
* Delete all DOM storages
* TODO: add CLEAR_DOM_PUSH_NOTIFICATIONS | CLEAR_FORMDATA | CLEAR_SESSION_HISTORY;
* TODO: add CLEAR_FORMDATA | CLEAR_SESSION_HISTORY;
*/
const uint32_t CLEAR_DOM_STORAGES = CLEAR_APPCACHE | CLEAR_DOM_QUOTA;
const uint32_t CLEAR_DOM_STORAGES = CLEAR_APPCACHE | CLEAR_DOM_QUOTA | CLEAR_DOM_PUSH_NOTIFICATIONS;
/*
const uint32_t CLEAR_BROWSER_DATA = CLEAR_DOWNLOADS | CLEAR_PASSWORDS | CLEAR_PERMISSIONS | CLEAR_CONTENT_PREFERENCES | CLEAR_HISTORY | CLEAR_LOGINS;

Просмотреть файл

@ -93,17 +93,6 @@ var ForgetAboutSite = {
});
})());
// Push notifications.
promises.push((async function() {
var push = Cc["@mozilla.org/push/Service;1"].
getService(Ci.nsIPushService);
push.clearForDomain(aDomain, status => {
if (!Components.isSuccessCode(status)) {
throw new Error("Exception occured while clearing push notifications: " + status);
}
});
})());
// HSTS and HPKP
promises.push((async function() {
let sss = Cc["@mozilla.org/ssservice;1"].