New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 606985 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
not working at Google anymore
Closed: Jul 2016
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Windows
Pri: 2
Type: Bug



Sign in to add a comment

new TaskManager has unstable ordering when sorted by task

Project Member Reported by nick@chromium.org, Apr 26 2016

Issue description

Version: Google Chrome	49.0.2623.112 (Official Build) m (32-bit)
Platform: Windows

With the TaskManager configured to sort by task name in descending order, I noticed my TaskManager is oscillating between two different orderings (see the attached two screenshots)

The change seems to be triggered by the gmail tab updating its title (which happens every few seconds), and I'd bet it has something to do with having multiple same-title "Tab: Facebook" rows that each share a process with other tabs.


 
sort-order-a.png
137 KB View Download
sort-order-b.png
160 KB View Download

Comment 1 by nick@chromium.org, May 24 2016

Owner: nick@chromium.org
Status: Started (was: Available)
I still don't fully understand what was happening here. This may be partially fixed by using std::stable_sort, which I've done in a pending CL.

However, one change I hope to make soon, is to change the meaning of sorting by the "Task" column to mean "sort by the default ordering", whose layout I also aim to change to be more logical.
Project Member

Comment 2 by bugdroid1@chromium.org, May 31 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/ed4c02aa36bc1c0cda34315d0f51f7b8aa7e794f

commit ed4c02aa36bc1c0cda34315d0f51f7b8aa7e794f
Author: nick <nick@chromium.org>
Date: Tue May 31 21:36:42 2016

TableView: use a stable_sort instead of a sort, since the comparisons may not be totally ordered.

BUG= 606985 

Review-Url: https://codereview.chromium.org/2026793002
Cr-Commit-Position: refs/heads/master@{#396937}

[modify] https://crrev.com/ed4c02aa36bc1c0cda34315d0f51f7b8aa7e794f/ui/views/controls/table/table_view.cc

Project Member

Comment 3 by bugdroid1@chromium.org, Jun 22 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/0088a36baa443168daf851f3ccf95a2ad7090802

commit 0088a36baa443168daf851f3ccf95a2ad7090802
Author: nick <nick@chromium.org>
Date: Wed Jun 22 17:25:56 2016

Make Task Manager sort more meaningful:
 - Model order is now more meaningful:
    - Browser process is always first.
    - Gpu process is always second.
    - More generally, sorting of non-subtasks is done by process
      type, followed by tab id, and finally task ID.
       - Using tab ID puts "Tab:" rows rows in tab creation order, and
         provides preserves the row's position in the list even when
         a tab navigates cross-process (though not across prerendering)
       - Sorting by process type places the browser process first,
         the gpu process second, etc, in a way that's predictable.
         (sorting by task ID or pid resulted in an unpredictable
         ordering).
    - Subtasks (i.e. subframes) appear right after their parents.
    - Using task_id as a tiebreaker within a group of related tasks
      gives a predictable ordering, since this is effectively
      task-creation order.
    - Groups are kept on consecutive rows, as before. Within a group,
      rows are ordered by the same sort comparator that is used
      to sort between groups.
 - To effect the above sorting changes, the following tweaks to
   the TaskManager private interfaces are needed:
    - Expose a GetParentTask() method on Task.
    - TaskGroup switches to using an unsorted vector of Tasks.
    - Expose a Task ctor that supports overriding the pid, for
      use in unittests.

This does not fix the UI problem where there's no way for
the user to get back to the model order after sorting by any
of the columns. A follow-on CL will need to address that.

BUG= 616897 , 54909 , 239611 , 606985 ,527455
TESTS=unit_tests, browser_tests

Review-Url: https://codereview.chromium.org/2028753002
Cr-Commit-Position: refs/heads/master@{#401328}

[modify] https://crrev.com/0088a36baa443168daf851f3ccf95a2ad7090802/chrome/browser/task_management/providers/task.cc
[modify] https://crrev.com/0088a36baa443168daf851f3ccf95a2ad7090802/chrome/browser/task_management/providers/task.h
[modify] https://crrev.com/0088a36baa443168daf851f3ccf95a2ad7090802/chrome/browser/task_management/providers/web_contents/subframe_task.cc
[modify] https://crrev.com/0088a36baa443168daf851f3ccf95a2ad7090802/chrome/browser/task_management/providers/web_contents/subframe_task.h
[modify] https://crrev.com/0088a36baa443168daf851f3ccf95a2ad7090802/chrome/browser/task_management/sampling/task_group.cc
[modify] https://crrev.com/0088a36baa443168daf851f3ccf95a2ad7090802/chrome/browser/task_management/sampling/task_group.h
[modify] https://crrev.com/0088a36baa443168daf851f3ccf95a2ad7090802/chrome/browser/task_management/sampling/task_manager_impl.cc
[add] https://crrev.com/0088a36baa443168daf851f3ccf95a2ad7090802/chrome/browser/task_management/sampling/task_manager_impl_unittest.cc
[modify] https://crrev.com/0088a36baa443168daf851f3ccf95a2ad7090802/chrome/browser/task_management/task_manager_browsertest.cc
[modify] https://crrev.com/0088a36baa443168daf851f3ccf95a2ad7090802/chrome/browser/task_management/task_manager_interface.h
[modify] https://crrev.com/0088a36baa443168daf851f3ccf95a2ad7090802/chrome/browser/task_management/task_manager_observer.h
[modify] https://crrev.com/0088a36baa443168daf851f3ccf95a2ad7090802/chrome/chrome_tests_unit.gypi

Comment 4 by nick@chromium.org, Jul 13 2016

Status: Fixed (was: Started)

Sign in to add a comment