OLD | NEW |
---|---|
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/bookmarks/bookmark_model.h" | 5 #include "chrome/browser/bookmarks/bookmark_model.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <functional> | 8 #include <functional> |
9 | 9 |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
(...skipping 657 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
668 | 668 |
669 if (store_.get()) | 669 if (store_.get()) |
670 store_->ScheduleSave(); | 670 store_->ScheduleSave(); |
671 | 671 |
672 FOR_EACH_OBSERVER(BookmarkModelObserver, observers_, | 672 FOR_EACH_OBSERVER(BookmarkModelObserver, observers_, |
673 BookmarkNodeChildrenReordered(this, parent)); | 673 BookmarkNodeChildrenReordered(this, parent)); |
674 } | 674 } |
675 | 675 |
676 void BookmarkModel::ReorderChildren( | 676 void BookmarkModel::ReorderChildren( |
677 const BookmarkNode* parent, | 677 const BookmarkNode* parent, |
678 const std::vector<BookmarkNode*>& ordered_nodes) { | 678 const std::vector<const BookmarkNode*>& ordered_nodes) { |
679 // Ensure that all children in |parent| are in |ordered_nodes|. | 679 // Ensure that all children in |parent| are in |ordered_nodes|. |
680 DCHECK_EQ(static_cast<size_t>(parent->child_count()), ordered_nodes.size()); | 680 DCHECK_EQ(static_cast<size_t>(parent->child_count()), ordered_nodes.size()); |
681 for (size_t i = 0; i < ordered_nodes.size(); ++i) | 681 for (size_t i = 0; i < ordered_nodes.size(); ++i) |
682 DCHECK_EQ(parent, ordered_nodes[i]->parent()); | 682 DCHECK_EQ(parent, ordered_nodes[i]->parent()); |
683 | 683 |
684 FOR_EACH_OBSERVER(BookmarkModelObserver, observers_, | 684 FOR_EACH_OBSERVER(BookmarkModelObserver, observers_, |
685 OnWillReorderBookmarkNode(this, parent)); | 685 OnWillReorderBookmarkNode(this, parent)); |
686 | 686 |
687 AsMutable(parent)->SetChildren(ordered_nodes); | 687 // SetChildren requires non-const nodes so |ordered_nodes| is reconstructed. |
688 std::vector<BookmarkNode*> nodes; | |
689 nodes.reserve(ordered_nodes.size()); | |
690 for (size_t i = 0; i < ordered_nodes.size(); ++i) | |
691 nodes.push_back(AsMutable(ordered_nodes[i])); | |
692 | |
693 AsMutable(parent)->SetChildren(nodes); | |
sky
2013/08/05 14:53:52
Can you use a const_cast here on ordered_nodes?
Tom Cassiotis
2013/08/05 19:34:49
const_cast is not able to be used here because the
sky
2013/08/05 20:07:45
I think reinterpret_cast is fine here.
| |
688 | 694 |
689 if (store_.get()) | 695 if (store_.get()) |
690 store_->ScheduleSave(); | 696 store_->ScheduleSave(); |
691 | 697 |
692 FOR_EACH_OBSERVER(BookmarkModelObserver, observers_, | 698 FOR_EACH_OBSERVER(BookmarkModelObserver, observers_, |
693 BookmarkNodeChildrenReordered(this, parent)); | 699 BookmarkNodeChildrenReordered(this, parent)); |
694 } | 700 } |
695 | 701 |
696 void BookmarkModel::SetDateFolderModified(const BookmarkNode* parent, | 702 void BookmarkModel::SetDateFolderModified(const BookmarkNode* parent, |
697 const Time time) { | 703 const Time time) { |
(...skipping 350 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1048 BookmarkPermanentNode* bb_node = | 1054 BookmarkPermanentNode* bb_node = |
1049 CreatePermanentNode(BookmarkNode::BOOKMARK_BAR); | 1055 CreatePermanentNode(BookmarkNode::BOOKMARK_BAR); |
1050 BookmarkPermanentNode* other_node = | 1056 BookmarkPermanentNode* other_node = |
1051 CreatePermanentNode(BookmarkNode::OTHER_NODE); | 1057 CreatePermanentNode(BookmarkNode::OTHER_NODE); |
1052 BookmarkPermanentNode* mobile_node = | 1058 BookmarkPermanentNode* mobile_node = |
1053 CreatePermanentNode(BookmarkNode::MOBILE); | 1059 CreatePermanentNode(BookmarkNode::MOBILE); |
1054 return new BookmarkLoadDetails(bb_node, other_node, mobile_node, | 1060 return new BookmarkLoadDetails(bb_node, other_node, mobile_node, |
1055 new BookmarkIndex(profile_), | 1061 new BookmarkIndex(profile_), |
1056 next_node_id_); | 1062 next_node_id_); |
1057 } | 1063 } |
OLD | NEW |