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

Unified Diff: chrome/browser/bookmarks/bookmark_model.cc

Issue 8828006: Makes all permanent nodes share the same node class so that visibility (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: More tweaks Created 9 years 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/bookmarks/bookmark_model.cc
diff --git a/chrome/browser/bookmarks/bookmark_model.cc b/chrome/browser/bookmarks/bookmark_model.cc
index 2d735bc88cc3e03cb2951e7f5226934c9a9315e8..1d1356ee280fc8953f9e3fa31efd67dc896a4d60 100644
--- a/chrome/browser/bookmarks/bookmark_model.cc
+++ b/chrome/browser/bookmarks/bookmark_model.cc
@@ -99,40 +99,22 @@ class SortComparator : public std::binary_function<const BookmarkNode*,
icu::Collator* collator_;
};
-// MobileNode ------------------------------------------------------------------
-
-// The visibility of the mobile node changes based on sync state, requiring a
-// special subclass.
-class MobileNode : public BookmarkNode {
- public:
- explicit MobileNode(int64 id);
- virtual ~MobileNode();
-
- void set_visible(bool value) { visible_ = value; }
-
- // BookmarkNode overrides:
- virtual bool IsVisible() const OVERRIDE;
+} // namespace
- private:
- bool visible_;
+// BookmarkPermanentNode -------------------------------------------------------
- DISALLOW_COPY_AND_ASSIGN(MobileNode);
-};
-
-MobileNode::MobileNode(int64 id)
+BookmarkPermanentNode::BookmarkPermanentNode(int64 id)
: BookmarkNode(id, GURL()),
- visible_(false) {
+ visible_(true) {
}
-MobileNode::~MobileNode() {
+BookmarkPermanentNode::~BookmarkPermanentNode() {
}
-bool MobileNode::IsVisible() const {
+bool BookmarkPermanentNode::IsVisible() const {
return visible_ || !empty();
}
-} // namespace
-
// BookmarkModel --------------------------------------------------------------
BookmarkModel::BookmarkModel(Profile* profile)
@@ -548,9 +530,22 @@ void BookmarkModel::ClearStore() {
store_ = NULL;
}
-void BookmarkModel::SetMobileFolderVisible(bool value) {
+void BookmarkModel::SetPermanentNodeVisible(BookmarkNode::Type type,
+ bool value) {
DCHECK(loaded_);
- static_cast<MobileNode*>(mobile_node_)->set_visible(value);
+ switch (type) {
+ case BookmarkNode::BOOKMARK_BAR:
+ bookmark_bar_node_->set_visible(value);
+ break;
+ case BookmarkNode::OTHER_NODE:
+ other_node_->set_visible(value);
+ break;
+ case BookmarkNode::MOBILE:
+ mobile_node_->set_visible(value);
+ break;
+ default:
+ NOTREACHED();
+ }
}
bool BookmarkModel::IsBookmarkedNoLock(const GURL& url) {
@@ -740,26 +735,33 @@ bool BookmarkModel::IsValidIndex(const BookmarkNode* parent,
(allow_end && index == parent->child_count()))));
}
-BookmarkNode* BookmarkModel::CreatePermanentNode(BookmarkNode::Type type) {
+BookmarkPermanentNode* BookmarkModel::CreatePermanentNode(
+ BookmarkNode::Type type) {
DCHECK(type == BookmarkNode::BOOKMARK_BAR ||
type == BookmarkNode::OTHER_NODE ||
type == BookmarkNode::MOBILE);
- BookmarkNode* node;
- if (type == BookmarkNode::MOBILE) {
- node = new MobileNode(generate_next_node_id());
- node->set_title(
- l10n_util::GetStringUTF16(IDS_BOOKMARK_BAR_MOBILE_FOLDER_NAME));
- } else {
- node = new BookmarkNode(generate_next_node_id(), GURL());
- if (type == BookmarkNode::BOOKMARK_BAR) {
- node->set_title(l10n_util::GetStringUTF16(IDS_BOOKMARK_BAR_FOLDER_NAME));
- } else if (type == BookmarkNode::OTHER_NODE) {
- node->set_title(
- l10n_util::GetStringUTF16(IDS_BOOKMARK_BAR_OTHER_FOLDER_NAME));
- } else {
+ BookmarkPermanentNode* node =
+ new BookmarkPermanentNode(generate_next_node_id());
+ if (type == BookmarkNode::MOBILE)
+ node->set_visible(false); // Mobile node is initially hidden.
+
+ int title_id;
+ switch (type) {
+ case BookmarkNode::BOOKMARK_BAR:
+ title_id = IDS_BOOKMARK_BAR_FOLDER_NAME;
+ break;
+ case BookmarkNode::OTHER_NODE:
+ title_id = IDS_BOOKMARK_BAR_OTHER_FOLDER_NAME;
+ break;
+ case BookmarkNode::MOBILE:
+ title_id = IDS_BOOKMARK_BAR_MOBILE_FOLDER_NAME;
+ break;
+ default:
NOTREACHED();
- }
+ title_id = IDS_BOOKMARK_BAR_FOLDER_NAME;
+ break;
}
+ node->set_title(l10n_util::GetStringUTF16(title_id));
node->set_type(type);
return node;
}
@@ -856,9 +858,12 @@ int64 BookmarkModel::generate_next_node_id() {
}
BookmarkLoadDetails* BookmarkModel::CreateLoadDetails() {
- BookmarkNode* bb_node = CreatePermanentNode(BookmarkNode::BOOKMARK_BAR);
- BookmarkNode* other_node = CreatePermanentNode(BookmarkNode::OTHER_NODE);
- BookmarkNode* mobile_node = CreatePermanentNode(BookmarkNode::MOBILE);
+ BookmarkPermanentNode* bb_node =
+ CreatePermanentNode(BookmarkNode::BOOKMARK_BAR);
+ BookmarkPermanentNode* other_node =
+ CreatePermanentNode(BookmarkNode::OTHER_NODE);
+ BookmarkPermanentNode* mobile_node =
+ CreatePermanentNode(BookmarkNode::MOBILE);
return new BookmarkLoadDetails(bb_node, other_node, mobile_node,
new BookmarkIndex(profile_), next_node_id_);
}

Powered by Google App Engine
This is Rietveld 408576698