Add Presubmit for Devtools Experiment Telemetry

This CL adds a new Presubmit check that ensures that all devtools
experiemnts that are registered in MainImpl.js are also placed
in the UserMetrics.js file so that they have telemetry registered.

Explainer:
https://docs.google.com/document/d/1pcvN11C4onSXqOE0dTjUUHodMj55bRVl_5_e3kMg_rs/edit?ts=5f2329dc#heading=h.ezo3vjjctj8w

Bug: 1107636
Change-Id: If7ca22ef641b037717b808b7c57cc57c6f502536
Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/2341797
Commit-Queue: Brandon Goddard <[email protected]>
Reviewed-by: Kalon Hinds <[email protected]>
Reviewed-by: Peter Marshall <[email protected]>
Reviewed-by: Patrick Brosset <[email protected]>
diff --git a/PRESUBMIT.py b/PRESUBMIT.py
index 383c2bc..fc41753 100644
--- a/PRESUBMIT.py
+++ b/PRESUBMIT.py
@@ -100,6 +100,29 @@
     return results
 
 
+def _CheckExperimentTelemetry(input_api, output_api):
+    results = [
+        output_api.PresubmitNotifyResult('Running Experiment Telemetry check:')
+    ]
+
+    experiment_telemetry_files = [
+        input_api.os_path.join(input_api.PresubmitLocalPath(), 'front_end',
+                               'main', 'MainImpl.js'),
+        input_api.os_path.join(input_api.PresubmitLocalPath(), 'front_end',
+                               'host', 'UserMetrics.js')
+    ]
+    affected_main_files = _getAffectedFiles(input_api,
+                                            experiment_telemetry_files, [],
+                                            ['.js'])
+    if len(affected_main_files) == 0:
+        return results
+
+    script_path = input_api.os_path.join(input_api.PresubmitLocalPath(),
+                                         'scripts', 'check_experiments.js')
+    results.extend(_checkWithNodeScript(input_api, output_api, script_path))
+    return results
+
+
 def _CheckJSON(input_api, output_api):
     results = [output_api.PresubmitNotifyResult('Running JSON Validator:')]
     script_path = input_api.os_path.join(input_api.PresubmitLocalPath(), 'scripts', 'json_validator', 'validate_module_json.js')
@@ -356,6 +379,7 @@
     results.extend(input_api.canned_checks.CheckChangeHasNoStrayWhitespace(input_api, output_api))
     results.extend(input_api.canned_checks.CheckGenderNeutral(input_api, output_api))
     results.extend(_CheckBuildGN(input_api, output_api))
+    results.extend(_CheckExperimentTelemetry(input_api, output_api))
     results.extend(_CheckGeneratedFiles(input_api, output_api))
     results.extend(_CheckJSON(input_api, output_api))
     results.extend(_CheckDevToolsStyleJS(input_api, output_api))