| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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" |
| 11 #include "base/bind_helpers.h" | 11 #include "base/bind_helpers.h" |
| 12 #include "base/memory/scoped_vector.h" | 12 #include "base/memory/scoped_vector.h" |
| 13 #include "base/string_util.h" | 13 #include "base/string_util.h" |
| 14 #include "build/build_config.h" | 14 #include "build/build_config.h" |
| 15 #include "chrome/browser/bookmarks/bookmark_expanded_state_tracker.h" | 15 #include "chrome/browser/bookmarks/bookmark_expanded_state_tracker.h" |
| 16 #include "chrome/browser/bookmarks/bookmark_index.h" | 16 #include "chrome/browser/bookmarks/bookmark_index.h" |
| 17 #include "chrome/browser/bookmarks/bookmark_model_observer.h" | 17 #include "chrome/browser/bookmarks/bookmark_model_observer.h" |
| 18 #include "chrome/browser/bookmarks/bookmark_storage.h" | 18 #include "chrome/browser/bookmarks/bookmark_storage.h" |
| 19 #include "chrome/browser/bookmarks/bookmark_utils.h" | 19 #include "chrome/browser/bookmarks/bookmark_utils.h" |
| 20 #include "chrome/browser/browser_process.h" | 20 #include "chrome/browser/browser_process.h" |
| 21 #include "chrome/browser/favicon/favicon_service_factory.h" |
| 21 #include "chrome/browser/history/history_notifications.h" | 22 #include "chrome/browser/history/history_notifications.h" |
| 22 #include "chrome/browser/history/history_service_factory.h" | 23 #include "chrome/browser/history/history_service_factory.h" |
| 23 #include "chrome/browser/prefs/pref_service.h" | 24 #include "chrome/browser/prefs/pref_service.h" |
| 24 #include "chrome/browser/profiles/profile.h" | 25 #include "chrome/browser/profiles/profile.h" |
| 25 #include "chrome/common/chrome_notification_types.h" | 26 #include "chrome/common/chrome_notification_types.h" |
| 26 #include "chrome/common/pref_names.h" | 27 #include "chrome/common/pref_names.h" |
| 27 #include "content/public/browser/notification_service.h" | 28 #include "content/public/browser/notification_service.h" |
| 28 #include "grit/generated_resources.h" | 29 #include "grit/generated_resources.h" |
| 29 #include "ui/base/l10n/l10n_util.h" | 30 #include "ui/base/l10n/l10n_util.h" |
| 30 #include "ui/base/l10n/l10n_util_collator.h" | 31 #include "ui/base/l10n/l10n_util_collator.h" |
| (...skipping 741 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 772 node->SetTitle(l10n_util::GetStringUTF16(title_id)); | 773 node->SetTitle(l10n_util::GetStringUTF16(title_id)); |
| 773 node->set_type(type); | 774 node->set_type(type); |
| 774 return node; | 775 return node; |
| 775 } | 776 } |
| 776 | 777 |
| 777 void BookmarkModel::OnFaviconDataAvailable( | 778 void BookmarkModel::OnFaviconDataAvailable( |
| 778 FaviconService::Handle handle, | 779 FaviconService::Handle handle, |
| 779 history::FaviconData favicon) { | 780 history::FaviconData favicon) { |
| 780 BookmarkNode* node = | 781 BookmarkNode* node = |
| 781 load_consumer_.GetClientData( | 782 load_consumer_.GetClientData( |
| 782 profile_->GetFaviconService(Profile::EXPLICIT_ACCESS), handle); | 783 FaviconServiceFactory::GetForProfile( |
| 784 profile_, Profile::EXPLICIT_ACCESS), handle); |
| 783 DCHECK(node); | 785 DCHECK(node); |
| 784 node->set_favicon_load_handle(0); | 786 node->set_favicon_load_handle(0); |
| 785 if (favicon.is_valid()) { | 787 if (favicon.is_valid()) { |
| 786 scoped_ptr<gfx::Image> favicon_image( | 788 scoped_ptr<gfx::Image> favicon_image( |
| 787 gfx::ImageFromPNGEncodedData(favicon.image_data->front(), | 789 gfx::ImageFromPNGEncodedData(favicon.image_data->front(), |
| 788 favicon.image_data->size())); | 790 favicon.image_data->size())); |
| 789 if (favicon_image.get()) { | 791 if (favicon_image.get()) { |
| 790 node->set_favicon(*favicon_image.get()); | 792 node->set_favicon(*favicon_image.get()); |
| 791 FaviconLoaded(node); | 793 FaviconLoaded(node); |
| 792 } | 794 } |
| 793 } | 795 } |
| 794 } | 796 } |
| 795 | 797 |
| 796 void BookmarkModel::LoadFavicon(BookmarkNode* node) { | 798 void BookmarkModel::LoadFavicon(BookmarkNode* node) { |
| 797 if (node->is_folder()) | 799 if (node->is_folder()) |
| 798 return; | 800 return; |
| 799 | 801 |
| 800 DCHECK(node->url().is_valid()); | 802 DCHECK(node->url().is_valid()); |
| 801 FaviconService* favicon_service = | 803 FaviconService* favicon_service = FaviconServiceFactory::GetForProfile( |
| 802 profile_->GetFaviconService(Profile::EXPLICIT_ACCESS); | 804 profile_, Profile::EXPLICIT_ACCESS); |
| 803 if (!favicon_service) | 805 if (!favicon_service) |
| 804 return; | 806 return; |
| 805 FaviconService::Handle handle = favicon_service->GetFaviconForURL( | 807 FaviconService::Handle handle = favicon_service->GetFaviconForURL( |
| 806 node->url(), history::FAVICON, &load_consumer_, | 808 profile_, node->url(), history::FAVICON, &load_consumer_, |
| 807 base::Bind(&BookmarkModel::OnFaviconDataAvailable, | 809 base::Bind(&BookmarkModel::OnFaviconDataAvailable, |
| 808 base::Unretained(this))); | 810 base::Unretained(this))); |
| 809 load_consumer_.SetClientData(favicon_service, handle, node); | 811 load_consumer_.SetClientData(favicon_service, handle, node); |
| 810 node->set_favicon_load_handle(handle); | 812 node->set_favicon_load_handle(handle); |
| 811 } | 813 } |
| 812 | 814 |
| 813 void BookmarkModel::FaviconLoaded(const BookmarkNode* node) { | 815 void BookmarkModel::FaviconLoaded(const BookmarkNode* node) { |
| 814 FOR_EACH_OBSERVER(BookmarkModelObserver, observers_, | 816 FOR_EACH_OBSERVER(BookmarkModelObserver, observers_, |
| 815 BookmarkNodeFaviconChanged(this, node)); | 817 BookmarkNodeFaviconChanged(this, node)); |
| 816 } | 818 } |
| 817 | 819 |
| 818 void BookmarkModel::CancelPendingFaviconLoadRequests(BookmarkNode* node) { | 820 void BookmarkModel::CancelPendingFaviconLoadRequests(BookmarkNode* node) { |
| 819 if (node->favicon_load_handle()) { | 821 if (node->favicon_load_handle()) { |
| 820 FaviconService* favicon_service = | 822 FaviconService* favicon_service = FaviconServiceFactory::GetForProfile( |
| 821 profile_->GetFaviconService(Profile::EXPLICIT_ACCESS); | 823 profile_, Profile::EXPLICIT_ACCESS); |
| 822 if (favicon_service) | 824 if (favicon_service) |
| 823 favicon_service->CancelRequest(node->favicon_load_handle()); | 825 favicon_service->CancelRequest(node->favicon_load_handle()); |
| 824 node->set_favicon_load_handle(0); | 826 node->set_favicon_load_handle(0); |
| 825 } | 827 } |
| 826 } | 828 } |
| 827 | 829 |
| 828 void BookmarkModel::Observe(int type, | 830 void BookmarkModel::Observe(int type, |
| 829 const content::NotificationSource& source, | 831 const content::NotificationSource& source, |
| 830 const content::NotificationDetails& details) { | 832 const content::NotificationDetails& details) { |
| 831 switch (type) { | 833 switch (type) { |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 870 BookmarkLoadDetails* BookmarkModel::CreateLoadDetails() { | 872 BookmarkLoadDetails* BookmarkModel::CreateLoadDetails() { |
| 871 BookmarkPermanentNode* bb_node = | 873 BookmarkPermanentNode* bb_node = |
| 872 CreatePermanentNode(BookmarkNode::BOOKMARK_BAR); | 874 CreatePermanentNode(BookmarkNode::BOOKMARK_BAR); |
| 873 BookmarkPermanentNode* other_node = | 875 BookmarkPermanentNode* other_node = |
| 874 CreatePermanentNode(BookmarkNode::OTHER_NODE); | 876 CreatePermanentNode(BookmarkNode::OTHER_NODE); |
| 875 BookmarkPermanentNode* mobile_node = | 877 BookmarkPermanentNode* mobile_node = |
| 876 CreatePermanentNode(BookmarkNode::MOBILE); | 878 CreatePermanentNode(BookmarkNode::MOBILE); |
| 877 return new BookmarkLoadDetails(bb_node, other_node, mobile_node, | 879 return new BookmarkLoadDetails(bb_node, other_node, mobile_node, |
| 878 new BookmarkIndex(profile_), next_node_id_); | 880 new BookmarkIndex(profile_), next_node_id_); |
| 879 } | 881 } |
| OLD | NEW |