| Index: include/gpu/gl/GrGLExtensions.h | 
| diff --git a/include/gpu/gl/GrGLExtensions.h b/include/gpu/gl/GrGLExtensions.h | 
| index c9f59a2702dfed7a3b3a32f3d4641f2e928b835c..76516cf11f9fff31a7b1044c46aeb65e9fc9d1bb 100644 | 
| --- a/include/gpu/gl/GrGLExtensions.h | 
| +++ b/include/gpu/gl/GrGLExtensions.h | 
| @@ -19,12 +19,17 @@ struct GrGLInterface; | 
| * queried. It supports both glGetString- and glGetStringi-style extension string APIs and will | 
| * use the latter if it is available. | 
| */ | 
| -class GrGLExtensions : public SkNoncopyable { | 
| +class GrGLExtensions { | 
| public: | 
| GrGLExtensions() : fInitialized(false), fStrings(SkNEW(SkTArray<SkString>)) {} | 
|  | 
| +    GrGLExtensions(const GrGLExtensions&); | 
| + | 
| +    GrGLExtensions& operator=(const GrGLExtensions&); | 
| + | 
| void swap(GrGLExtensions* that) { | 
| fStrings.swap(&that->fStrings); | 
| +        SkTSwap(fInitialized, that->fInitialized); | 
| } | 
|  | 
| /** | 
| @@ -42,7 +47,12 @@ public: | 
| /** | 
| * Queries whether an extension is present. This will fail if init() has not been called. | 
| */ | 
| -    bool has(const char*) const; | 
| +    bool has(const char[]) const; | 
| + | 
| +    /** | 
| +     * Removes an extension if present. Returns true if the extension was present before the call. | 
| +     */ | 
| +    bool remove(const char[]); | 
|  | 
| void reset() { fStrings->reset(); } | 
|  | 
|  |