Index: chrome/browser/resources/md_bookmarks/reducers.js |
diff --git a/chrome/browser/resources/md_bookmarks/reducers.js b/chrome/browser/resources/md_bookmarks/reducers.js |
index 959949c422cd57733f19f716c189a1b485e34891..dce9fd7c125e248c290ad0deb88821271f295c3e 100644 |
--- a/chrome/browser/resources/md_bookmarks/reducers.js |
+++ b/chrome/browser/resources/md_bookmarks/reducers.js |
@@ -135,6 +135,25 @@ cr.define('bookmarks', function() { |
* @param {Action} action |
* @return {NodeList} |
*/ |
+ NodeState.createBookmark = function(nodes, action) { |
+ var nodeModifications = {}; |
+ nodeModifications[action.id] = action.node; |
+ |
+ var parentNode = nodes[action.parentId]; |
+ var newChildren = parentNode.children.slice(); |
+ newChildren.splice(action.parentIndex, 0, action.id); |
+ nodeModifications[action.parentId] = Object.assign({}, parentNode, { |
+ children: newChildren, |
+ }); |
+ |
+ return Object.assign({}, nodes, nodeModifications); |
+ }; |
+ |
+ /** |
+ * @param {NodeList} nodes |
+ * @param {Action} action |
+ * @return {NodeList} |
+ */ |
NodeState.editBookmark = function(nodes, action) { |
// Do not allow folders to change URL (making them no longer folders). |
if (!nodes[action.id].url && action.changeInfo.url) |
@@ -199,6 +218,8 @@ cr.define('bookmarks', function() { |
*/ |
NodeState.updateNodes = function(nodes, action) { |
switch (action.name) { |
+ case 'create-bookmark': |
+ return NodeState.createBookmark(nodes, action); |
case 'edit-bookmark': |
return NodeState.editBookmark(nodes, action); |
case 'remove-bookmark': |