| Index: components/sync_sessions/task_tracker.cc
|
| diff --git a/components/sync_sessions/task_tracker.cc b/components/sync_sessions/task_tracker.cc
|
| index 533c52747e4ab9586251ac7f7f3e720153795ff7..0f8902e2905383a98113746e138927b4909e1d7c 100644
|
| --- a/components/sync_sessions/task_tracker.cc
|
| +++ b/components/sync_sessions/task_tracker.cc
|
| @@ -17,18 +17,6 @@
|
|
|
| TabTasks::TabTasks() {}
|
|
|
| -TabTasks::TabTasks(const TabTasks* source_tab) {
|
| - if (source_tab->current_navigation_index_ >= 0) {
|
| - std::vector<int64_t> source_tab_task_ids =
|
| - source_tab->GetTaskIdsForNavigation(
|
| - source_tab->current_navigation_index_);
|
| - for (auto source_tab_task_id : source_tab_task_ids)
|
| - task_ids_.push_back({0, source_tab_task_id});
|
| -
|
| - source_tab_task_num_ = source_tab_task_ids.size();
|
| - }
|
| -}
|
| -
|
| TabTasks::~TabTasks() {}
|
|
|
| std::vector<int64_t> TabTasks::GetTaskIdsForNavigation(
|
| @@ -38,8 +26,7 @@
|
|
|
| std::vector<int64_t> root_to_self_task_ids;
|
| // Position of the navigation in task_ids_ vector.
|
| - int navigation_position =
|
| - GetTaskIdPositionFromNavigationIndex(navigation_index);
|
| + int navigation_position = navigation_index - excluded_navigation_num_;
|
|
|
| // If navigation_index is an excluded ancestor task, returns empty.
|
| if (navigation_position < 0)
|
| @@ -66,7 +53,7 @@
|
| }
|
|
|
| int TabTasks::GetNavigationsCount() const {
|
| - return GetNavigationIndexFromTaskIdPosition(task_ids_.size());
|
| + return excluded_navigation_num_ + task_ids_.size();
|
| }
|
|
|
| void TabTasks::UpdateWithNavigation(int navigation_index,
|
| @@ -91,26 +78,25 @@
|
| }
|
|
|
| // A new task for the new navigation.
|
| - int root_navigation_index = source_tab_task_num_ + navigation_index;
|
| - if (ui::PageTransitionCoreTypeIs(transition, ui::PAGE_TRANSITION_LINK) ||
|
| - ui::PageTransitionCoreTypeIs(transition,
|
| - ui::PAGE_TRANSITION_AUTO_SUBFRAME) ||
|
| - ui::PageTransitionCoreTypeIs(transition,
|
| - ui::PAGE_TRANSITION_MANUAL_SUBFRAME) ||
|
| - ui::PageTransitionCoreTypeIs(transition,
|
| - ui::PAGE_TRANSITION_FORM_SUBMIT) ||
|
| - transition & ui::PAGE_TRANSITION_IS_REDIRECT_MASK) {
|
| - // Creating a sub-task with navigation at current_navigation_index_ as
|
| - // parent. If current_navigation_index_ == -1, the parent is the last task
|
| - // from source tab.
|
| + int root_navigation_index = navigation_index;
|
| + if (current_navigation_index_ != -1 &&
|
| + (ui::PageTransitionCoreTypeIs(transition, ui::PAGE_TRANSITION_LINK) ||
|
| + ui::PageTransitionCoreTypeIs(transition,
|
| + ui::PAGE_TRANSITION_AUTO_SUBFRAME) ||
|
| + ui::PageTransitionCoreTypeIs(transition,
|
| + ui::PAGE_TRANSITION_MANUAL_SUBFRAME) ||
|
| + ui::PageTransitionCoreTypeIs(transition,
|
| + ui::PAGE_TRANSITION_FORM_SUBMIT) ||
|
| + transition & ui::PAGE_TRANSITION_IS_REDIRECT_MASK)) {
|
| + // Creating a sub-task with navigation at current_navigation_index as
|
| + // parent.
|
| DVLOG(1) << "Creating a sub-task with navigation_index: "
|
| << navigation_index << " of transition: " << transition
|
| << " under navigation_index: " << current_navigation_index_;
|
| - // Position of current_navigation_index_ in task_id_
|
| + // Position in task_id_.
|
| int current_navigation_position =
|
| - GetTaskIdPositionFromNavigationIndex(current_navigation_index_);
|
| - // If current task, which is parent task of navigation_index, is excluded,
|
| - // consider the new task as a root task.
|
| + current_navigation_index_ - excluded_navigation_num_;
|
| + // If current/parent task is excluded, consider the new task as a root task.
|
| if (current_navigation_position >= 0) {
|
| CHECK_LT(current_navigation_position,
|
| base::checked_cast<int>(task_ids_.size()));
|
| @@ -129,23 +115,22 @@
|
| }
|
|
|
| // In most cases navigation_index == excluded_navigation_num_ +
|
| - // task_ids_.size() - source_tab_task_num_ if the previous navigation is end
|
| - // of chain, or navigation_index < excluded_navigation_num_ + task_ids_.size()
|
| - // otherwise. In few case navigation_index > excluded_navigation_num_ +
|
| - // task_ids_.size(), we fill task_ids_ with invalid contents. A known case is
|
| - // the first navigation after newtab.
|
| - for (int i = GetNavigationIndexFromTaskIdPosition(task_ids_.size());
|
| + // task_ids_.size() if the previous navigation is end of chain, or
|
| + // navigation_index < excluded_navigation_num_ + task_ids_.size() otherwise.
|
| + // In few case navigation_index > excluded_navigation_num_ + task_ids_.size(),
|
| + // we fill task_ids_ with invalid contents. A known case is the first
|
| + // navigation after newtab.
|
| + for (int i = task_ids_.size() + excluded_navigation_num_;
|
| i < navigation_index; i++) {
|
| task_ids_.push_back({-1, -1});
|
| }
|
|
|
| - int new_task_id_position =
|
| - GetTaskIdPositionFromNavigationIndex(navigation_index);
|
| // Erase all task ids associated with an outdated forward navigation stack.
|
| - if (new_task_id_position > 0) {
|
| + if (navigation_index > excluded_navigation_num_) {
|
| + int new_task_id_position = navigation_index - excluded_navigation_num_;
|
| task_ids_.erase(task_ids_.begin() + new_task_id_position, task_ids_.end());
|
| } else {
|
| - excluded_navigation_num_ = navigation_index + source_tab_task_num_;
|
| + excluded_navigation_num_ = navigation_index;
|
| // new task id position is 0
|
| task_ids_.clear();
|
| }
|
| @@ -167,14 +152,6 @@
|
| return;
|
| }
|
|
|
| -int TabTasks::GetTaskIdPositionFromNavigationIndex(int navigation_index) const {
|
| - return source_tab_task_num_ + navigation_index - excluded_navigation_num_;
|
| -}
|
| -
|
| -int TabTasks::GetNavigationIndexFromTaskIdPosition(int task_id_position) const {
|
| - return excluded_navigation_num_ + task_id_position - source_tab_task_num_;
|
| -}
|
| -
|
| TaskTracker::TaskTracker() {}
|
|
|
| TaskTracker::~TaskTracker() {}
|
| @@ -182,20 +159,6 @@
|
| TabTasks* TaskTracker::GetTabTasks(SessionID::id_type tab_id) {
|
| if (local_tab_tasks_map_.find(tab_id) == local_tab_tasks_map_.end()) {
|
| local_tab_tasks_map_[tab_id] = base::MakeUnique<TabTasks>();
|
| - }
|
| - return local_tab_tasks_map_[tab_id].get();
|
| -}
|
| -
|
| -TabTasks* TaskTracker::GetTabTasks(SessionID::id_type tab_id,
|
| - SessionID::id_type source_tab_id) {
|
| - if (local_tab_tasks_map_.find(tab_id) == local_tab_tasks_map_.end()) {
|
| - auto source_tab_iter = local_tab_tasks_map_.find(source_tab_id);
|
| - if (source_tab_iter != local_tab_tasks_map_.end()) {
|
| - local_tab_tasks_map_[tab_id] =
|
| - base::MakeUnique<TabTasks>(source_tab_iter->second.get());
|
| - } else {
|
| - local_tab_tasks_map_[tab_id] = base::MakeUnique<TabTasks>();
|
| - }
|
| }
|
| return local_tab_tasks_map_[tab_id].get();
|
| }
|
|
|