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

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

Issue 8772064: Adds back BookmarkNode::IsVisible. Turns out we want to conditionally (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: 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 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/bind.h" 10 #include "base/bind.h"
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
48 } 48 }
49 49
50 BookmarkNode::BookmarkNode(int64 id, const GURL& url) 50 BookmarkNode::BookmarkNode(int64 id, const GURL& url)
51 : url_(url) { 51 : url_(url) {
52 Initialize(id); 52 Initialize(id);
53 } 53 }
54 54
55 BookmarkNode::~BookmarkNode() { 55 BookmarkNode::~BookmarkNode() {
56 } 56 }
57 57
58 bool BookmarkNode::IsVisible() const {
59 return true;
60 }
61
58 void BookmarkNode::Initialize(int64 id) { 62 void BookmarkNode::Initialize(int64 id) {
59 id_ = id; 63 id_ = id;
60 type_ = url_.is_empty() ? FOLDER : URL; 64 type_ = url_.is_empty() ? FOLDER : URL;
61 date_added_ = Time::Now(); 65 date_added_ = Time::Now();
62 is_favicon_loaded_ = false; 66 is_favicon_loaded_ = false;
63 favicon_load_handle_ = 0; 67 favicon_load_handle_ = 0;
64 } 68 }
65 69
66 void BookmarkNode::InvalidateFavicon() { 70 void BookmarkNode::InvalidateFavicon() {
67 favicon_ = SkBitmap(); 71 favicon_ = SkBitmap();
68 is_favicon_loaded_ = false; 72 is_favicon_loaded_ = false;
69 } 73 }
70 74
71 // BookmarkModel --------------------------------------------------------------
72
73 namespace { 75 namespace {
74 76
75 // Comparator used when sorting bookmarks. Folders are sorted first, then 77 // Comparator used when sorting bookmarks. Folders are sorted first, then
76 // bookmarks. 78 // bookmarks.
77 class SortComparator : public std::binary_function<const BookmarkNode*, 79 class SortComparator : public std::binary_function<const BookmarkNode*,
78 const BookmarkNode*, 80 const BookmarkNode*,
79 bool> { 81 bool> {
80 public: 82 public:
81 explicit SortComparator(icu::Collator* collator) : collator_(collator) { } 83 explicit SortComparator(icu::Collator* collator) : collator_(collator) { }
82 84
83 // Returns true if lhs preceeds rhs. 85 // Returns true if lhs preceeds rhs.
84 bool operator() (const BookmarkNode* n1, const BookmarkNode* n2) { 86 bool operator() (const BookmarkNode* n1, const BookmarkNode* n2) {
85 if (n1->type() == n2->type()) { 87 if (n1->type() == n2->type()) {
86 // Types are the same, compare the names. 88 // Types are the same, compare the names.
87 if (!collator_) 89 if (!collator_)
88 return n1->GetTitle() < n2->GetTitle(); 90 return n1->GetTitle() < n2->GetTitle();
89 return l10n_util::CompareString16WithCollator( 91 return l10n_util::CompareString16WithCollator(
90 collator_, n1->GetTitle(), n2->GetTitle()) == UCOL_LESS; 92 collator_, n1->GetTitle(), n2->GetTitle()) == UCOL_LESS;
91 } 93 }
92 // Types differ, sort such that folders come first. 94 // Types differ, sort such that folders come first.
93 return n1->is_folder(); 95 return n1->is_folder();
94 } 96 }
95 97
96 private: 98 private:
97 icu::Collator* collator_; 99 icu::Collator* collator_;
98 }; 100 };
99 101
102 // MobileNode ------------------------------------------------------------------
103
104 // The visibility of the mobile node changes based on sync state, requiring a
105 // special subclass.
106 class MobileNode : public BookmarkNode {
107 public:
108 explicit MobileNode(int64 id);
109 virtual ~MobileNode();
110
111 // BookmarkNode overrides:
112 virtual bool IsVisible() const OVERRIDE;
113
114 private:
115 bool visible_;
116
117 DISALLOW_COPY_AND_ASSIGN(MobileNode);
118 };
119
120 MobileNode::MobileNode(int64 id)
121 : BookmarkNode(id, GURL()),
122 visible_(false) {
123 }
124
125 MobileNode::~MobileNode() {
126 }
127
128 bool MobileNode::IsVisible() const {
129 return visible_ || !empty();
130 }
131
100 } // namespace 132 } // namespace
101 133
134 // BookmarkModel --------------------------------------------------------------
135
102 BookmarkModel::BookmarkModel(Profile* profile) 136 BookmarkModel::BookmarkModel(Profile* profile)
103 : profile_(profile), 137 : profile_(profile),
104 loaded_(false), 138 loaded_(false),
105 file_changed_(false), 139 file_changed_(false),
106 root_(GURL()), 140 root_(GURL()),
107 bookmark_bar_node_(NULL), 141 bookmark_bar_node_(NULL),
108 other_node_(NULL), 142 other_node_(NULL),
109 mobile_node_(NULL), 143 mobile_node_(NULL),
110 next_node_id_(1), 144 next_node_id_(1),
111 observers_(ObserverList<BookmarkModelObserver>::NOTIFY_EXISTING_ONLY), 145 observers_(ObserverList<BookmarkModelObserver>::NOTIFY_EXISTING_ONLY),
(...skipping 584 matching lines...) Expand 10 before | Expand all | Expand 10 after
696 bool allow_end) { 730 bool allow_end) {
697 return (parent && parent->is_folder() && 731 return (parent && parent->is_folder() &&
698 (index >= 0 && (index < parent->child_count() || 732 (index >= 0 && (index < parent->child_count() ||
699 (allow_end && index == parent->child_count())))); 733 (allow_end && index == parent->child_count()))));
700 } 734 }
701 735
702 BookmarkNode* BookmarkModel::CreatePermanentNode(BookmarkNode::Type type) { 736 BookmarkNode* BookmarkModel::CreatePermanentNode(BookmarkNode::Type type) {
703 DCHECK(type == BookmarkNode::BOOKMARK_BAR || 737 DCHECK(type == BookmarkNode::BOOKMARK_BAR ||
704 type == BookmarkNode::OTHER_NODE || 738 type == BookmarkNode::OTHER_NODE ||
705 type == BookmarkNode::MOBILE); 739 type == BookmarkNode::MOBILE);
706 BookmarkNode* node = new BookmarkNode(generate_next_node_id(), GURL()); 740 BookmarkNode* node;
707 node->set_type(type); 741 if (type == BookmarkNode::MOBILE) {
708 if (type == BookmarkNode::BOOKMARK_BAR) { 742 node = new MobileNode(generate_next_node_id());
709 node->set_title(l10n_util::GetStringUTF16(IDS_BOOKMARK_BAR_FOLDER_NAME));
710 } else if (type == BookmarkNode::OTHER_NODE) {
711 node->set_title(
712 l10n_util::GetStringUTF16(IDS_BOOKMARK_BAR_OTHER_FOLDER_NAME));
713 } else {
714 node->set_title( 743 node->set_title(
715 l10n_util::GetStringUTF16(IDS_BOOKMARK_BAR_MOBILE_FOLDER_NAME)); 744 l10n_util::GetStringUTF16(IDS_BOOKMARK_BAR_MOBILE_FOLDER_NAME));
745 } else {
746 node = new BookmarkNode(generate_next_node_id(), GURL());
747 if (type == BookmarkNode::BOOKMARK_BAR) {
748 node->set_title(l10n_util::GetStringUTF16(IDS_BOOKMARK_BAR_FOLDER_NAME));
749 } else if (type == BookmarkNode::OTHER_NODE) {
750 node->set_title(
751 l10n_util::GetStringUTF16(IDS_BOOKMARK_BAR_OTHER_FOLDER_NAME));
752 } else {
753 NOTREACHED();
754 }
716 } 755 }
756 node->set_type(type);
717 return node; 757 return node;
718 } 758 }
719 759
720 void BookmarkModel::OnFaviconDataAvailable( 760 void BookmarkModel::OnFaviconDataAvailable(
721 FaviconService::Handle handle, 761 FaviconService::Handle handle,
722 history::FaviconData favicon) { 762 history::FaviconData favicon) {
723 SkBitmap favicon_bitmap; 763 SkBitmap favicon_bitmap;
724 BookmarkNode* node = 764 BookmarkNode* node =
725 load_consumer_.GetClientData( 765 load_consumer_.GetClientData(
726 profile_->GetFaviconService(Profile::EXPLICIT_ACCESS), handle); 766 profile_->GetFaviconService(Profile::EXPLICIT_ACCESS), handle);
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
808 return next_node_id_++; 848 return next_node_id_++;
809 } 849 }
810 850
811 BookmarkLoadDetails* BookmarkModel::CreateLoadDetails() { 851 BookmarkLoadDetails* BookmarkModel::CreateLoadDetails() {
812 BookmarkNode* bb_node = CreatePermanentNode(BookmarkNode::BOOKMARK_BAR); 852 BookmarkNode* bb_node = CreatePermanentNode(BookmarkNode::BOOKMARK_BAR);
813 BookmarkNode* other_node = CreatePermanentNode(BookmarkNode::OTHER_NODE); 853 BookmarkNode* other_node = CreatePermanentNode(BookmarkNode::OTHER_NODE);
814 BookmarkNode* mobile_node = CreatePermanentNode(BookmarkNode::MOBILE); 854 BookmarkNode* mobile_node = CreatePermanentNode(BookmarkNode::MOBILE);
815 return new BookmarkLoadDetails(bb_node, other_node, mobile_node, 855 return new BookmarkLoadDetails(bb_node, other_node, mobile_node,
816 new BookmarkIndex(profile_), next_node_id_); 856 new BookmarkIndex(profile_), next_node_id_);
817 } 857 }
OLDNEW
« no previous file with comments | « chrome/browser/bookmarks/bookmark_model.h ('k') | chrome/browser/bookmarks/bookmark_model_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698