diff --git a/include/gpu/GrContext.h b/include/gpu/GrContext.h
index 083a19a..7e8d4e8 100644
--- a/include/gpu/GrContext.h
+++ b/include/gpu/GrContext.h
@@ -36,7 +36,6 @@
 class GrResourceEntry;
 class GrResourceCache;
 class GrResourceProvider;
-class GrTestTarget;
 class GrTextBlobCache;
 class GrTextContext;
 class GrSamplerParams;
@@ -341,9 +340,6 @@
     const GrResourceProvider* resourceProvider() const { return fResourceProvider; }
     GrResourceCache* getResourceCache() { return fResourceCache; }
 
-    // Called by tests that draw directly to the context via GrRenderTargetContext
-    void getTestTarget(GrTestTarget*, sk_sp<GrRenderTargetContext>);
-
     /** Reset GPU stats */
     void resetGpuStats() const ;
 
diff --git a/include/gpu/GrRenderTargetContext.h b/include/gpu/GrRenderTargetContext.h
index e595a4f..aab1050 100644
--- a/include/gpu/GrRenderTargetContext.h
+++ b/include/gpu/GrRenderTargetContext.h
@@ -391,7 +391,6 @@
 
     friend class GrDrawingManager; // for ctor
     friend class GrRenderTargetContextPriv;
-    friend class GrTestTarget;  // for access to getOpList
     friend class GrSWMaskHelper;                 // for access to addDrawOp
 
     // All the path renderers currently make their own ops
diff --git a/tests/DFPathRendererTest.cpp b/tests/DFPathRendererTest.cpp
index 7fb8c8a..e4d87a2 100644
--- a/tests/DFPathRendererTest.cpp
+++ b/tests/DFPathRendererTest.cpp
@@ -7,18 +7,19 @@
 
 #include "Test.h"
 
+#include "SkPath.h"
+
 #if SK_SUPPORT_GPU
 #include "GrContext.h"
-#include "GrTest.h"
-#include "SkPath.h"
 #include "ops/GrAADistanceFieldPathRenderer.h"
 
 // This test case including path coords and matrix taken from crbug.com/627443.
 // Because of inaccuracies in large floating point values this causes the
 // the path renderer to attempt to add a path DF to its atlas that is larger
 // than the plot size which used to crash rather than fail gracefully.
