Fix up all the easy virtual ... SK_OVERRIDE cases.

This fixes every case where virtual and SK_OVERRIDE were on the same line,
which should be the bulk of cases.  We'll have to manually clean up the rest
over time unless I level up in regexes.

for f in (find . -type f); perl -p -i -e 's/virtual (.*)SK_OVERRIDE/\1SK_OVERRIDE/g' $f; end

BUG=skia:

Review URL: https://codereview.chromium.org/806653007
diff --git a/gm/aaclip.cpp b/gm/aaclip.cpp
index e7f7f7a..6ac9f0b 100644
--- a/gm/aaclip.cpp
+++ b/gm/aaclip.cpp
@@ -71,15 +71,15 @@
     }
 
 protected:
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("aaclip");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(240, 120);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         // Initial pixel-boundary-aligned draw
         draw_rect_tests(canvas);
 
@@ -101,7 +101,7 @@
         draw_rect_tests(canvas);
     }
 
-    virtual uint32_t onGetFlags() const SK_OVERRIDE { return kSkipPipe_Flag; }
+    uint32_t onGetFlags() const SK_OVERRIDE { return kSkipPipe_Flag; }
 
 private:
     typedef skiagm::GM INHERITED;
@@ -156,15 +156,15 @@
     CGImageGM() {}
 
 protected:
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("cgimage");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(800, 250);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         const struct {
             SkColorType fCT;
             SkAlphaType fAT;
@@ -187,7 +187,7 @@
         }
     }
 
-    virtual uint32_t onGetFlags() const SK_OVERRIDE { return kSkipPipe_Flag; }
+    uint32_t onGetFlags() const SK_OVERRIDE { return kSkipPipe_Flag; }
 
 private:
     typedef skiagm::GM INHERITED;
diff --git a/gm/aarectmodes.cpp b/gm/aarectmodes.cpp
index 041ae19..3c9a683 100644
--- a/gm/aarectmodes.cpp
+++ b/gm/aarectmodes.cpp
@@ -133,17 +133,17 @@
         }
 
     protected:
-        virtual uint32_t onGetFlags() const SK_OVERRIDE {
+        uint32_t onGetFlags() const SK_OVERRIDE {
             return kSkipTiled_Flag;
         }
 
-        virtual SkString onShortName() SK_OVERRIDE {
+        SkString onShortName() SK_OVERRIDE {
             return SkString("aarectmodes");
         }
 
-        virtual SkISize onISize() SK_OVERRIDE { return SkISize::Make(640, 480); }
+        SkISize onISize() SK_OVERRIDE { return SkISize::Make(640, 480); }
 
-        virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+        void onDraw(SkCanvas* canvas) SK_OVERRIDE {
             if (false) { // avoid bit rot, suppress warning
                 test4(canvas);
             }
diff --git a/gm/alphagradients.cpp b/gm/alphagradients.cpp
index 1175911..4fd11ad 100644
--- a/gm/alphagradients.cpp
+++ b/gm/alphagradients.cpp
@@ -14,11 +14,11 @@
     AlphaGradientsGM() {}
 
 protected:
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("alphagradients");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(640, 480);
     }
 
@@ -38,7 +38,7 @@
         canvas->drawRect(r, paint);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         static const struct {
             SkColor fColor0;
             SkColor fColor1;
@@ -72,7 +72,7 @@
         }
     }
 
-    virtual uint32_t onGetFlags() const SK_OVERRIDE { return kSkipPipe_Flag | kSkipTiled_Flag; }
+    uint32_t onGetFlags() const SK_OVERRIDE { return kSkipPipe_Flag | kSkipTiled_Flag; }
 
 private:
     typedef skiagm::GM INHERITED;
diff --git a/gm/arcofzorro.cpp b/gm/arcofzorro.cpp
index 2e5dff8..7748f34 100644
--- a/gm/arcofzorro.cpp
+++ b/gm/arcofzorro.cpp
@@ -20,19 +20,19 @@
     }
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("arcofzorro");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(1000, 1000);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         SkRandom rand;
 
         SkRect rect = SkRect::MakeXYWH(10, 10, 200, 200);
diff --git a/gm/astcbitmap.cpp b/gm/astcbitmap.cpp
index b415a82..808b23e 100644
--- a/gm/astcbitmap.cpp
+++ b/gm/astcbitmap.cpp
@@ -53,15 +53,15 @@
     virtual ~ASTCBitmapGM() { }
 
 protected:
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("astcbitmap");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(kGMDimension, kGMDimension);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         for (int j = 0; j < 4; ++j) {
             for (int i = 0; i < 4; ++i) {
                 SkString filename = GetResourcePath(get_astc_filename(j*4+i));
diff --git a/gm/beziereffects.cpp b/gm/beziereffects.cpp
index dd15aed..b25ba7e 100644
--- a/gm/beziereffects.cpp
+++ b/gm/beziereffects.cpp
@@ -36,21 +36,21 @@
     }
 
 protected:
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("bezier_cubic_effects");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(800, 800);
     }
 
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         // This is a GPU-specific GM.
         return kGPUOnly_Flag;
     }
 
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         GrRenderTarget* rt = canvas->internal_private_accessTopLayerRenderTarget();
         if (NULL == rt) {
             return;
@@ -195,21 +195,21 @@
     }
 
 protected:
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("bezier_conic_effects");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(800, 800);
     }
 
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         // This is a GPU-specific GM.
         return kGPUOnly_Flag;
     }
 
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         GrRenderTarget* rt = canvas->internal_private_accessTopLayerRenderTarget();
         if (NULL == rt) {
             return;
@@ -387,21 +387,21 @@
     }
 
 protected:
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("bezier_quad_effects");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(800, 800);
     }
 
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         // This is a GPU-specific GM.
         return kGPUOnly_Flag;
     }
 
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         GrRenderTarget* rt = canvas->internal_private_accessTopLayerRenderTarget();
         if (NULL == rt) {
             return;
diff --git a/gm/beziers.cpp b/gm/beziers.cpp
index 4fac17b..a35f2a6 100755
--- a/gm/beziers.cpp
+++ b/gm/beziers.cpp
@@ -46,19 +46,19 @@
     BeziersGM() {}
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("beziers");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(W, H*2);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         SkPaint paint;
         paint.setStyle(SkPaint::kStroke_Style);
         paint.setStrokeWidth(SkIntToScalar(9)/2);
diff --git a/gm/bigblurs.cpp b/gm/bigblurs.cpp
index 105bd45..39713c5 100644
--- a/gm/bigblurs.cpp
+++ b/gm/bigblurs.cpp
@@ -23,15 +23,15 @@
     }
 
 protected:
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("bigblurs");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(kWidth, kHeight);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         static const int kBig = 65536;
         static const SkScalar kSigma = SkBlurMask::ConvertRadiusToSigma(SkIntToScalar(4));
 
diff --git a/gm/bigtext.cpp b/gm/bigtext.cpp
index eabad14..bdb3176 100644
--- a/gm/bigtext.cpp
+++ b/gm/bigtext.cpp
@@ -19,19 +19,19 @@
     BigTextGM() {}
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("bigtext");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(640, 480);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         SkPaint paint;
         paint.setAntiAlias(true);
         sk_tool_utils::set_portable_typeface(&paint);
diff --git a/gm/bitmappremul.cpp b/gm/bitmappremul.cpp
index e315faf..975dd67 100644
--- a/gm/bitmappremul.cpp
+++ b/gm/bitmappremul.cpp
@@ -113,11 +113,11 @@
         return SkString("bitmap_premul");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(SLIDE_SIZE * 2, SLIDE_SIZE * 2);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         SkScalar slideSize = SkIntToScalar(SLIDE_SIZE);
         canvas->drawBitmap(make_argb8888_gradient(), 0, 0);
         canvas->drawBitmap(make_argb4444_gradient(), slideSize, 0);
diff --git a/gm/bitmaprect.cpp b/gm/bitmaprect.cpp
index df30106..ae505bf 100644
--- a/gm/bitmaprect.cpp
+++ b/gm/bitmaprect.cpp
@@ -35,24 +35,24 @@
     }
 
 protected:
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         SkString str;
         str.printf("bitmaprect_%s", fUseIRect ? "i" : "s");
         return str;
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(640, 480);
     }
 
 #ifdef SK_CPU_ARM64
     // Skip tiled drawing on 64-bit ARM until https://skbug.com/2908 is fixed.
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 #endif
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         canvas->drawColor(0xFFCCCCCC);
 
         const SkIRect src[] = {
@@ -128,17 +128,17 @@
     }
 
 protected:
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         SkString str;
         str.printf("3x3bitmaprect");
         return str;
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(640, 480);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
 
         SkBitmap bitmap;
         make_3x3_bitmap(&bitmap);
@@ -187,21 +187,21 @@
     }
 
 protected:
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         SkString str;
         str.printf("bigbitmaprect_%s", fUseIRect ? "i" : "s");
         return str;
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(640, 480);
     }
 
-    virtual void onOnceBeforeDraw() SK_OVERRIDE {
+    void onOnceBeforeDraw() SK_OVERRIDE {
         make_big_bitmap(&fBigBitmap);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
 
         SkXfermode* mode = SkXfermode::Create(SkXfermode::kXor_Mode);
 
diff --git a/gm/bitmaprecttest.cpp b/gm/bitmaprecttest.cpp
index 22962cb..dba6374 100644
--- a/gm/bitmaprecttest.cpp
+++ b/gm/bitmaprecttest.cpp
@@ -56,15 +56,15 @@
     }
 
 protected:
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("bitmaprecttest");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(320, 240);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         test_bitmaprect(canvas);
     }
 
diff --git a/gm/bitmapscroll.cpp b/gm/bitmapscroll.cpp
index dff5226..d5c3051 100644
--- a/gm/bitmapscroll.cpp
+++ b/gm/bitmapscroll.cpp
@@ -59,19 +59,19 @@
     }
 
 protected:
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("bitmapscroll");
     }
 
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
       return SkISize::Make(800, 600);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         this->init();
         SkIRect scrollCenterRegion = SkIRect::MakeXYWH(
             quarterWidth, quarterHeight, quarterWidth*2+1, quarterHeight*2+1);
diff --git a/gm/bitmapsource.cpp b/gm/bitmapsource.cpp
index f6badde..1c35a0b 100644
--- a/gm/bitmapsource.cpp
+++ b/gm/bitmapsource.cpp
@@ -17,7 +17,7 @@
     }
 
 protected:
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("bitmapsource");
     }
 
@@ -34,9 +34,9 @@
         canvas.drawText(str, strlen(str), SkIntToScalar(20), SkIntToScalar(70), paint);
     }
 
-    virtual SkISize onISize() SK_OVERRIDE { return SkISize::Make(500, 150); }
+    SkISize onISize() SK_OVERRIDE { return SkISize::Make(500, 150); }
 
