Use angle::Result in front-end (Part 8)

Refactors the gl::Texture class and a few related methods. Also reduces
binary size by up to 4k.

Bug: angleproject:2491
Change-Id: Ib9a69d7f507b0dce35abb17b90532f812bf43214
Reviewed-on: https://chromium-review.googlesource.com/c/1291845
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
diff --git a/src/libANGLE/Context.cpp b/src/libANGLE/Context.cpp
index 58a9c8a..1a092e2 100644
--- a/src/libANGLE/Context.cpp
+++ b/src/libANGLE/Context.cpp
@@ -108,10 +108,10 @@
 }
 
 template <typename T>
-gl::Error GetQueryObjectParameter(const gl::Context *context,
-                                  gl::Query *query,
-                                  GLenum pname,
-                                  T *params)
+angle::Result GetQueryObjectParameter(const gl::Context *context,
+                                      gl::Query *query,
+                                      GLenum pname,
+                                      T *params)
 {
     ASSERT(query != nullptr);
 
@@ -122,16 +122,13 @@
         case GL_QUERY_RESULT_AVAILABLE_EXT:
         {
             bool available;
-            gl::Error error = query->isResultAvailable(context, &available);
-            if (!error.isError())
-            {
-                *params = gl::CastFromStateValue<T>(pname, static_cast<GLuint>(available));
-            }
-            return error;
+            ANGLE_TRY(query->isResultAvailable(context, &available));
+            *params = gl::CastFromStateValue<T>(pname, static_cast<GLuint>(available));
+            return angle::Result::Continue();
         }
         default:
             UNREACHABLE();
-            return gl::InternalError() << "Unreachable Error";
+            return angle::Result::Stop();
     }
 }