Index: components/sync_sessions/sessions_sync_manager.cc |
diff --git a/components/sync_sessions/sessions_sync_manager.cc b/components/sync_sessions/sessions_sync_manager.cc |
index d61d75591b9a75f8bf94956cfdbe0bec00c1797b..e4491281d7b4834f4336d54d59d384387791918b 100644 |
--- a/components/sync_sessions/sessions_sync_manager.cc |
+++ b/components/sync_sessions/sessions_sync_manager.cc |
@@ -389,8 +389,10 @@ void SessionsSyncManager::AssociateTab(SyncedTabDelegate* const tab_delegate, |
if (session_tab->navigations.size() > static_cast<size_t>(old_index)) |
old_url = session_tab->navigations[old_index].virtual_url(); |
+ TabTasks* tab_tasks = task_tracker_.GetTabTasks(tab_id); |
// Update the tracker's session representation. |
- SetSessionTabFromDelegate(*tab_delegate, base::Time::Now(), session_tab); |
+ SetSessionTabFromDelegate(*tab_delegate, base::Time::Now(), session_tab, |
+ tab_tasks); |
SetVariationIds(session_tab); |
session_tracker_.GetSession(current_machine_tag())->modified_time = |
base::Time::Now(); |
@@ -1034,7 +1036,8 @@ void SessionsSyncManager::AssociateRestoredPlaceholderTab( |
void SessionsSyncManager::SetSessionTabFromDelegate( |
const SyncedTabDelegate& tab_delegate, |
base::Time mtime, |
- sessions::SessionTab* session_tab) { |
+ sessions::SessionTab* session_tab, |
+ TabTasks* tab_tasks) { |
DCHECK(session_tab); |
session_tab->window_id.set_id(tab_delegate.GetWindowId()); |
session_tab->tab_id.set_id(tab_delegate.GetSessionId()); |
@@ -1055,6 +1058,14 @@ void SessionsSyncManager::SetSessionTabFromDelegate( |
bool is_supervised = tab_delegate.ProfileIsSupervised(); |
session_tab->navigations.clear(); |
+ if (tab_tasks != nullptr) |
+ tab_tasks->UpdateTask(current_index, |
+ tab_delegate.GetTransitionAtIndex(current_index), |
+ mtime.ToTimeT()); |
+ |
+ DVLOG(0) << "current_index: " << current_index << " of " |
+ << tab_delegate.GetEntryCount(); |
+ |
for (int i = min_index; i < max_index; ++i) { |
if (!tab_delegate.GetVirtualURLAtIndex(i).is_valid()) |
continue; |
@@ -1065,6 +1076,9 @@ void SessionsSyncManager::SetSessionTabFromDelegate( |
if (i == current_index) |
session_tab->current_navigation_index = session_tab->navigations.size(); |
+ if (tab_tasks != nullptr && i < tab_tasks->GetNavigationsNum()) |
+ serialized_entry.set_task_id(tab_tasks->GetTaskIdAtNav(i)); |
+ |
session_tab->navigations.push_back(serialized_entry); |
if (is_supervised) { |
session_tab->navigations.back().set_blocked_state( |