-    virtual void onOnceBeforeDraw() SK_OVERRIDE {
+    void onOnceBeforeDraw() SK_OVERRIDE {
         this->makeBitmap();
     }
 
@@ -49,7 +49,7 @@
         canvas->restore();
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         canvas->clear(0x00000000);
         {
             SkRect srcRect = SkRect::MakeXYWH(20, 20, 30, 30);
diff --git a/gm/bleed.cpp b/gm/bleed.cpp
index aa2b0df..e361926 100644
--- a/gm/bleed.cpp
+++ b/gm/bleed.cpp
@@ -85,19 +85,19 @@
     BleedGM() {}
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("bleed");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(kWidth, 780);
     }
 
-    virtual void onOnceBeforeDraw() SK_OVERRIDE {
+    void onOnceBeforeDraw() SK_OVERRIDE {
         make_ringed_bitmap(&fBitmapSmall, kSmallTextureSize, kSmallTextureSize);
 
         // To exercise the GPU's tiling path we need a texture
@@ -176,7 +176,7 @@
         canvas->restore();
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
 
         canvas->clear(SK_ColorGRAY);
 
diff --git a/gm/blurcircles.cpp b/gm/blurcircles.cpp
index 44f4d6d..0e7f916 100644
--- a/gm/blurcircles.cpp
+++ b/gm/blurcircles.cpp
@@ -19,19 +19,19 @@
     }
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return fName;
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(950, 950);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         canvas->scale(1.5f, 1.5f);
         canvas->translate(50,50);
 
diff --git a/gm/blurquickreject.cpp b/gm/blurquickreject.cpp
index ae5b689..7c74fdf 100644
--- a/gm/blurquickreject.cpp
+++ b/gm/blurquickreject.cpp
@@ -22,15 +22,15 @@
     BlurQuickRejectGM() {}
 
 protected:
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("blurquickreject");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(kWidth, kHeight);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         static const SkScalar kBlurRadius = SkIntToScalar(20);
         static const SkScalar kBoxSize = SkIntToScalar(100);
 
diff --git a/gm/blurrect.cpp b/gm/blurrect.cpp
index 61e18bd..a47b9cd 100644
--- a/gm/blurrect.cpp
+++ b/gm/blurrect.cpp
@@ -93,7 +93,7 @@
     }
 
 protected:
-    virtual void onOnceBeforeDraw() SK_OVERRIDE {
+    void onOnceBeforeDraw() SK_OVERRIDE {
         for (int i = 0; i <= kLastEnum_SkBlurStyle; ++i) {
             fMaskFilters[i].reset(SkBlurMaskFilter::Create((SkBlurStyle)i,
                                   SkBlurMask::ConvertRadiusToSigma(SkIntToScalar(STROKE_WIDTH/2)),
@@ -101,15 +101,15 @@
         }
     }
 
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return fName;
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(860, 820);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         canvas->translate(STROKE_WIDTH*3/2, STROKE_WIDTH*3/2);
 
         SkRect  r = { 0, 0, 100, 50 };
@@ -147,7 +147,7 @@
         }
     }
 
-    virtual uint32_t onGetFlags() const SK_OVERRIDE { return kSkipPipe_Flag | kSkipTiled_Flag; }
+    uint32_t onGetFlags() const SK_OVERRIDE { return kSkipPipe_Flag | kSkipTiled_Flag; }
 
 private:
     void drawProcs(SkCanvas* canvas, const SkRect& r, const SkPaint& paint,
@@ -335,7 +335,7 @@
         }
 
 protected:
-    virtual bool makeMask(SkMask *m, const SkRect& r) SK_OVERRIDE {
+    bool makeMask(SkMask *m, const SkRect& r) SK_OVERRIDE {
         return SkBlurMask::BlurRect(SkBlurMask::ConvertRadiusToSigma(this->radius()),
                                     m, r, this->style());
     }
@@ -351,7 +351,7 @@
         }
 
 protected:
-    virtual bool makeMask(SkMask *m, const SkRect& r) SK_OVERRIDE {
+    bool makeMask(SkMask *m, const SkRect& r) SK_OVERRIDE {
         SkMask src;
         r.roundOut(&src.fBounds);
         src.fBounds.offset(-src.fBounds.fLeft, -src.fBounds.fTop);  // move to origin
@@ -382,7 +382,7 @@
         }
 
 protected:
-    virtual SkBlurQuality getQuality() SK_OVERRIDE {
+    SkBlurQuality getQuality() SK_OVERRIDE {
         return kLow_SkBlurQuality;
     }
 private:
@@ -397,7 +397,7 @@
         }
 
 protected:
-    virtual bool makeMask(SkMask *m, const SkRect& r) SK_OVERRIDE {
+    bool makeMask(SkMask *m, const SkRect& r) SK_OVERRIDE {
         SkMask src;
         r.roundOut(&src.fBounds);
         src.fBounds.offset(-src.fBounds.fLeft, -src.fBounds.fTop);  // move to origin
diff --git a/gm/blurroundrect.cpp b/gm/blurroundrect.cpp
index 1819ac2..c8468fe 100644
--- a/gm/blurroundrect.cpp
+++ b/gm/blurroundrect.cpp
@@ -42,16 +42,16 @@
         fRRect.setRectRadii(r, radii);
     }
 
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return fName;
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(SkScalarCeilToInt(fRRect.rect().width()),
                              SkScalarCeilToInt(fRRect.rect().height()));
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         SkLayerDrawLooper::Builder looperBuilder;
         {
             SkLayerDrawLooper::LayerInfo info;
@@ -126,19 +126,19 @@
     }
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return fName;
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(1000, 500);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         canvas->scale(1.5f, 1.5f);
         canvas->translate(50,50);
 
diff --git a/gm/blurs.cpp b/gm/blurs.cpp
index dfa95ce..d5bb7d2 100644
--- a/gm/blurs.cpp
+++ b/gm/blurs.cpp
@@ -16,19 +16,19 @@
     }
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("blurs");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(700, 500);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         SkBlurStyle NONE = SkBlurStyle(-999);
         static const struct {
             SkBlurStyle fStyle;
diff --git a/gm/circles.cpp b/gm/circles.cpp
index 6fa682c..b513ccb 100644
--- a/gm/circles.cpp
+++ b/gm/circles.cpp
@@ -25,15 +25,15 @@
     }
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("circles");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(1200, 900);
     }
 
@@ -155,7 +155,7 @@
         }
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         // Draw a giant AA circle as the background.
         SkISize size = this->getISize();
         SkScalar giantRadius = SkTMin(SkIntToScalar(size.fWidth),
diff --git a/gm/circularclips.cpp b/gm/circularclips.cpp
index 81803a3..6a8415c 100644
--- a/gm/circularclips.cpp
+++ b/gm/circularclips.cpp
@@ -25,19 +25,19 @@
     }
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag | kAsBench_Flag;
     }
 
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("circular-clips");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(800, 600);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         SkRegion::Op ops[] = {
             SkRegion::kDifference_Op,
             SkRegion::kIntersect_Op,
diff --git a/gm/clip_strokerect.cpp b/gm/clip_strokerect.cpp
index da79ed8..f7c18e7 100644
--- a/gm/clip_strokerect.cpp
+++ b/gm/clip_strokerect.cpp
@@ -16,15 +16,15 @@
     }
 
 protected:
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("clip_strokerect");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(200, 400);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         SkPaint p;
         p.setColor(SK_ColorRED);
         p.setAntiAlias(true);
@@ -63,7 +63,7 @@
         canvas->drawRect(rect2, p);
     }
 
-    virtual uint32_t onGetFlags() const SK_OVERRIDE { return kSkipPipe_Flag; }
+    uint32_t onGetFlags() const SK_OVERRIDE { return kSkipPipe_Flag; }
 
 private:
     typedef skiagm::GM INHERITED;
diff --git a/gm/cmykjpeg.cpp b/gm/cmykjpeg.cpp
index 5371fe2..061c442 100644
--- a/gm/cmykjpeg.cpp
+++ b/gm/cmykjpeg.cpp
@@ -22,7 +22,7 @@
     CMYKJpegGM() {}
 
 protected:
-    virtual void onOnceBeforeDraw() SK_OVERRIDE {
+    void onOnceBeforeDraw() SK_OVERRIDE {
         // parameters to the "decode" call
         bool dither = false;
 
diff --git a/gm/coloremoji.cpp b/gm/coloremoji.cpp
index 51ac923..c083f31 100644
--- a/gm/coloremoji.cpp
+++ b/gm/coloremoji.cpp
@@ -54,7 +54,7 @@
         SkSafeUnref(fTypeface);
     }
 protected:
-    virtual void onOnceBeforeDraw() SK_OVERRIDE {
+    void onOnceBeforeDraw() SK_OVERRIDE {
         SkString filename = GetResourcePath("/Funkster.ttf");
         SkAutoTUnref<SkFILEStream> stream(new SkFILEStream(filename.c_str()));
         if (!stream->isValid()) {
@@ -65,15 +65,15 @@
         fTypeface = SkTypeface::CreateFromStream(stream);
     }
 
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("coloremoji");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(650, 480);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
 
         canvas->drawColor(SK_ColorGRAY);
 
diff --git a/gm/colorfilters.cpp b/gm/colorfilters.cpp
index 5af2122..9f278a5 100644
--- a/gm/colorfilters.cpp
+++ b/gm/colorfilters.cpp
@@ -49,11 +49,11 @@
         return SkISize::Make(640, 480);
     }
 
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         SkPaint paint;
         SkRect r;
         r.setWH(600, 50);
diff --git a/gm/colortype.cpp b/gm/colortype.cpp
index 1d6dfad..9b541fa 100644
--- a/gm/colortype.cpp
+++ b/gm/colortype.cpp
@@ -40,15 +40,15 @@
     }
 
 protected:
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("colortype");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(640, 480);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         SkPaint paint;
         paint.setAntiAlias(true);
         paint.setTypeface(fColorType);
diff --git a/gm/colortypexfermode.cpp b/gm/colortypexfermode.cpp
index 89656c4..cd1b249 100644
--- a/gm/colortypexfermode.cpp
+++ b/gm/colortypexfermode.cpp
@@ -18,7 +18,7 @@
 class ColorTypeXfermodeGM : public GM {
     SkBitmap    fBG;
 
-    virtual void onOnceBeforeDraw() SK_OVERRIDE {
+    void onOnceBeforeDraw() SK_OVERRIDE {
         fBG.installPixels(SkImageInfo::Make(2, 2, kARGB_4444_SkColorType,
                                             kOpaque_SkAlphaType), gData, 4);
     }
diff --git a/gm/complexclip.cpp b/gm/complexclip.cpp
index ebb7707..f3d5a33 100644
--- a/gm/complexclip.cpp
+++ b/gm/complexclip.cpp
@@ -27,7 +27,7 @@
     }
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
diff --git a/gm/complexclip2.cpp b/gm/complexclip2.cpp
index 8688c86..64cf3c8 100644
--- a/gm/complexclip2.cpp
+++ b/gm/complexclip2.cpp
@@ -111,7 +111,7 @@
         return "";
     }
 
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         if (kRect_Clip != fClip) {
             return kSkipTiled_Flag;
         }
diff --git a/gm/composeshader.cpp b/gm/composeshader.cpp
index c9c8fe4..76ff8ed 100644
--- a/gm/composeshader.cpp
+++ b/gm/composeshader.cpp
@@ -49,15 +49,15 @@
     }
 
 protected:
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("composeshader");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(120, 120);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
 
         SkPaint paint;
 
@@ -79,15 +79,15 @@
     ComposeShaderAlphaGM() {}
 
 protected:
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("composeshader_alpha");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(220, 750);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         SkAutoTUnref<SkShader> shader0(make_shader(SkXfermode::kDstIn_Mode));
         SkAutoTUnref<SkShader> shader1(make_shader(SkXfermode::kSrcOver_Mode));
         SkShader* shaders[] = { shader0.get(), shader1.get() };
diff --git a/gm/convexpaths.cpp b/gm/convexpaths.cpp
index 4f9633d..01497b5 100644
--- a/gm/convexpaths.cpp
+++ b/gm/convexpaths.cpp
@@ -34,7 +34,7 @@
     }
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
diff --git a/gm/convexpolyclip.cpp b/gm/convexpolyclip.cpp
index 328cdb5..f7aac89 100644
--- a/gm/convexpolyclip.cpp
+++ b/gm/convexpolyclip.cpp
@@ -79,11 +79,11 @@
     }
 
 protected:
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("convex_poly_clip");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         // When benchmarking the saveLayer set of draws is skipped.
         int w = 435;
         if (kBench_Mode != this->getMode()) {
@@ -92,7 +92,7 @@
         return SkISize::Make(w, 540);
     }
 
-    virtual void onOnceBeforeDraw() SK_OVERRIDE {
+    void onOnceBeforeDraw() SK_OVERRIDE {
         SkPath tri;
         tri.moveTo(5.f, 5.f);
         tri.lineTo(100.f, 20.f);
@@ -135,7 +135,7 @@
         fBmp = make_bmp(100, 100);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         SkScalar y = 0;
         static const SkScalar kMargin = 10.f;
 
diff --git a/gm/convexpolyeffect.cpp b/gm/convexpolyeffect.cpp
index 68610e0..1ec7853 100644
--- a/gm/convexpolyeffect.cpp
+++ b/gm/convexpolyeffect.cpp
@@ -34,20 +34,20 @@
     }
 
 protected:
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("convex_poly_effect");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(720, 800);
     }
 
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         // This is a GPU-specific GM.
         return kGPUOnly_Flag;
     }
 
