| Index: chrome/browser/bookmarks/chrome_bookmark_client.cc
|
| diff --git a/chrome/browser/bookmarks/chrome_bookmark_client.cc b/chrome/browser/bookmarks/chrome_bookmark_client.cc
|
| index a3b8db7c6cadd8d3b7f4cd10081f41cd16a34bbb..bd8453cd1782348a180b43f1f3c70f905c874a97 100644
|
| --- a/chrome/browser/bookmarks/chrome_bookmark_client.cc
|
| +++ b/chrome/browser/bookmarks/chrome_bookmark_client.cc
|
| @@ -42,16 +42,25 @@ void NotifyHistoryOfRemovedURLs(Profile* profile,
|
|
|
| } // namespace
|
|
|
| -ChromeBookmarkClient::ChromeBookmarkClient(Profile* profile, bool index_urls)
|
| - : profile_(profile),
|
| - model_(new BookmarkModel(this, index_urls)),
|
| - managed_bookmarks_tracker_(
|
| - model_.get(),
|
| - profile_->GetPrefs(),
|
| - base::Bind(&ChromeBookmarkClient::GetManagedBookmarksDomain,
|
| - base::Unretained(this))),
|
| - managed_node_(NULL) {
|
| +ChromeBookmarkClient::ChromeBookmarkClient(Profile* profile)
|
| + : profile_(profile), model_(NULL) {
|
| +}
|
| +
|
| +ChromeBookmarkClient::~ChromeBookmarkClient() {
|
| +}
|
| +
|
| +void ChromeBookmarkClient::Init(BookmarkModel* model) {
|
| + DCHECK(model);
|
| + DCHECK(!model_);
|
| + model_ = model;
|
| model_->AddObserver(this);
|
| +
|
| + managed_bookmarks_tracker_.reset(new policy::ManagedBookmarksTracker(
|
| + model_,
|
| + profile_->GetPrefs(),
|
| + base::Bind(&ChromeBookmarkClient::GetManagedBookmarksDomain,
|
| + base::Unretained(this))));
|
| +
|
| // Listen for changes to favicons so that we can update the favicon of the
|
| // node appropriately.
|
| registrar_.Add(this,
|
| @@ -59,10 +68,14 @@ ChromeBookmarkClient::ChromeBookmarkClient(Profile* profile, bool index_urls)
|
| content::Source<Profile>(profile_));
|
| }
|
|
|
| -ChromeBookmarkClient::~ChromeBookmarkClient() {
|
| - model_->RemoveObserver(this);
|
| +void ChromeBookmarkClient::Shutdown() {
|
| + if (model_) {
|
| + registrar_.RemoveAll();
|
|
|
| - registrar_.RemoveAll();
|
| + model_->RemoveObserver(this);
|
| + model_ = NULL;
|
| + }
|
| + BookmarkClient::Shutdown();
|
| }
|
|
|
| bool ChromeBookmarkClient::IsDescendantOfManagedNode(const BookmarkNode* node) {
|
| @@ -157,7 +170,7 @@ bookmarks::LoadExtraCallback ChromeBookmarkClient::GetLoadExtraNodesCallback() {
|
| StartupTaskRunnerServiceFactory::GetForProfile(profile_)
|
| ->GetBookmarkTaskRunner(),
|
| managed_node_,
|
| - base::Passed(managed_bookmarks_tracker_.GetInitialManagedBookmarks()));
|
| + base::Passed(managed_bookmarks_tracker_->GetInitialManagedBookmarks()));
|
| }
|
|
|
| bool ChromeBookmarkClient::CanSetPermanentNodeTitle(
|
| @@ -193,10 +206,6 @@ void ChromeBookmarkClient::Observe(
|
| }
|
| }
|
|
|
| -void ChromeBookmarkClient::Shutdown() {
|
| - model_->Shutdown();
|
| -}
|
| -
|
| void ChromeBookmarkClient::BookmarkModelChanged() {
|
| }
|
|
|
| @@ -220,7 +229,7 @@ void ChromeBookmarkClient::BookmarkModelLoaded(BookmarkModel* model,
|
| // Start tracking the managed bookmarks. This will detect any changes that
|
| // may have occurred while the initial managed bookmarks were being loaded
|
| // on the background.
|
| - managed_bookmarks_tracker_.Init(managed_node_);
|
| + managed_bookmarks_tracker_->Init(managed_node_);
|
| }
|
|
|
| // static
|
|
|