blob: 54e2d14230a8e95df7eb90aff7a3ddc3c2ee880e [file] [log] [blame]
<!DOCTYPE html>
<!--
Copyright (c) 2013 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="/model/async_slice.html">
<script>
'use strict';
tr.exportTo('tr.e.net', function() {
var AsyncSlice = tr.model.AsyncSlice;
function NetAsyncSlice() {
AsyncSlice.apply(this, arguments);
// A boolean variable indicates whether we have computed the title.
this.isTitleComputed_ = false;
}
NetAsyncSlice.prototype = {
__proto__: AsyncSlice.prototype,
get viewSubGroupTitle() {
return 'NetLog';
},
get title() {
if (this.isTitleComputed_ || !this.isTopLevel) {
return this.title_;
}
// A recursive helper function that gets the url param of a slice or its
// nested subslices if there is one.
var getUrl = function(slice) {
if (slice.args !== undefined && slice.args.params !== undefined &&
slice.args.params.url !== undefined) {
return slice.args.params.url;
}
if (slice.subSlices === undefined || slice.subSlices.length === 0)
return undefined;
for (var i = 0; i < slice.subSlices.length; i++) {
var result = getUrl(slice.subSlices[i]);
if (result !== undefined)
return result;
}
return undefined;
};
var url = getUrl(this);
if (url !== undefined && url.length > 0) {
// Set the title so we do not have to recompute when it is redrawn.
this.title_ = url;
} else if (this.args !== undefined &&
this.args.source_type !== undefined) {
// We do not have a URL, use the source type as the title.
this.title_ = this.args.source_type;
}
this.isTitleComputed_ = true;
return this.title_;
},
set title(title) {
this.title_ = title;
}
};
AsyncSlice.register(
NetAsyncSlice,
{
categoryParts: ['netlog', 'disabled-by-default-netlog']
});
return {
NetAsyncSlice: NetAsyncSlice
};
});
</script>