diff options
author | scroggo <scroggo@google.com> | 2014-11-04 07:21:10 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2014-11-04 07:21:10 -0800 |
commit | 7a10fb6bead0f63623307a7ff71b1dd323534a7f (patch) | |
tree | 2b6303fdbb8d8768560daca5996bc8a38b82536f /dm/DMJsonWriter.cpp | |
parent | b32f0ad89119625feedb4f0403bbbc94fae44668 (diff) |
Separate JSON functions from DMWriteTask.
Add JsonWriter, which handles Json output from DM, in preparation for
adding json output for tests. This change should not affect behavior.
BUG=skia:2454
Review URL: https://codereview.chromium.org/702513003
Diffstat (limited to 'dm/DMJsonWriter.cpp')
-rw-r--r-- | dm/DMJsonWriter.cpp | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/dm/DMJsonWriter.cpp b/dm/DMJsonWriter.cpp new file mode 100644 index 0000000000..f86264715b --- /dev/null +++ b/dm/DMJsonWriter.cpp @@ -0,0 +1,61 @@ +/* + * Copyright 2014 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#include "DMJsonWriter.h" + +#include "SkCommonFlags.h" +#include "SkJSONCPP.h" +#include "SkOSFile.h" +#include "SkStream.h" +#include "SkTArray.h" +#include "SkThread.h" + +namespace DM { + +SkTArray<JsonWriter::BitmapResult> gBitmapResults; +SK_DECLARE_STATIC_MUTEX(gBitmapResultLock); + +void JsonWriter::AddBitmapResult(const BitmapResult& result) { + SkAutoMutexAcquire lock(&gBitmapResultLock); + gBitmapResults.push_back(result); +} + +void JsonWriter::DumpJson() { + if (FLAGS_writePath.isEmpty()) { + return; + } + + Json::Value root; + + for (int i = 1; i < FLAGS_properties.count(); i += 2) { + root[FLAGS_properties[i-1]] = FLAGS_properties[i]; + } + for (int i = 1; i < FLAGS_key.count(); i += 2) { + root["key"][FLAGS_key[i-1]] = FLAGS_key[i]; + } + + { + SkAutoMutexAcquire lock(&gBitmapResultLock); + for (int i = 0; i < gBitmapResults.count(); i++) { + Json::Value result; + result["key"]["name"] = gBitmapResults[i].name.c_str(); + result["key"]["config"] = gBitmapResults[i].config.c_str(); + result["key"]["mode"] = gBitmapResults[i].mode.c_str(); + result["options"]["source_type"] = gBitmapResults[i].sourceType.c_str(); + result["md5"] = gBitmapResults[i].md5.c_str(); + + root["results"].append(result); + } + } + + SkString path = SkOSPath::Join(FLAGS_writePath[0], "dm.json"); + SkFILEWStream stream(path.c_str()); + stream.writeText(Json::StyledWriter().write(root).c_str()); + stream.flush(); +} + +} // namespace DM |