| Index: tracing/tracing/value/diagnostics/related_value_set.html
|
| diff --git a/tracing/tracing/value/diagnostics/related_value_set.html b/tracing/tracing/value/diagnostics/related_value_set.html
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..d9ea56f2120adbb1964748efbcf3ccc76f9ca03d
|
| --- /dev/null
|
| +++ b/tracing/tracing/value/diagnostics/related_value_set.html
|
| @@ -0,0 +1,92 @@
|
| +<!DOCTYPE html>
|
| +<!--
|
| +Copyright 2016 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.
|
| +-->
|
| +
|
| +<link rel="import" href="/tracing/base/iteration_helpers.html">
|
| +<link rel="import" href="/tracing/value/diagnostics/diagnostic.html">
|
| +
|
| +<script>
|
| +'use strict';
|
| +
|
| +tr.exportTo('tr.v.d', function() {
|
| + /** @constructor */
|
| + function ValueRef(guid) {
|
| + this.guid = guid;
|
| + }
|
| +
|
| + /** @constructor */
|
| + function RelatedValueSet(opt_values) {
|
| + this.values_ = {};
|
| +
|
| + if (opt_values)
|
| + opt_values.forEach(this.add, this);
|
| + }
|
| +
|
| + RelatedValueSet.prototype = {
|
| + __proto__: tr.v.d.Diagnostic.prototype,
|
| +
|
| + /**
|
| + * Add a Value to this set.
|
| + *
|
| + * @param {!ValueRef|tr.v.Value} v
|
| + */
|
| + add: function(v) {
|
| + if (!(v instanceof tr.v.Value) &&
|
| + !(v instanceof ValueRef))
|
| + throw new Error('Must be instanceof Value or ValueRef: ' + v);
|
| +
|
| + if (this.values_[v.guid])
|
| + throw new Error('Tried to add same value twice');
|
| +
|
| + this.values_[v.guid] = v;
|
| + },
|
| +
|
| + /**
|
| + * @return {Array.<ValueRef|tr.v.Value>}
|
| + */
|
| + get values() {
|
| + return tr.b.dictionaryValues(this.values_);
|
| + },
|
| +
|
| + /**
|
| + * Resolve all ValueRefs into Values by looking up their guids in valueSet.
|
| + * If a value cannot be found and opt_required is true, then throw an Error.
|
| + * If a value cannot be found and opt_required is false, then the ValueRef
|
| + * will remain a ValueRef.
|
| + *
|
| + * @param {!tr.metrics.ValueSet} valueSet
|
| + * @param {boolean=} opt_required
|
| + */
|
| + resolve: function(valueSet, opt_required) {
|
| + tr.b.iterItems(this.values_, function(guid, value) {
|
| + if (!(value instanceof ValueRef))
|
| + return;
|
| +
|
| + value = valueSet.lookup(guid);
|
| + if (value instanceof tr.v.Value)
|
| + this.values_[guid] = value;
|
| + else if (opt_required)
|
| + throw new Error('Unable to find Value ' + guid);
|
| + }, this);
|
| + },
|
| +
|
| + _asDictInto: function(d) {
|
| + d.guids = tr.b.dictionaryKeys(this.values_);
|
| + }
|
| + };
|
| +
|
| + RelatedValueSet.fromDict = function(d) {
|
| + return new RelatedValueSet(d.guids.map(guid => new ValueRef(guid)));
|
| + };
|
| +
|
| + tr.v.d.Diagnostic.register(RelatedValueSet);
|
| +
|
| + return {
|
| + RelatedValueSet: RelatedValueSet,
|
| + ValueRef: ValueRef
|
| + };
|
| +});
|
| +</script>
|
|
|