OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 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 "components/sync_bookmarks/bookmark_change_processor.h" | 5 #include "components/sync_bookmarks/bookmark_change_processor.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include <map> | 9 #include <map> |
10 #include <stack> | 10 #include <stack> |
(...skipping 25 matching lines...) Expand all Loading... |
36 using bookmarks::BookmarkModel; | 36 using bookmarks::BookmarkModel; |
37 using bookmarks::BookmarkNode; | 37 using bookmarks::BookmarkNode; |
38 using syncer::ChangeRecord; | 38 using syncer::ChangeRecord; |
39 using syncer::ChangeRecordList; | 39 using syncer::ChangeRecordList; |
40 | 40 |
41 namespace sync_bookmarks { | 41 namespace sync_bookmarks { |
42 | 42 |
43 static const char kMobileBookmarksTag[] = "synced_bookmarks"; | 43 static const char kMobileBookmarksTag[] = "synced_bookmarks"; |
44 | 44 |
45 BookmarkChangeProcessor::BookmarkChangeProcessor( | 45 BookmarkChangeProcessor::BookmarkChangeProcessor( |
46 sync_driver::SyncClient* sync_client, | 46 syncer::SyncClient* sync_client, |
47 BookmarkModelAssociator* model_associator, | 47 BookmarkModelAssociator* model_associator, |
48 std::unique_ptr<syncer::DataTypeErrorHandler> err_handler) | 48 std::unique_ptr<syncer::DataTypeErrorHandler> err_handler) |
49 : sync_driver::ChangeProcessor(std::move(err_handler)), | 49 : syncer::ChangeProcessor(std::move(err_handler)), |
50 bookmark_model_(NULL), | 50 bookmark_model_(NULL), |
51 sync_client_(sync_client), | 51 sync_client_(sync_client), |
52 model_associator_(model_associator) { | 52 model_associator_(model_associator) { |
53 DCHECK(model_associator); | 53 DCHECK(model_associator); |
54 DCHECK(sync_client); | 54 DCHECK(sync_client); |
55 DCHECK(error_handler()); | 55 DCHECK(error_handler()); |
56 } | 56 } |
57 | 57 |
58 BookmarkChangeProcessor::~BookmarkChangeProcessor() { | 58 BookmarkChangeProcessor::~BookmarkChangeProcessor() { |
59 if (bookmark_model_) | 59 if (bookmark_model_) |
(...skipping 697 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
757 // bookmark model to mark as synced. | 757 // bookmark model to mark as synced. |
758 model->SetNodeSyncTransactionVersion(model->root_node(), model_version); | 758 model->SetNodeSyncTransactionVersion(model->root_node(), model_version); |
759 } | 759 } |
760 | 760 |
761 // Static. | 761 // Static. |
762 // Update a bookmark node with specified sync data. | 762 // Update a bookmark node with specified sync data. |
763 void BookmarkChangeProcessor::UpdateBookmarkWithSyncData( | 763 void BookmarkChangeProcessor::UpdateBookmarkWithSyncData( |
764 const syncer::BaseNode& sync_node, | 764 const syncer::BaseNode& sync_node, |
765 BookmarkModel* model, | 765 BookmarkModel* model, |
766 const BookmarkNode* node, | 766 const BookmarkNode* node, |
767 sync_driver::SyncClient* sync_client) { | 767 syncer::SyncClient* sync_client) { |
768 DCHECK_EQ(sync_node.GetIsFolder(), node->is_folder()); | 768 DCHECK_EQ(sync_node.GetIsFolder(), node->is_folder()); |
769 const sync_pb::BookmarkSpecifics& specifics = | 769 const sync_pb::BookmarkSpecifics& specifics = |
770 sync_node.GetBookmarkSpecifics(); | 770 sync_node.GetBookmarkSpecifics(); |
771 if (!sync_node.GetIsFolder()) | 771 if (!sync_node.GetIsFolder()) |
772 model->SetURL(node, GURL(specifics.url())); | 772 model->SetURL(node, GURL(specifics.url())); |
773 model->SetTitle(node, base::UTF8ToUTF16(sync_node.GetTitle())); | 773 model->SetTitle(node, base::UTF8ToUTF16(sync_node.GetTitle())); |
774 if (specifics.has_creation_time_us()) { | 774 if (specifics.has_creation_time_us()) { |
775 model->SetDateAdded( | 775 model->SetDateAdded( |
776 node, | 776 node, |
777 base::Time::FromInternalValue(specifics.creation_time_us())); | 777 base::Time::FromInternalValue(specifics.creation_time_us())); |
(...skipping 15 matching lines...) Expand all Loading... |
793 } | 793 } |
794 } | 794 } |
795 | 795 |
796 // static | 796 // static |
797 // Creates a bookmark node under the given parent node from the given sync | 797 // Creates a bookmark node under the given parent node from the given sync |
798 // node. Returns the newly created node. | 798 // node. Returns the newly created node. |
799 const BookmarkNode* BookmarkChangeProcessor::CreateBookmarkNode( | 799 const BookmarkNode* BookmarkChangeProcessor::CreateBookmarkNode( |
800 const syncer::BaseNode* sync_node, | 800 const syncer::BaseNode* sync_node, |
801 const BookmarkNode* parent, | 801 const BookmarkNode* parent, |
802 BookmarkModel* model, | 802 BookmarkModel* model, |
803 sync_driver::SyncClient* sync_client, | 803 syncer::SyncClient* sync_client, |
804 int index) { | 804 int index) { |
805 return CreateBookmarkNode(base::UTF8ToUTF16(sync_node->GetTitle()), | 805 return CreateBookmarkNode(base::UTF8ToUTF16(sync_node->GetTitle()), |
806 GURL(sync_node->GetBookmarkSpecifics().url()), | 806 GURL(sync_node->GetBookmarkSpecifics().url()), |
807 sync_node, parent, model, sync_client, index); | 807 sync_node, parent, model, sync_client, index); |
808 } | 808 } |
809 | 809 |
810 // static | 810 // static |
811 // Creates a bookmark node under the given parent node from the given sync | 811 // Creates a bookmark node under the given parent node from the given sync |
812 // node. Returns the newly created node. | 812 // node. Returns the newly created node. |
813 const BookmarkNode* BookmarkChangeProcessor::CreateBookmarkNode( | 813 const BookmarkNode* BookmarkChangeProcessor::CreateBookmarkNode( |
814 const base::string16& title, | 814 const base::string16& title, |
815 const GURL& url, | 815 const GURL& url, |
816 const syncer::BaseNode* sync_node, | 816 const syncer::BaseNode* sync_node, |
817 const BookmarkNode* parent, | 817 const BookmarkNode* parent, |
818 BookmarkModel* model, | 818 BookmarkModel* model, |
819 sync_driver::SyncClient* sync_client, | 819 syncer::SyncClient* sync_client, |
820 int index) { | 820 int index) { |
821 DCHECK(parent); | 821 DCHECK(parent); |
822 | 822 |
823 const BookmarkNode* node; | 823 const BookmarkNode* node; |
824 if (sync_node->GetIsFolder()) { | 824 if (sync_node->GetIsFolder()) { |
825 node = model->AddFolderWithMetaInfo(parent, index, title, | 825 node = model->AddFolderWithMetaInfo(parent, index, title, |
826 GetBookmarkMetaInfo(sync_node).get()); | 826 GetBookmarkMetaInfo(sync_node).get()); |
827 } else { | 827 } else { |
828 // 'creation_time_us' was added in m24. Assume a time of 0 means now. | 828 // 'creation_time_us' was added in m24. Assume a time of 0 means now. |
829 const sync_pb::BookmarkSpecifics& specifics = | 829 const sync_pb::BookmarkSpecifics& specifics = |
(...skipping 10 matching lines...) Expand all Loading... |
840 | 840 |
841 return node; | 841 return node; |
842 } | 842 } |
843 | 843 |
844 // static | 844 // static |
845 // Sets the favicon of the given bookmark node from the given sync node. | 845 // Sets the favicon of the given bookmark node from the given sync node. |
846 bool BookmarkChangeProcessor::SetBookmarkFavicon( | 846 bool BookmarkChangeProcessor::SetBookmarkFavicon( |
847 const syncer::BaseNode* sync_node, | 847 const syncer::BaseNode* sync_node, |
848 const BookmarkNode* bookmark_node, | 848 const BookmarkNode* bookmark_node, |
849 BookmarkModel* bookmark_model, | 849 BookmarkModel* bookmark_model, |
850 sync_driver::SyncClient* sync_client) { | 850 syncer::SyncClient* sync_client) { |
851 const sync_pb::BookmarkSpecifics& specifics = | 851 const sync_pb::BookmarkSpecifics& specifics = |
852 sync_node->GetBookmarkSpecifics(); | 852 sync_node->GetBookmarkSpecifics(); |
853 const std::string& icon_bytes_str = specifics.favicon(); | 853 const std::string& icon_bytes_str = specifics.favicon(); |
854 if (icon_bytes_str.empty()) | 854 if (icon_bytes_str.empty()) |
855 return false; | 855 return false; |
856 | 856 |
857 scoped_refptr<base::RefCountedString> icon_bytes( | 857 scoped_refptr<base::RefCountedString> icon_bytes( |
858 new base::RefCountedString()); | 858 new base::RefCountedString()); |
859 icon_bytes->data().assign(icon_bytes_str); | 859 icon_bytes->data().assign(icon_bytes_str); |
860 GURL icon_url(specifics.icon_url()); | 860 GURL icon_url(specifics.icon_url()); |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
929 meta_info->set_value(it->second); | 929 meta_info->set_value(it->second); |
930 } | 930 } |
931 } | 931 } |
932 | 932 |
933 sync_node->SetBookmarkSpecifics(specifics); | 933 sync_node->SetBookmarkSpecifics(specifics); |
934 } | 934 } |
935 | 935 |
936 // static | 936 // static |
937 void BookmarkChangeProcessor::ApplyBookmarkFavicon( | 937 void BookmarkChangeProcessor::ApplyBookmarkFavicon( |
938 const BookmarkNode* bookmark_node, | 938 const BookmarkNode* bookmark_node, |
939 sync_driver::SyncClient* sync_client, | 939 syncer::SyncClient* sync_client, |
940 const GURL& icon_url, | 940 const GURL& icon_url, |
941 const scoped_refptr<base::RefCountedMemory>& bitmap_data) { | 941 const scoped_refptr<base::RefCountedMemory>& bitmap_data) { |
942 history::HistoryService* history = sync_client->GetHistoryService(); | 942 history::HistoryService* history = sync_client->GetHistoryService(); |
943 favicon::FaviconService* favicon_service = sync_client->GetFaviconService(); | 943 favicon::FaviconService* favicon_service = sync_client->GetFaviconService(); |
944 | 944 |
945 history->AddPageNoVisitForBookmark(bookmark_node->url(), | 945 history->AddPageNoVisitForBookmark(bookmark_node->url(), |
946 bookmark_node->GetTitle()); | 946 bookmark_node->GetTitle()); |
947 // The client may have cached the favicon at 2x. Use MergeFavicon() as not to | 947 // The client may have cached the favicon at 2x. Use MergeFavicon() as not to |
948 // overwrite the cached 2x favicon bitmap. Sync favicons are always | 948 // overwrite the cached 2x favicon bitmap. Sync favicons are always |
949 // gfx::kFaviconSize in width and height. Store the favicon into history | 949 // gfx::kFaviconSize in width and height. Store the favicon into history |
(...skipping 21 matching lines...) Expand all Loading... |
971 updated_specifics.set_icon_url(bookmark_node->icon_url().spec()); | 971 updated_specifics.set_icon_url(bookmark_node->icon_url().spec()); |
972 sync_node->SetBookmarkSpecifics(updated_specifics); | 972 sync_node->SetBookmarkSpecifics(updated_specifics); |
973 } | 973 } |
974 } | 974 } |
975 | 975 |
976 bool BookmarkChangeProcessor::CanSyncNode(const BookmarkNode* node) { | 976 bool BookmarkChangeProcessor::CanSyncNode(const BookmarkNode* node) { |
977 return bookmark_model_->client()->CanSyncNode(node); | 977 return bookmark_model_->client()->CanSyncNode(node); |
978 } | 978 } |
979 | 979 |
980 } // namespace sync_bookmarks | 980 } // namespace sync_bookmarks |
OLD | NEW |