Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(442)

Side by Side Diff: chrome/browser/sync/glue/bookmark_change_processor.cc

Issue 11413153: Remove legacy GetURL(),SetURL(),GetFaviconBytes(),SetFaviconBytes() (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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/sync/glue/bookmark_change_processor.h" 5 #include "chrome/browser/sync/glue/bookmark_change_processor.h"
6 6
7 #include <stack> 7 #include <stack>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/location.h" 10 #include "base/location.h"
(...skipping 553 matching lines...) Expand 10 before | Expand all | Expand 10 after
564 if (synced_bookmarks.InitByTagLookup(kMobileBookmarksTag) == 564 if (synced_bookmarks.InitByTagLookup(kMobileBookmarksTag) ==
565 syncer::BaseNode::INIT_OK && 565 syncer::BaseNode::INIT_OK &&
566 synced_bookmarks.GetId() == it->id) { 566 synced_bookmarks.GetId() == it->id) {
567 // This is a newly created Synced Bookmarks node. Associate it. 567 // This is a newly created Synced Bookmarks node. Associate it.
568 model_associator_->Associate(model->mobile_node(), it->id); 568 model_associator_->Associate(model->mobile_node(), it->id);
569 } else { 569 } else {
570 // We ignore bookmarks we can't add. Chances are this is caused by 570 // We ignore bookmarks we can't add. Chances are this is caused by
571 // a bookmark that was not fully associated. 571 // a bookmark that was not fully associated.
572 LOG(ERROR) << "Failed to create bookmark node with title " 572 LOG(ERROR) << "Failed to create bookmark node with title "
573 << src.GetTitle() + " and url " 573 << src.GetTitle() + " and url "
574 << src.GetURL().possibly_invalid_spec(); 574 << src.GetBookmarkSpecifics().url();
575 } 575 }
576 } 576 }
577 } 577 }
578 } 578 }
579 // Clean up the temporary node. 579 // Clean up the temporary node.
580 if (foster_parent) { 580 if (foster_parent) {
581 // There should be no nodes left under the foster parent. 581 // There should be no nodes left under the foster parent.
582 DCHECK_EQ(foster_parent->child_count(), 0); 582 DCHECK_EQ(foster_parent->child_count(), 0);
583 model->Remove(foster_parent->parent(), 583 model->Remove(foster_parent->parent(),
584 foster_parent->parent()->GetIndexOf(foster_parent)); 584 foster_parent->parent()->GetIndexOf(foster_parent));
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
623 if (dst) 623 if (dst)
624 model_associator->Associate(dst, src->GetId()); 624 model_associator->Associate(dst, src->GetId());
625 } else { 625 } else {
626 // URL and is_folder are not expected to change. 626 // URL and is_folder are not expected to change.
627 // TODO(ncarter): Determine if such changes should be legal or not. 627 // TODO(ncarter): Determine if such changes should be legal or not.
628 DCHECK_EQ(src->GetIsFolder(), dst->is_folder()); 628 DCHECK_EQ(src->GetIsFolder(), dst->is_folder());
629 629
630 // Handle reparenting and/or repositioning. 630 // Handle reparenting and/or repositioning.
631 model->Move(dst, parent, index); 631 model->Move(dst, parent, index);
632 632
633 const sync_pb::BookmarkSpecifics& specifics = src->GetBookmarkSpecifics();
633 if (!src->GetIsFolder()) 634 if (!src->GetIsFolder())
634 model->SetURL(dst, src->GetURL()); 635 model->SetURL(dst, GURL(specifics.url()));
635 model->SetTitle(dst, UTF8ToUTF16(src->GetTitle())); 636 model->SetTitle(dst, UTF8ToUTF16(src->GetTitle()));
636 if (src->GetBookmarkSpecifics().has_creation_time_us()) { 637 if (specifics.has_creation_time_us()) {
637 model->SetDateAdded(dst, 638 model->SetDateAdded(dst,
638 base::Time::FromInternalValue( 639 base::Time::FromInternalValue(
639 src->GetBookmarkSpecifics().creation_time_us())); 640 specifics.creation_time_us()));
640 } 641 }
641 642
642 SetBookmarkFavicon(src, dst, model); 643 SetBookmarkFavicon(src, dst, model);
643 } 644 }
644 645
645 return dst; 646 return dst;
646 } 647 }
647 648
648 // static 649 // static
649 void BookmarkChangeProcessor::UpdateTransactionVersion( 650 void BookmarkChangeProcessor::UpdateTransactionVersion(
(...skipping 20 matching lines...) Expand all
670 int index) { 671 int index) {
671 DCHECK(parent); 672 DCHECK(parent);
672 DCHECK(index >= 0 && index <= parent->child_count()); 673 DCHECK(index >= 0 && index <= parent->child_count());
673 674
674 const BookmarkNode* node; 675 const BookmarkNode* node;
675 if (sync_node->GetIsFolder()) { 676 if (sync_node->GetIsFolder()) {
676 node = model->AddFolder(parent, index, 677 node = model->AddFolder(parent, index,
677 UTF8ToUTF16(sync_node->GetTitle())); 678 UTF8ToUTF16(sync_node->GetTitle()));
678 } else { 679 } else {
679 // 'creation_time_us' was added in m24. Assume a time of 0 means now. 680 // 'creation_time_us' was added in m24. Assume a time of 0 means now.
680 const int64 create_time_internal = 681 const sync_pb::BookmarkSpecifics& specifics =
681 sync_node->GetBookmarkSpecifics().creation_time_us(); 682 sync_node->GetBookmarkSpecifics();
683 const int64 create_time_internal = specifics.creation_time_us();
682 base::Time create_time = (create_time_internal == 0) ? 684 base::Time create_time = (create_time_internal == 0) ?
683 base::Time::Now() : base::Time::FromInternalValue(create_time_internal); 685 base::Time::Now() : base::Time::FromInternalValue(create_time_internal);
684 node = model->AddURLWithCreationTime(parent, index, 686 node = model->AddURLWithCreationTime(parent, index,
685 UTF8ToUTF16(sync_node->GetTitle()), 687 UTF8ToUTF16(sync_node->GetTitle()),
686 sync_node->GetURL(), create_time); 688 GURL(specifics.url()), create_time);
687 if (node) 689 if (node)
688 SetBookmarkFavicon(sync_node, node, model); 690 SetBookmarkFavicon(sync_node, node, model);
689 } 691 }
690 return node; 692 return node;
691 } 693 }
692 694
693 // static 695 // static
694 // Sets the favicon of the given bookmark node from the given sync node. 696 // Sets the favicon of the given bookmark node from the given sync node.
695 bool BookmarkChangeProcessor::SetBookmarkFavicon( 697 bool BookmarkChangeProcessor::SetBookmarkFavicon(
696 syncer::BaseNode* sync_node, 698 syncer::BaseNode* sync_node,
697 const BookmarkNode* bookmark_node, 699 const BookmarkNode* bookmark_node,
698 BookmarkModel* bookmark_model) { 700 BookmarkModel* bookmark_model) {
699 std::vector<unsigned char> icon_bytes_vector; 701 const sync_pb::BookmarkSpecifics& specifics =
700 sync_node->GetFaviconBytes(&icon_bytes_vector); 702 sync_node->GetBookmarkSpecifics();
701 if (icon_bytes_vector.empty()) 703 const std::string& icon_str = specifics.favicon();
704 if (icon_str.empty())
702 return false; 705 return false;
703 706
707 scoped_refptr<base::RefCountedString> icon_bytes(
708 new base::RefCountedString());
709 icon_bytes->data().assign(icon_str);
710
704 ApplyBookmarkFavicon(bookmark_node, bookmark_model->profile(), 711 ApplyBookmarkFavicon(bookmark_node, bookmark_model->profile(),
705 icon_bytes_vector); 712 icon_bytes);
706 713
707 return true; 714 return true;
708 } 715 }
709 716
710 // static 717 // static
711 // Applies the given favicon bytes vector to the given bookmark node.
712 void BookmarkChangeProcessor::ApplyBookmarkFavicon( 718 void BookmarkChangeProcessor::ApplyBookmarkFavicon(
713 const BookmarkNode* bookmark_node, 719 const BookmarkNode* bookmark_node,
714 Profile* profile, 720 Profile* profile,
715 const std::vector<unsigned char>& icon_bytes_vector) { 721 scoped_refptr<base::RefCountedMemory> bitmap_data) {
716 HistoryService* history = 722 HistoryService* history =
717 HistoryServiceFactory::GetForProfile(profile, Profile::EXPLICIT_ACCESS); 723 HistoryServiceFactory::GetForProfile(profile, Profile::EXPLICIT_ACCESS);
718 FaviconService* favicon_service = 724 FaviconService* favicon_service =
719 FaviconServiceFactory::GetForProfile(profile, Profile::EXPLICIT_ACCESS); 725 FaviconServiceFactory::GetForProfile(profile, Profile::EXPLICIT_ACCESS);
720 726
721 history->AddPageNoVisitForBookmark(bookmark_node->url(), 727 history->AddPageNoVisitForBookmark(bookmark_node->url(),
722 bookmark_node->GetTitle()); 728 bookmark_node->GetTitle());
723 // The client may have cached the favicon at 2x. Use MergeFavicon() as not to 729 // The client may have cached the favicon at 2x. Use MergeFavicon() as not to
724 // overwrite the cached 2x favicon bitmap. Use the page URL as a fake icon URL 730 // overwrite the cached 2x favicon bitmap. Use the page URL as a fake icon URL
725 // as it is guaranteed to be unique. Sync favicons are always 731 // as it is guaranteed to be unique. Sync favicons are always
726 // gfx::kFaviconSize in width and height. Store the favicon into history as 732 // gfx::kFaviconSize in width and height. Store the favicon into history as
727 // such. 733 // such.
728 scoped_refptr<base::RefCountedMemory> bitmap_data(
729 new base::RefCountedBytes(icon_bytes_vector));
730 gfx::Size pixel_size(gfx::kFaviconSize, gfx::kFaviconSize); 734 gfx::Size pixel_size(gfx::kFaviconSize, gfx::kFaviconSize);
731 favicon_service->MergeFavicon(bookmark_node->url(), 735 favicon_service->MergeFavicon(bookmark_node->url(),
732 bookmark_node->url(), 736 bookmark_node->url(),
733 history::FAVICON, 737 history::FAVICON,
734 bitmap_data, 738 bitmap_data,
735 pixel_size); 739 pixel_size);
736 } 740 }
737 741
738 // static 742 // static
739 void BookmarkChangeProcessor::SetSyncNodeFavicon( 743 void BookmarkChangeProcessor::SetSyncNodeFavicon(
740 const BookmarkNode* bookmark_node, 744 const BookmarkNode* bookmark_node,
741 BookmarkModel* model, 745 BookmarkModel* model,
742 syncer::WriteNode* sync_node) { 746 syncer::WriteNode* sync_node) {
743 std::vector<unsigned char> favicon_bytes; 747 std::vector<unsigned char> favicon_bytes;
744 EncodeFavicon(bookmark_node, model, &favicon_bytes); 748 EncodeFavicon(bookmark_node, model, &favicon_bytes);
745 if (!favicon_bytes.empty()) 749 if (!favicon_bytes.empty()) {
746 sync_node->SetFaviconBytes(favicon_bytes); 750 sync_pb::BookmarkSpecifics updated_specifics(
751 sync_node->GetBookmarkSpecifics());
752 updated_specifics.set_favicon(&favicon_bytes[0], favicon_bytes.size());
753 sync_node->SetBookmarkSpecifics(updated_specifics);
754 }
747 } 755 }
748 756
749 } // namespace browser_sync 757 } // namespace browser_sync
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698