// Copyright (c) 2011 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. cr.define('media', function() { 'use strict'; /** * This class holds a list of MediaLogEvents. * It inherits from
  • and contains a tabular list of said events, * the time at which they occurred, and their parameters. */ var EventList = cr.ui.define('li'); EventList.prototype = { __proto__: HTMLLIElement.prototype, startTime_: null, /** * Decorate this list item as an EventList. */ decorate: function() { this.table_ = document.createElement('table'); var details = document.createElement('details'); var summary = media.makeElement('summary', 'Log:'); details.appendChild(summary); details.appendChild(this.table_); this.appendChild(details); var hRow = document.createElement('tr'); hRow.appendChild(media.makeElement('th', 'Time:')); hRow.appendChild(media.makeElement('th', 'Event:')); hRow.appendChild(media.makeElement('th', 'Parameters:')); var header = document.createElement('thead'); header.appendChild(hRow); this.table_.appendChild(header); }, /** * Add an event to the list. It is stored as a new row in this.table_. * @param {Object} event The MediaLogEvent that has occurred. */ addEvent: function(event) { var timeInMs = event.time * 1000; // Work with milliseconds. this.startTime_ = this.startTime_ || timeInMs; timeInMs -= this.startTime_; var row = document.createElement('tr'); row.appendChild(media.makeElement('td', timeInMs.toFixed(1))); row.appendChild(media.makeElement('td', event.type)); var params = []; for (var i = 0; i < event.params.length; ++i) { params.push(i + ': ' + event.params[i]); } row.appendChild(media.makeElement('td', params.join(', '))); this.table_.appendChild(row); } }; return { EventList: EventList }; });