-    virtual void onOnceBeforeDraw() SK_OVERRIDE {
+    void onOnceBeforeDraw() SK_OVERRIDE {
         SkPath tri;
         tri.moveTo(5.f, 5.f);
         tri.lineTo(100.f, 20.f);
@@ -97,7 +97,7 @@
         fRects.addToTail(SkRect::MakeLTRB(100.f, 50.5f, 5.f, 0.5f));
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         GrRenderTarget* rt = canvas->internal_private_accessTopLayerRenderTarget();
         if (NULL == rt) {
             return;
diff --git a/gm/cubicpaths.cpp b/gm/cubicpaths.cpp
index 9c6cffb..bf05db7 100644
--- a/gm/cubicpaths.cpp
+++ b/gm/cubicpaths.cpp
@@ -16,7 +16,7 @@
     ClippedCubicGM() {}
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
@@ -59,7 +59,7 @@
     CubicPathGM() {}
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
@@ -208,7 +208,7 @@
     CubicClosePathGM() {}
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
diff --git a/gm/dashcubics.cpp b/gm/dashcubics.cpp
index 1e23f15..3d2d8d1 100644
--- a/gm/dashcubics.cpp
+++ b/gm/dashcubics.cpp
@@ -20,7 +20,7 @@
     DashCubicsGM() {}
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
diff --git a/gm/dashing.cpp b/gm/dashing.cpp
index 7e32bfa..a5d234f 100644
--- a/gm/dashing.cpp
+++ b/gm/dashing.cpp
@@ -49,7 +49,7 @@
     DashingGM() {}
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
@@ -136,7 +136,7 @@
     Dashing2GM() {}
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
@@ -198,7 +198,7 @@
     Dashing3GM() {}
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
@@ -331,7 +331,7 @@
     Dashing4GM() {}
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
@@ -414,9 +414,9 @@
     Dashing5GM(bool doAA) : fDoAA(doAA) {}
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE { return kAsBench_Flag | kSkipTiled_Flag; }
+    uint32_t onGetFlags() const SK_OVERRIDE { return kAsBench_Flag | kSkipTiled_Flag; }
 
-    virtual SkString onShortName() SK_OVERRIDE { 
+    SkString onShortName() SK_OVERRIDE { 
         if (fDoAA) {
             return SkString("dashing5_aa");
         } else {
@@ -424,9 +424,9 @@
         }
     }
 
-    virtual SkISize onISize() SK_OVERRIDE { return SkISize::Make(400, 200); }
+    SkISize onISize() SK_OVERRIDE { return SkISize::Make(400, 200); }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         static const int kOn = 4;
         static const int kOff = 4;
         static const int kIntervalLength = kOn + kOff;
diff --git a/gm/degeneratesegments.cpp b/gm/degeneratesegments.cpp
index 5435d53..09de2ee 100644
--- a/gm/degeneratesegments.cpp
+++ b/gm/degeneratesegments.cpp
@@ -22,7 +22,7 @@
         const char* fName2;
     };
 
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
diff --git a/gm/dftext.cpp b/gm/dftext.cpp
index d501e58..36b8d55 100755
--- a/gm/dftext.cpp
+++ b/gm/dftext.cpp
@@ -23,7 +23,7 @@
     }
 
 protected:
-    virtual void onOnceBeforeDraw() SK_OVERRIDE {
+    void onOnceBeforeDraw() SK_OVERRIDE {
         SkString filename = GetResourcePath("/Funkster.ttf");
         SkAutoTUnref<SkFILEStream> stream(new SkFILEStream(filename.c_str()));
         if (!stream->isValid()) {
@@ -34,15 +34,15 @@
         fTypeface = SkTypeface::CreateFromStream(stream);
     }
 
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kGPUOnly_Flag;
     }
 
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("dftext");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(1024, 768);
     }
 
diff --git a/gm/discard.cpp b/gm/discard.cpp
index ff8fe4a..58a0849 100644
--- a/gm/discard.cpp
+++ b/gm/discard.cpp
@@ -25,18 +25,18 @@
     DiscardGM() {
     }
 
-    virtual uint32_t onGetFlags() const SK_OVERRIDE { return kGPUOnly_Flag; }
+    uint32_t onGetFlags() const SK_OVERRIDE { return kGPUOnly_Flag; }
 
 protected:
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("discard");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(100, 100);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         GrContext* context = canvas->getGrContext();
         if (NULL == context) {
             return;
diff --git a/gm/downsamplebitmap.cpp b/gm/downsamplebitmap.cpp
index 994ab94..ce10b47 100644
--- a/gm/downsamplebitmap.cpp
+++ b/gm/downsamplebitmap.cpp
@@ -40,15 +40,15 @@
     }
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return fName;
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         make_bitmap_wrapper();
         return SkISize::Make(fBM.width(), 4 * fBM.height());
     }
@@ -62,7 +62,7 @@
 
     virtual void make_bitmap() = 0;
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         make_bitmap_wrapper();
 
         int curY = 0;
@@ -103,7 +103,7 @@
   protected:
       float fTextSize;
 
-      virtual void make_bitmap() SK_OVERRIDE {
+      void make_bitmap() SK_OVERRIDE {
           fBM.allocN32Pixels(int(fTextSize * 8), int(fTextSize * 6));
           SkCanvas canvas(fBM);
           canvas.drawColor(SK_ColorWHITE);
@@ -138,7 +138,7 @@
       int fSize;
       int fNumChecks;
 
-      virtual void make_bitmap() SK_OVERRIDE {
+      void make_bitmap() SK_OVERRIDE {
           fBM.allocN32Pixels(fSize, fSize);
           for (int y = 0; y < fSize; ++y) {
               for (int x = 0; x < fSize; ++x) {
@@ -169,7 +169,7 @@
       SkString fFilename;
       int fSize;
 
-      virtual void make_bitmap() SK_OVERRIDE {
+      void make_bitmap() SK_OVERRIDE {
           SkImageDecoder* codec = NULL;
           SkString resourcePath = GetResourcePath(fFilename.c_str());
           SkFILEStream stream(resourcePath.c_str());
diff --git a/gm/drawlooper.cpp b/gm/drawlooper.cpp
index a1b55bb..1d16fb5 100644
--- a/gm/drawlooper.cpp
+++ b/gm/drawlooper.cpp
@@ -31,11 +31,11 @@
         return SkISize::Make(520, 160);
     }
 
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("drawlooper");
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         this->init();
 
         SkPaint  paint;
diff --git a/gm/drrect.cpp b/gm/drrect.cpp
index d7cd894..16c45b7 100644
--- a/gm/drrect.cpp
+++ b/gm/drrect.cpp
@@ -15,19 +15,19 @@
     DRRectGM() {}
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("drrect");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(640, 480);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         SkPaint paint;
         paint.setAntiAlias(true);
 
diff --git a/gm/emboss.cpp b/gm/emboss.cpp
index c2ee497..a72e64d 100644
--- a/gm/emboss.cpp
+++ b/gm/emboss.cpp
@@ -29,15 +29,15 @@
     }
 
 protected:
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("emboss");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(600, 120);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         SkPaint paint;
         SkBitmap bm = make_bm();
         canvas->drawBitmap(bm, 10, 10, &paint);
diff --git a/gm/etc1bitmap.cpp b/gm/etc1bitmap.cpp
index 76593f4..e93ed1d 100644
--- a/gm/etc1bitmap.cpp
+++ b/gm/etc1bitmap.cpp
@@ -81,19 +81,19 @@
     virtual ~ETC1BitmapGM() { }
 
 protected:
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         SkString str = SkString("etc1bitmap_");
         str.append(this->fileExtension());
         return str;
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(128, 128);
     }
 
     virtual SkString fileExtension() const = 0;
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         SkBitmap bm;
         SkString filename = GetResourcePath("mandrill_128.");
         filename.append(this->fileExtension());
@@ -123,7 +123,7 @@
 
 protected:
 
-    virtual SkString fileExtension() const SK_OVERRIDE { return SkString("pkm"); }
+    SkString fileExtension() const SK_OVERRIDE { return SkString("pkm"); }
 
 private:
     typedef ETC1BitmapGM INHERITED;
@@ -137,7 +137,7 @@
 
 protected:
 
-    virtual SkString fileExtension() const SK_OVERRIDE { return SkString("ktx"); }
+    SkString fileExtension() const SK_OVERRIDE { return SkString("ktx"); }
 
 private:
     typedef ETC1BitmapGM INHERITED;
@@ -151,7 +151,7 @@
 
 protected:
 
-    virtual SkString fileExtension() const SK_OVERRIDE { return SkString("r11.ktx"); }
+    SkString fileExtension() const SK_OVERRIDE { return SkString("r11.ktx"); }
 
 private:
     typedef ETC1BitmapGM INHERITED;
@@ -170,15 +170,15 @@
     virtual ~ETC1Bitmap_NPOT_GM() { }
 
 protected:
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("etc1bitmap_npot");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(124, 124);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         SkBitmap bm;
         SkString pkmFilename = GetResourcePath("mandrill_128.pkm");
         SkAutoDataUnref fileData(SkData::NewFromFileName(pkmFilename.c_str()));
diff --git a/gm/extractbitmap.cpp b/gm/extractbitmap.cpp
index 711a20a..c324483 100644
--- a/gm/extractbitmap.cpp
+++ b/gm/extractbitmap.cpp
@@ -32,15 +32,15 @@
 
 protected:
     // overrides from SkEventSink
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("extractbitmap");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(600, 600);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         SkBitmap bitmap;
         create_bitmap(&bitmap);
         int x = bitmap.width() / 2;
diff --git a/gm/factory.cpp b/gm/factory.cpp
index 9cc5bb8..a2dc4dd 100644
--- a/gm/factory.cpp
+++ b/gm/factory.cpp
@@ -27,7 +27,7 @@
     FactoryGM() {}
 
 protected:
-    virtual void onOnceBeforeDraw() SK_OVERRIDE {
+    void onOnceBeforeDraw() SK_OVERRIDE {
         // Copyright-free file from http://openclipart.org/detail/29213/paper-plane-by-ddoo
         SkString pngFilename = GetResourcePath("plane.png");
         SkAutoDataUnref data(SkData::NewFromFileName(pngFilename.c_str()));
diff --git a/gm/fatpathfill.cpp b/gm/fatpathfill.cpp
index 176c7bf..e4b8a8d 100644
--- a/gm/fatpathfill.cpp
+++ b/gm/fatpathfill.cpp
@@ -56,7 +56,7 @@
     FatPathFillGM() {}
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
diff --git a/gm/filltypes.cpp b/gm/filltypes.cpp
index dbbe4fe..0d7e2c6 100644
--- a/gm/filltypes.cpp
+++ b/gm/filltypes.cpp
@@ -25,15 +25,15 @@
     }
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("filltypes");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(835, 840);
     }
 
@@ -64,7 +64,7 @@
                  scale, paint);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         this->makePath();
 
         canvas->translate(SkIntToScalar(20), SkIntToScalar(20));
diff --git a/gm/filltypespersp.cpp b/gm/filltypespersp.cpp
index 3fff059..e9cf6a7 100644
--- a/gm/filltypespersp.cpp
+++ b/gm/filltypespersp.cpp
@@ -24,15 +24,15 @@
     }
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("filltypespersp");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(835, 840);
     }
 
@@ -76,7 +76,7 @@
                  scale, paint);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         this->makePath();
 
         // do perspective drawPaint as the background;
diff --git a/gm/filterbitmap.cpp b/gm/filterbitmap.cpp
index b4c5f6a..57041fb 100644
--- a/gm/filterbitmap.cpp
+++ b/gm/filterbitmap.cpp
@@ -70,22 +70,22 @@
     }
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return fName;
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(1024, 768);
     }
 
     virtual void makeBitmap() = 0;
     virtual SkScalar getScale() = 0;
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
 
         canvas->translate(10, 10);
         for (size_t i = 0; i < SK_ARRAY_COUNT(fMatrix); ++i) {
diff --git a/gm/filterindiabox.cpp b/gm/filterindiabox.cpp
index 04e2087..35ccf6e 100644
--- a/gm/filterindiabox.cpp
+++ b/gm/filterindiabox.cpp
@@ -70,22 +70,22 @@
     }
 
 protected:
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return fName;
     }
 
 #ifdef SK_CPU_ARM64
     // Skip tiled drawing on 64-bit ARM until https://skbug.com/2908 is fixed.
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 #endif
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(1024, 768);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         canvas->translate(10, 10);
         for (size_t i = 0; i < SK_ARRAY_COUNT(fMatrix); ++i) {
             SkSize size = computeSize(fBM, fMatrix[i]);
diff --git a/gm/fontcache.cpp b/gm/fontcache.cpp
index 99554a2..3363e24 100644
--- a/gm/fontcache.cpp
+++ b/gm/fontcache.cpp
@@ -47,15 +47,15 @@
     }
 
 protected:
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("fontcache");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(1280, 640);
     }
 
-    virtual void onOnceBeforeDraw() SK_OVERRIDE {
+    void onOnceBeforeDraw() SK_OVERRIDE {
         int typefaceCount = 0;
         for (size_t i = 0; i < SK_ARRAY_COUNT(gFamilyNames); ++i) {
             for (size_t j = 0; j < SK_ARRAY_COUNT(gStyles); ++j) {
@@ -65,7 +65,7 @@
         }
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         SkScalar y = 32;
         SkPaint paint;
         paint.setAntiAlias(true);
@@ -88,7 +88,7 @@
 
     }
 
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         // this GM is meant only for the GPU
         return kGPUOnly_Flag;
     }
diff --git a/gm/fontmgr.cpp b/gm/fontmgr.cpp
index a7ff8a8..9d0e350 100644
--- a/gm/fontmgr.cpp
+++ b/gm/fontmgr.cpp
@@ -68,15 +68,15 @@
     }
 
 protected:
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return fName;
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(1536, 768);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         SkScalar y = 20;
         SkPaint paint;
         paint.setAntiAlias(true);
@@ -115,7 +115,7 @@
         }
     }
 
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         // fontdescriptors (and therefore serialization) don't yet understand
         // these new styles, so skip tests that exercise that for now.
 
@@ -140,11 +140,11 @@
     }
 
 protected:
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("fontmgr_match");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(640, 1024);
     }
 
@@ -186,7 +186,7 @@
         }
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         SkPaint paint;
         paint.setAntiAlias(true);
         paint.setLCDRenderText(true);
@@ -214,7 +214,7 @@
         this->iterateFamily(canvas, paint, fset);
     }
 
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         // fontdescriptors (and therefore serialization) don't yet understand
         // these new styles, so skip tests that exercise that for now.
         return kSkipPicture_Flag | kSkipPipe_Flag;
