| Index: dm/DMJsonWriter.cpp
|
| diff --git a/dm/DMJsonWriter.cpp b/dm/DMJsonWriter.cpp
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..c58042ecdab2b03c0449ff35c0e9e000a921344f
|
| --- /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::GmData> gGmData;
|
| +SK_DECLARE_STATIC_MUTEX(gGmDataLock);
|
| +
|
| +void JsonWriter::AddGmData(GmData data) {
|
| + SkAutoMutexAcquire lock(&gGmDataLock);
|
| + gGmData.push_back(data);
|
| +}
|
| +
|
| +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(&gGmDataLock);
|
| + for (int i = 0; i < gGmData.count(); i++) {
|
| + Json::Value result;
|
| + result["key"]["name"] = gGmData[i].name.c_str();
|
| + result["key"]["config"] = gGmData[i].config.c_str();
|
| + result["key"]["mode"] = gGmData[i].mode.c_str();
|
| + result["options"]["source_type"] = gGmData[i].sourceType.c_str();
|
| + result["md5"] = gGmData[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
|
|
|