)]}'
{
  "commit": "1e23f1ca224b164294be79b02417174f39ecfb6b",
  "tree": "30745e829d7c6afb5848660eb476f5873169f5bc",
  "parents": [
    "fc46f8ce6be9d5a40850b73538a377d49b04ee3e"
  ],
  "author": {
    "name": "Lokbondo Kung",
    "email": "lokokung@google.com",
    "time": "Thu May 29 16:05:41 2025 -0700"
  },
  "committer": {
    "name": "Dawn LUCI CQ",
    "email": "dawn-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Thu May 29 16:05:41 2025 -0700"
  },
  "message": "[dawn][common] Adds MutexProtectedSupport CRTP wrapper.\n\n- Adds a CRTP wrapper that can be used to both declare a\n  MutexProtected struct and its internals. This is particularly\n  useful when we want to provide additional backdoors to read\n  data without acquiring the lock.\n- Adds relevant tests for the new wrapper.\n- Also makes Guards hold a reference instead of a pointer since\n  the pointer should never be null anyways.\n\nBug: 40643114\nChange-Id: I53ce8ac0e4a16c3e3aa1cddb8860d9d1a5727b3f\nReviewed-on: https://dawn-review.googlesource.com/c/dawn/+/244275\nCommit-Queue: Loko Kung \u003clokokung@google.com\u003e\nReviewed-by: Kai Ninomiya \u003ckainino@chromium.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "ab2e6fccf29330160ed10cf30f328bc398842fb2",
      "old_mode": 33188,
      "old_path": "src/dawn/common/MutexProtected.h",
      "new_id": "3976d0db535c195c9b580662618c33473c28af04",
      "new_mode": 33188,
      "new_path": "src/dawn/common/MutexProtected.h"
    },
    {
      "type": "modify",
      "old_id": "de6f20a72137c159f5e2ae4591549de36c94bfb3",
      "old_mode": 33188,
      "old_path": "src/dawn/tests/unittests/MutexProtectedTests.cpp",
      "new_id": "74f6b87a2f578bf60ec1f0528897e5fb372fca70",
      "new_mode": 33188,
      "new_path": "src/dawn/tests/unittests/MutexProtectedTests.cpp"
    }
  ]
}
