mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-02-03 12:35:58 +00:00
fix for bug #383678: moving a folder to its grandchild folder (or deeper) results in datalossr=dietrich
This commit is contained in:
parent
d45d0d587f
commit
c0bd25b2ab
@ -1444,10 +1444,10 @@ nsNavBookmarks::MoveItem(PRInt64 aItemId, PRInt64 aNewParent, PRInt32 aIndex)
|
||||
|
||||
// Make sure aNewParent is not aFolder or a subfolder of aFolder
|
||||
if (itemType == TYPE_FOLDER) {
|
||||
mozStorageStatementScoper scope(mDBGetItemProperties);
|
||||
PRInt64 p = aNewParent;
|
||||
|
||||
while (p) {
|
||||
mozStorageStatementScoper scope(mDBGetItemProperties);
|
||||
if (p == aItemId) {
|
||||
return NS_ERROR_INVALID_ARG;
|
||||
}
|
||||
|
@ -316,9 +316,26 @@ function run_test() {
|
||||
// Test expected failure of moving a folder to be its own parent
|
||||
try {
|
||||
bmsvc.moveItem(workFolder, workFolder, bmsvc.DEFAULT_INDEX);
|
||||
do_throw("moveItem() allowed moving a folder to be it's own parent.");
|
||||
do_throw("moveItem() allowed moving a folder to be its own parent.");
|
||||
} catch (e) {}
|
||||
|
||||
// Test expected failure of moving a folder to be a child of its child
|
||||
// or of its grandchild. see bug #383678
|
||||
var childFolder = bmsvc.createFolder(workFolder, "childFolder", bmsvc.DEFAULT_INDEX);
|
||||
do_check_eq(observer._itemAddedId, childFolder);
|
||||
do_check_eq(observer._itemAddedParent, workFolder);
|
||||
var grandchildFolder = bmsvc.createFolder(childFolder, "grandchildFolder", bmsvc.DEFAULT_INDEX);
|
||||
do_check_eq(observer._itemAddedId, grandchildFolder);
|
||||
do_check_eq(observer._itemAddedParent, childFolder);
|
||||
try {
|
||||
bmsvc.moveItem(workFolder, childFolder, bmsvc.DEFAULT_INDEX);
|
||||
do_throw("moveItem() allowed moving a folder to be a child of its child");
|
||||
} catch (e) {}
|
||||
try {
|
||||
bmsvc.moveItem(workFolder, grandchildFolder, bmsvc.DEFAULT_INDEX);
|
||||
do_throw("moveItem() allowed moving a folder to be a child of its grandchild");
|
||||
} catch (e) {}
|
||||
|
||||
// test insertSeparator and removeChildAt
|
||||
// XXX - this should also query bookmarks for the folder children
|
||||
// and then test the node type at our index
|
||||
|
Loading…
x
Reference in New Issue
Block a user