Add an EGL extension to disable GL extensions by default.

BUG=angleproject:2404

Change-Id: I2667ddc92d5c9ef6e0ef115f2fdf0c3d3643d945
Reviewed-on: https://chromium-review.googlesource.com/962702
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
diff --git a/src/tests/gl_tests/RequestExtensionTest.cpp b/src/tests/gl_tests/RequestExtensionTest.cpp
new file mode 100644
index 0000000..6fa20fb
--- /dev/null
+++ b/src/tests/gl_tests/RequestExtensionTest.cpp
@@ -0,0 +1,45 @@
+//
+// Copyright 2018 The ANGLE Project Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+// RequestExtensionTest:
+//   Tests that extensions can be requested and are disabled by default when using
+//   EGL_ANGLE_request_extension
+//
+
+#include "test_utils/ANGLETest.h"
+
+namespace angle
+{
+
+class RequestExtensionTest : public ANGLETest
+{
+  protected:
+    RequestExtensionTest() { setExtensionsEnabled(false); }
+};
+
+// Test that a known requestable extension is disabled by default and make sure it can be requested
+// if possible
+TEST_P(RequestExtensionTest, ExtensionsDisabledByDefault)
+{
+    EXPECT_TRUE(eglDisplayExtensionEnabled(getEGLWindow()->getDisplay(),
+                                           "EGL_ANGLE_create_context_extensions_enabled"));
+    EXPECT_FALSE(extensionEnabled("GL_OES_rgb8_rgba8"));
+
+    if (extensionRequestable("GL_OES_rgb8_rgba8"))
+    {
+        glRequestExtensionANGLE("GL_OES_rgb8_rgba8");
+        EXPECT_TRUE(extensionEnabled("GL_OES_rgb8_rgba8"));
+    }
+}
+
+// Use this to select which configurations (e.g. which renderer, which GLES major version) these
+// tests should be run against.
+ANGLE_INSTANTIATE_TEST(RequestExtensionTest,
+                       ES2_D3D11(),
+                       ES2_OPENGL(),
+                       ES2_OPENGLES(),
+                       ES2_VULKAN());
+
+}  // namespace angle