Let DM run unit tests.
  - refactor GYPs and a few flags
  - make GPU tests grab a thread-local GrContextFactory when needed as we do in DM for GMs
  - add a few more UI features to make DM more like tests

I believe this makes the program 'tests' obsolete.

It should be somewhat faster to run the two sets together than running the old binaries serially:
  - serial: tests 20s (3m18s CPU), dm 21s (3m01s CPU)
  - together: 27s (6m21s CPU)

Next up is to incorporate benches.  I'm only planning there on a single-pass sanity check, so that won't obsolete the program 'bench' just yet.

Tested: out/Debug/tests && out/Debug/dm && echo ok
BUG=skia:

Committed: http://code.google.com/p/skia/source/detail?r=13586

R=reed@google.com, bsalomon@google.com, mtklein@google.com, tfarina@chromium.org

Author: mtklein@chromium.org

Review URL: https://codereview.chromium.org/178273002

git-svn-id: http://skia.googlecode.com/svn/trunk@13592 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/gyp/tests.gypi b/gyp/tests.gypi
new file mode 100644
index 0000000..f5143e2
--- /dev/null
+++ b/gyp/tests.gypi
@@ -0,0 +1,181 @@
+{
+  'include_dirs': [
+    '../src/core',
+    '../src/effects',
+    '../src/image',
+    '../src/lazy',
+    '../src/images',
+    '../src/pathops',
+    '../src/pdf',
+    '../src/pipe/utils',
+    '../src/utils',
+    '../src/utils/debugger',
+    '../tools/',
+
+    # Needed for TDStackNesterTest.
+    '../experimental/PdfViewer',
+    '../experimental/PdfViewer/src',
+  ],
+  'dependencies': [
+    'skia_lib.gyp:skia_lib',
+    'experimental.gyp:experimental',
+    'flags.gyp:flags',
+    'pdf.gyp:pdf',
+    'tools.gyp:picture_utils',
+  ],
+  'sources': [
+    '../tests/Test.cpp',
+    '../tests/Test.h',
+
+    '../tests/AAClipTest.cpp',
+    '../tests/ARGBImageEncoderTest.cpp',
+    '../tests/AndroidPaintTest.cpp',
+    '../tests/AnnotationTest.cpp',
+    '../tests/AtomicTest.cpp',
+    '../tests/BBoxHierarchyTest.cpp',
+    '../tests/BitSetTest.cpp',
+    '../tests/BitmapCopyTest.cpp',
+    '../tests/BitmapGetColorTest.cpp',
+    '../tests/BitmapHasherTest.cpp',
+    '../tests/BitmapHeapTest.cpp',
+    '../tests/BitmapTest.cpp',
+    '../tests/BlendTest.cpp',
+    '../tests/BlitRowTest.cpp',
+    '../tests/BlurTest.cpp',
+    '../tests/CachedDecodingPixelRefTest.cpp',
+    '../tests/CanvasStateTest.cpp',
+    '../tests/CanvasTest.cpp',
+    '../tests/ChecksumTest.cpp',
+    '../tests/ClampRangeTest.cpp',
+    '../tests/ClipCacheTest.cpp',
+    '../tests/ClipCubicTest.cpp',
+    '../tests/ClipStackTest.cpp',
+    '../tests/ClipperTest.cpp',
+    '../tests/ColorFilterTest.cpp',
+    '../tests/ColorPrivTest.cpp',
+    '../tests/ColorTest.cpp',
+    '../tests/DataRefTest.cpp',
+    '../tests/DeferredCanvasTest.cpp',
+    '../tests/DequeTest.cpp',
+    '../tests/DeviceLooperTest.cpp',
+    '../tests/DiscardableMemoryPool.cpp',
+    '../tests/DiscardableMemoryTest.cpp',
+    '../tests/DocumentTest.cpp',
+    '../tests/DrawBitmapRectTest.cpp',
+    '../tests/DrawPathTest.cpp',
+    '../tests/DrawTextTest.cpp',
+    '../tests/DynamicHashTest.cpp',
+    '../tests/EmptyPathTest.cpp',
+    '../tests/ErrorTest.cpp',
+    '../tests/FillPathTest.cpp',
+    '../tests/FitsInTest.cpp',
+    '../tests/FlatDataTest.cpp',
+    '../tests/FlateTest.cpp',
+    '../tests/FontHostStreamTest.cpp',
+    '../tests/FontHostTest.cpp',
+    '../tests/FontMgrTest.cpp',
+    '../tests/FontNamesTest.cpp',
+    '../tests/FrontBufferedStreamTest.cpp',
+    '../tests/GLInterfaceValidation.cpp',
+    '../tests/GLProgramsTest.cpp',
+    '../tests/GeometryTest.cpp',
+    '../tests/GifTest.cpp',
+    '../tests/GpuBitmapCopyTest.cpp',
+    '../tests/GpuColorFilterTest.cpp',
+    '../tests/GpuDrawPathTest.cpp',
+    '../tests/GrBinHashKeyTest.cpp',
+    '../tests/GrContextFactoryTest.cpp',
+    '../tests/GrDrawTargetTest.cpp',
+    '../tests/GrMemoryPoolTest.cpp',
+    '../tests/GrRedBlackTreeTest.cpp',
+    '../tests/GrSurfaceTest.cpp',
+    '../tests/GrTBSearchTest.cpp',
+    '../tests/GradientTest.cpp',
+    '../tests/HashCacheTest.cpp',
+    '../tests/ImageCacheTest.cpp',
+    '../tests/ImageDecodingTest.cpp',
+    '../tests/ImageFilterTest.cpp',
+    '../tests/InfRectTest.cpp',
+    '../tests/JpegTest.cpp',
+    '../tests/LListTest.cpp',
+    '../tests/LayerDrawLooperTest.cpp',
+    '../tests/MD5Test.cpp',
+    '../tests/MallocPixelRefTest.cpp',
+    '../tests/MathTest.cpp',
+    '../tests/Matrix44Test.cpp',
+    '../tests/MatrixClipCollapseTest.cpp',
+    '../tests/MatrixTest.cpp',
+    '../tests/MemoryTest.cpp',
+    '../tests/MemsetTest.cpp',
+    '../tests/MessageBusTest.cpp',
+    '../tests/MetaDataTest.cpp',
+    '../tests/MipMapTest.cpp',
+    '../tests/OSPathTest.cpp',
+    '../tests/OnceTest.cpp',
+    '../tests/PDFPrimitivesTest.cpp',
+    '../tests/PackBitsTest.cpp',
+    '../tests/PaintTest.cpp',
+    '../tests/ParsePathTest.cpp',
+    '../tests/PathCoverageTest.cpp',
+    '../tests/PathMeasureTest.cpp',
+    '../tests/PathTest.cpp',
+    '../tests/PathUtilsTest.cpp',
+    '../tests/PictureTest.cpp',
+    '../tests/PictureUtilsTest.cpp',
+    '../tests/PixelRefTest.cpp',
+    '../tests/PointTest.cpp',
+    '../tests/PremulAlphaRoundTripTest.cpp',
+    '../tests/QuickRejectTest.cpp',
+    '../tests/RTreeTest.cpp',
+    '../tests/RandomTest.cpp',
+    '../tests/ReadPixelsTest.cpp',
+    '../tests/ReadWriteAlphaTest.cpp',
+    '../tests/Reader32Test.cpp',
+    '../tests/RefCntTest.cpp',
+    '../tests/RefDictTest.cpp',
+    '../tests/RegionTest.cpp',
+    '../tests/ResourceCacheTest.cpp',
+    '../tests/RoundRectTest.cpp',
+    '../tests/RuntimeConfigTest.cpp',
+    '../tests/SHA1Test.cpp',
+    '../tests/ScalarTest.cpp',
+    '../tests/SerializationTest.cpp',
+    '../tests/ShaderImageFilterTest.cpp',
+    '../tests/ShaderOpacityTest.cpp',
+    '../tests/SkBase64Test.cpp',
+    '../tests/SortTest.cpp',
+    '../tests/SrcOverTest.cpp',
+    '../tests/StreamTest.cpp',
+    '../tests/StringTest.cpp',
+    '../tests/StrokeTest.cpp',
+    '../tests/SurfaceTest.cpp',
+    '../tests/TLSTest.cpp',
+    '../tests/TSetTest.cpp',
+    '../tests/TestSize.cpp',
+    '../tests/TileGridTest.cpp',
+    '../tests/ToUnicode.cpp',
+    '../tests/TracingTest.cpp',
+    '../tests/Typeface.cpp',
+    '../tests/UnicodeTest.cpp',
+    '../tests/UnitTestTest.cpp',
+    '../tests/UtilsTest.cpp',
+    '../tests/WArrayTest.cpp',
+    '../tests/WritePixelsTest.cpp',
+    '../tests/Writer32Test.cpp',
+    '../tests/XfermodeTest.cpp',
+
+    '../tests/MatrixClipCollapseTest.cpp',
+    '../src/utils/debugger/SkDrawCommand.h',
+    '../src/utils/debugger/SkDrawCommand.cpp',
+    '../src/utils/debugger/SkDebugCanvas.h',
+    '../src/utils/debugger/SkDebugCanvas.cpp',
+    '../src/utils/debugger/SkObjectParser.h',
+    '../src/utils/debugger/SkObjectParser.cpp',
+
+    '../tests/PipeTest.cpp',
+    '../src/pipe/utils/SamplePipeControllers.cpp',
+
+    '../tests/TDStackNesterTest.cpp',
+    '../experimental/PdfViewer/src/SkTDStackNester.h',
+  ],
+}