Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1601)

Unified Diff: content/browser/resources/media/new/main.js

Issue 20804002: Added the next series of files that go into media-internals. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 7 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/browser/resources/media/new/main.js
diff --git a/content/browser/resources/media/new/main.js b/content/browser/resources/media/new/main.js
new file mode 100644
index 0000000000000000000000000000000000000000..00efdf235e30208a55b362a77efd94c9e676b1a6
--- /dev/null
+++ b/content/browser/resources/media/new/main.js
@@ -0,0 +1,132 @@
+// 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.
+
+/**
+ * A global object that gets used by the C++ interface.
+ */
+var media = (function() {
+ 'use strict';
+
+ var doNothing = function() {
+ };
+ var mockRenderManager = {
+ redrawList: doNothing,
+ update: doNothing,
+ select: doNothing
+ };
+
+ var manager = new PlayerManager((typeof RenderManager !== 'undefined') ?
+ new RenderManager : mockRenderManager);
scherkus (not reviewing) 2013/07/29 20:35:54 this is a very subtle way of injecting a mock that
Ty Overby 2013/07/29 21:53:31 Because RenderManager depends on every "yet to be
+
+ /**
+ * Call to modify or add a system property
scherkus (not reviewing) 2013/07/29 20:35:54 periods on comments here + below
Ty Overby 2013/07/29 21:53:31 Done.
+ */
+ function onSystemProperty(timestamp, key, value) {
+ console.log('System properties not yet implemented');
+ }
+
+ /**
+ * Call to modify or add a property on a player
+ */
+ function onPlayerProperty(id, timestamp, key, value) {
+ manager.updatePlayerInfo(id, timestamp, key, value);
+ }
+
+ function onPlayerPropertyNoRecord(id, timestamp, key, value) {
+ manager.updatePlayerInfoNoRecord(id, timestamp, key, value);
+ }
+
+ /**
+ * Call to add a player.
+ */
+ function onPlayerOpen(id, timestamp) {
+ manager.addPlayer(id, timestamp);
+ }
+
+ /**
+ * Call to remove a player.
+ */
+ function onPlayerClose(id) {
+ manager.removePlayer(id);
+ }
+
+ var media = {
+ onSystemProperty: onSystemProperty,
+ onPlayerProperty: onPlayerProperty,
+ onPlayerPropertyNoRecord: onPlayerPropertyNoRecord,
+ onPlayerOpen: onPlayerOpen,
+ onPlayerClose: onPlayerClose,
+ manager: manager
+ };
+
+ // Everything beyond this point is for backwards
scherkus (not reviewing) 2013/07/29 20:35:54 try to use more chars per-line (up to 80) if you c
Ty Overby 2013/07/29 21:53:31 Done.
+ // compatibility reasons. It will go away when
+ // the backend is updated.
+
+ media.onNetUpdate = function(update) {
+ // TODO(tyoverby): Implement
+ };
+
+ media.onRendererTerminated = function(renderId) {
+ goog.object.forEach(manager.players_, function(playerInfo, id) {
+ if (playerInfo.properties['render_id'] == renderId) {
+ media.onPlayerClose(id);
+ }
+ });
+ };
+
+ // For whatever reason, addAudioStream is also called on
+ // the removal of audio streams.
+ media.addAudioStream = function(event) {
+ switch (event.status) {
+ case 'created':
+ media.onPlayerOpen(event.id);
+ // We have to simulate the timestamp since
+ // it isn't provided to us.
+ media.onPlayerProperty(event.id, (new Date()).getTime(),
+ 'playing', event.playing);
scherkus (not reviewing) 2013/07/29 20:35:54 indentation for any continued line gets either:
+ break;
+ case 'closed':
+ media.onPlayerClose(event.id);
+ break;
+ }
+ };
+ media.onItemDeleted = function() {
+ // This only gets called when an audio stream is removed, which
+ // for whatever reason is also handled by addAudioStream...
+ // Because it is already handled, we can safely ignore it.
+ };
+
+ media.onMediaEvent = function(event) {
+ var source = event.renderer + ':' + event.player;
+
+ // Although this gets called on every event, there
+ // is nothing we can do about this because there is no onOpen event.
+ media.onPlayerOpen(source);
+ media.onPlayerPropertyNoRecord(source, event.ticksMillis, 'render_id',
+ event.renderer);
scherkus (not reviewing) 2013/07/29 20:35:54 ditto
Ty Overby 2013/07/29 21:53:31 Done.
+ media.onPlayerPropertyNoRecord(source, event.ticksMillis, 'player_id',
+ event.player);
scherkus (not reviewing) 2013/07/29 20:35:54 ditto
Ty Overby 2013/07/29 21:53:31 Done.
+
+ var propertyCount = 0;
+ goog.object.forEach(event.params, function(value, key) {
+ key = key.trim();
+ if (key === 'buffer_start' || key === 'buffer_end' ||
+ key === 'buffer_current' || key === 'is_downloading_data') {
scherkus (not reviewing) 2013/07/29 20:35:54 same style rules apply here - this should be align
Ty Overby 2013/07/29 21:53:31 Done.
+ media.onPlayerPropertyNoRecord(source, event.ticksMillis, key,
+ value);
+ } else {
+ media.onPlayerProperty(source, event.ticksMillis, key, value);
+ }
+ propertyCount += 1;
+ });
+
+ if (propertyCount === 0) {
+ media.onPlayerProperty(source, event.ticksMillis, 'EVENT',
+ event.type);
scherkus (not reviewing) 2013/07/29 20:35:54 ditto
Ty Overby 2013/07/29 21:53:31 Done.
+ }
+ };
+
+ return media;
+}());

Powered by Google App Engine
This is Rietveld 408576698