Index: chrome/browser/resources/media_internals/event_list.js |
diff --git a/chrome/browser/resources/media_internals/event_list.js b/chrome/browser/resources/media_internals/event_list.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..ce22f569d07d11e69b0f86cba22df9d6da456fcd |
--- /dev/null |
+++ b/chrome/browser/resources/media_internals/event_list.js |
@@ -0,0 +1,64 @@ |
+// 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 <li> 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 |
+ }; |
+}); |