| OLD | NEW |
| 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 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 "app/l10n_util.h" | 7 #include "app/l10n_util.h" |
| 8 #include "base/gfx/png_decoder.h" | 8 #include "base/gfx/png_decoder.h" |
| 9 #include "base/scoped_vector.h" | 9 #include "base/scoped_vector.h" |
| 10 #include "build/build_config.h" | 10 #include "build/build_config.h" |
| 11 #include "chrome/browser/bookmarks/bookmark_index.h" | 11 #include "chrome/browser/bookmarks/bookmark_index.h" |
| 12 #include "chrome/browser/bookmarks/bookmark_utils.h" | 12 #include "chrome/browser/bookmarks/bookmark_utils.h" |
| 13 #include "chrome/browser/bookmarks/bookmark_storage.h" | 13 #include "chrome/browser/bookmarks/bookmark_storage.h" |
| 14 #include "chrome/browser/browser_process.h" | 14 #include "chrome/browser/browser_process.h" |
| 15 #include "chrome/browser/profile.h" | 15 #include "chrome/browser/profile.h" |
| 16 #include "chrome/common/notification_service.h" | 16 #include "chrome/common/notification_service.h" |
| 17 #include "chrome/common/pref_service.h" |
| 17 #include "grit/generated_resources.h" | 18 #include "grit/generated_resources.h" |
| 18 | 19 |
| 19 using base::Time; | 20 using base::Time; |
| 20 | 21 |
| 21 // BookmarkNode --------------------------------------------------------------- | 22 // BookmarkNode --------------------------------------------------------------- |
| 22 | 23 |
| 23 BookmarkNode::BookmarkNode(const GURL& url) | 24 BookmarkNode::BookmarkNode(const GURL& url) |
| 24 : url_(url) { | 25 : url_(url) { |
| 25 Initialize(0); | 26 Initialize(0); |
| 26 } | 27 } |
| (...skipping 20 matching lines...) Expand all Loading... |
| 47 type_ = entry.type; | 48 type_ = entry.type; |
| 48 date_added_ = entry.date_added; | 49 date_added_ = entry.date_added; |
| 49 date_group_modified_ = entry.date_group_modified; | 50 date_group_modified_ = entry.date_group_modified; |
| 50 SetTitle(entry.title); | 51 SetTitle(entry.title); |
| 51 } | 52 } |
| 52 | 53 |
| 53 // BookmarkModel -------------------------------------------------------------- | 54 // BookmarkModel -------------------------------------------------------------- |
| 54 | 55 |
| 55 namespace { | 56 namespace { |
| 56 | 57 |
| 58 // Constant for persist IDs prefernece. |
| 59 const wchar_t kPrefPersistIDs[] = L"bookmarks.persist_ids"; |
| 60 |
| 57 // Comparator used when sorting bookmarks. Folders are sorted first, then | 61 // Comparator used when sorting bookmarks. Folders are sorted first, then |
| 58 // bookmarks. | 62 // bookmarks. |
| 59 class SortComparator : public std::binary_function<BookmarkNode*, | 63 class SortComparator : public std::binary_function<BookmarkNode*, |
| 60 BookmarkNode*, | 64 BookmarkNode*, |
| 61 bool> { | 65 bool> { |
| 62 public: | 66 public: |
| 63 explicit SortComparator(Collator* collator) : collator_(collator) { } | 67 explicit SortComparator(Collator* collator) : collator_(collator) { } |
| 64 | 68 |
| 65 // Returns true if lhs preceeds rhs. | 69 // Returns true if lhs preceeds rhs. |
| 66 bool operator() (BookmarkNode* n1, BookmarkNode* n2) { | 70 bool operator() (BookmarkNode* n1, BookmarkNode* n2) { |
| (...skipping 10 matching lines...) Expand all Loading... |
| 77 | 81 |
| 78 private: | 82 private: |
| 79 Collator* collator_; | 83 Collator* collator_; |
| 80 }; | 84 }; |
| 81 | 85 |
| 82 } // namespace | 86 } // namespace |
| 83 | 87 |
| 84 BookmarkModel::BookmarkModel(Profile* profile) | 88 BookmarkModel::BookmarkModel(Profile* profile) |
| 85 : profile_(profile), | 89 : profile_(profile), |
| 86 loaded_(false), | 90 loaded_(false), |
| 91 persist_ids_(false), |
| 87 root_(GURL()), | 92 root_(GURL()), |
| 88 bookmark_bar_node_(NULL), | 93 bookmark_bar_node_(NULL), |
| 89 other_node_(NULL), | 94 other_node_(NULL), |
| 90 next_node_id_(1), | 95 next_node_id_(1), |
| 91 observers_(ObserverList<BookmarkModelObserver>::NOTIFY_EXISTING_ONLY), | 96 observers_(ObserverList<BookmarkModelObserver>::NOTIFY_EXISTING_ONLY), |
| 92 loaded_signal_(TRUE, FALSE) { | 97 loaded_signal_(TRUE, FALSE) { |
| 93 if (!profile_) { | 98 if (!profile_) { |
| 94 // Profile is null during testing. | 99 // Profile is null during testing. |
| 95 DoneLoading(CreateLoadDetails()); | 100 DoneLoading(CreateLoadDetails()); |
| 96 } | 101 } |
| 102 RegisterPreferences(); |
| 103 LoadPreferences(); |
| 97 } | 104 } |
| 98 | 105 |
| 99 BookmarkModel::~BookmarkModel() { | 106 BookmarkModel::~BookmarkModel() { |
| 100 FOR_EACH_OBSERVER(BookmarkModelObserver, observers_, | 107 FOR_EACH_OBSERVER(BookmarkModelObserver, observers_, |
| 101 BookmarkModelBeingDeleted(this)); | 108 BookmarkModelBeingDeleted(this)); |
| 102 | 109 |
| 103 if (store_) { | 110 if (store_) { |
| 104 // The store maintains a reference back to us. We need to tell it we're gone | 111 // The store maintains a reference back to us. We need to tell it we're gone |
| 105 // so that it doesn't try and invoke a method back on us again. | 112 // so that it doesn't try and invoke a method back on us again. |
| 106 store_->BookmarkModelDeleted(); | 113 store_->BookmarkModelDeleted(); |
| (...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 370 return; | 377 return; |
| 371 | 378 |
| 372 index_->GetBookmarksWithTitlesMatching(text, max_count, matches); | 379 index_->GetBookmarksWithTitlesMatching(text, max_count, matches); |
| 373 } | 380 } |
| 374 | 381 |
| 375 void BookmarkModel::ClearStore() { | 382 void BookmarkModel::ClearStore() { |
| 376 registrar_.RemoveAll(); | 383 registrar_.RemoveAll(); |
| 377 store_ = NULL; | 384 store_ = NULL; |
| 378 } | 385 } |
| 379 | 386 |
| 387 void BookmarkModel::SetPersistIDs(bool value) { |
| 388 if (value == persist_ids_) |
| 389 return; |
| 390 persist_ids_ = value; |
| 391 if (profile_) { |
| 392 PrefService* pref_service = profile_->GetPrefs(); |
| 393 pref_service->SetBoolean(kPrefPersistIDs, persist_ids_); |
| 394 } |
| 395 } |
| 396 |
| 380 bool BookmarkModel::IsBookmarkedNoLock(const GURL& url) { | 397 bool BookmarkModel::IsBookmarkedNoLock(const GURL& url) { |
| 381 BookmarkNode tmp_node(url); | 398 BookmarkNode tmp_node(url); |
| 382 return (nodes_ordered_by_url_set_.find(&tmp_node) != | 399 return (nodes_ordered_by_url_set_.find(&tmp_node) != |
| 383 nodes_ordered_by_url_set_.end()); | 400 nodes_ordered_by_url_set_.end()); |
| 384 } | 401 } |
| 385 | 402 |
| 386 void BookmarkModel::FavIconLoaded(BookmarkNode* node) { | 403 void BookmarkModel::FavIconLoaded(BookmarkNode* node) { |
| 387 // Send out notification to the observer. | 404 // Send out notification to the observer. |
| 388 FOR_EACH_OBSERVER(BookmarkModelObserver, observers_, | 405 FOR_EACH_OBSERVER(BookmarkModelObserver, observers_, |
| 389 BookmarkNodeFavIconLoaded(this, node)); | 406 BookmarkNodeFavIconLoaded(this, node)); |
| (...skipping 292 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 682 int BookmarkModel::generate_next_node_id() { | 699 int BookmarkModel::generate_next_node_id() { |
| 683 return next_node_id_++; | 700 return next_node_id_++; |
| 684 } | 701 } |
| 685 | 702 |
| 686 BookmarkStorage::LoadDetails* BookmarkModel::CreateLoadDetails() { | 703 BookmarkStorage::LoadDetails* BookmarkModel::CreateLoadDetails() { |
| 687 BookmarkNode* bb_node = CreateBookmarkNode(); | 704 BookmarkNode* bb_node = CreateBookmarkNode(); |
| 688 BookmarkNode* other_folder_node = CreateOtherBookmarksNode(); | 705 BookmarkNode* other_folder_node = CreateOtherBookmarksNode(); |
| 689 return new BookmarkStorage::LoadDetails( | 706 return new BookmarkStorage::LoadDetails( |
| 690 bb_node, other_folder_node, new BookmarkIndex(), next_node_id_); | 707 bb_node, other_folder_node, new BookmarkIndex(), next_node_id_); |
| 691 } | 708 } |
| 709 |
| 710 void BookmarkModel::RegisterPreferences() { |
| 711 if (!profile_) |
| 712 return; |
| 713 PrefService* pref_service = profile_->GetPrefs(); |
| 714 if (!pref_service->IsPrefRegistered(kPrefPersistIDs)) |
| 715 pref_service->RegisterBooleanPref(kPrefPersistIDs, false); |
| 716 } |
| 717 |
| 718 void BookmarkModel::LoadPreferences() { |
| 719 if (!profile_) |
| 720 return; |
| 721 PrefService* pref_service = profile_->GetPrefs(); |
| 722 persist_ids_ = pref_service->GetBoolean(kPrefPersistIDs); |
| 723 } |
| OLD | NEW |