aboutsummaryrefslogtreecommitdiffhomepage
path: root/dm/DMJsonWriter.cpp
diff options
context:
space:
mode:
authorGravatar scroggo <scroggo@google.com>2014-11-04 07:21:10 -0800
committerGravatar Commit bot <commit-bot@chromium.org>2014-11-04 07:21:10 -0800
commit7a10fb6bead0f63623307a7ff71b1dd323534a7f (patch)
tree2b6303fdbb8d8768560daca5996bc8a38b82536f /dm/DMJsonWriter.cpp
parentb32f0ad89119625feedb4f0403bbbc94fae44668 (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.cpp61
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