Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(574)

Side by Side Diff: components/bookmarks/browser/bookmark_model.cc

Issue 1198963014: Change ownership of BookmarkClient (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@cleanup_managed_and_supervised_nodes
Patch Set: Rebase Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "components/bookmarks/browser/bookmark_model.h" 5 #include "components/bookmarks/browser/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"
11 #include "base/bind_helpers.h" 11 #include "base/bind_helpers.h"
12 #include "base/i18n/string_compare.h" 12 #include "base/i18n/string_compare.h"
13 #include "base/logging.h" 13 #include "base/logging.h"
14 #include "base/macros.h" 14 #include "base/macros.h"
15 #include "base/profiler/scoped_tracker.h" 15 #include "base/profiler/scoped_tracker.h"
16 #include "base/strings/string_util.h" 16 #include "base/strings/string_util.h"
17 #include "components/bookmarks/browser/bookmark_client.h"
17 #include "components/bookmarks/browser/bookmark_expanded_state_tracker.h" 18 #include "components/bookmarks/browser/bookmark_expanded_state_tracker.h"
18 #include "components/bookmarks/browser/bookmark_index.h" 19 #include "components/bookmarks/browser/bookmark_index.h"
19 #include "components/bookmarks/browser/bookmark_match.h" 20 #include "components/bookmarks/browser/bookmark_match.h"
20 #include "components/bookmarks/browser/bookmark_model_observer.h" 21 #include "components/bookmarks/browser/bookmark_model_observer.h"
21 #include "components/bookmarks/browser/bookmark_node_data.h" 22 #include "components/bookmarks/browser/bookmark_node_data.h"
22 #include "components/bookmarks/browser/bookmark_storage.h" 23 #include "components/bookmarks/browser/bookmark_storage.h"
23 #include "components/bookmarks/browser/bookmark_utils.h" 24 #include "components/bookmarks/browser/bookmark_utils.h"
24 #include "components/favicon_base/favicon_types.h" 25 #include "components/favicon_base/favicon_types.h"
25 #include "grit/components_strings.h" 26 #include "grit/components_strings.h"
26 #include "ui/base/l10n/l10n_util.h" 27 #include "ui/base/l10n/l10n_util.h"
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
85 } 86 }
86 87
87 private: 88 private:
88 icu::Collator* collator_; 89 icu::Collator* collator_;
89 }; 90 };
90 91
91 } // namespace 92 } // namespace
92 93
93 // BookmarkModel -------------------------------------------------------------- 94 // BookmarkModel --------------------------------------------------------------
94 95
95 BookmarkModel::BookmarkModel(BookmarkClient* client) 96 BookmarkModel::BookmarkModel(scoped_ptr<BookmarkClient> bookmark_client)
96 : client_(client), 97 : bookmark_client_(bookmark_client.Pass()),
97 loaded_(false), 98 loaded_(false),
98 root_(GURL()), 99 root_(GURL()),
99 bookmark_bar_node_(nullptr), 100 bookmark_bar_node_(nullptr),
100 other_node_(nullptr), 101 other_node_(nullptr),
101 mobile_node_(nullptr), 102 mobile_node_(nullptr),
102 managed_node_(nullptr), 103 managed_node_(nullptr),
103 supervised_node_(nullptr), 104 supervised_node_(nullptr),
104 next_node_id_(1), 105 next_node_id_(1),
105 observers_( 106 observers_(
106 base::ObserverList<BookmarkModelObserver>::NOTIFY_EXISTING_ONLY), 107 base::ObserverList<BookmarkModelObserver>::NOTIFY_EXISTING_ONLY),
107 loaded_signal_(true, false), 108 loaded_signal_(true, false),
108 extensive_changes_(0) { 109 extensive_changes_(0) {
109 DCHECK(client_); 110 DCHECK(bookmark_client_);
111 bookmark_client_->Init(this);
110 } 112 }
111 113
112 BookmarkModel::~BookmarkModel() { 114 BookmarkModel::~BookmarkModel() {
113 FOR_EACH_OBSERVER(BookmarkModelObserver, observers_, 115 FOR_EACH_OBSERVER(BookmarkModelObserver, observers_,
114 BookmarkModelBeingDeleted(this)); 116 BookmarkModelBeingDeleted(this));
115 117
116 if (store_.get()) { 118 if (store_.get()) {
117 // The store maintains a reference back to us. We need to tell it we're gone 119 // The store maintains a reference back to us. We need to tell it we're gone
118 // so that it doesn't try and invoke a method back on us again. 120 // so that it doesn't try and invoke a method back on us again.
119 store_->BookmarkModelDeleted(); 121 store_->BookmarkModelDeleted();
(...skipping 352 matching lines...) Expand 10 before | Expand all | Expand 10 after
472 if (node == supervised_node_ || node == managed_node_) 474 if (node == supervised_node_ || node == managed_node_)
473 return false; 475 return false;
474 #if !defined(OS_IOS) 476 #if !defined(OS_IOS)
475 return node->type() != BookmarkNode::MOBILE; 477 return node->type() != BookmarkNode::MOBILE;
476 #else 478 #else
477 return node->type() == BookmarkNode::MOBILE; 479 return node->type() == BookmarkNode::MOBILE;
478 #endif 480 #endif
479 } 481 }
480 482
481 void BookmarkModel::RecordAction(const base::UserMetricsAction& action) { 483 void BookmarkModel::RecordAction(const base::UserMetricsAction& action) {
482 client_->RecordAction(action); 484 bookmark_client_->RecordAction(action);
483 } 485 }
484 486
485 void BookmarkModel::SetDateAdded(const BookmarkNode* node, Time date_added) { 487 void BookmarkModel::SetDateAdded(const BookmarkNode* node, Time date_added) {
486 DCHECK(node && !is_permanent_node(node)); 488 DCHECK(node && !is_permanent_node(node));
487 489
488 if (node->date_added() == date_added) 490 if (node->date_added() == date_added)
489 return; 491 return;
490 492
491 AsMutable(node)->set_date_added(date_added); 493 AsMutable(node)->set_date_added(date_added);
492 494
(...skipping 348 matching lines...) Expand 10 before | Expand all | Expand 10 after
841 // TODO(robliao): Remove ScopedTracker below once https://crbug.com/467179 843 // TODO(robliao): Remove ScopedTracker below once https://crbug.com/467179
842 // is fixed. 844 // is fixed.
843 tracked_objects::ScopedTracker tracking_profile6( 845 tracked_objects::ScopedTracker tracking_profile6(
844 FROM_HERE_WITH_EXPLICIT_FUNCTION("467179 BookmarkModel::DoneLoading6")); 846 FROM_HERE_WITH_EXPLICIT_FUNCTION("467179 BookmarkModel::DoneLoading6"));
845 847
846 // Notify our direct observers. 848 // Notify our direct observers.
847 FOR_EACH_OBSERVER(BookmarkModelObserver, observers_, 849 FOR_EACH_OBSERVER(BookmarkModelObserver, observers_,
848 BookmarkModelLoaded(this, details->ids_reassigned())); 850 BookmarkModelLoaded(this, details->ids_reassigned()));
849 851
850 // Notify client. 852 // Notify client.
851 client_->DoneLoading(managed_node_, supervised_node_); 853 bookmark_client_->DoneLoading(managed_node_, supervised_node_);
852 } 854 }
853 855
854 void BookmarkModel::RemoveAndDeleteNode(BookmarkNode* delete_me) { 856 void BookmarkModel::RemoveAndDeleteNode(BookmarkNode* delete_me) {
855 scoped_ptr<BookmarkNode> node(delete_me); 857 scoped_ptr<BookmarkNode> node(delete_me);
856 858
857 const BookmarkNode* parent = node->parent(); 859 const BookmarkNode* parent = node->parent();
858 DCHECK(parent); 860 DCHECK(parent);
859 int index = parent->GetIndexOf(node.get()); 861 int index = parent->GetIndexOf(node.get());
860 DCHECK_NE(-1, index); 862 DCHECK_NE(-1, index);
861 863
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after
1002 } 1004 }
1003 1005
1004 void BookmarkModel::LoadFavicon(BookmarkNode* node, 1006 void BookmarkModel::LoadFavicon(BookmarkNode* node,
1005 favicon_base::IconType icon_type) { 1007 favicon_base::IconType icon_type) {
1006 if (node->is_folder()) 1008 if (node->is_folder())
1007 return; 1009 return;
1008 1010
1009 DCHECK(node->url().is_valid()); 1011 DCHECK(node->url().is_valid());
1010 node->set_favicon_state(BookmarkNode::LOADING_FAVICON); 1012 node->set_favicon_state(BookmarkNode::LOADING_FAVICON);
1011 base::CancelableTaskTracker::TaskId taskId = 1013 base::CancelableTaskTracker::TaskId taskId =
1012 client_->GetFaviconImageForPageURL( 1014 bookmark_client_->GetFaviconImageForPageURL(
1013 node->url(), 1015 node->url(),
1014 icon_type, 1016 icon_type,
1015 base::Bind( 1017 base::Bind(
1016 &BookmarkModel::OnFaviconDataAvailable, 1018 &BookmarkModel::OnFaviconDataAvailable,
1017 base::Unretained(this), 1019 base::Unretained(this),
1018 node, 1020 node,
1019 icon_type), 1021 icon_type),
1020 &cancelable_task_tracker_); 1022 &cancelable_task_tracker_);
1021 if (taskId != base::CancelableTaskTracker::kBadTaskId) 1023 if (taskId != base::CancelableTaskTracker::kBadTaskId)
1022 node->set_favicon_load_task_id(taskId); 1024 node->set_favicon_load_task_id(taskId);
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
1057 CreatePermanentNode(BookmarkNode::MOBILE); 1059 CreatePermanentNode(BookmarkNode::MOBILE);
1058 // Create the managed_node and supervised_node with a temporary id of 0 now. 1060 // Create the managed_node and supervised_node with a temporary id of 0 now.
1059 // They will be populated and assigned property ids by the LoadExtraCallback 1061 // They will be populated and assigned property ids by the LoadExtraCallback
1060 // returned by GetLoadExtraNodesCallback(). Ownership of the node is 1062 // returned by GetLoadExtraNodesCallback(). Ownership of the node is
1061 // transferred to the closure. 1063 // transferred to the closure.
1062 scoped_ptr<BookmarkPermanentNode> managed_node(new BookmarkPermanentNode(0)); 1064 scoped_ptr<BookmarkPermanentNode> managed_node(new BookmarkPermanentNode(0));
1063 scoped_ptr<BookmarkPermanentNode> supervised_node( 1065 scoped_ptr<BookmarkPermanentNode> supervised_node(
1064 new BookmarkPermanentNode(0)); 1066 new BookmarkPermanentNode(0));
1065 return scoped_ptr<BookmarkLoadDetails>(new BookmarkLoadDetails( 1067 return scoped_ptr<BookmarkLoadDetails>(new BookmarkLoadDetails(
1066 bb_node, other_node, mobile_node, 1068 bb_node, other_node, mobile_node,
1067 client_->GetLoadExtraNodesCallback( 1069 bookmark_client_->GetLoadExtraNodesCallback(
1068 managed_node.Pass(), supervised_node.Pass(), 1070 managed_node.Pass(), supervised_node.Pass(),
1069 base::Bind(&BookmarkModel::OnExtraNodeLoaded, 1071 base::Bind(&BookmarkModel::OnExtraNodeLoaded,
1070 base::Unretained(this))), 1072 base::Unretained(this))),
1071 new BookmarkIndex(client_, accept_languages), next_node_id_)); 1073 new BookmarkIndex(bookmark_client_.get(), accept_languages),
1074 next_node_id_));
1072 } 1075 }
1073 1076
1074 void BookmarkModel::OnExtraNodeLoaded(BookmarkPermanentNode* managed_node, 1077 void BookmarkModel::OnExtraNodeLoaded(BookmarkPermanentNode* managed_node,
1075 BookmarkPermanentNode* supervised_node) { 1078 BookmarkPermanentNode* supervised_node) {
1076 managed_node_ = managed_node; 1079 managed_node_ = managed_node;
1077 supervised_node_ = supervised_node; 1080 supervised_node_ = supervised_node;
1078 } 1081 }
1079 1082
1080 bool BookmarkModel::IsTopLevelPermanentNode(const BookmarkPermanentNode* node) { 1083 bool BookmarkModel::IsTopLevelPermanentNode(const BookmarkPermanentNode* node) {
1081 return node->type() == BookmarkNode::BOOKMARK_BAR || 1084 return node->type() == BookmarkNode::BOOKMARK_BAR ||
(...skipping 15 matching lines...) Expand all
1097 1100
1098 bool BookmarkModel::PreferTouchIcon() { 1101 bool BookmarkModel::PreferTouchIcon() {
1099 #if !defined(OS_IOS) 1102 #if !defined(OS_IOS)
1100 return false; 1103 return false;
1101 #else 1104 #else
1102 return true; 1105 return true;
1103 #endif 1106 #endif
1104 } 1107 }
1105 1108
1106 } // namespace bookmarks 1109 } // namespace bookmarks
OLDNEW
« no previous file with comments | « components/bookmarks/browser/bookmark_model.h ('k') | components/bookmarks/browser/bookmark_model_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698