@@ -253,15 +253,15 @@
     }
 
 protected:
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return fName;
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(1024, 850);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         SkPaint paint;
         paint.setAntiAlias(true);
         paint.setSubpixelText(true);
@@ -300,7 +300,7 @@
         }
     }
     
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         // fontdescriptors (and therefore serialization) don't yet understand
         // these new styles, so skip tests that exercise that for now.
         
diff --git a/gm/fontscaler.cpp b/gm/fontscaler.cpp
index 6fd763c..99af04e 100644
--- a/gm/fontscaler.cpp
+++ b/gm/fontscaler.cpp
@@ -19,15 +19,15 @@
     }
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("fontscaler");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(1450, 750);
     }
 
@@ -39,7 +39,7 @@
         canvas->translate(-px, -py);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         SkPaint paint;
 
         paint.setAntiAlias(true);
diff --git a/gm/gammatext.cpp b/gm/gammatext.cpp
index 7108669..0580989 100644
--- a/gm/gammatext.cpp
+++ b/gm/gammatext.cpp
@@ -138,7 +138,7 @@
         }
     }
 
-    virtual ~GammaShaderTextGM() SK_OVERRIDE {
+    ~GammaShaderTextGM() SK_OVERRIDE {
         for (size_t i = 0; i < SK_ARRAY_COUNT(fShaders); ++i) {
             SkSafeUnref(fShaders[i]);
         }
diff --git a/gm/getpostextpath.cpp b/gm/getpostextpath.cpp
index 8cad512..c5e01b6 100644
--- a/gm/getpostextpath.cpp
+++ b/gm/getpostextpath.cpp
@@ -16,7 +16,7 @@
     GetPosTextPathGM() {}
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
@@ -34,7 +34,7 @@
         canvas->drawPath(path, paint);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         // explicitly add spaces, to test a prev. bug
         const char* text = "Ham bur ge fons";
         int len = SkToInt(strlen(text));
diff --git a/gm/giantbitmap.cpp b/gm/giantbitmap.cpp
index 87aee36..d382269 100644
--- a/gm/giantbitmap.cpp
+++ b/gm/giantbitmap.cpp
@@ -71,7 +71,7 @@
     }
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
 #ifdef SK_BUILD_FOR_ANDROID
         return kSkipTiled_Flag;
 #else
@@ -82,7 +82,7 @@
 #endif
     }
 
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         SkString str("giantbitmap_");
         switch (fMode) {
             case SkShader::kClamp_TileMode:
@@ -102,9 +102,9 @@
         return str;
     }
 
-    virtual SkISize onISize() SK_OVERRIDE { return SkISize::Make(640, 480); }
+    SkISize onISize() SK_OVERRIDE { return SkISize::Make(640, 480); }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         SkPaint paint;
 
         SkMatrix m;
diff --git a/gm/glyph_pos.cpp b/gm/glyph_pos.cpp
index dd814cf..893de13 100644
--- a/gm/glyph_pos.cpp
+++ b/gm/glyph_pos.cpp
@@ -27,11 +27,11 @@
         }
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         SkString str("glyph_pos");
         if (fStrokeWidth == 0.0f) {
             str.append("_h"); // h == Hairline.
@@ -48,9 +48,9 @@
         return str;
     }
 
-    virtual SkISize onISize() SK_OVERRIDE { return SkISize::Make(800, 600); }
+    SkISize onISize() SK_OVERRIDE { return SkISize::Make(800, 600); }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         if (!fProp) {
             fProp.reset(sk_tool_utils::create_portable_typeface("Helvetica", SkTypeface::kNormal));
         }
diff --git a/gm/glyph_pos_align.cpp b/gm/glyph_pos_align.cpp
index 3ce3a88..ef2eae2 100644
--- a/gm/glyph_pos_align.cpp
+++ b/gm/glyph_pos_align.cpp
@@ -21,17 +21,17 @@
 
 class GlyphPosAlignGM : public GM {
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("glyph_pos_align");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE { return SkISize::Make(kWidth, kHeight); }
+    SkISize onISize() SK_OVERRIDE { return SkISize::Make(kWidth, kHeight); }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         canvas->clear(SK_ColorBLACK);
 
         SkPaint paint;
diff --git a/gm/gm.h b/gm/gm.h
index 9ba9f45..703fc90 100644
--- a/gm/gm.h
+++ b/gm/gm.h
@@ -27,11 +27,11 @@
 // See colorwheel.cpp for example usage.
 #define DEF_SIMPLE_GM(NAME, CANVAS, W, H)                     \
     class SK_MACRO_CONCAT(NAME, _GM) : public skiagm::GM {    \
-        virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE;    \
-        virtual SkISize onISize() SK_OVERRIDE {               \
+        void onDraw(SkCanvas* canvas) SK_OVERRIDE;    \
+        SkISize onISize() SK_OVERRIDE {               \
             return SkISize::Make((W), (H));                   \
         }                                                     \
-        virtual SkString onShortName() SK_OVERRIDE {          \
+        SkString onShortName() SK_OVERRIDE {          \
             return SkString(#NAME);                           \
         }                                                     \
     };                                                        \
diff --git a/gm/gmmain.cpp b/gm/gmmain.cpp
index 6201950..8f6d53a 100644
--- a/gm/gmmain.cpp
+++ b/gm/gmmain.cpp
@@ -174,7 +174,7 @@
 
 class BWTextDrawFilter : public SkDrawFilter {
 public:
-    virtual bool filter(SkPaint*, Type) SK_OVERRIDE;
+    bool filter(SkPaint*, Type) SK_OVERRIDE;
 };
 bool BWTextDrawFilter::filter(SkPaint* p, Type t) {
     if (kText_Type == t) {
diff --git a/gm/gradientDirtyLaundry.cpp b/gm/gradientDirtyLaundry.cpp
index a452763..8c27b8f 100644
--- a/gm/gradientDirtyLaundry.cpp
+++ b/gm/gradientDirtyLaundry.cpp
@@ -71,9 +71,9 @@
 
 protected:
     SkString onShortName() SK_OVERRIDE { return SkString("gradient_dirty_laundry"); }
-    virtual SkISize onISize() SK_OVERRIDE { return SkISize::Make(640, 615); }
+    SkISize onISize() SK_OVERRIDE { return SkISize::Make(640, 615); }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         SkPoint pts[2] = { { 0, 0 },
                            { SkIntToScalar(100), SkIntToScalar(100) }
         };
diff --git a/gm/gradient_matrix.cpp b/gm/gradient_matrix.cpp
index 275acc8..94f40cb 100644
--- a/gm/gradient_matrix.cpp
+++ b/gm/gradient_matrix.cpp
@@ -120,7 +120,7 @@
     }
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
@@ -128,11 +128,11 @@
         return SkString("gradient_matrix");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(800, 800);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         draw_gradients(canvas, &make_linear_gradient,
                       linearPts, SK_ARRAY_COUNT(linearPts));
 
diff --git a/gm/gradients.cpp b/gm/gradients.cpp
index 481b476..98093ab 100644
--- a/gm/gradients.cpp
+++ b/gm/gradients.cpp
@@ -105,7 +105,7 @@
     }
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
@@ -162,7 +162,7 @@
     }
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
@@ -334,16 +334,16 @@
     RadialGradientGM() {}
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
     SkString onShortName() SK_OVERRIDE { return SkString("radial_gradient"); }
-    virtual SkISize onISize() SK_OVERRIDE { return SkISize::Make(1280, 1280); }
+    SkISize onISize() SK_OVERRIDE { return SkISize::Make(1280, 1280); }
     void drawBG(SkCanvas* canvas) {
         canvas->drawColor(0xFF000000);
     }
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         const SkISize dim = this->getISize();
 
         this->drawBG(canvas);
@@ -377,18 +377,18 @@
     RadialGradient2GM() {}
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
     SkString onShortName() SK_OVERRIDE { return SkString("radial_gradient2"); }
-    virtual SkISize onISize() SK_OVERRIDE { return SkISize::Make(800, 400); }
+    SkISize onISize() SK_OVERRIDE { return SkISize::Make(800, 400); }
     void drawBG(SkCanvas* canvas) {
         canvas->drawColor(0xFF000000);
     }
 
     // Reproduces the example given in bug 7671058.
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         SkPaint paint1, paint2, paint3;
         paint1.setStyle(SkPaint::kFill_Style);
         paint2.setStyle(SkPaint::kFill_Style);
diff --git a/gm/gradients_no_texture.cpp b/gm/gradients_no_texture.cpp
index 041807b..789137b 100644
--- a/gm/gradients_no_texture.cpp
+++ b/gm/gradients_no_texture.cpp
@@ -85,14 +85,14 @@
     }
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
     SkString onShortName() SK_OVERRIDE { return SkString("gradients_no_texture"); }
-    virtual SkISize onISize() SK_OVERRIDE { return SkISize::Make(640, 615); }
+    SkISize onISize() SK_OVERRIDE { return SkISize::Make(640, 615); }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         static const SkPoint kPts[2] = { { 0, 0 },
                                          { SkIntToScalar(50), SkIntToScalar(50) } };
         static const SkShader::TileMode kTM = SkShader::kClamp_TileMode;
@@ -211,14 +211,14 @@
     GradientsManyColorsGM() {}
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
     SkString onShortName() SK_OVERRIDE { return SkString("gradients_many"); }
-    virtual SkISize onISize() SK_OVERRIDE { return SkISize::Make(850, 100); }
+    SkISize onISize() SK_OVERRIDE { return SkISize::Make(850, 100); }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         const Proc procs[] = {
             make0, make1, make2,
         };
diff --git a/gm/gradtext.cpp b/gm/gradtext.cpp
index 11dc29c..f2123df 100644
--- a/gm/gradtext.cpp
+++ b/gm/gradtext.cpp
@@ -102,7 +102,7 @@
     GradTextGM () {}
 
 protected:
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("gradtext");
     }
 
diff --git a/gm/hairlines.cpp b/gm/hairlines.cpp
index 9a0b8d5..286cc82 100644
--- a/gm/hairlines.cpp
+++ b/gm/hairlines.cpp
@@ -13,18 +13,18 @@
 
 class HairlinesGM : public GM {
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
 
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("hairlines");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE { return SkISize::Make(1250, 1250); }
+    SkISize onISize() SK_OVERRIDE { return SkISize::Make(1250, 1250); }
 
-    virtual void onOnceBeforeDraw() SK_OVERRIDE {
+    void onOnceBeforeDraw() SK_OVERRIDE {
         {
             SkPath* lineAnglesPath = &fPaths.push_back();
             enum {
@@ -164,7 +164,7 @@
         }
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         static const SkAlpha kAlphaValue[] = { 0xFF, 0x40 };
         static const SkScalar kWidths[] = { 0, 0.5f, 1.5f };
 
diff --git a/gm/hairmodes.cpp b/gm/hairmodes.cpp
index 9e9a1de..46be078 100644
--- a/gm/hairmodes.cpp
+++ b/gm/hairmodes.cpp
@@ -78,17 +78,17 @@
         SkPaint fBGPaint;
 
     protected:
-        virtual SkString onShortName() SK_OVERRIDE {
+        SkString onShortName() SK_OVERRIDE {
             return SkString("hairmodes");
         }
 
         virtual SkISize onISize() { return SkISize::Make(640, 480); }
 
-        virtual void onOnceBeforeDraw() SK_OVERRIDE {
+        void onOnceBeforeDraw() SK_OVERRIDE {
             fBGPaint.setShader(make_bg_shader())->unref();
         }
 
-        virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+        void onDraw(SkCanvas* canvas) SK_OVERRIDE {
             const SkRect bounds = SkRect::MakeWH(W, H);
             static const SkAlpha gAlphaValue[] = { 0xFF, 0x88, 0x88 };
 
diff --git a/gm/hittestpath.cpp b/gm/hittestpath.cpp
index 88772d6..36a7cb4 100644
--- a/gm/hittestpath.cpp
+++ b/gm/hittestpath.cpp
@@ -34,17 +34,17 @@
     HitTestPathGM () {}
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("hittestpath");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE { return SkISize::Make(700, 460); }
+    SkISize onISize() SK_OVERRIDE { return SkISize::Make(700, 460); }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         SkPath path;
         SkRandom rand;
 
diff --git a/gm/image.cpp b/gm/image.cpp
index bd7bbe7..d101529 100644
--- a/gm/image.cpp
+++ b/gm/image.cpp
@@ -191,7 +191,7 @@
 #endif
     }
 
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return GM::kSkipPicture_Flag | GM::kSkipPipe_Flag;
     }
 
diff --git a/gm/imagealphathreshold.cpp b/gm/imagealphathreshold.cpp
index 947f72a..b225994 100644
--- a/gm/imagealphathreshold.cpp
+++ b/gm/imagealphathreshold.cpp
@@ -21,7 +21,7 @@
     }
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return this->INHERITED::onGetFlags() |
                GM::kSkipTiled_Flag |
                GM::kSkipPicture_Flag |
@@ -29,15 +29,15 @@
                GM::kSkipPipeCrossProcess_Flag;
     }
 
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("imagealphathreshold");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(WIDTH, HEIGHT);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         SkIRect rects[2];
         rects[0] = SkIRect::MakeXYWH(0, 150, WIDTH, HEIGHT - 300);
         rects[1] = SkIRect::MakeXYWH(150, 0, WIDTH - 300, HEIGHT);
diff --git a/gm/imageblur.cpp b/gm/imageblur.cpp
index 67dca07..df1e8a2 100644
--- a/gm/imageblur.cpp
+++ b/gm/imageblur.cpp
@@ -23,19 +23,19 @@
     }
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return fName;
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(WIDTH, HEIGHT);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         SkPaint paint;
         paint.setImageFilter(SkBlurImageFilter::Create(fSigmaX, fSigmaY))->unref();
         canvas->saveLayer(NULL, &paint);
diff --git a/gm/imageblur2.cpp b/gm/imageblur2.cpp
index 629d384..aafd01e 100644
--- a/gm/imageblur2.cpp
+++ b/gm/imageblur2.cpp
@@ -36,19 +36,19 @@
     }
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return fName;
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(WIDTH, HEIGHT);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         const int sigmaCount = SK_ARRAY_COUNT(kBlurSigmas);
         const int testStringCount = SK_ARRAY_COUNT(kTestStrings);
         SkScalar dx = WIDTH / sigmaCount;
diff --git a/gm/imagefiltersclipped.cpp b/gm/imagefiltersclipped.cpp
index 74bd2ad..cfe9327 100644
--- a/gm/imagefiltersclipped.cpp
+++ b/gm/imagefiltersclipped.cpp
@@ -31,15 +31,15 @@
     }
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("imagefiltersclipped");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(860, 500);
     }
 
