1 /* 2 * Copyright 2014 Google Inc. 3 * 4 * Use of this source code is governed by a BSD-style license that can be 5 * found in the LICENSE file. 6 */ 7 8 #ifndef DMJsonWriter_DEFINED 9 #define DMJsonWriter_DEFINED 10 11 #include "SkString.h" 12 #include "Test.h" 13 14 namespace DM { 15 16 /** 17 * Class for collecting results from DM and writing to a json file. 18 * All methods are thread-safe. 19 */ 20 class JsonWriter { 21 public: 22 /** 23 * Info describing a single run. 24 */ 25 struct BitmapResult { 26 SkString name; // E.g. "ninepatch-stretch", "desk_gws.skp" 27 SkString config; // "gpu", "8888", "serialize", "pipe" 28 SkString sourceType; // "gm", "skp", "image" 29 SkString sourceOptions; // "image", "codec", "subset", "scanline" 30 SkString md5; // In ASCII, so 32 bytes long. 31 SkString ext; // Extension of file we wrote: "png", "pdf", ... 32 }; 33 34 /** 35 * Add a result to the end of the list of results. 36 */ 37 static void AddBitmapResult(const BitmapResult&); 38 39 /** 40 * Add a Failure from a Test. 41 */ 42 static void AddTestFailure(const skiatest::Failure&); 43 44 /** 45 * Write all collected results to the file FLAGS_writePath[0]/dm.json. 46 */ 47 static void DumpJson(); 48 49 /** 50 * Read JSON file at path written by DumpJson, calling callback for each 51 * BitmapResult recorded in the file. Return success. 52 */ 53 static bool ReadJson(const char* path, void(*callback)(BitmapResult)); 54 }; 55 56 57 } // namespace DM 58 #endif // DMJsonWriter_DEFINED 59