Create new target to hold gpu test code, enable direct testing of GrEffects in GM.

R=robertphillips@google.com, jvanverth@google.com, egdaniel@google.com

Author: bsalomon@google.com

Review URL: https://chromiumcodereview.appspot.com/23352003

git-svn-id: http://skia.googlecode.com/svn/trunk@10866 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/gpu/GrTest.h b/src/gpu/GrTest.h
new file mode 100644
index 0000000..5e61c29
--- /dev/null
+++ b/src/gpu/GrTest.h
@@ -0,0 +1,35 @@
+
+/*
+ * Copyright 2013 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef GrTest_DEFINED
+#define GrTest_DEFINED
+
+#include "GrContext.h"
+#include "GrDrawTarget.h"
+
+/** Allows a test to temporarily draw to a GrDrawTarget owned by a GrContext. Tests that use this
+    should be careful not to mix using the GrDrawTarget 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*, GrDrawTarget*);
+
+    GrDrawTarget* target() { return fDrawTarget.get(); }
+
+private:
+    SkTLazy<GrDrawTarget::AutoStateRestore> fASR;
+    SkTLazy<GrDrawTarget::AutoClipRestore>  fACR;
+    SkTLazy<GrDrawTarget::AutoGeometryPush> fAGP;
+
+    SkAutoTUnref<GrDrawTarget>              fDrawTarget;
+    SkAutoTUnref<GrContext>                 fContext;
+};
+
+#endif