@@ -83,7 +83,7 @@
         canvas.drawCircle(x, y, radius, paint);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         if (!fInitialized) {
             this->make_checkerboard();
             this->make_gradient_circle(64, 64);
diff --git a/gm/imagefiltersgraph.cpp b/gm/imagefiltersgraph.cpp
index ae6f4a6..c66ee83 100644
--- a/gm/imagefiltersgraph.cpp
+++ b/gm/imagefiltersgraph.cpp
@@ -66,7 +66,7 @@
     SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SimpleOffsetFilter);
 
 protected:
-    virtual void flatten(SkWriteBuffer& buffer) const SK_OVERRIDE {
+    void flatten(SkWriteBuffer& buffer) const SK_OVERRIDE {
         this->INHERITED::flatten(buffer);
         buffer.writeScalar(fDX);
         buffer.writeScalar(fDY);
@@ -102,7 +102,7 @@
     ImageFiltersGraphGM() {}
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
diff --git a/gm/imagefiltersscaled.cpp b/gm/imagefiltersscaled.cpp
index 8b44bd0..d68f8cf 100644
--- a/gm/imagefiltersscaled.cpp
+++ b/gm/imagefiltersscaled.cpp
@@ -31,7 +31,7 @@
     }
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
diff --git a/gm/imagemagnifier.cpp b/gm/imagemagnifier.cpp
index 371b308..feac4c1 100644
--- a/gm/imagemagnifier.cpp
+++ b/gm/imagemagnifier.cpp
@@ -21,20 +21,20 @@
     }
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         // Skip tiled drawing until https://code.google.com/p/skia/issues/detail?id=781 is fixed.
         return this->INHERITED::onGetFlags() | GM::kSkipTiled_Flag;
     }
 
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("imagemagnifier");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(WIDTH, HEIGHT);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         SkPaint filterPaint;
         filterPaint.setImageFilter(
             SkMagnifierImageFilter::Create(
diff --git a/gm/imageresizetiled.cpp b/gm/imageresizetiled.cpp
index d09fd27..e8b46c4 100644
--- a/gm/imageresizetiled.cpp
+++ b/gm/imageresizetiled.cpp
@@ -22,17 +22,17 @@
     }
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE { return kNoBBH_Flag; }
+    uint32_t onGetFlags() const SK_OVERRIDE { return kNoBBH_Flag; }
 
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("imageresizetiled");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(WIDTH, HEIGHT);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         SkPaint paint;
         SkMatrix matrix;
         matrix.setScale(RESIZE_FACTOR, RESIZE_FACTOR);
diff --git a/gm/inversepaths.cpp b/gm/inversepaths.cpp
index 64af2b1..75edaaa 100644
--- a/gm/inversepaths.cpp
+++ b/gm/inversepaths.cpp
@@ -70,19 +70,19 @@
     }
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("inverse_paths");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(800, 900);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         SkScalar cx = slideWidth / 2 + slideBoundary;
         SkScalar cy = slideHeight / 2 + slideBoundary;
         SkScalar dx = slideWidth + 2 * slideBoundary;
diff --git a/gm/lcdtext.cpp b/gm/lcdtext.cpp
index a6e31bc..b207989 100644
--- a/gm/lcdtext.cpp
+++ b/gm/lcdtext.cpp
@@ -162,7 +162,7 @@
         return kSkip565_Flag;
     }
 
-    virtual void onOnceBeforeDraw() SK_OVERRIDE {
+    void onOnceBeforeDraw() SK_OVERRIDE {
         fInfo = SkImageInfo::MakeN32Premul(100, 100);
         SkPictureRecorder recorder;
         DrawText(recorder.beginRecording(SkIntToScalar(fInfo.width()),
@@ -172,7 +172,7 @@
         fFilterPaint.setImageFilter(filter.get());
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         const SkPixelGeometry geos[] = {
             kRGB_H_SkPixelGeometry,
             kUnknown_SkPixelGeometry,
diff --git a/gm/lerpmode.cpp b/gm/lerpmode.cpp
index 30e6abd..7b567a2 100644
--- a/gm/lerpmode.cpp
+++ b/gm/lerpmode.cpp
@@ -39,15 +39,15 @@
     LerpXfermodeGM() {}
 
 protected:
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("lerpmode");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(240, 120);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         show_circlelayers(canvas, NULL);
         canvas->translate(150, 0);
         SkAutoTUnref<SkXfermode> mode(SkLerpXfermode::Create(0.5f));
diff --git a/gm/lighting.cpp b/gm/lighting.cpp
index e56d9fc..4952256 100644
--- a/gm/lighting.cpp
+++ b/gm/lighting.cpp
@@ -20,11 +20,11 @@
     }
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("lighting");
     }
 
@@ -41,7 +41,7 @@
         canvas.drawText(str, strlen(str), SkIntToScalar(20), SkIntToScalar(70), paint);
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(WIDTH, HEIGHT);
     }
 
@@ -54,7 +54,7 @@
         canvas->restore();
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         if (!fInitialized) {
             make_bitmap();
             fInitialized = true;
diff --git a/gm/linepaths.cpp b/gm/linepaths.cpp
index 05900c7..26e7a21 100644
--- a/gm/linepaths.cpp
+++ b/gm/linepaths.cpp
@@ -16,7 +16,7 @@
     LinePathGM() {}
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
diff --git a/gm/lumafilter.cpp b/gm/lumafilter.cpp
index 521a61b..88b2924 100644
--- a/gm/lumafilter.cpp
+++ b/gm/lumafilter.cpp
@@ -98,19 +98,19 @@
     }
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("lumafilter");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(600, 420);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         SkXfermode::Mode modes[] = { SkXfermode::kSrcOver_Mode,
                                      SkXfermode::kDstOver_Mode,
                                      SkXfermode::kSrcATop_Mode,
diff --git a/gm/matrixconvolution.cpp b/gm/matrixconvolution.cpp
index aff3850..56bb0cd 100644
--- a/gm/matrixconvolution.cpp
+++ b/gm/matrixconvolution.cpp
@@ -19,7 +19,7 @@
     }
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
diff --git a/gm/mixedxfermodes.cpp b/gm/mixedxfermodes.cpp
index 3e5ee7d..331d1ec 100644
--- a/gm/mixedxfermodes.cpp
+++ b/gm/mixedxfermodes.cpp
@@ -31,11 +31,11 @@
         kNumShapeTypes
     };
 
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("mixed_xfermodes");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(790, 640);
     }
 
@@ -87,7 +87,7 @@
         }
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         if (NULL == fBG.get()) {
             static uint32_t kCheckerPixelData[] = { 0xFFFFFFFF,
                                                     0xFFCCCCCC,
diff --git a/gm/multipicturedraw.cpp b/gm/multipicturedraw.cpp
index 250c28a..c7da676 100644
--- a/gm/multipicturedraw.cpp
+++ b/gm/multipicturedraw.cpp
@@ -486,14 +486,14 @@
         Layout           fLayout;
         const SkPicture* fPictures[kNumPictures];
 
-        virtual void onOnceBeforeDraw() SK_OVERRIDE {
+        void onOnceBeforeDraw() SK_OVERRIDE {
             fPictures[0] = make_hex_plane_picture(SK_ColorWHITE);
             fPictures[1] = make_hex_plane_picture(SK_ColorGRAY);
             fPictures[2] = make_sierpinski_picture();
             fPictures[3] = make_single_layer_hex_plane_picture();
         }
 
-        virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+        void onDraw(SkCanvas* canvas) SK_OVERRIDE {
             SkMultiPictureDraw mpd;
             SkTArray<ComposeStep> composeSteps;
 
@@ -514,9 +514,9 @@
             }
         }
 
-        virtual SkISize onISize() SK_OVERRIDE { return SkISize::Make(kPicWidth, kPicHeight); }
+        SkISize onISize() SK_OVERRIDE { return SkISize::Make(kPicWidth, kPicHeight); }
 
-        virtual SkString onShortName() SK_OVERRIDE {
+        SkString onShortName() SK_OVERRIDE {
             static const char* gContentNames[] = {
                 "noclip", "rectclip", "rrectclip", "pathclip", 
                 "invpathclip", "sierpinski", "biglayer"
@@ -534,7 +534,7 @@
             return name;
         }
 
-        virtual uint32_t onGetFlags() const SK_OVERRIDE { return kAsBench_Flag | kSkipTiled_Flag; }
+        uint32_t onGetFlags() const SK_OVERRIDE { return kAsBench_Flag | kSkipTiled_Flag; }
 
     private:
         typedef GM INHERITED;
diff --git a/gm/nested.cpp b/gm/nested.cpp
index 5a337f4..5c7b09c 100644
--- a/gm/nested.cpp
+++ b/gm/nested.cpp
@@ -19,11 +19,11 @@
     }
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         SkString name("nested");
         if (fDoAA) {
             name.append("_aa");
@@ -33,7 +33,7 @@
         return name;
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(kImageWidth, kImageHeight);
     }
 
@@ -63,7 +63,7 @@
         }
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
 
         SkPaint shapePaint;
         shapePaint.setColor(SK_ColorBLACK);
diff --git a/gm/nonclosedpaths.cpp b/gm/nonclosedpaths.cpp
index 9c50966..189daff 100644
--- a/gm/nonclosedpaths.cpp
+++ b/gm/nonclosedpaths.cpp
@@ -32,16 +32,16 @@
     };
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("nonclosedpaths");
     }
 
     // 12 * 18 + 3 cases, every case is 100 * 100 pixels.
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(1220, 1920);
     }
 
@@ -70,7 +70,7 @@
         canvas->translate(x, y);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         // Stroke widths are:
         // 0(may use hairline rendering), 10(common case for stroke-style)
         // 40 and 50(>= geometry width/height, make the contour filled in fact)
diff --git a/gm/ovals.cpp b/gm/ovals.cpp
index 4afabc2..a4232aa 100755
--- a/gm/ovals.cpp
+++ b/gm/ovals.cpp
@@ -26,15 +26,15 @@
     }
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("ovals");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(1200, 900);
     }
 
@@ -138,7 +138,7 @@
         return SkHSVToColor(hsv);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         SkRandom rand(1);
         canvas->translate(20 * SK_Scalar1, 20 * SK_Scalar1);
         SkRect oval = SkRect::MakeLTRB(-20, -30, 20, 30);
diff --git a/gm/patch.cpp b/gm/patch.cpp
index 2579993..3a09ad8 100644
--- a/gm/patch.cpp
+++ b/gm/patch.cpp
@@ -76,19 +76,19 @@
     }
 
 protected:
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("patch_primitive");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(800, 800);
     }
 
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
 
         SkPaint paint;
         
diff --git a/gm/patchgrid.cpp b/gm/patchgrid.cpp
index 79baf94..aefa20b 100644
--- a/gm/patchgrid.cpp
+++ b/gm/patchgrid.cpp
@@ -64,19 +64,19 @@
     }
 
 protected:
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("patch_grid");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(800, 800);
     }
 
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
 
         SkPaint paint;
         
diff --git a/gm/patheffects.cpp b/gm/patheffects.cpp
index 00ae215..b24bd90 100644
--- a/gm/patheffects.cpp
+++ b/gm/patheffects.cpp
@@ -107,7 +107,7 @@
     PathEffectGM() {}
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
@@ -117,7 +117,7 @@
 
     SkISize onISize() SK_OVERRIDE { return SkISize::Make(800, 600); }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         SkPaint paint;
         paint.setAntiAlias(true);
         paint.setStyle(SkPaint::kStroke_Style);
