| 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..511555271d40a311283ddb579f6e2792792385f8 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::SetPermanentNodeVisibile(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_);
|
| }
|
|
|