Run WebGL 2.0 conformance tests in more cases.

Use CQ_INCLUDE_TRYBOTS directive to run optional GPU tests, which
include the WebGL 2.0 conformance tests, on the commit queue during
ANGLE rolls. Add a script for rolling the WebGL conformance suite and do
the same then.

Add presubmit checks for the gpu/ directory and the Blink WebGL sources
which run the WebGL 2.0 conformance suite, since these are the places
most likely to break these tests.

(These tests will be run by default on the commit queue as soon as there
is machine capacity to do so.)

BUG=295792
CQ_INCLUDE_TRYBOTS=tryserver.chromium.win:win_optional_gpu_tests_rel
[email protected]

Review URL: https://codereview.chromium.org/1682593002

Cr-Commit-Position: refs/heads/master@{#374307}
diff --git a/gpu/PRESUBMIT.py b/gpu/PRESUBMIT.py
new file mode 100644
index 0000000..aed2fd9c
--- /dev/null
+++ b/gpu/PRESUBMIT.py
@@ -0,0 +1,38 @@
+# Copyright (c) 2016 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+"""Top-level presubmit script for gpu.
+
+See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts
+for more details about the presubmit API built into depot_tools.
+"""
+
+import re
+
+def PostUploadHook(cl, change, output_api):
+  """git cl upload will call this hook after the issue is created/modified.
+
+  This hook adds extra try bots list to the CL description in order to run
+  Blink tests in addition to CQ try bots.
+  """
+  rietveld_obj = cl.RpcServer()
+  issue = cl.issue
+  description = rietveld_obj.get_description(issue)
+  if re.search(r'^CQ_INCLUDE_TRYBOTS=.*', description, re.M | re.I):
+    return []
+
+  bots = [
+    'tryserver.chromium.win:win_optional_gpu_tests_rel',
+  ]
+
+  results = []
+  new_description = description
+  new_description += '\nCQ_INCLUDE_TRYBOTS=%s' % ';'.join(bots)
+  results.append(output_api.PresubmitNotifyResult(
+      'Automatically added optional GPU tests to run on CQ.'))
+
+  if new_description != description:
+    rietveld_obj.update_description(issue, new_description)
+
+  return results