diff --git a/gm/pathfill.cpp b/gm/pathfill.cpp
index 80342d6..b4e5a02 100644
--- a/gm/pathfill.cpp
+++ b/gm/pathfill.cpp
@@ -125,19 +125,19 @@
     }
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("pathfill");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(640, 480);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         SkPaint paint;
         paint.setAntiAlias(true);
 
@@ -163,15 +163,15 @@
     }
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("pathinvfill");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(450, 220);
     }
 
@@ -188,7 +188,7 @@
         canvas->restore();
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         SkPath path;
 
         path.addCircle(SkIntToScalar(50), SkIntToScalar(50), SkIntToScalar(40));
diff --git a/gm/pathinterior.cpp b/gm/pathinterior.cpp
index 865e32b..a354513 100644
--- a/gm/pathinterior.cpp
+++ b/gm/pathinterior.cpp
@@ -25,11 +25,11 @@
     }
 
 protected:
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(770, 770);
     }
 
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("pathinterior");
     }
 
@@ -57,7 +57,7 @@
         }
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         canvas->translate(8.5f, 8.5f);
 
         const SkRect rect = { 0, 0, 80, 80 };
diff --git a/gm/pathopsinverse.cpp b/gm/pathopsinverse.cpp
index 743db22..9fe7872 100644
--- a/gm/pathopsinverse.cpp
+++ b/gm/pathopsinverse.cpp
@@ -19,7 +19,7 @@
     }
 
 protected:
-    virtual void onOnceBeforeDraw() SK_OVERRIDE {
+    void onOnceBeforeDraw() SK_OVERRIDE {
         const unsigned oneColor = 0xFF8080FF;
         const unsigned twoColor = 0x807F1f1f;
         SkColor blendColor = blend(oneColor, twoColor);
@@ -50,15 +50,15 @@
         paint->setColor(color);
     }
 
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("pathopsinverse");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(1200, 900);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         SkPath one, two;
         int yPos = 0;
         for (int oneFill = 0; oneFill <= 1; ++oneFill) {
diff --git a/gm/pathopsskpclip.cpp b/gm/pathopsskpclip.cpp
index 5d6e401..ee6765a 100644
--- a/gm/pathopsskpclip.cpp
+++ b/gm/pathopsskpclip.cpp
@@ -24,15 +24,15 @@
     }
 
 protected:
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("pathopsskpclip");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(1200, 900);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         SkPictureRecorder recorder;
         SkCanvas* rec = recorder.beginRecording(1200, 900, NULL, 0);
         SkPath p;
diff --git a/gm/pathreverse.cpp b/gm/pathreverse.cpp
index 7cb7ba1..dbd58e5 100644
--- a/gm/pathreverse.cpp
+++ b/gm/pathreverse.cpp
@@ -68,19 +68,19 @@
     }
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("path-reverse");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(640, 480);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         if (false) test_rev(canvas); // avoid bit rot, suppress warning
         SkRect r = { 10, 10, 100, 60 };
 
diff --git a/gm/peekpixels.cpp b/gm/peekpixels.cpp
index b5573f3..24e509c 100644
--- a/gm/peekpixels.cpp
+++ b/gm/peekpixels.cpp
@@ -24,15 +24,15 @@
     PeekPixelsGM() {}
 
 protected:
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("peekpixels");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(360, 120);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         SkImageInfo info = SkImageInfo::MakeN32Premul(100, 100);
         SkAutoTUnref<SkSurface> surface(canvas->newSurface(info));
         if (surface.get()) {
@@ -64,7 +64,7 @@
         }
     }
 
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         // we explicitly test peekPixels and readPixels, neither of which
         // return something for a picture-backed canvas, so we skip that test.
         return kSkipPicture_Flag;
diff --git a/gm/picture.cpp b/gm/picture.cpp
index 1f7e5c3..b07a596 100644
--- a/gm/picture.cpp
+++ b/gm/picture.cpp
@@ -42,15 +42,15 @@
     PictureGM() : fPicture(make_picture()) {}
 
 protected:
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("pictures");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(450, 120);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         canvas->translate(10, 10);
 
         SkMatrix matrix;
diff --git a/gm/pictureimagefilter.cpp b/gm/pictureimagefilter.cpp
index 5f29a34..eae758d 100644
--- a/gm/pictureimagefilter.cpp
+++ b/gm/pictureimagefilter.cpp
@@ -18,7 +18,7 @@
     }
 
 protected:
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("pictureimagefilter");
     }
 
@@ -36,9 +36,9 @@
         fPicture.reset(recorder.endRecording());
     }
 
-    virtual SkISize onISize() SK_OVERRIDE { return SkISize::Make(600, 300); }
+    SkISize onISize() SK_OVERRIDE { return SkISize::Make(600, 300); }
 
-    virtual void onOnceBeforeDraw() SK_OVERRIDE {
+    void onOnceBeforeDraw() SK_OVERRIDE {
         this->makePicture();
     }
 
@@ -51,7 +51,7 @@
         canvas->restore();
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         canvas->clear(0x00000000);
         {
             SkRect srcRect = SkRect::MakeXYWH(20, 20, 30, 30);
diff --git a/gm/pictureshader.cpp b/gm/pictureshader.cpp
index 152cdf3..c622ee3 100644
--- a/gm/pictureshader.cpp
+++ b/gm/pictureshader.cpp
@@ -42,19 +42,19 @@
     }
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("pictureshader");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(1400, 1250);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         this->drawSceneColumn(canvas, SkPoint::Make(0, 0), 1, 1, 0);
         this->drawSceneColumn(canvas, SkPoint::Make(0, fSceneSize * 6.4f), 1, 2, 0);
         this->drawSceneColumn(canvas, SkPoint::Make(fSceneSize * 2.4f, 0), 1, 1, 1);
diff --git a/gm/points.cpp b/gm/points.cpp
index 1f9a581..58233dd 100644
--- a/gm/points.cpp
+++ b/gm/points.cpp
@@ -15,15 +15,15 @@
     PointsGM() {}
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("points");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(640, 490);
     }
 
@@ -38,7 +38,7 @@
         }
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         canvas->translate(SK_Scalar1, SK_Scalar1);
 
         SkRandom rand;
diff --git a/gm/poly2poly.cpp b/gm/poly2poly.cpp
index 191bb0e..728650e 100644
--- a/gm/poly2poly.cpp
+++ b/gm/poly2poly.cpp
@@ -179,15 +179,15 @@
     Poly2PolyGM() {}
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("poly2poly");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(835, 840);
     }
 
@@ -225,7 +225,7 @@
         canvas->restore();
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         if (false) { test_stroke(canvas); return; }
 
         SkPaint paint;
diff --git a/gm/polygons.cpp b/gm/polygons.cpp
index 1d63978..e8d8504 100644
--- a/gm/polygons.cpp
+++ b/gm/polygons.cpp
@@ -22,22 +22,22 @@
     PolygonsGM() {}
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("polygons");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         int width = kNumPolygons * kCellSize + 40;
         int height = (kNumJoins * kNumStrokeWidths + kNumExtraStyles) * kCellSize + 40;
         return SkISize::Make(width, height);
     }
 
     // Construct all polygons
-    virtual void onOnceBeforeDraw() SK_OVERRIDE {
+    void onOnceBeforeDraw() SK_OVERRIDE {
         SkPoint p0[] = {{0, 0}, {60, 0}, {90, 40}};  // triangle
         SkPoint p1[] = {{0, 0}, {0, 40}, {60, 40}, {40, 0}};  // trapezoid
         SkPoint p2[] = {{0, 0}, {40, 40}, {80, 40}, {40, 0}};  // diamond
@@ -97,7 +97,7 @@
         }
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         // Stroke widths are:
         // 0(may use hairline rendering), 10(common case for stroke-style)
         // 40(>= geometry width/height, make the contour filled in fact)
diff --git a/gm/quadpaths.cpp b/gm/quadpaths.cpp
index f6e9fad..6d4f517 100644
--- a/gm/quadpaths.cpp
+++ b/gm/quadpaths.cpp
@@ -16,7 +16,7 @@
     QuadPathGM() {}
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
@@ -43,7 +43,7 @@
         canvas->restore();
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         struct FillAndName {
             SkPath::FillType fFill;
             const char*      fName;
@@ -164,7 +164,7 @@
     QuadClosePathGM() {}
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
@@ -191,7 +191,7 @@
         canvas->restore();
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         struct FillAndName {
             SkPath::FillType fFill;
             const char*      fName;
diff --git a/gm/rects.cpp b/gm/rects.cpp
index 217d849..e0b25ae 100644
--- a/gm/rects.cpp
+++ b/gm/rects.cpp
@@ -25,15 +25,15 @@
     }
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("rects");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(1200, 900);
     }
 
@@ -254,7 +254,7 @@
                           SK_Scalar1 * 100 * (testCount / 10) + 3 * SK_Scalar1 / 4);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         SkAutoCommentBlock acb(canvas, "onDraw");
 
         canvas->translate(20 * SK_Scalar1, 20 * SK_Scalar1);
diff --git a/gm/resizeimagefilter.cpp b/gm/resizeimagefilter.cpp
index bb09e0b..351421e 100644
--- a/gm/resizeimagefilter.cpp
+++ b/gm/resizeimagefilter.cpp
@@ -27,7 +27,7 @@
 
 #ifdef SK_CPU_ARM64
     // Skip tiled drawing on 64-bit ARM until https://skbug.com/2908 is fixed.
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 #endif
diff --git a/gm/roundrects.cpp b/gm/roundrects.cpp
index 669763d..8d81d16 100644
--- a/gm/roundrects.cpp
+++ b/gm/roundrects.cpp
@@ -27,15 +27,15 @@
     }
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("roundrects");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(1200, 900);
     }
 
@@ -139,7 +139,7 @@
         return SkHSVToColor(hsv);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         SkRandom rand(1);
         canvas->translate(20 * SK_Scalar1, 20 * SK_Scalar1);
         SkRect rect = SkRect::MakeLTRB(-20, -30, 20, 30);
diff --git a/gm/rrect.cpp b/gm/rrect.cpp
index a426707..9bc1995 100644
--- a/gm/rrect.cpp
+++ b/gm/rrect.cpp
@@ -126,19 +126,19 @@
     RRectGM() {}
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("rrect");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(820, 710);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         static const InsetProc insetProcs[] = {
             inset0, inset1, inset2, inset3
         };
diff --git a/gm/rrects.cpp b/gm/rrects.cpp
index e6c62e9..6016891 100644
--- a/gm/rrects.cpp
+++ b/gm/rrects.cpp
@@ -54,9 +54,9 @@
         return name;
     }
 
-    virtual SkISize onISize() SK_OVERRIDE { return SkISize::Make(kImageWidth, kImageHeight); }
+    SkISize onISize() SK_OVERRIDE { return SkISize::Make(kImageWidth, kImageHeight); }
 
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         if (kEffect_Type == fType) {
             return kGPUOnly_Flag | kSkipTiled_Flag;
         } else {
@@ -64,7 +64,7 @@
         }
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
 #if SK_SUPPORT_GPU
         GrRenderTarget* rt = canvas->internal_private_accessTopLayerRenderTarget();
         GrContext* context = rt ? rt->getContext() : NULL;
diff --git a/gm/samplerstress.cpp b/gm/samplerstress.cpp
index fc7d76c..51dfde2 100644
--- a/gm/samplerstress.cpp
+++ b/gm/samplerstress.cpp
@@ -28,15 +28,15 @@
     }
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("gpusamplerstress");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(640, 480);
     }
 
@@ -91,7 +91,7 @@
         fMaskFilter.reset(SkBlurMaskFilter::Create(kNormal_SkBlurStyle, sigma));
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         createShader();
         createMaskFilter();
 
diff --git a/gm/shaderbounds.cpp b/gm/shaderbounds.cpp
index 6820fc6..e6fcc4e 100644
--- a/gm/shaderbounds.cpp
+++ b/gm/shaderbounds.cpp
@@ -34,7 +34,7 @@
     }
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
@@ -42,9 +42,9 @@
         return fName;
     }
 
-    virtual SkISize onISize() SK_OVERRIDE { return SkISize::Make(320, 240); }
+    SkISize onISize() SK_OVERRIDE { return SkISize::Make(320, 240); }
 
