)]}'
{
  "commit": "af6e1a3608d4418d2f77751d48e1a5fb20fbf733",
  "tree": "a16c6a87a59d6d03fb4420d5d76ef00549e391eb",
  "parents": [
    "fe4b78487e86407ec9fea2ee9839396cf904ef38"
  ],
  "author": {
    "name": "Mohamed Adel",
    "email": "adelm@google.com",
    "time": "Fri Sep 18 23:14:41 2026"
  },
  "committer": {
    "name": "Copybara-Service",
    "email": "copybara-worker@google.com",
    "time": "Fri Sep 18 23:22:34 2026"
  },
  "message": "[Android] Add an ErrorProne check for clipped superscripts\n\nCombining SuperscriptSpan with RelativeSizeSpan raises text above the\nbaseline without updating the line metrics. While Latin fonts usually\nhave enough headroom between top and ascent to hide this, tall scripts\nlike Thai clip the upper vowel marks off against the top of the line\nbox.\n\nNewLabelUtils.withBadge() (from //components/browser_ui/styles) solves\nthis for \"New\" badges by using a ReplacementSpan that reserves the\nnecessary vertical room in FontMetricsInt. However, callers could still\naccidentally hand-roll superscript badges using SuperscriptSpan and\nRelativeSizeSpan and reintroduce clipping regressions.\n\nThis CL adds a custom ErrorProne BugChecker, NoClippedSuperscript, that\nflags methods constructing both SuperscriptSpan and RelativeSizeSpan and\ndirects authors to NewLabelUtils.withBadge() (or @SuppressWarnings with\nan explanation for non-badge superscripts).\n\nTAG\u003dagy\n\nBug: 512323229\nChange-Id: I9c58c5b9af6a7caeca056045e1b7ec6fa53b39f7\nReviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/8421287\nReviewed-by: Tommy Nyquist \u003cnyquist@chromium.org\u003e\nCommit-Queue: Moe Adel \u003cadelm@google.com\u003e\nCr-Commit-Position: refs/heads/main@{#1701189}\nNOKEYCHECK\u003dTrue\nGitOrigin-RevId: 00a320a0cb6a35146022586539e9d181c69cb3c8\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "f176d8ad9acc38415d7b30d097b26be449acfa1f",
      "old_mode": 33188,
      "old_path": "BUILD.gn",
      "new_id": "c90de33d1bbb0b4adaaca6d676a10245314e1e10",
      "new_mode": 33188,
      "new_path": "BUILD.gn"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "6b6565da58347e6310ff9005a29e07b9d0be73ac",
      "new_mode": 33188,
      "new_path": "src/org/chromium/tools/errorprone/plugin/NoClippedSuperscript.java"
    },
    {
      "type": "modify",
      "old_id": "b7e4c704af1d5fd1c9c850410947b003ae88485e",
      "old_mode": 33188,
      "old_path": "test/BUILD.gn",
      "new_id": "6662e137221f7a88020319f9a95a8bb83f162c2d",
      "new_mode": 33188,
      "new_path": "test/BUILD.gn"
    },
    {
      "type": "modify",
      "old_id": "d62b5d4da8c77cc6b907ae8d372fba38dbb1b584",
      "old_mode": 33188,
      "old_path": "test/nocompile_gn/BUILD.gn",
      "new_id": "d19d831343146f0128cd131bc95981597140d85c",
      "new_mode": 33188,
      "new_path": "test/nocompile_gn/BUILD.gn"
    },
    {
      "type": "modify",
      "old_id": "cd1d9f69415535c97852cd730bf0b43b54e2c32b",
      "old_mode": 33188,
      "old_path": "test/nocompile_gn/nocompile_sources.gni",
      "new_id": "7f9b6a8c3d6c9eb1314b4bba63767712cea314a7",
      "new_mode": 33188,
      "new_path": "test/nocompile_gn/nocompile_sources.gni"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b051b0b33848eef21f28b6fd43bef91868c3ab8f",
      "new_mode": 33188,
      "new_path": "test/src/org/chromium/tools/errorprone/plugin/NoClippedSuperscriptNoCompileSources.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "01c8811a8271191376832df43867ff41f5fd5c42",
      "new_mode": 33188,
      "new_path": "test/src/org/chromium/tools/errorprone/plugin/NoClippedSuperscriptTestCompile.java"
    }
  ]
}
