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

Side by Side Diff: components/sync_sessions/sessions_sync_manager.cc

Issue 2343463003: [Sync] Fix namespaces for the sync_sessions component. (Closed)
Patch Set: Fix gn. Created 4 years, 3 months 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
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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_sessions/sessions_sync_manager.h" 5 #include "components/sync_sessions/sessions_sync_manager.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/metrics/field_trial.h" 10 #include "base/metrics/field_trial.h"
(...skipping 10 matching lines...) Expand all
21 #include "components/sync_sessions/synced_window_delegate.h" 21 #include "components/sync_sessions/synced_window_delegate.h"
22 #include "components/sync_sessions/synced_window_delegates_getter.h" 22 #include "components/sync_sessions/synced_window_delegates_getter.h"
23 #include "components/variations/variations_associated_data.h" 23 #include "components/variations/variations_associated_data.h"
24 24
25 using sessions::SerializedNavigationEntry; 25 using sessions::SerializedNavigationEntry;
26 using sync_driver::DeviceInfo; 26 using sync_driver::DeviceInfo;
27 using sync_driver::LocalDeviceInfoProvider; 27 using sync_driver::LocalDeviceInfoProvider;
28 using syncer::SyncChange; 28 using syncer::SyncChange;
29 using syncer::SyncData; 29 using syncer::SyncData;
30 30
31 namespace browser_sync { 31 namespace sync_sessions {
32 32
33 namespace { 33 namespace {
34 34
35 // Maximum number of favicons to sync. 35 // Maximum number of favicons to sync.
36 // TODO(zea): pull this from the server. 36 // TODO(zea): pull this from the server.
37 const int kMaxSyncFavicons = 200; 37 const int kMaxSyncFavicons = 200;
38 38
39 // The maximum number of navigations in each direction we care to sync. 39 // The maximum number of navigations in each direction we care to sync.
40 const int kMaxSyncNavigationCount = 6; 40 const int kMaxSyncNavigationCount = 6;
41 41
42 // The URL at which the set of synced tabs is displayed. We treat it differently 42 // The URL at which the set of synced tabs is displayed. We treat it differently
43 // from all other URL's as accessing it triggers a sync refresh of Sessions. 43 // from all other URL's as accessing it triggers a sync refresh of Sessions.
44 const char kNTPOpenTabSyncURL[] = "chrome://newtab/#open_tabs"; 44 const char kNTPOpenTabSyncURL[] = "chrome://newtab/#open_tabs";
45 45
46 // Default number of days without activity after which a session is considered 46 // Default number of days without activity after which a session is considered
47 // stale and becomes a candidate for garbage collection. 47 // stale and becomes a candidate for garbage collection.
48 const int kDefaultStaleSessionThresholdDays = 14; // 2 weeks. 48 const int kDefaultStaleSessionThresholdDays = 14; // 2 weeks.
49 49
50 // Comparator function for use with std::sort that will sort tabs by 50 // Comparator function for use with std::sort that will sort tabs by
51 // descending timestamp (i.e., most recent first). 51 // descending timestamp (i.e., most recent first).
52 bool TabsRecencyComparator(const sessions::SessionTab* t1, 52 bool TabsRecencyComparator(const sessions::SessionTab* t1,
53 const sessions::SessionTab* t2) { 53 const sessions::SessionTab* t2) {
54 return t1->timestamp > t2->timestamp; 54 return t1->timestamp > t2->timestamp;
55 } 55 }
56 56
57 // Comparator function for use with std::sort that will sort sessions by 57 // Comparator function for use with std::sort that will sort sessions by
58 // descending modified_time (i.e., most recent first). 58 // descending modified_time (i.e., most recent first).
59 bool SessionsRecencyComparator(const sync_driver::SyncedSession* s1, 59 bool SessionsRecencyComparator(const SyncedSession* s1,
60 const sync_driver::SyncedSession* s2) { 60 const SyncedSession* s2) {
61 return s1->modified_time > s2->modified_time; 61 return s1->modified_time > s2->modified_time;
62 } 62 }
63 63
64 std::string TagFromSpecifics(const sync_pb::SessionSpecifics& specifics) { 64 std::string TagFromSpecifics(const sync_pb::SessionSpecifics& specifics) {
65 if (specifics.has_header()) { 65 if (specifics.has_header()) {
66 return specifics.session_tag(); 66 return specifics.session_tag();
67 } else if (specifics.has_tab()) { 67 } else if (specifics.has_tab()) {
68 return TabNodePool::TabIdToTag(specifics.session_tag(), 68 return TabNodePool::TabIdToTag(specifics.session_tag(),
69 specifics.tab_node_id()); 69 specifics.tab_node_id());
70 } else { 70 } else {
71 return std::string(); 71 return std::string();
72 } 72 }
73 } 73 }
74 74
75 } // namespace 75 } // namespace
76 76
77 // |local_device| is owned by ProfileSyncService, its lifetime exceeds 77 // |local_device| is owned by ProfileSyncService, its lifetime exceeds
78 // lifetime of SessionSyncManager. 78 // lifetime of SessionSyncManager.
79 SessionsSyncManager::SessionsSyncManager( 79 SessionsSyncManager::SessionsSyncManager(
80 sync_sessions::SyncSessionsClient* sessions_client, 80 SyncSessionsClient* sessions_client,
81 sync_driver::SyncPrefs* sync_prefs, 81 sync_driver::SyncPrefs* sync_prefs,
82 LocalDeviceInfoProvider* local_device, 82 LocalDeviceInfoProvider* local_device,
83 std::unique_ptr<LocalSessionEventRouter> router, 83 std::unique_ptr<LocalSessionEventRouter> router,
84 const base::Closure& sessions_updated_callback, 84 const base::Closure& sessions_updated_callback,
85 const base::Closure& datatype_refresh_callback) 85 const base::Closure& datatype_refresh_callback)
86 : sessions_client_(sessions_client), 86 : sessions_client_(sessions_client),
87 session_tracker_(sessions_client), 87 session_tracker_(sessions_client),
88 favicon_cache_(sessions_client->GetFaviconService(), 88 favicon_cache_(sessions_client->GetFaviconService(),
89 sessions_client->GetHistoryService(), 89 sessions_client->GetHistoryService(),
90 kMaxSyncFavicons), 90 kMaxSyncFavicons),
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
180 } 180 }
181 181
182 void SessionsSyncManager::AssociateWindows( 182 void SessionsSyncManager::AssociateWindows(
183 ReloadTabsOption option, 183 ReloadTabsOption option,
184 const syncer::SyncDataList& restored_tabs, 184 const syncer::SyncDataList& restored_tabs,
185 syncer::SyncChangeList* change_output) { 185 syncer::SyncChangeList* change_output) {
186 const std::string local_tag = current_machine_tag(); 186 const std::string local_tag = current_machine_tag();
187 sync_pb::SessionSpecifics specifics; 187 sync_pb::SessionSpecifics specifics;
188 specifics.set_session_tag(local_tag); 188 specifics.set_session_tag(local_tag);
189 sync_pb::SessionHeader* header_s = specifics.mutable_header(); 189 sync_pb::SessionHeader* header_s = specifics.mutable_header();
190 sync_driver::SyncedSession* current_session = 190 SyncedSession* current_session = session_tracker_.GetSession(local_tag);
191 session_tracker_.GetSession(local_tag);
192 current_session->modified_time = base::Time::Now(); 191 current_session->modified_time = base::Time::Now();
193 header_s->set_client_name(current_session_name_); 192 header_s->set_client_name(current_session_name_);
194 // SessionDataTypeController ensures that the local device info 193 // SessionDataTypeController ensures that the local device info
195 // is available before activating this datatype. 194 // is available before activating this datatype.
196 DCHECK(local_device_); 195 DCHECK(local_device_);
197 const DeviceInfo* local_device_info = local_device_->GetLocalDeviceInfo(); 196 const DeviceInfo* local_device_info = local_device_->GetLocalDeviceInfo();
198 header_s->set_device_type(local_device_info->device_type()); 197 header_s->set_device_type(local_device_info->device_type());
199 198
200 session_tracker_.ResetSessionTracking(local_tag); 199 session_tracker_.ResetSessionTracking(local_tag);
201 std::set<const SyncedWindowDelegate*> windows = 200 std::set<const SyncedWindowDelegate*> windows =
(...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after
443 local_tab_map_.clear(); 442 local_tab_map_.clear();
444 local_tab_pool_.Clear(); 443 local_tab_pool_.Clear();
445 current_machine_tag_.clear(); 444 current_machine_tag_.clear();
446 current_session_name_.clear(); 445 current_session_name_.clear();
447 local_session_header_node_id_ = TabNodePool::kInvalidTabNodeID; 446 local_session_header_node_id_ = TabNodePool::kInvalidTabNodeID;
448 } 447 }
449 448
450 syncer::SyncDataList SessionsSyncManager::GetAllSyncData( 449 syncer::SyncDataList SessionsSyncManager::GetAllSyncData(
451 syncer::ModelType type) const { 450 syncer::ModelType type) const {
452 syncer::SyncDataList list; 451 syncer::SyncDataList list;
453 const sync_driver::SyncedSession* session = NULL; 452 const SyncedSession* session = NULL;
454 if (!session_tracker_.LookupLocalSession(&session)) 453 if (!session_tracker_.LookupLocalSession(&session))
455 return syncer::SyncDataList(); 454 return syncer::SyncDataList();
456 455
457 // First construct the header node. 456 // First construct the header node.
458 sync_pb::EntitySpecifics header_entity; 457 sync_pb::EntitySpecifics header_entity;
459 header_entity.mutable_session()->set_session_tag(current_machine_tag()); 458 header_entity.mutable_session()->set_session_tag(current_machine_tag());
460 sync_pb::SessionHeader* header_specifics = 459 sync_pb::SessionHeader* header_specifics =
461 header_entity.mutable_session()->mutable_header(); 460 header_entity.mutable_session()->mutable_header();
462 header_specifics->MergeFrom(session->ToSessionHeader()); 461 header_specifics->MergeFrom(session->ToSessionHeader());
463 syncer::SyncData data = syncer::SyncData::CreateLocalData( 462 syncer::SyncData data = syncer::SyncData::CreateLocalData(
464 current_machine_tag(), current_session_name_, header_entity); 463 current_machine_tag(), current_session_name_, header_entity);
465 list.push_back(data); 464 list.push_back(data);
466 465
467 sync_driver::SyncedSession::SyncedWindowMap::const_iterator win_iter; 466 SyncedSession::SyncedWindowMap::const_iterator win_iter;
468 for (win_iter = session->windows.begin(); win_iter != session->windows.end(); 467 for (win_iter = session->windows.begin(); win_iter != session->windows.end();
469 ++win_iter) { 468 ++win_iter) {
470 std::vector<sessions::SessionTab*>::const_iterator tabs_iter; 469 std::vector<sessions::SessionTab*>::const_iterator tabs_iter;
471 for (tabs_iter = win_iter->second->tabs.begin(); 470 for (tabs_iter = win_iter->second->tabs.begin();
472 tabs_iter != win_iter->second->tabs.end(); ++tabs_iter) { 471 tabs_iter != win_iter->second->tabs.end(); ++tabs_iter) {
473 sync_pb::EntitySpecifics entity; 472 sync_pb::EntitySpecifics entity;
474 sync_pb::SessionSpecifics* specifics = entity.mutable_session(); 473 sync_pb::SessionSpecifics* specifics = entity.mutable_session();
475 specifics->mutable_tab()->MergeFrom((*tabs_iter)->ToSyncData()); 474 specifics->mutable_tab()->MergeFrom((*tabs_iter)->ToSyncData());
476 specifics->set_session_tag(current_machine_tag_); 475 specifics->set_session_tag(current_machine_tag_);
477 476
478 TabLinksMap::const_iterator tab_map_iter = 477 TabLinksMap::const_iterator tab_map_iter =
479 local_tab_map_.find((*tabs_iter)->tab_id.id()); 478 local_tab_map_.find((*tabs_iter)->tab_id.id());
480 DCHECK(tab_map_iter != local_tab_map_.end()); 479 DCHECK(tab_map_iter != local_tab_map_.end());
481 specifics->set_tab_node_id(tab_map_iter->second->tab_node_id()); 480 specifics->set_tab_node_id(tab_map_iter->second->tab_node_id());
482 syncer::SyncData data = syncer::SyncData::CreateLocalData( 481 syncer::SyncData data = syncer::SyncData::CreateLocalData(
483 TabNodePool::TabIdToTag(current_machine_tag_, 482 TabNodePool::TabIdToTag(current_machine_tag_,
484 specifics->tab_node_id()), 483 specifics->tab_node_id()),
485 current_session_name_, entity); 484 current_session_name_, entity);
486 list.push_back(data); 485 list.push_back(data);
487 } 486 }
488 } 487 }
489 return list; 488 return list;
490 } 489 }
491 490
492 bool SessionsSyncManager::GetLocalSession( 491 bool SessionsSyncManager::GetLocalSession(const SyncedSession** local_session) {
493 const sync_driver::SyncedSession** local_session) {
494 if (current_machine_tag_.empty()) 492 if (current_machine_tag_.empty())
495 return false; 493 return false;
496 *local_session = session_tracker_.GetSession(current_machine_tag()); 494 *local_session = session_tracker_.GetSession(current_machine_tag());
497 return true; 495 return true;
498 } 496 }
499 497
500 syncer::SyncError SessionsSyncManager::ProcessSyncChanges( 498 syncer::SyncError SessionsSyncManager::ProcessSyncChanges(
501 const tracked_objects::Location& from_here, 499 const tracked_objects::Location& from_here,
502 const syncer::SyncChangeList& change_list) { 500 const syncer::SyncChangeList& change_list) {
503 if (!sync_processor_.get()) { 501 if (!sync_processor_.get()) {
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
572 } else { 570 } else {
573 return syncer::SyncChange( 571 return syncer::SyncChange(
574 FROM_HERE, SyncChange::ACTION_DELETE, 572 FROM_HERE, SyncChange::ACTION_DELETE,
575 SyncData::CreateLocalDelete( 573 SyncData::CreateLocalDelete(
576 TabNodePool::TabIdToTag(current_machine_tag(), tab.tab_node_id()), 574 TabNodePool::TabIdToTag(current_machine_tag(), tab.tab_node_id()),
577 syncer::SESSIONS)); 575 syncer::SESSIONS));
578 } 576 }
579 } 577 }
580 578
581 bool SessionsSyncManager::GetAllForeignSessions( 579 bool SessionsSyncManager::GetAllForeignSessions(
582 std::vector<const sync_driver::SyncedSession*>* sessions) { 580 std::vector<const SyncedSession*>* sessions) {
583 if (!session_tracker_.LookupAllForeignSessions( 581 if (!session_tracker_.LookupAllForeignSessions(
584 sessions, SyncedSessionTracker::PRESENTABLE)) 582 sessions, SyncedSessionTracker::PRESENTABLE))
585 return false; 583 return false;
586 std::sort(sessions->begin(), sessions->end(), SessionsRecencyComparator); 584 std::sort(sessions->begin(), sessions->end(), SessionsRecencyComparator);
587 return true; 585 return true;
588 } 586 }
589 587
590 bool SessionsSyncManager::InitFromSyncModel( 588 bool SessionsSyncManager::InitFromSyncModel(
591 const syncer::SyncDataList& sync_data, 589 const syncer::SyncDataList& sync_data,
592 syncer::SyncDataList* restored_tabs, 590 syncer::SyncDataList* restored_tabs,
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
638 // reused for reassociation. 636 // reused for reassociation.
639 local_tab_pool_.AddTabNode(specifics.tab_node_id()); 637 local_tab_pool_.AddTabNode(specifics.tab_node_id());
640 restored_tabs->push_back(*it); 638 restored_tabs->push_back(*it);
641 } 639 }
642 } 640 }
643 } 641 }
644 } 642 }
645 643
646 // Cleanup all foreign sessions, since orphaned tabs may have been added after 644 // Cleanup all foreign sessions, since orphaned tabs may have been added after
647 // the header. 645 // the header.
648 std::vector<const sync_driver::SyncedSession*> sessions; 646 std::vector<const SyncedSession*> sessions;
649 session_tracker_.LookupAllForeignSessions(&sessions, 647 session_tracker_.LookupAllForeignSessions(&sessions,
650 SyncedSessionTracker::RAW); 648 SyncedSessionTracker::RAW);
651 for (const auto* session : sessions) { 649 for (const auto* session : sessions) {
652 session_tracker_.CleanupSession(session->session_tag); 650 session_tracker_.CleanupSession(session->session_tag);
653 } 651 }
654 652
655 UMA_HISTOGRAM_COUNTS_100("Sync.SessionsBadForeignHashOnMergeCount", 653 UMA_HISTOGRAM_COUNTS_100("Sync.SessionsBadForeignHashOnMergeCount",
656 bad_foreign_hash_count); 654 bad_foreign_hash_count);
657 655
658 return found_current_header; 656 return found_current_header;
659 } 657 }
660 658
661 void SessionsSyncManager::UpdateTrackerWithForeignSession( 659 void SessionsSyncManager::UpdateTrackerWithForeignSession(
662 const sync_pb::SessionSpecifics& specifics, 660 const sync_pb::SessionSpecifics& specifics,
663 const base::Time& modification_time) { 661 const base::Time& modification_time) {
664 std::string foreign_session_tag = specifics.session_tag(); 662 std::string foreign_session_tag = specifics.session_tag();
665 DCHECK_NE(foreign_session_tag, current_machine_tag()); 663 DCHECK_NE(foreign_session_tag, current_machine_tag());
666 664
667 sync_driver::SyncedSession* foreign_session = 665 SyncedSession* foreign_session =
668 session_tracker_.GetSession(foreign_session_tag); 666 session_tracker_.GetSession(foreign_session_tag);
669 if (specifics.has_header()) { 667 if (specifics.has_header()) {
670 // Read in the header data for this foreign session. Header data is 668 // Read in the header data for this foreign session. Header data is
671 // essentially a collection of windows, each of which has an ordered id list 669 // essentially a collection of windows, each of which has an ordered id list
672 // for their tabs. 670 // for their tabs.
673 671
674 if (!IsValidSessionHeader(specifics.header())) { 672 if (!IsValidSessionHeader(specifics.header())) {
675 LOG(WARNING) << "Ignoring foreign session node with invalid header " 673 LOG(WARNING) << "Ignoring foreign session node with invalid header "
676 << "and tag " << foreign_session_tag << "."; 674 << "and tag " << foreign_session_tag << ".";
677 return; 675 return;
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
754 sync_prefs_->SetSyncSessionsGUID(current_machine_tag_); 752 sync_prefs_->SetSyncSessionsGUID(current_machine_tag_);
755 } 753 }
756 754
757 local_tab_pool_.SetMachineTag(current_machine_tag_); 755 local_tab_pool_.SetMachineTag(current_machine_tag_);
758 } 756 }
759 757
760 // static 758 // static
761 void SessionsSyncManager::PopulateSessionHeaderFromSpecifics( 759 void SessionsSyncManager::PopulateSessionHeaderFromSpecifics(
762 const sync_pb::SessionHeader& header_specifics, 760 const sync_pb::SessionHeader& header_specifics,
763 base::Time mtime, 761 base::Time mtime,
764 sync_driver::SyncedSession* session_header) { 762 SyncedSession* session_header) {
765 if (header_specifics.has_client_name()) 763 if (header_specifics.has_client_name())
766 session_header->session_name = header_specifics.client_name(); 764 session_header->session_name = header_specifics.client_name();
767 if (header_specifics.has_device_type()) { 765 if (header_specifics.has_device_type()) {
768 switch (header_specifics.device_type()) { 766 switch (header_specifics.device_type()) {
769 case sync_pb::SyncEnums_DeviceType_TYPE_WIN: 767 case sync_pb::SyncEnums_DeviceType_TYPE_WIN:
770 session_header->device_type = sync_driver::SyncedSession::TYPE_WIN; 768 session_header->device_type = SyncedSession::TYPE_WIN;
771 break; 769 break;
772 case sync_pb::SyncEnums_DeviceType_TYPE_MAC: 770 case sync_pb::SyncEnums_DeviceType_TYPE_MAC:
773 session_header->device_type = sync_driver::SyncedSession::TYPE_MACOSX; 771 session_header->device_type = SyncedSession::TYPE_MACOSX;
774 break; 772 break;
775 case sync_pb::SyncEnums_DeviceType_TYPE_LINUX: 773 case sync_pb::SyncEnums_DeviceType_TYPE_LINUX:
776 session_header->device_type = sync_driver::SyncedSession::TYPE_LINUX; 774 session_header->device_type = SyncedSession::TYPE_LINUX;
777 break; 775 break;
778 case sync_pb::SyncEnums_DeviceType_TYPE_CROS: 776 case sync_pb::SyncEnums_DeviceType_TYPE_CROS:
779 session_header->device_type = sync_driver::SyncedSession::TYPE_CHROMEOS; 777 session_header->device_type = SyncedSession::TYPE_CHROMEOS;
780 break; 778 break;
781 case sync_pb::SyncEnums_DeviceType_TYPE_PHONE: 779 case sync_pb::SyncEnums_DeviceType_TYPE_PHONE:
782 session_header->device_type = sync_driver::SyncedSession::TYPE_PHONE; 780 session_header->device_type = SyncedSession::TYPE_PHONE;
783 break; 781 break;
784 case sync_pb::SyncEnums_DeviceType_TYPE_TABLET: 782 case sync_pb::SyncEnums_DeviceType_TYPE_TABLET:
785 session_header->device_type = sync_driver::SyncedSession::TYPE_TABLET; 783 session_header->device_type = SyncedSession::TYPE_TABLET;
786 break; 784 break;
787 case sync_pb::SyncEnums_DeviceType_TYPE_OTHER: 785 case sync_pb::SyncEnums_DeviceType_TYPE_OTHER:
788 // Intentionally fall-through 786 // Intentionally fall-through
789 default: 787 default:
790 session_header->device_type = sync_driver::SyncedSession::TYPE_OTHER; 788 session_header->device_type = SyncedSession::TYPE_OTHER;
791 break; 789 break;
792 } 790 }
793 } 791 }
794 session_header->modified_time = 792 session_header->modified_time =
795 std::max(mtime, session_header->modified_time); 793 std::max(mtime, session_header->modified_time);
796 } 794 }
797 795
798 // static 796 // static
799 void SessionsSyncManager::BuildSyncedSessionFromSpecifics( 797 void SessionsSyncManager::BuildSyncedSessionFromSpecifics(
800 const std::string& session_tag, 798 const std::string& session_tag,
(...skipping 269 matching lines...) Expand 10 before | Expand all | Expand 10 after
1070 FaviconCache* SessionsSyncManager::GetFaviconCache() { 1068 FaviconCache* SessionsSyncManager::GetFaviconCache() {
1071 return &favicon_cache_; 1069 return &favicon_cache_;
1072 } 1070 }
1073 1071
1074 SyncedWindowDelegatesGetter* 1072 SyncedWindowDelegatesGetter*
1075 SessionsSyncManager::synced_window_delegates_getter() const { 1073 SessionsSyncManager::synced_window_delegates_getter() const {
1076 return sessions_client_->GetSyncedWindowDelegatesGetter(); 1074 return sessions_client_->GetSyncedWindowDelegatesGetter();
1077 } 1075 }
1078 1076
1079 void SessionsSyncManager::DoGarbageCollection() { 1077 void SessionsSyncManager::DoGarbageCollection() {
1080 std::vector<const sync_driver::SyncedSession*> sessions; 1078 std::vector<const SyncedSession*> sessions;
1081 if (!session_tracker_.LookupAllForeignSessions(&sessions, 1079 if (!session_tracker_.LookupAllForeignSessions(&sessions,
1082 SyncedSessionTracker::RAW)) 1080 SyncedSessionTracker::RAW))
1083 return; // No foreign sessions. 1081 return; // No foreign sessions.
1084 1082
1085 // Iterate through all the sessions and delete any with age older than 1083 // Iterate through all the sessions and delete any with age older than
1086 // |stale_session_threshold_days_|. 1084 // |stale_session_threshold_days_|.
1087 syncer::SyncChangeList changes; 1085 syncer::SyncChangeList changes;
1088 for (const auto* session : sessions) { 1086 for (const auto* session : sessions) {
1089 int session_age_in_days = 1087 int session_age_in_days =
1090 (base::Time::Now() - session->modified_time).InDays(); 1088 (base::Time::Now() - session->modified_time).InDays();
1091 if (session_age_in_days > stale_session_threshold_days_) { 1089 if (session_age_in_days > stale_session_threshold_days_) {
1092 std::string session_tag = session->session_tag; 1090 std::string session_tag = session->session_tag;
1093 DVLOG(1) << "Found stale session " << session_tag << " with age " 1091 DVLOG(1) << "Found stale session " << session_tag << " with age "
1094 << session_age_in_days << ", deleting."; 1092 << session_age_in_days << ", deleting.";
1095 DeleteForeignSessionInternal(session_tag, &changes); 1093 DeleteForeignSessionInternal(session_tag, &changes);
1096 } 1094 }
1097 } 1095 }
1098 1096
1099 if (!changes.empty()) 1097 if (!changes.empty())
1100 sync_processor_->ProcessSyncChanges(FROM_HERE, changes); 1098 sync_processor_->ProcessSyncChanges(FROM_HERE, changes);
1101 } 1099 }
1102 1100
1103 // static 1101 // static
1104 std::string SessionsSyncManager::TagHashFromSpecifics( 1102 std::string SessionsSyncManager::TagHashFromSpecifics(
1105 const sync_pb::SessionSpecifics& specifics) { 1103 const sync_pb::SessionSpecifics& specifics) {
1106 return syncer::syncable::GenerateSyncableHash(syncer::SESSIONS, 1104 return syncer::syncable::GenerateSyncableHash(syncer::SESSIONS,
1107 TagFromSpecifics(specifics)); 1105 TagFromSpecifics(specifics));
1108 } 1106 }
1109 1107
1110 }; // namespace browser_sync 1108 }; // namespace sync_sessions
OLDNEW
« no previous file with comments | « components/sync_sessions/sessions_sync_manager.h ('k') | components/sync_sessions/sync_sessions_client.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698