diff --git a/tests/Test.cpp b/tests/Test.cpp
index 81c4ef9..07db969 100644
--- a/tests/Test.cpp
+++ b/tests/Test.cpp
@@ -60,7 +60,7 @@
 namespace {
     class LocalReporter : public Reporter {
     public:
-        LocalReporter() {}
+        explicit LocalReporter(const Reporter& reporterToMimic) : fReporter(reporterToMimic) {}
 
         int failure_size() const { return fFailures.count(); }
         const char* failure(int i) const { return fFailures[i].c_str(); }
@@ -72,7 +72,16 @@
             }
         }
 
+        virtual bool allowExtendedTest() const SK_OVERRIDE {
+            return fReporter.allowExtendedTest();
+        }
+
+        virtual bool allowThreaded() const SK_OVERRIDE {
+            return fReporter.allowThreaded();
+        }
+
     private:
+        const Reporter& fReporter;
         SkTArray<SkString> fFailures;
     };
 }  // namespace
@@ -84,7 +93,7 @@
     const SkMSec start = SkTime::GetMSecs();
     // Run the test into a LocalReporter so we know if it's passed or failed without interference
     // from other tests that might share fReporter.
-    LocalReporter local;
+    LocalReporter local(*fReporter);
     this->onRun(&local);
     fPassed = local.failure_size() == 0;
     fElapsed = SkTime::GetMSecs() - start;
diff --git a/tests/skia_test.cpp b/tests/skia_test.cpp
index 7db5e5c..516ab7e 100644
--- a/tests/skia_test.cpp
+++ b/tests/skia_test.cpp
@@ -73,11 +73,11 @@
         fTotal = total;
     }
 
-    virtual bool allowExtendedTest() const {
+    virtual bool allowExtendedTest() const SK_OVERRIDE {
         return fAllowExtendedTest;
     }
 
-    virtual bool allowThreaded() const {
+    virtual bool allowThreaded() const SK_OVERRIDE {
         return fAllowThreaded;
     }
 
