Bug 1278689 - Remove push subscriptions when clearing site settings on Android. r?margaret draft
authorKit Cambridge <kcambridge@mozilla.com>
Tue, 07 Jun 2016 14:02:55 -0700
changeset 376386 0f573f13be05b8d65f282eeb66c4746228ab6740
parent 376275 ec20b463c04f57a4bfca1edb987fcb9e9707c364
child 523137 7486905c98d55f8f01cd51e6344c20e2f028c37a
push id20561
push userkcambridge@mozilla.com
push dateTue, 07 Jun 2016 21:04:04 +0000
reviewersmargaret
bugs1278689
milestone50.0a1
Bug 1278689 - Remove push subscriptions when clearing site settings on Android. r?margaret MozReview-Commit-ID: BrOjKzswY1F
mobile/android/modules/Sanitizer.jsm
--- a/mobile/android/modules/Sanitizer.jsm
+++ b/mobile/android/modules/Sanitizer.jsm
@@ -81,42 +81,51 @@ Sanitizer.prototype = {
 
       get canClear()
       {
         return true;
       }
     },
 
     siteSettings: {
-      clear: function ()
-      {
-        return new Promise(function(resolve, reject) {
-          // Clear site-specific permissions like "Allow this site to open popups"
-          Services.perms.removeAll();
+      clear: Task.async(function* () {
+        // Clear site-specific permissions like "Allow this site to open popups"
+        Services.perms.removeAll();
 
-          // Clear site-specific settings like page-zoom level
-          Cc["@mozilla.org/content-pref/service;1"]
-            .getService(Ci.nsIContentPrefService2)
-            .removeAllDomains(null);
+        // Clear site-specific settings like page-zoom level
+        Cc["@mozilla.org/content-pref/service;1"]
+          .getService(Ci.nsIContentPrefService2)
+          .removeAllDomains(null);
+
+        // Clear "Never remember passwords for this site", which is not handled by
+        // the permission manager
+        var hosts = Services.logins.getAllDisabledHosts({})
+        for (var host of hosts) {
+          Services.logins.setLoginSavingEnabled(host, true);
+        }
 
-          // Clear "Never remember passwords for this site", which is not handled by
-          // the permission manager
-          var hosts = Services.logins.getAllDisabledHosts({})
-          for (var host of hosts) {
-            Services.logins.setLoginSavingEnabled(host, true);
-          }
+        // Clear site security settings
+        var sss = Cc["@mozilla.org/ssservice;1"]
+                    .getService(Ci.nsISiteSecurityService);
+        sss.clearAll();
 
-          // Clear site security settings
-          var sss = Cc["@mozilla.org/ssservice;1"]
-                      .getService(Ci.nsISiteSecurityService);
-          sss.clearAll();
-
-          resolve();
+        // Clear push subscriptions
+        yield 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));
+            }
+          });
         });
-      },
+      }),
 
       get canClear()
       {
         return true;
       }
     },
 
     offlineApps: {