Skip to content

Commit

Permalink
Migrate the stored values DB during script update/reinstall.
Browse files Browse the repository at this point in the history
  • Loading branch information
arantius committed Oct 10, 2013
1 parent edb83d2 commit 47bc190
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 6 deletions.
7 changes: 6 additions & 1 deletion content/config.js
@@ -1,4 +1,5 @@
Components.utils.import('resource://greasemonkey/constants.js');
Components.utils.import('resource://greasemonkey/miscapis.js');
Components.utils.import('resource://greasemonkey/prefmanager.js');
Components.utils.import('resource://greasemonkey/script.js');
Components.utils.import('resource://greasemonkey/third-party/MatchPattern.js');
Expand Down Expand Up @@ -127,7 +128,7 @@ Config.prototype._save = function(saveNow) {
GM_util.writeToFile(domSerializer.serializeToString(doc), this._configFile);
};

Config.prototype.install = function(script, oldScript) {
Config.prototype.install = function(script, oldScript, tempDir) {
var existingIndex = this._find(oldScript || script);
if (!oldScript) oldScript = this.scripts[existingIndex];

Expand All @@ -137,6 +138,10 @@ Config.prototype.install = function(script, oldScript) {
script.userExcludes = oldScript.userExcludes;
script.userIncludes = oldScript.userIncludes;

// Migrate stored values.
var storage = new GM_ScriptStorage(oldScript);
storage.dbFile.moveTo(tempDir, storage.dbFileName);

// Uninstall the old script.
this.uninstall(oldScript, true);
}
Expand Down
13 changes: 10 additions & 3 deletions modules/miscapis.js
Expand Up @@ -20,13 +20,20 @@ function GM_ScriptStorage(script) {
.createBundle("chrome://greasemonkey/locale/greasemonkey.properties");
}

GM_ScriptStorage.prototype.dbFileName = 'values.db';

GM_ScriptStorage.prototype.__defineGetter__('dbFile',
function GM_ScriptStorage_getDbFile() {
var file = this._script.baseDirFile;
file.append(this.dbFileName);
return file;
});


GM_ScriptStorage.prototype.__defineGetter__('db',
function GM_ScriptStorage_getDb() {
if (null == this._db) {
var file = this._script.baseDirFile;
file.append('values.db');
this._db = Services.storage.openDatabase(file);
this._db = Services.storage.openDatabase(this.dbFile);

this._db.executeSimpleSQL(
'CREATE TABLE IF NOT EXISTS scriptvals ('
Expand Down
3 changes: 1 addition & 2 deletions modules/remoteScript.js
Expand Up @@ -307,7 +307,6 @@ RemoteScript.prototype.install = function(aOldScript, aOnlyDependencies) {
var enumerator = this._tempDir.directoryEntries;
while (enumerator.hasMoreElements()) {
var file = enumerator.getNext().QueryInterface(Ci.nsIFile);
// TODO: Fix invalid private access.
file.moveTo(this.script.baseDirFile, null);
}
} else {
Expand All @@ -317,7 +316,7 @@ RemoteScript.prototype.install = function(aOldScript, aOnlyDependencies) {
stringBundle.GetStringFromName('remotescript.name-unknown'));
}

GM_config.install(this.script, aOldScript);
GM_config.install(this.script, aOldScript, this._tempDir);

var suffix = 0;
var file = GM_util.scriptDir();
Expand Down

0 comments on commit 47bc190

Please sign in to comment.