| Index: apps/benchmark/event.cc
|
| diff --git a/apps/benchmark/event.cc b/apps/benchmark/event.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..6c528488810cada738322bd7c7c1486e4d01e2b4
|
| --- /dev/null
|
| +++ b/apps/benchmark/event.cc
|
| @@ -0,0 +1,69 @@
|
| +// Copyright 2015 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include "apps/benchmark/event.h"
|
| +
|
| +#include "base/json/json_reader.h"
|
| +#include "base/memory/scoped_ptr.h"
|
| +#include "base/values.h"
|
| +
|
| +namespace benchmark {
|
| +
|
| +Event::Event() {}
|
| +
|
| +Event::Event(std::string name,
|
| + std::string category,
|
| + base::TimeTicks timestamp,
|
| + base::TimeDelta duration)
|
| + : name(name),
|
| + category(category),
|
| + timestamp(timestamp),
|
| + duration(duration) {}
|
| +
|
| +Event::~Event() {}
|
| +
|
| +bool GetEvents(const std::string& trace_json, std::vector<Event>* result) {
|
| + result->clear();
|
| +
|
| + // Parse the JSON string describing the events.
|
| + base::JSONReader reader;
|
| + scoped_ptr<base::Value> trace_data = reader.ReadToValue(trace_json);
|
| + if (!trace_data) {
|
| + return false;
|
| + }
|
| +
|
| + base::ListValue* event_list;
|
| + if (!trace_data->GetAsList(&event_list))
|
| + return false;
|
| +
|
| + for (base::Value* val : *event_list) {
|
| + Event event;
|
| + base::DictionaryValue* dict;
|
| + if (!val->GetAsDictionary(&dict))
|
| + return false;
|
| +
|
| + if (!dict->GetString("name", &event.name))
|
| + return false;
|
| +
|
| + if (!dict->GetString("cat", &event.category))
|
| + return false;
|
| +
|
| + double timestamp;
|
| + if (!dict->GetDouble("ts", ×tamp))
|
| + return false;
|
| + event.timestamp = base::TimeTicks::FromInternalValue(timestamp);
|
| +
|
| + // It is valid for an event to not have duration.
|
| + double duration;
|
| + if (!dict->GetDouble("dur", &duration)) {
|
| + event.duration = base::TimeDelta();
|
| + } else {
|
| + event.duration = base::TimeDelta::FromInternalValue(duration);
|
| + }
|
| +
|
| + result->push_back(event);
|
| + }
|
| + return true;
|
| +}
|
| +} // namespace benchmark
|
|
|