Chromium Code Reviews| 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..9796d4079906503ca31b35d2c866290fa177a275 100644 |
| --- a/components/sync_sessions/sessions_sync_manager.cc |
| +++ b/components/sync_sessions/sessions_sync_manager.cc |
| @@ -121,7 +121,8 @@ SessionsSyncManager::SessionsSyncManager( |
| LocalDeviceInfoProvider* local_device, |
| std::unique_ptr<LocalSessionEventRouter> router, |
| const base::Closure& sessions_updated_callback, |
| - const base::Closure& datatype_refresh_callback) |
| + const base::Closure& datatype_refresh_callback, |
| + std::unique_ptr<base::Clock> clock) |
| : sessions_client_(sessions_client), |
| session_tracker_(sessions_client), |
| favicon_cache_(sessions_client->GetFaviconService(), |
| @@ -136,7 +137,8 @@ SessionsSyncManager::SessionsSyncManager( |
| local_event_router_(std::move(router)), |
| page_revisit_broadcaster_(this, sessions_client), |
| sessions_updated_callback_(sessions_updated_callback), |
| - datatype_refresh_callback_(datatype_refresh_callback) {} |
| + datatype_refresh_callback_(datatype_refresh_callback), |
| + task_tracker_(base::MakeUnique<TaskTracker>(std::move(clock))) {} |
| SessionsSyncManager::~SessionsSyncManager() {} |
| @@ -389,8 +391,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 +1038,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 +1060,13 @@ void SessionsSyncManager::SetSessionTabFromDelegate( |
| bool is_supervised = tab_delegate.ProfileIsSupervised(); |
| session_tab->navigations.clear(); |
| + if (tab_tasks != nullptr) |
| + tab_tasks->UpdateTask(current_index, |
|
Nicolas Zea
2017/03/27 20:43:52
nit: curly braces around multi-line if
shenchao
2017/04/06 00:54:55
Done.
|
| + tab_delegate.GetTransitionAtIndex(current_index)); |
| + |
| + DVLOG(0) << "current_index: " << current_index << " of " |
|
Nicolas Zea
2017/03/27 20:43:52
Did you mean to leave this?
shenchao
2017/04/06 00:54:55
Done.
|
| + << tab_delegate.GetEntryCount(); |
| + |
| for (int i = min_index; i < max_index; ++i) { |
| if (!tab_delegate.GetVirtualURLAtIndex(i).is_valid()) |
| continue; |
| @@ -1065,6 +1077,9 @@ void SessionsSyncManager::SetSessionTabFromDelegate( |
| if (i == current_index) |
| session_tab->current_navigation_index = session_tab->navigations.size(); |
| + if (tab_tasks != nullptr && i < tab_tasks->GetNavigationsCount()) |
| + serialized_entry.set_task_id(tab_tasks->GetTaskIdAtNavIndex(i)); |
| + |
| session_tab->navigations.push_back(serialized_entry); |
| if (is_supervised) { |
| session_tab->navigations.back().set_blocked_state( |