-    virtual SkMatrix onGetInitialTransform() const SK_OVERRIDE {
+    SkMatrix onGetInitialTransform() const SK_OVERRIDE {
         SkMatrix result;
         SkScalar scale = 0.8f;
         result.setScale(scale, scale);
@@ -52,7 +52,7 @@
         return result;
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         // The PDF device has already clipped to the content area, but we
         // do it again here so that the raster and pdf results are consistent.
         canvas->clipRect(SkRect::MakeWH(SkIntToScalar(320),
diff --git a/gm/shadertext.cpp b/gm/shadertext.cpp
index 30b1573..f51aba2 100644
--- a/gm/shadertext.cpp
+++ b/gm/shadertext.cpp
@@ -91,7 +91,7 @@
     }
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
@@ -101,7 +101,7 @@
 
     SkISize onISize() SK_OVERRIDE { return SkISize::Make(1450, 500); }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         const char text[] = "Shaded Text";
         const int textLen = SK_ARRAY_COUNT(text) - 1;
         const int pointSize = 36;
diff --git a/gm/shadertext2.cpp b/gm/shadertext2.cpp
index d33a203..23e42ad 100644
--- a/gm/shadertext2.cpp
+++ b/gm/shadertext2.cpp
@@ -54,7 +54,7 @@
 
     SkISize onISize() SK_OVERRIDE { return SkISize::Make(1800, 900); }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         static const char kText[] = "SKIA";
         static const int kTextLen = SK_ARRAY_COUNT(kText) - 1;
         static const int kPointSize = 55;
@@ -199,7 +199,7 @@
         }
     }
 
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         // disable 565 for now, til mike fixes the debug assert
         return kSkip565_Flag | kSkipTiled_Flag;
     }
diff --git a/gm/shadertext3.cpp b/gm/shadertext3.cpp
index ca8dd11..77a9447 100644
--- a/gm/shadertext3.cpp
+++ b/gm/shadertext3.cpp
@@ -52,21 +52,21 @@
     }
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("shadertext3");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE{ return SkISize::Make(800, 1000); }
+    SkISize onISize() SK_OVERRIDE{ return SkISize::Make(800, 1000); }
 
-    virtual void onOnceBeforeDraw() SK_OVERRIDE {
+    void onOnceBeforeDraw() SK_OVERRIDE {
         makebm(&fBmp, kPointSize / 4, kPointSize / 4);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
 
         SkPaint bmpPaint;
         bmpPaint.setAntiAlias(true);
diff --git a/gm/shallowgradient.cpp b/gm/shallowgradient.cpp
index a2b29d3..6cd2ed6 100644
--- a/gm/shallowgradient.cpp
+++ b/gm/shallowgradient.cpp
@@ -42,22 +42,22 @@
     }
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         if (fName.contains("linear") || fName.contains("radial")) {
             return kSkipTiled_Flag;
         }
         return 0;
     }
 
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return fName;
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(800, 800);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         const SkColor colors[] = { 0xFF555555, 0xFF444444 };
         const int colorCount = SK_ARRAY_COUNT(colors);
 
diff --git a/gm/skbug1719.cpp b/gm/skbug1719.cpp
index a57596e..1093601 100644
--- a/gm/skbug1719.cpp
+++ b/gm/skbug1719.cpp
@@ -24,21 +24,21 @@
     SkBug1719GM() {}
 
 protected:
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("skbug1719");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(300, 100);
     }
 
-    virtual void onDrawBackground(SkCanvas* canvas) SK_OVERRIDE {
+    void onDrawBackground(SkCanvas* canvas) SK_OVERRIDE {
         SkPaint bgPaint;
         bgPaint.setColor(0xFF303030);
         canvas->drawPaint(bgPaint);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         canvas->translate(SkIntToScalar(-800), SkIntToScalar(-650));
 
         // The data is lifted from an SKP that exhibited the bug.
diff --git a/gm/smallarc.cpp b/gm/smallarc.cpp
index c311460..ff7f07c 100755
--- a/gm/smallarc.cpp
+++ b/gm/smallarc.cpp
@@ -19,15 +19,15 @@
 
 protected:
 
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("smallarc");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(762, 762);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         SkPaint p;
         p.setColor(SK_ColorRED);
         p.setAntiAlias(true);
diff --git a/gm/spritebitmap.cpp b/gm/spritebitmap.cpp
index f22c429..4efff3c 100644
--- a/gm/spritebitmap.cpp
+++ b/gm/spritebitmap.cpp
@@ -62,19 +62,19 @@
     SpriteBitmapGM() {}
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("spritebitmap");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(640, 480);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         SkBitmap bm;
         make_bm(&bm);
 
diff --git a/gm/stringart.cpp b/gm/stringart.cpp
index 2d6b737..050d78f 100644
--- a/gm/stringart.cpp
+++ b/gm/stringart.cpp
@@ -23,19 +23,19 @@
     StringArtGM() {}
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("stringart");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(kWidth, kHeight);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         SkScalar angle = kAngle*SK_ScalarPI + SkScalarHalf(SK_ScalarPI);
         SkScalar size = SkIntToScalar(SkMin32(kWidth, kHeight));
         SkPoint center = SkPoint::Make(SkScalarHalf(kWidth), SkScalarHalf(kHeight));
diff --git a/gm/strokefill.cpp b/gm/strokefill.cpp
index 4a29100..836feda 100644
--- a/gm/strokefill.cpp
+++ b/gm/strokefill.cpp
@@ -19,15 +19,15 @@
     }
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("stroke-fill");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(640, 480);
     }
 
@@ -39,7 +39,7 @@
         canvas->drawText(text, len, x, y + SkIntToScalar(120), p);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         SkScalar x = SkIntToScalar(100);
         SkScalar y = SkIntToScalar(88);
 
diff --git a/gm/strokerect.cpp b/gm/strokerect.cpp
index 4d0353f..3fcb42c 100644
--- a/gm/strokerect.cpp
+++ b/gm/strokerect.cpp
@@ -46,19 +46,19 @@
     StrokeRectGM() {}
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("strokerect");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(1024, 740);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         canvas->drawColor(SK_ColorWHITE);
         canvas->translate(STROKE_WIDTH*3/2, STROKE_WIDTH*3/2);
 
diff --git a/gm/strokerects.cpp b/gm/strokerects.cpp
index 2a187b7..dea8e8c 100644
--- a/gm/strokerects.cpp
+++ b/gm/strokerects.cpp
@@ -25,15 +25,15 @@
     StrokeRectsGM() {}
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("strokerects");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(W*2, H*2);
     }
 
@@ -49,7 +49,7 @@
         r->offset(-w/2 + woffset, -h/2 + hoffset);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         SkPaint paint;
         paint.setStyle(SkPaint::kStroke_Style);
 
diff --git a/gm/strokes.cpp b/gm/strokes.cpp
index 0a8f121..1a6937e 100644
--- a/gm/strokes.cpp
+++ b/gm/strokes.cpp
@@ -39,19 +39,19 @@
     StrokesGM() {}
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("strokes_round");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(W, H*2);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         SkPaint paint;
         paint.setStyle(SkPaint::kStroke_Style);
         paint.setStrokeWidth(SkIntToScalar(9)/2);
@@ -95,15 +95,15 @@
     }
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("strokes_poly");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(W, H*2);
     }
 
@@ -113,7 +113,7 @@
         canvas->concat(matrix);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         canvas->drawColor(SK_ColorWHITE);
 
         SkPaint paint;
@@ -196,19 +196,19 @@
     Strokes3GM() {}
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("strokes3");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(W, H*2);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         SkPaint origPaint;
         origPaint.setAntiAlias(true);
         origPaint.setStyle(SkPaint::kStroke_Style);
diff --git a/gm/stroketext.cpp b/gm/stroketext.cpp
index 8ca1402..082ae54 100644
--- a/gm/stroketext.cpp
+++ b/gm/stroketext.cpp
@@ -71,19 +71,19 @@
     StrokeTextGM() {}
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("stroketext");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(1200, 480);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         if (true) { test_nulldev(canvas); }
         SkPaint paint;
         paint.setAntiAlias(true);
diff --git a/gm/surface.cpp b/gm/surface.cpp
index f84c5ab..5961a33 100644
--- a/gm/surface.cpp
+++ b/gm/surface.cpp
@@ -65,11 +65,11 @@
         return SkString("surfaceprops");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(W * 4, H * 5);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         GrContext* ctx = canvas->getGrContext();
 
         // must be opaque to have a hope of testing LCD text
@@ -122,7 +122,7 @@
         return SkString("surfacenew");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(300, 140);
     }
 
@@ -130,7 +130,7 @@
         canvas->drawColor(SK_ColorRED);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         SkImageInfo info = SkImageInfo::MakeN32Premul(100, 100);
 
         SkAutoTUnref<SkSurface> surf(canvas->newSurface(info, NULL));
diff --git a/gm/techtalk1.cpp b/gm/techtalk1.cpp
index 442d73b..c77f83c 100644
--- a/gm/techtalk1.cpp
+++ b/gm/techtalk1.cpp
@@ -359,7 +359,7 @@
         fProc(canvas, fShowGL, fFlags);
     }
 
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return  kSkipPDF_Flag | kSkipPicture_Flag | kSkipPipe_Flag | kSkipTiled_Flag;
     }
 
diff --git a/gm/testimagefilters.cpp b/gm/testimagefilters.cpp
index 50df0e6..82fa833 100644
--- a/gm/testimagefilters.cpp
+++ b/gm/testimagefilters.cpp
@@ -97,17 +97,17 @@
 
 protected:
 
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("testimagefilters");
     }
 
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
-    virtual SkISize onISize() SK_OVERRIDE { return SkISize::Make(700, 460); }
+    SkISize onISize() SK_OVERRIDE { return SkISize::Make(700, 460); }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
 //        this->drawSizeBounds(canvas, 0xFFCCCCCC);
 
         static SkImageFilter* (*gFilterProc[])() = {
diff --git a/gm/texdata.cpp b/gm/texdata.cpp
index 379898a..99087b5 100644
--- a/gm/texdata.cpp
+++ b/gm/texdata.cpp
@@ -27,17 +27,17 @@
     }
 
 protected:
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("texdata");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(2*S, 2*S);
     }
 
-    virtual uint32_t onGetFlags() const SK_OVERRIDE { return kGPUOnly_Flag; }
+    uint32_t onGetFlags() const SK_OVERRIDE { return kGPUOnly_Flag; }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         GrRenderTarget* target = canvas->internal_private_accessTopLayerRenderTarget();
         GrContext* ctx = canvas->getGrContext();
         if (ctx && target) {
diff --git a/gm/textblob.cpp b/gm/textblob.cpp
index a034007..e802d9b 100644
--- a/gm/textblob.cpp
+++ b/gm/textblob.cpp
@@ -78,15 +78,15 @@
     }
 
 protected:
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("textblob");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(640, 480);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         for (unsigned b = 0; b < SK_ARRAY_COUNT(blobConfigs); ++b) {
             SkAutoTUnref<const SkTextBlob> blob(this->makeBlob(b));
 
diff --git a/gm/textblobshader.cpp b/gm/textblobshader.cpp
index 7ec75b5..bf851f6 100644
--- a/gm/textblobshader.cpp
+++ b/gm/textblobshader.cpp
@@ -27,7 +27,7 @@
 
 protected:
 
-    virtual void onOnceBeforeDraw() SK_OVERRIDE {
+    void onOnceBeforeDraw() SK_OVERRIDE {
         SkPaint p;
         p.setAntiAlias(true);
         p.setSubpixelText(true);
@@ -73,19 +73,19 @@
                                                      SkShader::kRepeat_TileMode));
     }
 
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkip565_Flag;
     }
 
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("textblobshader");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(640, 480);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         SkPaint p;
         p.setStyle(SkPaint::kFill_Style);
         p.setShader(fShader);
diff --git a/gm/texteffects.cpp b/gm/texteffects.cpp
index 5bdaf9b..3fce5db 100644
--- a/gm/texteffects.cpp
+++ b/gm/texteffects.cpp
@@ -175,15 +175,15 @@
     TextEffectsGM() {}
 
 protected:
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("texteffects");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(460, 680);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         canvas->save();
 
         SkPaint     paint;
diff --git a/gm/texturedomaineffect.cpp b/gm/texturedomaineffect.cpp
index 8a59532..9ea45e1 100644
--- a/gm/texturedomaineffect.cpp
+++ b/gm/texturedomaineffect.cpp
@@ -30,23 +30,23 @@
     }
 
 protected:
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("texture_domain_effect");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         const SkScalar canvasWidth = kDrawPad +
                 (kTargetWidth + 2 * kDrawPad) * GrTextureDomain::kModeCount +
                 kTestPad * GrTextureDomain::kModeCount;
         return SkISize::Make(SkScalarCeilToInt(canvasWidth), 800);
     }
 
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         // This is a GPU-specific GM.
         return kGPUOnly_Flag;
     }
 
-    virtual void onOnceBeforeDraw() SK_OVERRIDE {
+    void onOnceBeforeDraw() SK_OVERRIDE {
         fBmp.allocN32Pixels(kTargetWidth, kTargetHeight);
         SkCanvas canvas(fBmp);
         canvas.clear(0x00000000);
@@ -73,7 +73,7 @@
                                          fBmp.width() + 10.f, fBmp.height() + 10.f), paint);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         GrRenderTarget* rt = canvas->internal_private_accessTopLayerRenderTarget();
         if (NULL == rt) {
             return;
diff --git a/gm/thinrects.cpp b/gm/thinrects.cpp
index 6517fe2..3facaa9 100644
--- a/gm/thinrects.cpp
+++ b/gm/thinrects.cpp
@@ -17,15 +17,15 @@
     }
 
 protected:
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("thinrects");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(240, 320);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
 
         SkPaint white;
         white.setColor(SK_ColorWHITE);
