Enforce base::CancelableCallback/Closure deprecation presubmit

This will enable a presubmit to prevent reintroduction of the deprecated
base::CancelableCallback and base::CancelableClosure in directories that
have been migrated. This follows on from crrev.com/c/2505963, which
ensures that all converted directories have been appropriately migrated.

Bug: 1142629
Change-Id: I2ad4ba9340d8023c34835120b84173de83265291
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2506350
Reviewed-by: Daniel Cheng <[email protected]>
Commit-Queue: Alex Turner <[email protected]>
Cr-Commit-Position: refs/heads/master@{#831062}
diff --git a/PRESUBMIT.py b/PRESUBMIT.py
index 1e3fa54..6119384 100644
--- a/PRESUBMIT.py
+++ b/PRESUBMIT.py
@@ -319,6 +319,7 @@
 # checks for them and prevent regressions.
 _NOT_CONVERTED_TO_MODERN_BIND_AND_CALLBACK = '|'.join((
   '^base/callback.h',  # Intentional.
+  '^base/cancelable_callback.h',  # Intentional.
   '^chrome/browser/android/webapps/add_to_homescreen_data_fetcher_unittest.cc',
   '^chrome/browser/apps/guest_view/',
   '^chrome/browser/browsing_data/',
@@ -831,6 +832,24 @@
       (_NOT_CONVERTED_TO_MODERN_BIND_AND_CALLBACK,),
     ),
     (
+      r'/\bbase::CancelableCallback[<:]',
+      (
+          'Please use base::Cancelable{Once,Repeating}Callback instead',
+          'of base::CancelableCallback. (crbug.com/714018)',
+      ),
+      False,
+      (_NOT_CONVERTED_TO_MODERN_BIND_AND_CALLBACK,),
+    ),
+    (
+      r'/\bbase::CancelableClosure\b',
+      (
+          'Please use base::Cancelable{Once,Repeating}Closure instead',
+          'of base::CancelableClosure. (crbug.com/714018)',
+      ),
+      False,
+      (_NOT_CONVERTED_TO_MODERN_BIND_AND_CALLBACK,),
+    ),
+    (
       r'/\bRunMessageLoop\b',
       (
           'RunMessageLoop is deprecated, use RunLoop instead.',