-static void test_far_from_origin(GrRenderTargetContext* renderTargetContext, GrPathRenderer* pr,
-                                 GrResourceProvider* rp) {
+static void test_far_from_origin(GrResourceProvider* rp,
+                                 GrRenderTargetContext* renderTargetContext,
+                                 GrPathRenderer* pr) {
     SkPath path;
     path.lineTo(49.0255089839f, 0.473541f);
     // This extra line wasn't in the original bug but was added to fake out GrShape's special
@@ -58,27 +59,25 @@
 }
 
 DEF_GPUTEST_FOR_ALL_GL_CONTEXTS(AADistanceFieldPathRenderer, reporter, ctxInfo) {
+    GrContext* ctx = ctxInfo.grContext();
     // The DF PR only works with contexts that support derivatives
-    if (!ctxInfo.grContext()->caps()->shaderCaps()->shaderDerivativeSupport()) {
+    if (!ctx->caps()->shaderCaps()->shaderDerivativeSupport()) {
         return;
     }
-    sk_sp<GrRenderTargetContext> rtc(ctxInfo.grContext()->makeRenderTargetContext(
-                                                                         SkBackingFit::kApprox,
-                                                                         800, 800,
-                                                                         kRGBA_8888_GrPixelConfig,
-                                                                         nullptr,
-                                                                         0,
-                                                                         kTopLeft_GrSurfaceOrigin));
+    sk_sp<GrRenderTargetContext> rtc(ctx->makeRenderTargetContext(SkBackingFit::kApprox,
+                                                                  800, 800,
+                                                                  kRGBA_8888_GrPixelConfig,
+                                                                  nullptr,
+                                                                  0,
+                                                                  kTopLeft_GrSurfaceOrigin));
     if (!rtc) {
         return;
     }
 
     GrAADistanceFieldPathRenderer dfpr;
-    GrTestTarget tt;
-    ctxInfo.grContext()->getTestTarget(&tt, rtc);
-    GrResourceProvider* rp = tt.resourceProvider();
 
-    test_far_from_origin(rtc.get(), &dfpr, rp);
-    ctxInfo.grContext()->flush();
+    ctx->flush();
+    test_far_from_origin(ctx->resourceProvider(), rtc.get(), &dfpr);
+    ctx->flush();
 }
 #endif
diff --git a/tests/TessellatingPathRendererTests.cpp b/tests/TessellatingPathRendererTests.cpp
index b03db18..90d2ba5 100644
--- a/tests/TessellatingPathRendererTests.cpp
+++ b/tests/TessellatingPathRendererTests.cpp
@@ -5,12 +5,12 @@
  * found in the LICENSE file.
  */
 
+#include "Test.h"
+
 #include "SkPath.h"
 
 #if SK_SUPPORT_GPU
 #include "GrContext.h"
-#include "GrTest.h"
-#include "Test.h"
 #include "ops/GrTessellatingPathRenderer.h"
 
 /*
@@ -249,7 +249,7 @@
     return path;
 }
 
-static void test_path(GrRenderTargetContext* renderTargetContext, GrResourceProvider* rp,
+static void test_path(GrResourceProvider* rp, GrRenderTargetContext* renderTargetContext,
                       const SkPath& path) {
     GrTessellatingPathRenderer tess;
 
@@ -272,37 +272,36 @@
 }
 
 DEF_GPUTEST_FOR_ALL_CONTEXTS(TessellatingPathRendererTests, reporter, ctxInfo) {
-    sk_sp<GrRenderTargetContext> rtc(ctxInfo.grContext()->makeRenderTargetContext(
-                                                                         SkBackingFit::kApprox,
-                                                                         800, 800,
-                                                                         kRGBA_8888_GrPixelConfig,
-                                                                         nullptr,
-                                                                         0,
-                                                                         kTopLeft_GrSurfaceOrigin));
+    GrContext* ctx = ctxInfo.grContext();
+    sk_sp<GrRenderTargetContext> rtc(ctx->makeRenderTargetContext(SkBackingFit::kApprox,
+                                                                  800, 800,
+                                                                  kRGBA_8888_GrPixelConfig,
+                                                                  nullptr,
+                                                                  0,
+                                                                  kTopLeft_GrSurfaceOrigin));
     if (!rtc) {
         return;
     }
 
-    GrTestTarget tt;
-    ctxInfo.grContext()->getTestTarget(&tt, rtc);
-    GrResourceProvider* rp = tt.resourceProvider();
+    GrResourceProvider* rp = ctx->resourceProvider();
 
-    test_path(rtc.get(), rp, create_path_0());
-    test_path(rtc.get(), rp, create_path_1());
-    test_path(rtc.get(), rp, create_path_2());
-    test_path(rtc.get(), rp, create_path_3());
-    test_path(rtc.get(), rp, create_path_4());
-    test_path(rtc.get(), rp, create_path_5());
-    test_path(rtc.get(), rp, create_path_6());
-    test_path(rtc.get(), rp, create_path_7());
-    test_path(rtc.get(), rp, create_path_8());
-    test_path(rtc.get(), rp, create_path_9());
-    test_path(rtc.get(), rp, create_path_10());
-    test_path(rtc.get(), rp, create_path_11());
-    test_path(rtc.get(), rp, create_path_12());
-    test_path(rtc.get(), rp, create_path_13());
-    test_path(rtc.get(), rp, create_path_14());
-    test_path(rtc.get(), rp, create_path_15());
-    test_path(rtc.get(), rp, create_path_16());
+    ctx->flush();
+    test_path(rp, rtc.get(), create_path_0());
+    test_path(rp, rtc.get(), create_path_1());
+    test_path(rp, rtc.get(), create_path_2());
+    test_path(rp, rtc.get(), create_path_3());
+    test_path(rp, rtc.get(), create_path_4());
+    test_path(rp, rtc.get(), create_path_5());
+    test_path(rp, rtc.get(), create_path_6());
+    test_path(rp, rtc.get(), create_path_7());
+    test_path(rp, rtc.get(), create_path_8());
+    test_path(rp, rtc.get(), create_path_9());
+    test_path(rp, rtc.get(), create_path_10());
+    test_path(rp, rtc.get(), create_path_11());
+    test_path(rp, rtc.get(), create_path_12());
+    test_path(rp, rtc.get(), create_path_13());
+    test_path(rp, rtc.get(), create_path_14());
+    test_path(rp, rtc.get(), create_path_15());
+    test_path(rp, rtc.get(), create_path_16());
 }
 #endif
diff --git a/tools/gpu/GrTest.cpp b/tools/gpu/GrTest.cpp
index cc34f21..975d1ec 100644
--- a/tools/gpu/GrTest.cpp
+++ b/tools/gpu/GrTest.cpp
@@ -55,13 +55,6 @@
 }
 };
 
-void GrTestTarget::init(GrContext* ctx, sk_sp<GrRenderTargetContext> renderTargetContext) {
-    SkASSERT(!fContext);
-
-    fContext.reset(SkRef(ctx));
-    fRenderTargetContext = renderTargetContext;
-}
-
 bool GrSurfaceProxy::isWrapped_ForTesting() const {
     return SkToBool(fTarget);
 }
@@ -70,16 +63,6 @@
     return fRenderTargetProxy->isWrapped_ForTesting();
 }
 
-void GrContext::getTestTarget(GrTestTarget* tar, sk_sp<GrRenderTargetContext> renderTargetContext) {
-    this->flush();
-    SkASSERT(renderTargetContext);
-    // We could create a proxy GrOpList that passes through to fGpu until ~GrTextTarget() and
-    // then disconnects. This would help prevent test writers from mixing using the returned
-    // GrOpList and regular drawing. We could also assert or fail in GrContext drawing methods
-    // until ~GrTestTarget().
-    tar->init(this, std::move(renderTargetContext));
-}
-
 void GrContext::setTextBlobCacheLimit_ForTesting(size_t bytes) {
     fTextBlobCache->setBudget(bytes);
 }
diff --git a/tools/gpu/GrTest.h b/tools/gpu/GrTest.h
index 0ef2140..db4c451 100644
--- a/tools/gpu/GrTest.h
+++ b/tools/gpu/GrTest.h
@@ -9,7 +9,6 @@
 #define GrTest_DEFINED
 
 #include "GrContext.h"
-#include "GrRenderTargetContext.h"
 
 namespace GrTest {
     /**
@@ -19,21 +18,4 @@
     void SetupAlwaysEvictAtlas(GrContext*);
 };
 
-/** TODO Please do not use this if you can avoid it.  We are in the process of deleting it.
-    Allows a test to temporarily draw to a GrOpList owned by a GrContext. Tests that use this
-    should be careful not to mix using the GrOpList directly and drawing via SkCanvas or
-    GrContext. In the future this object may provide some guards to prevent this. */
-class GrTestTarget {
-public:
-    GrTestTarget() {}
-
-    void init(GrContext*, sk_sp<GrRenderTargetContext>);
-
-    GrResourceProvider* resourceProvider() { return fContext->resourceProvider(); }
-
-private:
-    sk_sp<GrContext>             fContext;
-    sk_sp<GrRenderTargetContext> fRenderTargetContext;
-};
-
 #endif
