Home | History | Annotate | Download | only in dm
      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