text: /*
   * Copyright 2014 Google Inc.
   *
   * Use of this source code is governed by a BSD-style license that can be
   * found in the LICENSE file.
   */
  
  #ifndef DMJsonWriter_DEFINED
  #define DMJsonWriter_DEFINED
  
  #include "SkString.h"
  #include "Test.h"
  
  namespace DM {
  
  /**
   *  Class for collecting results from DM and writing to a json file.
   *  All methods are thread-safe.
   */
  class JsonWriter {
  public:
      /**
       *  Info describing a single run.
       */
      struct BitmapResult {
          SkString name;            // E.g. "ninepatch-stretch", "desk-gws_skp"
          SkString config;          //      "gpu", "8888"
          SkString mode;            //      "direct", "default-tilegrid", "pipe"
          SkString sourceType;      //      "GM", "SKP"
          SkString md5;             // In ASCII, so 32 bytes long.
      };
  
      /**
       *  Add a result to the end of the list of results.
       */
      static void AddBitmapResult(const BitmapResult&);
  
      /**
       *  Add a Failure from a Test.
       */
      static void AddTestFailure(const skiatest::Failure&);
  
      /**
       *  Write all collected results to the file FLAGS_writePath[0]/dm.json.
       */
      static void DumpJson();
  };
  
  } // namespace DM
  #endif // DMJsonWriter_DEFINED
  