diff --git a/gm/thinstrokedrects.cpp b/gm/thinstrokedrects.cpp
index 7e3e399..40c23e1 100644
--- a/gm/thinstrokedrects.cpp
+++ b/gm/thinstrokedrects.cpp
@@ -17,15 +17,15 @@
     }
 
 protected:
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("thinstrokedrects");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(240, 320);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
 
         SkPaint paint;
         paint.setColor(SK_ColorWHITE);
diff --git a/gm/tiledscaledbitmap.cpp b/gm/tiledscaledbitmap.cpp
index 4bf3b82..bc6c61f 100644
--- a/gm/tiledscaledbitmap.cpp
+++ b/gm/tiledscaledbitmap.cpp
@@ -31,15 +31,15 @@
     }
 
 protected:
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("tiledscaledbitmap");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(1016, 616);
     }
 
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
@@ -54,11 +54,11 @@
         return bm;
     }
 
-    virtual void onOnceBeforeDraw() SK_OVERRIDE {
+    void onOnceBeforeDraw() SK_OVERRIDE {
         fBitmap = make_bm(360, 288);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         SkPaint paint;
 
         paint.setAntiAlias(true);
diff --git a/gm/tilemodes.cpp b/gm/tilemodes.cpp
index 33d1b23..ad8aa12 100644
--- a/gm/tilemodes.cpp
+++ b/gm/tilemodes.cpp
@@ -71,14 +71,14 @@
 
     SkISize onISize() SK_OVERRIDE { return SkISize::Make(880, 560); }
 
-    virtual void onOnceBeforeDraw() SK_OVERRIDE {
+    void onOnceBeforeDraw() SK_OVERRIDE {
         int size = fPowerOfTwoSize ? kPOTSize : kNPOTSize;
         for (size_t i = 0; i < SK_ARRAY_COUNT(gColorTypes); i++) {
             makebm(&fTexture[i], gColorTypes[i], size, size);
         }
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
 
         int size = fPowerOfTwoSize ? kPOTSize : kNPOTSize;
 
@@ -194,7 +194,7 @@
     }
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
@@ -204,7 +204,7 @@
 
     SkISize onISize() SK_OVERRIDE { return SkISize::Make(880, 560); }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         canvas->scale(SkIntToScalar(3)/2, SkIntToScalar(3)/2);
 
         const SkScalar w = SkIntToScalar(gWidth);
diff --git a/gm/tilemodes_scaled.cpp b/gm/tilemodes_scaled.cpp
index 32f640a..4edd115 100644
--- a/gm/tilemodes_scaled.cpp
+++ b/gm/tilemodes_scaled.cpp
@@ -75,21 +75,21 @@
 
 #ifdef SK_CPU_ARM64
     // Skip tiled drawing on 64-bit ARM until https://skbug.com/2908 is fixed.
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 #endif
 
     SkISize onISize() SK_OVERRIDE { return SkISize::Make(880, 760); }
 
-    virtual void onOnceBeforeDraw() SK_OVERRIDE {
+    void onOnceBeforeDraw() SK_OVERRIDE {
         int size = fPowerOfTwoSize ? kPOTSize : kNPOTSize;
         for (size_t i = 0; i < SK_ARRAY_COUNT(gColorTypes); i++) {
             makebm(&fTexture[i], gColorTypes[i], size, size);
         }
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         float scale = 32.f/kPOTSize;
 
         int size = fPowerOfTwoSize ? kPOTSize : kNPOTSize;
@@ -213,7 +213,7 @@
     }
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
@@ -223,7 +223,7 @@
 
     SkISize onISize() SK_OVERRIDE { return SkISize::Make(880, 560); }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         canvas->scale(SkIntToScalar(3)/2, SkIntToScalar(3)/2);
 
         const SkScalar w = SkIntToScalar(gWidth);
diff --git a/gm/typeface.cpp b/gm/typeface.cpp
index c329395..1606cef 100644
--- a/gm/typeface.cpp
+++ b/gm/typeface.cpp
@@ -36,15 +36,15 @@
     }
 
 protected:
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("typeface");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(640, 480);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         SkString text("Typefaces are fun!");
         SkScalar y = 0;
 
@@ -171,7 +171,7 @@
     }
 
 protected:
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         SkString name("typefacestyles");
         if (fApplyKerning) {
             name.append("_kerning");
@@ -179,11 +179,11 @@
         return name;
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(640, 480);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         SkPaint paint;
         paint.setAntiAlias(true);
         paint.setTextSize(SkIntToScalar(30));
diff --git a/gm/variedtext.cpp b/gm/variedtext.cpp
index ebb3c3b..dddd79e 100644
--- a/gm/variedtext.cpp
+++ b/gm/variedtext.cpp
@@ -31,7 +31,7 @@
     }
 
 protected:
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         SkString name("varied_text");
         if (fEffectiveClip) {
             name.append("_clipped");
@@ -46,11 +46,11 @@
         return name;
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(640, 480);
     }
 
-    virtual void onOnceBeforeDraw() SK_OVERRIDE {
+    void onOnceBeforeDraw() SK_OVERRIDE {
         fPaint.setAntiAlias(true);
         fPaint.setLCDRenderText(fLCD);
 
@@ -111,7 +111,7 @@
         }
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         for (int i = 0; i < kCnt; ++i) {
             fPaint.setColor(fColors[i]);
             fPaint.setTextSize(fPtSizes[i]);
@@ -136,7 +136,7 @@
         }
     }
 
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         // The aa hairline stroked rects used to visualize the clip draw slightly differently in
         // quilt mode in dm.
         return kAsBench_Flag | kSkipTiled_Flag;
diff --git a/gm/vertices.cpp b/gm/vertices.cpp
index c13fd82..bfeb8f5 100644
--- a/gm/vertices.cpp
+++ b/gm/vertices.cpp
@@ -38,11 +38,11 @@
     }
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
-    virtual void onOnceBeforeDraw() SK_OVERRIDE {
+    void onOnceBeforeDraw() SK_OVERRIDE {
         const SkScalar X = 150;
         const SkScalar Y = 150;
 
@@ -65,7 +65,7 @@
         }
     }
 
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         SkString name("vertices");
         if (0xFF != fAlpha) {
             name.appendf("_%02X", fAlpha);
@@ -73,11 +73,11 @@
         return name;
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(600, 600);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         // start with the center of a 3x3 grid
         static const uint16_t fan[] = {
             4,
diff --git a/gm/verttext.cpp b/gm/verttext.cpp
index 0804e09..18211e9 100644
--- a/gm/verttext.cpp
+++ b/gm/verttext.cpp
@@ -49,7 +49,7 @@
     //SkAutoTUnref<SkTypeface> fFace;
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
@@ -85,7 +85,7 @@
         canvas->drawCircle(x, y, SK_Scalar1 * 3 / 2, p);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         SkScalar x = SkIntToScalar(100);
         SkScalar y = SkIntToScalar(50);
 
diff --git a/gm/verttext2.cpp b/gm/verttext2.cpp
index 5067bbb..9eba68b 100644
--- a/gm/verttext2.cpp
+++ b/gm/verttext2.cpp
@@ -31,7 +31,7 @@
     }
 
 protected:
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         return kSkipTiled_Flag;
     }
 
@@ -42,7 +42,7 @@
 
     SkISize onISize() SK_OVERRIDE { return SkISize::Make(640, 480); }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         for (int i = 0; i < 3; ++i) {
             SkPaint paint;
             paint.setColor(SK_ColorRED);
diff --git a/gm/verylargebitmap.cpp b/gm/verylargebitmap.cpp
index afb49b9..00d1b71 100644
--- a/gm/verylargebitmap.cpp
+++ b/gm/verylargebitmap.cpp
@@ -59,15 +59,15 @@
     VeryLargeBitmapGM() {}
 
 protected:
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("verylargebitmap");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(500, 600);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         int veryBig = 65*1024; // 64K < size
         int big = 33*1024;     // 32K < size < 64K
         // smaller than many max texture sizes, but large enough to gpu-tile for memory reasons.
diff --git a/gm/xfermodeimagefilter.cpp b/gm/xfermodeimagefilter.cpp
index 0312141..ac5fa5e 100644
--- a/gm/xfermodeimagefilter.cpp
+++ b/gm/xfermodeimagefilter.cpp
@@ -24,7 +24,7 @@
     }
 
 protected:
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("xfermodeimagefilter");
     }
 
@@ -62,7 +62,7 @@
         }
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(WIDTH, HEIGHT);
     }
 
@@ -85,12 +85,12 @@
         canvas->restore();
     }
 
-    virtual void onOnceBeforeDraw() SK_OVERRIDE {
+    void onOnceBeforeDraw() SK_OVERRIDE {
         make_bitmap();
         make_checkerboard();
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         canvas->clear(0x00000000);
         SkPaint paint;
 
diff --git a/gm/xfermodes.cpp b/gm/xfermodes.cpp
index c8fc1ba..82d1cef 100644
--- a/gm/xfermodes.cpp
+++ b/gm/xfermodes.cpp
@@ -154,7 +154,7 @@
         }
     }
 
-    virtual void onOnceBeforeDraw() SK_OVERRIDE {
+    void onOnceBeforeDraw() SK_OVERRIDE {
         fBG.installPixels(SkImageInfo::Make(2, 2, kARGB_4444_SkColorType,
                                             kOpaque_SkAlphaType),
                           gData, 4);
@@ -168,15 +168,15 @@
     XfermodesGM() {}
 
 protected:
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("xfermodes");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(1990, 640);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         canvas->translate(SkIntToScalar(10), SkIntToScalar(20));
 
         const struct {
diff --git a/gm/xfermodes2.cpp b/gm/xfermodes2.cpp
index b1dd6d8..98e6f3a 100644
--- a/gm/xfermodes2.cpp
+++ b/gm/xfermodes2.cpp
@@ -18,15 +18,15 @@
     Xfermodes2GM() {}
 
 protected:
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("xfermodes2");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(455, 475);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         canvas->translate(SkIntToScalar(10), SkIntToScalar(20));
 
         const SkScalar w = SkIntToScalar(kSize);
@@ -86,7 +86,7 @@
     }
 
 private:
-    virtual void onOnceBeforeDraw() SK_OVERRIDE {
+    void onOnceBeforeDraw() SK_OVERRIDE {
         static const uint32_t kCheckData[] = {
             SkPackARGB32(0xFF, 0x40, 0x40, 0x40),
             SkPackARGB32(0xFF, 0xD0, 0xD0, 0xD0),
diff --git a/gm/xfermodes3.cpp b/gm/xfermodes3.cpp
index b12004b..c385e41 100644
--- a/gm/xfermodes3.cpp
+++ b/gm/xfermodes3.cpp
@@ -27,21 +27,21 @@
     Xfermodes3GM() {}
 
 protected:
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("xfermodes3");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(630, 1215);
     }
 
-    virtual void onDrawBackground(SkCanvas* canvas) SK_OVERRIDE {
+    void onDrawBackground(SkCanvas* canvas) SK_OVERRIDE {
         SkPaint bgPaint;
         bgPaint.setColor(0xFF70D0E0);
         canvas->drawPaint(bgPaint);
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         canvas->translate(SkIntToScalar(10), SkIntToScalar(20));
 
         SkPaint labelP;
@@ -184,7 +184,7 @@
         canvas->restore();
     }
 
-    virtual void onOnceBeforeDraw() SK_OVERRIDE {
+    void onOnceBeforeDraw() SK_OVERRIDE {
         static const uint32_t kCheckData[] = {
             SkPackARGB32(0xFF, 0x40, 0x40, 0x40),
             SkPackARGB32(0xFF, 0xD0, 0xD0, 0xD0),
diff --git a/gm/yuvtorgbeffect.cpp b/gm/yuvtorgbeffect.cpp
index ed551ff..3be01cc 100644
--- a/gm/yuvtorgbeffect.cpp
+++ b/gm/yuvtorgbeffect.cpp
@@ -30,20 +30,20 @@
     }
 
 protected:
-    virtual SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() SK_OVERRIDE {
         return SkString("yuv_to_rgb_effect");
     }
 
-    virtual SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() SK_OVERRIDE {
         return SkISize::Make(334, 128);
     }
 
-    virtual uint32_t onGetFlags() const SK_OVERRIDE {
+    uint32_t onGetFlags() const SK_OVERRIDE {
         // This is a GPU-specific GM.
         return kGPUOnly_Flag;
     }
 
-    virtual void onOnceBeforeDraw() SK_OVERRIDE {
+    void onOnceBeforeDraw() SK_OVERRIDE {
         SkImageInfo info = SkImageInfo::MakeA8(24, 24);
         fBmp[0].allocPixels(info);
         fBmp[1].allocPixels(info);
@@ -64,7 +64,7 @@
         }
     }
 
-    virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
         GrRenderTarget* rt = canvas->internal_private_accessTopLayerRenderTarget();
         if (NULL == rt) {
             return;