| Index: chrome/browser/bookmarks/bookmark_model.cc
|
| diff --git a/chrome/browser/bookmarks/bookmark_model.cc b/chrome/browser/bookmarks/bookmark_model.cc
|
| index c45f87b477a231f33af81dd4131213611af9d2ab..b0dfadab951d836ec70173603f1d30baafe0dbd5 100644
|
| --- a/chrome/browser/bookmarks/bookmark_model.cc
|
| +++ b/chrome/browser/bookmarks/bookmark_model.cc
|
| @@ -55,6 +55,10 @@ BookmarkNode::BookmarkNode(int64 id, const GURL& url)
|
| BookmarkNode::~BookmarkNode() {
|
| }
|
|
|
| +bool BookmarkNode::IsVisible() const {
|
| + return true;
|
| +}
|
| +
|
| void BookmarkNode::Initialize(int64 id) {
|
| id_ = id;
|
| type_ = url_.is_empty() ? FOLDER : URL;
|
| @@ -68,8 +72,6 @@ void BookmarkNode::InvalidateFavicon() {
|
| is_favicon_loaded_ = false;
|
| }
|
|
|
| -// BookmarkModel --------------------------------------------------------------
|
| -
|
| namespace {
|
|
|
| // Comparator used when sorting bookmarks. Folders are sorted first, then
|
| @@ -97,8 +99,40 @@ 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();
|
| +
|
| + // BookmarkNode overrides:
|
| + virtual bool IsVisible() const OVERRIDE;
|
| +
|
| + private:
|
| + bool visible_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(MobileNode);
|
| +};
|
| +
|
| +MobileNode::MobileNode(int64 id)
|
| + : BookmarkNode(id, GURL()),
|
| + visible_(false) {
|
| +}
|
| +
|
| +MobileNode::~MobileNode() {
|
| +}
|
| +
|
| +bool MobileNode::IsVisible() const {
|
| + return visible_ || !empty();
|
| +}
|
| +
|
| } // namespace
|
|
|
| +// BookmarkModel --------------------------------------------------------------
|
| +
|
| BookmarkModel::BookmarkModel(Profile* profile)
|
| : profile_(profile),
|
| loaded_(false),
|
| @@ -703,17 +737,23 @@ BookmarkNode* BookmarkModel::CreatePermanentNode(BookmarkNode::Type type) {
|
| DCHECK(type == BookmarkNode::BOOKMARK_BAR ||
|
| type == BookmarkNode::OTHER_NODE ||
|
| type == BookmarkNode::MOBILE);
|
| - BookmarkNode* node = new BookmarkNode(generate_next_node_id(), GURL());
|
| - node->set_type(type);
|
| - 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 {
|
| + 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 {
|
| + NOTREACHED();
|
| + }
|
| }
|
| + node->set_type(type);
|
| return node;
|
| }
|
|
|
|
|