Add a ValidationContext class helper.

This class is a wrapper around gl::Data, aka the metadata describing
a gl::Context. We can use it for unit-testing validation functions
by passing that through the validation methods instead of a Context,
and using mocks to expect certain errors.

BUG=angleproject:747
BUG=angleproject:597

Change-Id: I7bd85c7662860ba9a3a13406579a088d447e5631
Reviewed-on: https://chromium-review.googlesource.com/309637
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
diff --git a/src/libANGLE/validationES.cpp b/src/libANGLE/validationES.cpp
index fc90330..fc45cc8 100644
--- a/src/libANGLE/validationES.cpp
+++ b/src/libANGLE/validationES.cpp
@@ -29,7 +29,7 @@
 {
 namespace
 {
-bool ValidateDrawAttribs(gl::Context *context, GLint primcount, GLint maxVertex)
+bool ValidateDrawAttribs(ValidationContext *context, GLint primcount, GLint maxVertex)
 {
     const gl::State &state     = context->getState();
     const gl::Program *program = state.getProgram();
@@ -1466,7 +1466,10 @@
     return true;
 }
 
-static bool ValidateDrawBase(Context *context, GLenum mode, GLsizei count, GLsizei primcount)
+static bool ValidateDrawBase(ValidationContext *context,
+                             GLenum mode,
+                             GLsizei count,
+                             GLsizei primcount)
 {
     switch (mode)
     {
@@ -1657,7 +1660,7 @@
     return ValidateDrawArraysInstanced(context, mode, first, count, primcount);
 }
 
-bool ValidateDrawElements(Context *context,
+bool ValidateDrawElements(ValidationContext *context,
                           GLenum mode,
                           GLsizei count,
                           GLenum type,