)]}'
{
  "commit": "b74174d338d984ca654fc13ebcadf9f527ef7aa6",
  "tree": "3cc0770ec46eeb3a245b39f6fd01031085fb49f4",
  "parents": [
    "9bfd72b86206052acf6d13cff9df4ddc70d1e0ec"
  ],
  "author": {
    "name": "Ivan Chong",
    "email": "ivankc@google.com",
    "time": "Tue Aug 11 19:11:30 2026 +0000"
  },
  "committer": {
    "name": "Ivan Chong",
    "email": "ivankc@google.com",
    "time": "Fri Sep 11 14:44:16 2026 +0000"
  },
  "message": "ui: Revamp AndroidLockContention track layout\n\nTo reduce the visual clutter on traces with high number of lock\ncontentions, this PR moves the blocking contention slices to a nested\ntrack under a counter slice which represents the number of contentions\nat a given time period.\n\nWe also separate the details track by thread to make it easier to see\nthe name of the particular thread being blocked and to reduce nesting of\ntracks.\n\nAdditional related bug fixes:\n- Gracefully handle when lock_name is null\n- Fix lock name regex when lock name doesn\u0027t end with lock (e.g. Lock\n  contention on linear alloc)\n- Only create owner slice for monitor contention slice if there is a\n  monitor contention slice nested above a lock contention on monitor\nslice to prevent duplicate owner slices\n- Remove colour override on owner slices which helps visualise the\n  distribution of lock types\n\nBug: 289343169\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "e16489194426724e375cd692798e2caf21efd0a1",
      "old_mode": 33188,
      "old_path": "test/data/ui-screenshots/load_and_tracks.test.ts/mark/mark.png.sha256",
      "new_id": "e58777109e9b81d9c9efeb56986b900573abfe70",
      "new_mode": 33188,
      "new_path": "test/data/ui-screenshots/load_and_tracks.test.ts/mark/mark.png.sha256"
    },
    {
      "type": "modify",
      "old_id": "77c798fdd7fc0eec8ba8b6c521aae1faf60c3668",
      "old_mode": 33188,
      "old_path": "ui/src/plugins/com.android.AndroidLockContention/android_lock_contention_event_source.ts",
      "new_id": "6f652b7a774770eb9ff581a65594b73ae00edb8b",
      "new_mode": 33188,
      "new_path": "ui/src/plugins/com.android.AndroidLockContention/android_lock_contention_event_source.ts"
    },
    {
      "type": "modify",
      "old_id": "413c07ae2b476ca82a44b91d2f786fcaa3700f4e",
      "old_mode": 33188,
      "old_path": "ui/src/plugins/com.android.AndroidLockContention/index.ts",
      "new_id": "ef2558a25d35e6eee86f150d2d2c4225638c1d12",
      "new_mode": 33188,
      "new_path": "ui/src/plugins/com.android.AndroidLockContention/index.ts"
    },
    {
      "type": "modify",
      "old_id": "818721d06c2c98f98a6cd2a969a8a0d98cf25ce6",
      "old_mode": 33188,
      "old_path": "ui/src/plugins/com.android.AndroidLockContention/lock_contention_sql.ts",
      "new_id": "1e25405b0ed02495ed670a1961a220a5e4859fbb",
      "new_mode": 33188,
      "new_path": "ui/src/plugins/com.android.AndroidLockContention/lock_contention_sql.ts"
    },
    {
      "type": "modify",
      "old_id": "71213737b32daaecc65606a73ba39c77c442c0e1",
      "old_mode": 33188,
      "old_path": "ui/src/plugins/com.android.AndroidLockContention/lock_owner_details_panel.ts",
      "new_id": "2248c06a74fed5f6977f93dca3ef6ca48adc8a47",
      "new_mode": 33188,
      "new_path": "ui/src/plugins/com.android.AndroidLockContention/lock_owner_details_panel.ts"
    }
  ]
}
