Make NVPR a GL context option instead of a GL context

Make NVPR a GL context option instead of a GL context.
This may enable NVPR to be run with command buffer
interface.

No functionality change in DM or nanobench. NVPR can
only be run with normal GL APIs.

BUG=skia:2992

Review URL: https://codereview.chromium.org/1448883002
diff --git a/tests/GLInterfaceValidationTest.cpp b/tests/GLInterfaceValidationTest.cpp
index 5736e2d..b890b44 100755
--- a/tests/GLInterfaceValidationTest.cpp
+++ b/tests/GLInterfaceValidationTest.cpp
@@ -12,28 +12,33 @@
 
 #include "GrContextFactory.h"
 
-DEF_GPUTEST(GLInterfaceValidation, reporter, factory) {
-    for (int i = 0; i <= GrContextFactory::kLastGLContextType; ++i) {
-        GrContextFactory::GLContextType glCtxType = (GrContextFactory::GLContextType)i;
-        // this forces the factory to make the context if it hasn't yet
-        GrContextFactory::ContextInfo* contextInfo = factory->getContextInfo(glCtxType);
-        SkGLContext* glCtx = contextInfo ? contextInfo->fGLContext : nullptr;
+DEF_GPUTEST(GLInterfaceValidation, reporter, /*factory*/) {
+    GrContextFactory testFactory;
 
-        // We're supposed to fail the NVPR context type when we the native context that does not
-        // support the NVPR extension.
-        if (GrContextFactory::kNVPR_GLContextType == glCtxType &&
-            factory->getContextInfo(GrContextFactory::kNative_GLContextType) &&
-            !factory->getContextInfo(GrContextFactory::kNative_GLContextType)->fGLContext->gl()->hasExtension("GL_NV_path_rendering")) {
-            REPORTER_ASSERT(reporter, nullptr == glCtx);
+    // Test that if we do not have NV_path_rendering -related GL extensions,
+    // GrContextFactory::get(.., kEnableNVPR_GLContextOptions) always returns nullptr.
+    for (int i = 0; i < GrContextFactory::kGLContextTypeCnt; ++i) {
+        GrContextFactory::GLContextType glCtxType = static_cast<GrContextFactory::GLContextType>(i);
+        GrContextFactory::ContextInfo* context =
+                testFactory.getContextInfo(glCtxType, kNone_GrGLStandard,
+                                           GrContextFactory::kNone_GLContextOptions);
+        if (!context) {
             continue;
         }
 
-        REPORTER_ASSERT(reporter, glCtx);
-        if (glCtx) {
-            const GrGLInterface* interface = glCtx->gl();
-            REPORTER_ASSERT(reporter, interface->validate());
+        SkGLContext* glContext = context->fGLContext;
+        REPORTER_ASSERT(reporter, glContext->gl()->validate());
+
+        if (!(glContext->gl()->hasExtension("GL_NV_path_rendering") ||
+              glContext->gl()->hasExtension("GL_CHROMIUM_path_rendering"))) {
+                REPORTER_ASSERT(reporter,
+                                nullptr == testFactory.getContextInfo(
+                                    glCtxType,
+                                    kNone_GrGLStandard,
+                                    GrContextFactory::kEnableNVPR_GLContextOptions));
         }
     }
+
 }
 
 #endif