| Index: content/browser/resources/media/new/player_info.js
|
| diff --git a/content/browser/resources/media/new/player_info.js b/content/browser/resources/media/new/player_info.js
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..8ed9c43ff3913b272d20f3db9ae8a26a108c7774
|
| --- /dev/null
|
| +++ b/content/browser/resources/media/new/player_info.js
|
| @@ -0,0 +1,83 @@
|
| +// Copyright (c) 2012 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.
|
| +
|
| +
|
| +/**
|
| + * @fileoverview A class for keeping track of the details of a player.
|
| + */
|
| +
|
| +var PlayerInfo = (function () {
|
| + "use strict";
|
| +
|
| + /**
|
| + * A class that keeps track of properties on a media player.
|
| + * @param id A unique id that can be used to identify this player.
|
| + * @constructor
|
| + */
|
| + function PlayerInfo(id) {
|
| + this.id = id;
|
| + // The current value of the properties for this player
|
| + this.properties = {};
|
| + // All of the past (and present) values of the properties
|
| + this.pastValues = {};
|
| +
|
| + // Every single event in the order in which they were received
|
| + this.allEvents = [];
|
| + this.lastRendered = 0;
|
| +
|
| + this.firstTimestamp = -1;
|
| + }
|
| +
|
| +
|
| + /**
|
| + * Adds or set a property on this player.
|
| + * This is the default logging method as it keeps track of old values
|
| + * @param timestamp The time in milliseconds since the Epoch
|
| + * @param key A String key that describes the property
|
| + * @param value The value of the property.
|
| + */
|
| + PlayerInfo.prototype.addProperty = function (timestamp, key, value) {
|
| + // The first timestamp that we get will be recorded.
|
| + // Then, all future timestamps are deltas of that.
|
| + if (this.firstTimestamp === -1) {
|
| + this.firstTimestamp = timestamp;
|
| + }
|
| +
|
| + if (typeof key !== 'string') {
|
| + throw new Error(typeof key + " is not a valid key type");
|
| + }
|
| +
|
| + this.properties[key] = value;
|
| +
|
| + if (!this.pastValues[key]) {
|
| + // Preallocate for performance
|
| + this.pastValues[key] = new Array(512);
|
| + }
|
| +
|
| + var recordValue = {
|
| + time: timestamp - this.firstTimestamp,
|
| + key: key,
|
| + value: value
|
| + };
|
| +
|
| + this.pastValues[key].push(recordValue);
|
| + this.allEvents.push(recordValue);
|
| + };
|
| +
|
| +
|
| + /**
|
| + * Adds or set a property on this player.
|
| + * Does not keep track of old values. This is better for
|
| + * values that get spammed repeatedly.
|
| + * @param timestamp The time in milliseconds since the Epoch
|
| + * @param key A String key that describes the property
|
| + * @param value The value of the property.
|
| + */
|
| + PlayerInfo.prototype.addPropertyNoRecord = function (timestamp, key, value) {
|
| + this.addProperty(timestamp, key, value);
|
| + this.allEvents.pop();
|
| + };
|
| +
|
| + return PlayerInfo;
|
| +}());
|
|
|