| Index: components/bookmarks/browser/bookmark_model.cc
|
| diff --git a/components/bookmarks/browser/bookmark_model.cc b/components/bookmarks/browser/bookmark_model.cc
|
| index 60e143caf4f38ccb184bca21ef82b37750874da4..93039b319526bf46e3985089cd51453969fc2ff9 100644
|
| --- a/components/bookmarks/browser/bookmark_model.cc
|
| +++ b/components/bookmarks/browser/bookmark_model.cc
|
| @@ -371,9 +371,9 @@ void BookmarkModel::SetURL(const BookmarkNode* node, const GURL& url) {
|
|
|
| {
|
| base::AutoLock url_lock(url_lock_);
|
| - RemoveNodeFromURLSet(mutable_node);
|
| + RemoveNodeFromInternalMaps(mutable_node);
|
| mutable_node->set_url(url);
|
| - nodes_ordered_by_url_set_.insert(mutable_node);
|
| + AddNodeToInternalMaps(mutable_node);
|
| }
|
|
|
| if (store_.get())
|
| @@ -617,12 +617,6 @@ const BookmarkNode* BookmarkModel::AddURLWithCreationTimeAndMetaInfo(
|
| if (meta_info)
|
| new_node->SetMetaInfoMap(*meta_info);
|
|
|
| - {
|
| - // Only hold the lock for the duration of the insert.
|
| - base::AutoLock url_lock(url_lock_);
|
| - nodes_ordered_by_url_set_.insert(new_node);
|
| - }
|
| -
|
| return AddNode(AsMutable(parent), index, new_node);
|
| }
|
|
|
| @@ -740,9 +734,8 @@ void BookmarkModel::RemoveNode(BookmarkNode* node,
|
|
|
| url_lock_.AssertAcquired();
|
| if (node->is_url()) {
|
| - RemoveNodeFromURLSet(node);
|
| + RemoveNodeFromInternalMaps(node);
|
| removed_urls->insert(node->url());
|
| - index_->Remove(node);
|
| }
|
|
|
| CancelPendingFaviconLoadRequests(node);
|
| @@ -837,9 +830,11 @@ void BookmarkModel::RemoveAndDeleteNode(BookmarkNode* delete_me) {
|
| BookmarkNodeRemoved(this, parent, index, node.get(), removed_urls));
|
| }
|
|
|
| -void BookmarkModel::RemoveNodeFromURLSet(BookmarkNode* node) {
|
| +void BookmarkModel::RemoveNodeFromInternalMaps(BookmarkNode* node) {
|
| + index_->Remove(node);
|
| // NOTE: this is called in such a way that url_lock_ is already held. As
|
| // such, this doesn't explicitly grab the lock.
|
| + url_lock_.AssertAcquired();
|
| NodesOrderedByURLSet::iterator i = nodes_ordered_by_url_set_.find(node);
|
| DCHECK(i != nodes_ordered_by_url_set_.end());
|
| // i points to the first node with the URL, advance until we find the
|
| @@ -883,14 +878,25 @@ BookmarkNode* BookmarkModel::AddNode(BookmarkNode* parent,
|
| if (store_.get())
|
| store_->ScheduleSave();
|
|
|
| + if (node->type() == BookmarkNode::URL) {
|
| + base::AutoLock url_lock(url_lock_);
|
| + AddNodeToInternalMaps(node);
|
| + } else {
|
| + index_->Add(node);
|
| + }
|
| +
|
| FOR_EACH_OBSERVER(BookmarkModelObserver, observers_,
|
| BookmarkNodeAdded(this, parent, index));
|
|
|
| - index_->Add(node);
|
| -
|
| return node;
|
| }
|
|
|
| +void BookmarkModel::AddNodeToInternalMaps(BookmarkNode* node) {
|
| + index_->Add(node);
|
| + url_lock_.AssertAcquired();
|
| + nodes_ordered_by_url_set_.insert(node);
|
| +}
|
| +
|
| bool BookmarkModel::IsValidIndex(const BookmarkNode* parent,
|
| int index,
|
| bool allow_end) {
|
|
|