)]}'
{
  "commit": "5c81bd7d33220b490163ec82aee52e3aeb4e94de",
  "tree": "a11dfcd7a396acdfa25427dc6bfb2c10a7a8d5f1",
  "parents": [
    "4f9185832a704b3133f0aa80daf2688d2847503b"
  ],
  "author": {
    "name": "Kaan Alsan",
    "email": "alsan@chromium.org",
    "time": "Thu Dec 11 23:52:41 2025"
  },
  "committer": {
    "name": "Chromium LUCI CQ",
    "email": "chromium-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Thu Dec 11 23:52:41 2025"
  },
  "message": "Abstract away index-based lookups in TabDragController\n\nThis CL updates the TabDragContext interface to support tab lookups via\nWebContents and adds a general \"IsTabDetachable\" method. These new\nmethods replace TabDragController\u0027s usage of GetTabAt and GetIndexOf,\nwhich will allow other implementors (specifically Vertical tab strip),\nto use a tab model structure that isn\u0027t flat.\n\nNote: GetTabAt still exists, but is only used for positioning logic that does not need to be implemented  for Vertical tabs. A follow-up CL will factor out these unnecessary methods.\n\nBug: 439963720\nChange-Id: I405d4ec27cddcda3c78bda285ddbe06e9d078e2e\nReviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7247988\nCommit-Queue: Kaan Alsan \u003calsan@chromium.org\u003e\nReviewed-by: David Pennington \u003cdpenning@chromium.org\u003e\nCr-Commit-Position: refs/heads/main@{#1557750}\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "f580123775175562530f93ac611fa75fd4b6805a",
      "old_mode": 33188,
      "old_path": "chrome/browser/ui/views/tabs/dragging/drag_session_data.cc",
      "new_id": "4a16aba3acd8a8fb10ab4330c1f9870c63244007",
      "new_mode": 33188,
      "new_path": "chrome/browser/ui/views/tabs/dragging/drag_session_data.cc"
    },
    {
      "type": "modify",
      "old_id": "308b7211a2b7bda2c278e059d4fac94087720bbd",
      "old_mode": 33188,
      "old_path": "chrome/browser/ui/views/tabs/dragging/tab_drag_context.h",
      "new_id": "faf2d97a77a7e5e90cfff517c0d113a383d68881",
      "new_mode": 33188,
      "new_path": "chrome/browser/ui/views/tabs/dragging/tab_drag_context.h"
    },
    {
      "type": "modify",
      "old_id": "fb8f800dba9e6070facefa6f20b26dfbe36630c0",
      "old_mode": 33188,
      "old_path": "chrome/browser/ui/views/tabs/dragging/tab_drag_controller.cc",
      "new_id": "a95ca7c54c39927e93f13143066cbb0ecfcfc5cb",
      "new_mode": 33188,
      "new_path": "chrome/browser/ui/views/tabs/dragging/tab_drag_controller.cc"
    },
    {
      "type": "modify",
      "old_id": "4e1eaf5cedf7331e16f410dcbc2491bb681c2180",
      "old_mode": 33188,
      "old_path": "chrome/browser/ui/views/tabs/dragging/test/mock_tab_drag_context.h",
      "new_id": "8a1b907673db0263cc6f0550a697085a16d8286a",
      "new_mode": 33188,
      "new_path": "chrome/browser/ui/views/tabs/dragging/test/mock_tab_drag_context.h"
    },
    {
      "type": "modify",
      "old_id": "a73e20a460de27bd1019fce13e033226062a7b09",
      "old_mode": 33188,
      "old_path": "chrome/browser/ui/views/tabs/tab_strip.cc",
      "new_id": "450b7f1865954685097e7e0dc85950f50e85420f",
      "new_mode": 33188,
      "new_path": "chrome/browser/ui/views/tabs/tab_strip.cc"
    }
  ]
}
