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

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

Issue 8135001: Fixed behavior of the bookmark bar visibility. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Reviewed, rebased Created 9 years, 2 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/callback.h" 10 #include "base/callback.h"
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
117 root_(GURL()), 117 root_(GURL()),
118 bookmark_bar_node_(NULL), 118 bookmark_bar_node_(NULL),
119 other_node_(NULL), 119 other_node_(NULL),
120 synced_node_(NULL), 120 synced_node_(NULL),
121 next_node_id_(1), 121 next_node_id_(1),
122 observers_(ObserverList<BookmarkModelObserver>::NOTIFY_EXISTING_ONLY), 122 observers_(ObserverList<BookmarkModelObserver>::NOTIFY_EXISTING_ONLY),
123 loaded_signal_(true, false) { 123 loaded_signal_(true, false) {
124 if (!profile_) { 124 if (!profile_) {
125 // Profile is null during testing. 125 // Profile is null during testing.
126 DoneLoading(CreateLoadDetails()); 126 DoneLoading(CreateLoadDetails());
127 } else {
128 pref_change_registrar_.Init(profile_->GetPrefs());
129 pref_change_registrar_.Add(prefs::kShowBookmarkBar, this);
127 } 130 }
128 } 131 }
129 132
130 BookmarkModel::~BookmarkModel() { 133 BookmarkModel::~BookmarkModel() {
131 FOR_EACH_OBSERVER(BookmarkModelObserver, observers_, 134 FOR_EACH_OBSERVER(BookmarkModelObserver, observers_,
132 BookmarkModelBeingDeleted(this)); 135 BookmarkModelBeingDeleted(this));
133 136
134 if (store_) { 137 if (store_) {
135 // The store maintains a reference back to us. We need to tell it we're gone 138 // The store maintains a reference back to us. We need to tell it we're gone
136 // so that it doesn't try and invoke a method back on us again. 139 // so that it doesn't try and invoke a method back on us again.
(...skipping 648 matching lines...) Expand 10 before | Expand all | Expand 10 after
785 BookmarkNode* node = AsMutable(nodes[i]); 788 BookmarkNode* node = AsMutable(nodes[i]);
786 node->InvalidateFavicon(); 789 node->InvalidateFavicon();
787 CancelPendingFaviconLoadRequests(node); 790 CancelPendingFaviconLoadRequests(node);
788 FOR_EACH_OBSERVER(BookmarkModelObserver, observers_, 791 FOR_EACH_OBSERVER(BookmarkModelObserver, observers_,
789 BookmarkNodeFaviconChanged(this, node)); 792 BookmarkNodeFaviconChanged(this, node));
790 } 793 }
791 } 794 }
792 break; 795 break;
793 } 796 }
794 797
798 case chrome::NOTIFICATION_PREF_CHANGED: {
sky 2011/10/05 16:59:12 In theory there need not be a bookmarkmodel create
Joao da Silva 2011/10/06 19:45:38 I thought of that but felt lazy :-) It's been done
799 std::string* pref = Details<std::string>(details).ptr();
800 if (*pref == prefs::kShowBookmarkBar) {
801 Source<Profile> source(profile_);
802 NotificationService::current()->Notify(
803 chrome::NOTIFICATION_BOOKMARK_BAR_VISIBILITY_PREF_CHANGED,
804 source,
805 NotificationService::NoDetails());
806 } else {
807 NOTREACHED();
808 }
809 break;
810 }
811
795 default: 812 default:
796 NOTREACHED(); 813 NOTREACHED();
797 break; 814 break;
798 } 815 }
799 } 816 }
800 817
801 void BookmarkModel::PopulateNodesByURL(BookmarkNode* node) { 818 void BookmarkModel::PopulateNodesByURL(BookmarkNode* node) {
802 // NOTE: this is called with url_lock_ already held. As such, this doesn't 819 // NOTE: this is called with url_lock_ already held. As such, this doesn't
803 // explicitly grab the lock. 820 // explicitly grab the lock.
804 if (node->is_url()) 821 if (node->is_url())
(...skipping 10 matching lines...) Expand all
815 file_changed_ = true; 832 file_changed_ = true;
816 } 833 }
817 834
818 BookmarkLoadDetails* BookmarkModel::CreateLoadDetails() { 835 BookmarkLoadDetails* BookmarkModel::CreateLoadDetails() {
819 BookmarkNode* bb_node = CreatePermanentNode(BookmarkNode::BOOKMARK_BAR); 836 BookmarkNode* bb_node = CreatePermanentNode(BookmarkNode::BOOKMARK_BAR);
820 BookmarkNode* other_node = CreatePermanentNode(BookmarkNode::OTHER_NODE); 837 BookmarkNode* other_node = CreatePermanentNode(BookmarkNode::OTHER_NODE);
821 BookmarkNode* synced_node = CreatePermanentNode(BookmarkNode::SYNCED); 838 BookmarkNode* synced_node = CreatePermanentNode(BookmarkNode::SYNCED);
822 return new BookmarkLoadDetails(bb_node, other_node, synced_node, 839 return new BookmarkLoadDetails(bb_node, other_node, synced_node,
823 new BookmarkIndex(profile_), next_node_id_); 840 new BookmarkIndex(profile_), next_node_id_);
824 } 841 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698