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( |