Cleanup blessing store and roots when the extension is upgraded.

MultiPart: 1/2

Change-Id: I6139dd4dd6eec303edfdb72d718b98eabdac0d11
diff --git a/extension/manifest.json b/extension/manifest.json
index fa0d829..15ea18d 100644
--- a/extension/manifest.json
+++ b/extension/manifest.json
@@ -1,6 +1,6 @@
 {
   "name": "Vanadium Extension",
-  "version": "0.1.31",
+  "version": "0.1.32",
   "description": "Access and create Vanadium services from JavaScript.",
   "manifest_version": 2,
   "icons": {
diff --git a/extension/src/background/nacl.js b/extension/src/background/nacl.js
index aacaafb..c87bc59 100644
--- a/extension/src/background/nacl.js
+++ b/extension/src/background/nacl.js
@@ -10,6 +10,15 @@
 var QueuedRpcChannelWrapper = require('./queued_channel');
 var state = require('../state');
 
+// Clean the extension blessing whenever the extension is updated.
+// See https://developer.chrome.com/extensions/runtime#event-onInstalled
+var cleanBlessingsOnStart = false;
+chrome.runtime.onInstalled.addListener(function(details) {
+  if (details.reason === 'update') {
+    cleanBlessingsOnStart = true;
+  }
+});
+
 module.exports = Nacl;
 
 function Nacl() {
@@ -92,6 +101,7 @@
       }
 
       var body = {
+        cleanupBlessings: cleanBlessingsOnStart,
         identitydBlessingRoot: identityBlessingRoot,
         identityd: settings.identityd.value,
         namespaceRoot: settings.namespaceRoot.value,
@@ -100,6 +110,8 @@
         logModule: settings.logModule.value || ''
       };
 
+      cleanBlessingsOnStart = false;
+
       nacl._directChannel.performRpc('start', body, function(err) {
         if (err) {
           return nacl.emit('crash', err.message);
diff --git a/src/gen-vdl/v.io/x/ref/services/wspr/internal/browspr/index.js b/src/gen-vdl/v.io/x/ref/services/wspr/internal/browspr/index.js
index edaac05..d27084e 100644
--- a/src/gen-vdl/v.io/x/ref/services/wspr/internal/browspr/index.js
+++ b/src/gen-vdl/v.io/x/ref/services/wspr/internal/browspr/index.js
@@ -52,7 +52,7 @@
 _typeOriginHasAccountMessage.fields = [{name: "Origin", type: vdl.types.STRING}];
 _typeStartMessage.kind = vdl.kind.STRUCT;
 _typeStartMessage.name = "v.io/x/ref/services/wspr/internal/browspr.StartMessage";
-_typeStartMessage.fields = [{name: "Identityd", type: vdl.types.STRING}, {name: "IdentitydBlessingRoot", type: new identity.BlessingRootResponse()._type}, {name: "Proxy", type: vdl.types.STRING}, {name: "NamespaceRoot", type: vdl.types.STRING}, {name: "LogLevel", type: vdl.types.INT32}, {name: "LogModule", type: vdl.types.STRING}];
+_typeStartMessage.fields = [{name: "CleanupBlessings", type: vdl.types.BOOL}, {name: "Identityd", type: vdl.types.STRING}, {name: "IdentitydBlessingRoot", type: new identity.BlessingRootResponse()._type}, {name: "Proxy", type: vdl.types.STRING}, {name: "NamespaceRoot", type: vdl.types.STRING}, {name: "LogLevel", type: vdl.types.INT32}, {name: "LogModule", type: vdl.types.STRING}];
 _type1.freeze();
 _type2.freeze();
 _typeAssociateAccountMessage.freeze();