| OLD | NEW |
| 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/callback.h" | 10 #include "base/callback.h" |
| 11 #include "base/command_line.h" | 11 #include "base/command_line.h" |
| 12 #include "base/memory/scoped_vector.h" | 12 #include "base/memory/scoped_vector.h" |
| 13 #include "build/build_config.h" | 13 #include "build/build_config.h" |
| 14 #include "chrome/browser/bookmarks/bookmark_index.h" | 14 #include "chrome/browser/bookmarks/bookmark_index.h" |
| 15 #include "chrome/browser/bookmarks/bookmark_storage.h" | 15 #include "chrome/browser/bookmarks/bookmark_storage.h" |
| 16 #include "chrome/browser/bookmarks/bookmark_utils.h" | 16 #include "chrome/browser/bookmarks/bookmark_utils.h" |
| 17 #include "chrome/browser/browser_process.h" | 17 #include "chrome/browser/browser_process.h" |
| 18 #include "chrome/browser/history/history_notifications.h" | 18 #include "chrome/browser/history/history_notifications.h" |
| 19 #include "chrome/browser/profiles/profile.h" | 19 #include "chrome/browser/profiles/profile.h" |
| 20 #include "chrome/common/chrome_notification_types.h" |
| 20 #include "chrome/common/chrome_switches.h" | 21 #include "chrome/common/chrome_switches.h" |
| 21 #include "content/common/notification_service.h" | 22 #include "content/common/notification_service.h" |
| 22 #include "grit/generated_resources.h" | 23 #include "grit/generated_resources.h" |
| 23 #include "ui/base/l10n/l10n_util.h" | 24 #include "ui/base/l10n/l10n_util.h" |
| 24 #include "ui/base/l10n/l10n_util_collator.h" | 25 #include "ui/base/l10n/l10n_util_collator.h" |
| 25 #include "ui/gfx/codec/png_codec.h" | 26 #include "ui/gfx/codec/png_codec.h" |
| 26 | 27 |
| 27 using base::Time; | 28 using base::Time; |
| 28 | 29 |
| 29 namespace { | 30 namespace { |
| (...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 136 void BookmarkModel::Load() { | 137 void BookmarkModel::Load() { |
| 137 if (store_.get()) { | 138 if (store_.get()) { |
| 138 // If the store is non-null, it means Load was already invoked. Load should | 139 // If the store is non-null, it means Load was already invoked. Load should |
| 139 // only be invoked once. | 140 // only be invoked once. |
| 140 NOTREACHED(); | 141 NOTREACHED(); |
| 141 return; | 142 return; |
| 142 } | 143 } |
| 143 | 144 |
| 144 // Listen for changes to favicons so that we can update the favicon of the | 145 // Listen for changes to favicons so that we can update the favicon of the |
| 145 // node appropriately. | 146 // node appropriately. |
| 146 registrar_.Add(this, NotificationType::FAVICON_CHANGED, | 147 registrar_.Add(this, chrome::NOTIFICATION_FAVICON_CHANGED, |
| 147 Source<Profile>(profile_)); | 148 Source<Profile>(profile_)); |
| 148 | 149 |
| 149 // Load the bookmarks. BookmarkStorage notifies us when done. | 150 // Load the bookmarks. BookmarkStorage notifies us when done. |
| 150 store_ = new BookmarkStorage(profile_, this); | 151 store_ = new BookmarkStorage(profile_, this); |
| 151 store_->LoadBookmarks(CreateLoadDetails()); | 152 store_->LoadBookmarks(CreateLoadDetails()); |
| 152 } | 153 } |
| 153 | 154 |
| 154 const BookmarkNode* BookmarkModel::GetParentForNewNodes() { | 155 const BookmarkNode* BookmarkModel::GetParentForNewNodes() { |
| 155 std::vector<const BookmarkNode*> nodes = | 156 std::vector<const BookmarkNode*> nodes = |
| 156 bookmark_utils::GetMostRecentlyModifiedFolders(this, 1); | 157 bookmark_utils::GetMostRecentlyModifiedFolders(this, 1); |
| (...skipping 417 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 574 | 575 |
| 575 loaded_ = true; | 576 loaded_ = true; |
| 576 | 577 |
| 577 loaded_signal_.Signal(); | 578 loaded_signal_.Signal(); |
| 578 | 579 |
| 579 // Notify our direct observers. | 580 // Notify our direct observers. |
| 580 FOR_EACH_OBSERVER(BookmarkModelObserver, observers_, Loaded(this)); | 581 FOR_EACH_OBSERVER(BookmarkModelObserver, observers_, Loaded(this)); |
| 581 | 582 |
| 582 // And generic notification. | 583 // And generic notification. |
| 583 NotificationService::current()->Notify( | 584 NotificationService::current()->Notify( |
| 584 NotificationType::BOOKMARK_MODEL_LOADED, | 585 chrome::NOTIFICATION_BOOKMARK_MODEL_LOADED, |
| 585 Source<Profile>(profile_), | 586 Source<Profile>(profile_), |
| 586 NotificationService::NoDetails()); | 587 NotificationService::NoDetails()); |
| 587 } | 588 } |
| 588 | 589 |
| 589 void BookmarkModel::RemoveAndDeleteNode(BookmarkNode* delete_me) { | 590 void BookmarkModel::RemoveAndDeleteNode(BookmarkNode* delete_me) { |
| 590 scoped_ptr<BookmarkNode> node(delete_me); | 591 scoped_ptr<BookmarkNode> node(delete_me); |
| 591 | 592 |
| 592 BookmarkNode* parent = AsMutable(node->parent()); | 593 BookmarkNode* parent = AsMutable(node->parent()); |
| 593 DCHECK(parent); | 594 DCHECK(parent); |
| 594 int index = parent->GetIndexOf(node.get()); | 595 int index = parent->GetIndexOf(node.get()); |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 626 } | 627 } |
| 627 | 628 |
| 628 if (profile_) { | 629 if (profile_) { |
| 629 HistoryService* history = | 630 HistoryService* history = |
| 630 profile_->GetHistoryService(Profile::EXPLICIT_ACCESS); | 631 profile_->GetHistoryService(Profile::EXPLICIT_ACCESS); |
| 631 if (history) | 632 if (history) |
| 632 history->URLsNoLongerBookmarked(details.changed_urls); | 633 history->URLsNoLongerBookmarked(details.changed_urls); |
| 633 } | 634 } |
| 634 | 635 |
| 635 NotificationService::current()->Notify( | 636 NotificationService::current()->Notify( |
| 636 NotificationType::URLS_STARRED, | 637 chrome::NOTIFICATION_URLS_STARRED, |
| 637 Source<Profile>(profile_), | 638 Source<Profile>(profile_), |
| 638 Details<history::URLsStarredDetails>(&details)); | 639 Details<history::URLsStarredDetails>(&details)); |
| 639 } | 640 } |
| 640 | 641 |
| 641 void BookmarkModel::BeginImportMode() { | 642 void BookmarkModel::BeginImportMode() { |
| 642 FOR_EACH_OBSERVER(BookmarkModelObserver, observers_, | 643 FOR_EACH_OBSERVER(BookmarkModelObserver, observers_, |
| 643 BookmarkImportBeginning(this)); | 644 BookmarkImportBeginning(this)); |
| 644 } | 645 } |
| 645 | 646 |
| 646 void BookmarkModel::EndImportMode() { | 647 void BookmarkModel::EndImportMode() { |
| (...skipping 12 matching lines...) Expand all Loading... |
| 659 | 660 |
| 660 FOR_EACH_OBSERVER(BookmarkModelObserver, observers_, | 661 FOR_EACH_OBSERVER(BookmarkModelObserver, observers_, |
| 661 BookmarkNodeAdded(this, parent, index)); | 662 BookmarkNodeAdded(this, parent, index)); |
| 662 | 663 |
| 663 index_->Add(node); | 664 index_->Add(node); |
| 664 | 665 |
| 665 if (node->is_url() && !was_bookmarked) { | 666 if (node->is_url() && !was_bookmarked) { |
| 666 history::URLsStarredDetails details(true); | 667 history::URLsStarredDetails details(true); |
| 667 details.changed_urls.insert(node->GetURL()); | 668 details.changed_urls.insert(node->GetURL()); |
| 668 NotificationService::current()->Notify( | 669 NotificationService::current()->Notify( |
| 669 NotificationType::URLS_STARRED, | 670 chrome::NOTIFICATION_URLS_STARRED, |
| 670 Source<Profile>(profile_), | 671 Source<Profile>(profile_), |
| 671 Details<history::URLsStarredDetails>(&details)); | 672 Details<history::URLsStarredDetails>(&details)); |
| 672 } | 673 } |
| 673 return node; | 674 return node; |
| 674 } | 675 } |
| 675 | 676 |
| 676 void BookmarkModel::BlockTillLoaded() { | 677 void BookmarkModel::BlockTillLoaded() { |
| 677 loaded_signal_.Wait(); | 678 loaded_signal_.Wait(); |
| 678 } | 679 } |
| 679 | 680 |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 752 void BookmarkModel::CancelPendingFaviconLoadRequests(BookmarkNode* node) { | 753 void BookmarkModel::CancelPendingFaviconLoadRequests(BookmarkNode* node) { |
| 753 if (node->favicon_load_handle()) { | 754 if (node->favicon_load_handle()) { |
| 754 FaviconService* favicon_service = | 755 FaviconService* favicon_service = |
| 755 profile_->GetFaviconService(Profile::EXPLICIT_ACCESS); | 756 profile_->GetFaviconService(Profile::EXPLICIT_ACCESS); |
| 756 if (favicon_service) | 757 if (favicon_service) |
| 757 favicon_service->CancelRequest(node->favicon_load_handle()); | 758 favicon_service->CancelRequest(node->favicon_load_handle()); |
| 758 node->set_favicon_load_handle(0); | 759 node->set_favicon_load_handle(0); |
| 759 } | 760 } |
| 760 } | 761 } |
| 761 | 762 |
| 762 void BookmarkModel::Observe(NotificationType type, | 763 void BookmarkModel::Observe(int type, |
| 763 const NotificationSource& source, | 764 const NotificationSource& source, |
| 764 const NotificationDetails& details) { | 765 const NotificationDetails& details) { |
| 765 switch (type.value) { | 766 switch (type) { |
| 766 case NotificationType::FAVICON_CHANGED: { | 767 case chrome::NOTIFICATION_FAVICON_CHANGED: { |
| 767 // Prevent the observers from getting confused for multiple favicon loads. | 768 // Prevent the observers from getting confused for multiple favicon loads. |
| 768 Details<history::FaviconChangeDetails> favicon_details(details); | 769 Details<history::FaviconChangeDetails> favicon_details(details); |
| 769 for (std::set<GURL>::const_iterator i = favicon_details->urls.begin(); | 770 for (std::set<GURL>::const_iterator i = favicon_details->urls.begin(); |
| 770 i != favicon_details->urls.end(); ++i) { | 771 i != favicon_details->urls.end(); ++i) { |
| 771 std::vector<const BookmarkNode*> nodes; | 772 std::vector<const BookmarkNode*> nodes; |
| 772 GetNodesByURL(*i, &nodes); | 773 GetNodesByURL(*i, &nodes); |
| 773 for (size_t i = 0; i < nodes.size(); ++i) { | 774 for (size_t i = 0; i < nodes.size(); ++i) { |
| 774 // Got an updated favicon, for a URL, do a new request. | 775 // Got an updated favicon, for a URL, do a new request. |
| 775 BookmarkNode* node = AsMutable(nodes[i]); | 776 BookmarkNode* node = AsMutable(nodes[i]); |
| 776 node->InvalidateFavicon(); | 777 node->InvalidateFavicon(); |
| (...skipping 28 matching lines...) Expand all Loading... |
| 805 file_changed_ = true; | 806 file_changed_ = true; |
| 806 } | 807 } |
| 807 | 808 |
| 808 BookmarkLoadDetails* BookmarkModel::CreateLoadDetails() { | 809 BookmarkLoadDetails* BookmarkModel::CreateLoadDetails() { |
| 809 BookmarkNode* bb_node = CreatePermanentNode(BookmarkNode::BOOKMARK_BAR); | 810 BookmarkNode* bb_node = CreatePermanentNode(BookmarkNode::BOOKMARK_BAR); |
| 810 BookmarkNode* other_node = CreatePermanentNode(BookmarkNode::OTHER_NODE); | 811 BookmarkNode* other_node = CreatePermanentNode(BookmarkNode::OTHER_NODE); |
| 811 BookmarkNode* synced_node = CreatePermanentNode(BookmarkNode::SYNCED); | 812 BookmarkNode* synced_node = CreatePermanentNode(BookmarkNode::SYNCED); |
| 812 return new BookmarkLoadDetails(bb_node, other_node, synced_node, | 813 return new BookmarkLoadDetails(bb_node, other_node, synced_node, |
| 813 new BookmarkIndex(profile()), next_node_id_); | 814 new BookmarkIndex(profile()), next_node_id_); |
| 814 } | 815 } |
| OLD | NEW |