1<!--
2Copyright 2013 The Chromium Authors. All rights reserved.
3Use of this source code is governed by a BSD-style license that can be
4found in the LICENSE file.
5-->
6<!DOCTYPE html>
7<html>
8  <body>
9    <script>
10      window.chrome = {};
11
12      window.setUp = function() {
13        var doNothing = function() {};
14        var mockClientRenderer = {
15          playerUpdated: doNothing,
16          playerRemoved: doNothing,
17          playerAdded: doNothing,
18          audioComponentAdded: doNothing,
19          audioComponentRemoved: doNothing
20        };
21
22        var manager = new Manager(mockClientRenderer);
23        media.initialize(manager);
24
25        window.manager = manager;
26      };
27
28      // The renderer and player ids are completely arbitrarily.
29      var TEST_RENDERER = 12;
30      var TEST_PLAYER = 4;
31      var TEST_NAME = TEST_RENDERER + ':' + TEST_PLAYER;
32
33      // Correctly use the information from a media event.
34      window.testOnMediaEvent = function() {
35        var event = {
36          ticksMillis: 132,
37          renderer: TEST_RENDERER,
38          player: TEST_PLAYER,
39          params: {
40            fps: 60,
41            other: 'hi'
42          }
43        };
44
45        window.media.onMediaEvent(event);
46        var info = window.manager.players_[TEST_NAME];
47
48        assertEquals(event.ticksMillis, info.firstTimestamp_);
49        assertEquals(TEST_NAME, info.id);
50        assertEquals(event.params.fps, info.properties.fps);
51      };
52
53      // Remove a player.
54      window.testOnRenderTerminated = function() {
55        window.testOnMediaEvent();
56
57        window.media.onRendererTerminated(TEST_RENDERER);
58        assertEquals(undefined, window.manager.players_[TEST_NAME]);
59      };
60
61      window.testAudioComponents = function() {
62        var event = {
63          component_id: 1,
64          component_type: 0,
65          owner_id: 3,
66          status: 'created'
67        };
68
69        // Ensure no components are currently present.
70        assertEquals(0, window.manager.audioComponents_.length);
71
72        // Test adding an audio component.
73        window.media.updateAudioComponent(event);
74        assertEquals(1, window.manager.audioComponents_.length);
75
76        // The key format is an implementation detail we don't care about, so
77        // just ensure there's only one key and then use it directly.
78        assertEquals(1, Object.keys(
79            window.manager.audioComponents_[event.component_type]).length);
80        for (key in window.manager.audioComponents_[event.component_type]) {
81          var component =
82              window.manager.audioComponents_[event.component_type][key];
83          assertEquals(event.component_id, component['component_id']);
84          assertEquals(event.component_type, component['component_type']);
85          assertEquals(event.owner_id, component['owner_id']);
86          assertEquals(event.status, component['status']);
87        }
88
89        // Test removing an audio component.
90        event.status = 'closed';
91        window.media.updateAudioComponent(event);
92        assertEquals(1, window.manager.audioComponents_.length);
93        assertEquals(0, Object.keys(
94            window.manager.audioComponents_[event.component_type]).length);
95      };
96    </script>
97  </body>
98</html>
99