Enable NV_path_rendering in the Null GL.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1882563002

Review URL: https://codereview.chromium.org/1882563002
diff --git a/src/gpu/gl/GrGLCreateNullInterface.cpp b/src/gpu/gl/GrGLCreateNullInterface.cpp
index 80a7cfb..7282667 100644
--- a/src/gpu/gl/GrGLCreateNullInterface.cpp
+++ b/src/gpu/gl/GrGLCreateNullInterface.cpp
@@ -112,7 +112,7 @@
 /** Null interface implementation */
 class NullInterface : public GrGLTestInterface {
 public:
-    NullInterface()
+    NullInterface(bool enableNVPR)
         : fCurrArrayBuffer(0)
         , fCurrElementArrayBuffer(0)
         , fCurrPixelPackBuffer(0)
@@ -120,7 +120,20 @@
         , fCurrProgramID(0)
         , fCurrShaderID(0)
         , fCurrGenericID(0)
-        , fCurrUniformLocation(0) {
+        , fCurrUniformLocation(0)
+        , fCurrPathID(0) {
+        fExtensions.push_back("GL_ARB_framebuffer_object");
+        fExtensions.push_back("GL_ARB_blend_func_extended");
+        fExtensions.push_back("GL_ARB_timer_query");
+        fExtensions.push_back("GL_ARB_draw_buffers");
+        fExtensions.push_back("GL_ARB_occlusion_query");
+        fExtensions.push_back("GL_EXT_stencil_wrap");
+        if (enableNVPR) {
+            fExtensions.push_back("GL_NV_path_rendering");
+            fExtensions.push_back("GL_ARB_program_interface_query");
+        }
+        fExtensions.push_back(nullptr);
+
         this->init(kGL_GrGLStandard);
     }
 
@@ -293,7 +306,7 @@
                 break;
             case GR_GL_NUM_EXTENSIONS: {
                 GrGLint i = 0;
-                while (kExtensions[i++]);
+                while (fExtensions[i++]);
                 *params = i;
                 break;
             }
@@ -377,7 +390,7 @@
                 GrGLint count;
                 this->getIntegerv(GR_GL_NUM_EXTENSIONS, &count);
                 if ((GrGLint)i <= count) {
-                    return (const GrGLubyte*) kExtensions[i];
+                    return (const GrGLubyte*) fExtensions[i];
                 } else {
                     return nullptr;
                 }
@@ -507,16 +520,24 @@
         }
     };
 
+    // NV_path_rendering
+    GrGLuint genPaths(GrGLsizei range) override {
+        return ++fCurrPathID;
+    }
+
+
 private:
-    BufferManager   fBufferManager;
-    GrGLuint        fCurrArrayBuffer;
-    GrGLuint        fCurrElementArrayBuffer;
-    GrGLuint        fCurrPixelPackBuffer;
-    GrGLuint        fCurrPixelUnpackBuffer;
-    GrGLuint        fCurrProgramID;
-    GrGLuint        fCurrShaderID;
-    GrGLuint        fCurrGenericID;
-    GrGLuint        fCurrUniformLocation;
+    BufferManager          fBufferManager;
+    GrGLuint               fCurrArrayBuffer;
+    GrGLuint               fCurrElementArrayBuffer;
+    GrGLuint               fCurrPixelPackBuffer;
+    GrGLuint               fCurrPixelUnpackBuffer;
+    GrGLuint               fCurrProgramID;
+    GrGLuint               fCurrShaderID;
+    GrGLuint               fCurrGenericID;
+    GrGLuint               fCurrUniformLocation;
+    GrGLuint               fCurrPathID;
+    SkTArray<const char*>  fExtensions;
 
     // the OpenGLES 2.0 spec says this must be >= 128
     static const GrGLint kDefaultMaxVertexUniformVectors = 128;
@@ -530,19 +551,17 @@
     // the OpenGLES 2.0 spec says this must be >= 8
     static const GrGLint kDefaultMaxVaryingVectors = 8;
 
-    static const char* kExtensions[];
-
-    static const GrGLubyte* CombinedExtensionString() {
+    const GrGLubyte* CombinedExtensionString() {
         static SkString gExtString;
         static SkMutex gMutex;
         gMutex.acquire();
         if (0 == gExtString.size()) {
             int i = 0;
-            while (kExtensions[i]) {
+            while (fExtensions[i]) {
                 if (i > 0) {
                     gExtString.append(" ");
                 }
-                gExtString.append(kExtensions[i]);
+                gExtString.append(fExtensions[i]);
                 ++i;
             }
         }
@@ -600,16 +619,6 @@
     typedef GrGLTestInterface INHERITED;
 };
 
-const char* NullInterface::kExtensions[] = {
-    "GL_ARB_framebuffer_object",
-    "GL_ARB_blend_func_extended",
-    "GL_ARB_timer_query",
-    "GL_ARB_draw_buffers",
-    "GL_ARB_occlusion_query",
-    "GL_EXT_stencil_wrap",
-    nullptr, // signifies the end of the array.
-};
-
 }  // anonymous namespace
 
-const GrGLInterface* GrGLCreateNullInterface() { return new NullInterface; }
+const GrGLInterface* GrGLCreateNullInterface(bool enableNVPR) { return new NullInterface(enableNVPR); }