• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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         bool gammaCorrect;        // Old configs are not gamma correct, some new ones are.
33     };
34 
35     /**
36      *  Add a result to the end of the list of results.
37      */
38     static void AddBitmapResult(const BitmapResult&);
39 
40     /**
41      *  Add a Failure from a Test.
42      */
43     static void AddTestFailure(const skiatest::Failure&);
44 
45     /**
46      *  Write all collected results to the file FLAGS_writePath[0]/dm.json.
47      */
48     static void DumpJson();
49 
50     /**
51      * Read JSON file at path written by DumpJson, calling callback for each
52      * BitmapResult recorded in the file.  Return success.
53      */
54     static bool ReadJson(const char* path, void(*callback)(BitmapResult));
55 };
56 
57 
58 } // namespace DM
59 #endif // DMJsonWriter_DEFINED
60