зеркало из https://github.com/mozilla/gecko-dev.git
Use a shared setGUID for new items and changing guids so that the item always ends up with the GUID (because conflicts shouldn't have been Weave generated).
This commit is contained in:
Родитель
b01244308b
Коммит
3acf0af190
|
@ -277,19 +277,14 @@ BookmarksStore.prototype = {
|
|||
break;
|
||||
case "item":
|
||||
this._log.debug(" -> got a generic places item.. do nothing?");
|
||||
break;
|
||||
return;
|
||||
default:
|
||||
this._log.error("_create: Unknown item type: " + record.type);
|
||||
break;
|
||||
}
|
||||
if (newId) {
|
||||
this._log.trace("Setting GUID of new item " + newId + " to " + record.id);
|
||||
let cur = GUIDForId(newId);
|
||||
if (cur == record.id)
|
||||
this._log.warn("Item " + newId + " already has GUID " + record.id);
|
||||
else
|
||||
this._bms.setItemGUID(newId, record.id);
|
||||
return;
|
||||
}
|
||||
|
||||
this._log.trace("Setting GUID of new item " + newId + " to " + record.id);
|
||||
this._setGUID(newId, record.id);
|
||||
},
|
||||
|
||||
remove: function BStore_remove(record) {
|
||||
|
@ -393,15 +388,17 @@ BookmarksStore.prototype = {
|
|||
return;
|
||||
}
|
||||
|
||||
let collision = idForGUID(newID);
|
||||
if (collision > 0) {
|
||||
this._log.warn("Can't change GUID " + oldID + " to " +
|
||||
newID + ": new ID already in use");
|
||||
return;
|
||||
}
|
||||
|
||||
this._log.debug("Changing GUID " + oldID + " to " + newID);
|
||||
this._bms.setItemGUID(itemId, newID);
|
||||
this._setGUID(itemId, newID);
|
||||
},
|
||||
|
||||
_setGUID: function BStore__setGUID(itemId, guid) {
|
||||
let collision = idForGUID(guid);
|
||||
if (collision != -1) {
|
||||
this._log.warn("Freeing up GUID " + guid + " used by " + collision);
|
||||
Svc.Annos.removeItemAnnotation(collision, "placesInternal/GUID");
|
||||
}
|
||||
Svc.Bookmark.setItemGUID(itemId, guid);
|
||||
},
|
||||
|
||||
_getNode: function BStore__getNode(folder) {
|
||||
|
|
Загрузка…
Ссылка в новой задаче