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

Side by Side Diff: ui/file_manager/audio_player/elements/audio_player.js

Issue 1495873002: AudioPlayer: Stop using Object.observe() and Array.observe(). (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 Polymer({ 5 Polymer({
6 is: 'audio-player', 6 is: 'audio-player',
7 7
8 properties: { 8 properties: {
9 /** 9 /**
10 * Flag whether the audio is playing or paused. True if playing, or false 10 * Flag whether the audio is playing or paused. True if playing, or false
(...skipping 11 matching lines...) Expand all
22 time: { 22 time: {
23 type: Number, 23 type: Number,
24 observer: 'timeChanged' 24 observer: 'timeChanged'
25 }, 25 },
26 26
27 /** 27 /**
28 * Whether the shuffle button is ON. 28 * Whether the shuffle button is ON.
29 */ 29 */
30 shuffle: { 30 shuffle: {
31 type: Boolean, 31 type: Boolean,
32 observer: 'shuffleChanged' 32 notify: true
33 }, 33 },
34 34
35 /** 35 /**
36 * Whether the repeat button is ON. 36 * Whether the repeat button is ON.
37 */ 37 */
38 repeat: { 38 repeat: {
39 type: Boolean, 39 type: Boolean,
40 observer: 'repeatChanged' 40 notify: true
41 }, 41 },
42 42
43 /** 43 /**
44 * The audio volume. 0 is silent, and 100 is maximum loud. 44 * The audio volume. 0 is silent, and 100 is maximum loud.
45 */ 45 */
46 volume: { 46 volume: {
47 type: Number, 47 type: Number,
48 observer: 'volumeChanged' 48 notify: true
49 }, 49 },
50 50
51 /** 51 /**
52 * Whether the expanded button is ON. 52 * Whether the expanded button is ON.
53 */ 53 */
54 expanded: { 54 expanded: {
55 type: Boolean, 55 type: Boolean,
56 observer: 'expandedChanged' 56 notify: true
57 }, 57 },
58 58
59 /** 59 /**
60 * Track index of the current track. 60 * Track index of the current track.
61 */ 61 */
62 currentTrackIndex: { 62 currentTrackIndex: {
63 type: Number, 63 type: Number,
64 observer: 'currentTrackIndexChanged' 64 observer: 'currentTrackIndexChanged'
65 }, 65 },
66 66
67 /** 67 /**
68 * Model object of the Audio Player.
69 * @type {AudioPlayerModel}
70 */
71 model: {
72 type: Object,
73 value: null,
74 observer: 'modelChanged'
75 },
76
77 /**
78 * URL of the current track. (exposed publicly for tests) 68 * URL of the current track. (exposed publicly for tests)
79 */ 69 */
80 currenttrackurl: { 70 currenttrackurl: {
81 type: String, 71 type: String,
82 value: '', 72 value: '',
83 reflectToAttribute: true 73 reflectToAttribute: true
84 }, 74 },
85 75
86 /** 76 /**
87 * The number of played tracks. (exposed publicly for tests) 77 * The number of played tracks. (exposed publicly for tests)
88 */ 78 */
89 playcount: { 79 playcount: {
90 type: Number, 80 type: Number,
91 value: 0, 81 value: 0,
92 reflectToAttribute: true 82 reflectToAttribute: true
93 }, 83 },
94 84
95 ariaLabels: { 85 ariaLabels: {
96 type: Object 86 type: Object
97 } 87 }
98 }, 88 },
99 89
100 /** 90 /**
101 * The last playing state when user starts dragging the seek bar. 91 * The last playing state when user starts dragging the seek bar.
102 * @private {boolean} 92 * @private {boolean}
103 */ 93 */
104 wasPlayingOnDragStart_: false, 94 wasPlayingOnDragStart_: false,
105 95
106 /** 96 /**
107 * Handles change event for shuffle mode.
108 * @param {boolean} shuffle
109 */
110 shuffleChanged: function(shuffle) {
111 if (this.model)
112 this.model.shuffle = shuffle;
113 },
114
115 /**
116 * Handles change event for repeat mode.
117 * @param {boolean} repeat
118 */
119 repeatChanged: function(repeat) {
120 if (this.model)
121 this.model.repeat = repeat;
122 },
123
124 /**
125 * Handles change event for audio volume.
126 * @param {number} volume
127 */
128 volumeChanged: function(volume) {
129 if (this.model)
130 this.model.volume = volume;
131 },
132
133 /**
134 * Handles change event for expanded state of track list.
135 */
136 expandedChanged: function(expanded) {
137 if (this.model)
138 this.model.expanded = expanded;
139 },
140
141 /**
142 * Initializes an element. This method is called automatically when the 97 * Initializes an element. This method is called automatically when the
143 * element is ready. 98 * element is ready.
144 */ 99 */
145 ready: function() { 100 ready: function() {
146 this.addEventListener('keydown', this.onKeyDown_.bind(this)); 101 this.addEventListener('keydown', this.onKeyDown_.bind(this));
147 102
148 this.$.audioController.addEventListener('dragging-changed', 103 this.$.audioController.addEventListener('dragging-changed',
149 this.onDraggingChanged_.bind(this)); 104 this.onDraggingChanged_.bind(this));
150 105
151 this.$.audio.volume = 0; // Temporary initial volume. 106 this.$.audio.volume = 0; // Temporary initial volume.
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
208 } 163 }
209 164
210 // When the new status is "stopped". 165 // When the new status is "stopped".
211 this.cancelAutoAdvance_(); 166 this.cancelAutoAdvance_();
212 this.$.audio.pause(); 167 this.$.audio.pause();
213 this.currenttrackurl = ''; 168 this.currenttrackurl = '';
214 this.lastAudioUpdateTime_ = null; 169 this.lastAudioUpdateTime_ = null;
215 }, 170 },
216 171
217 /** 172 /**
218 * Invoked when the model changed.
219 * @param {AudioPlayerModel} newModel New model.
220 * @param {AudioPlayerModel} oldModel Old model.
221 */
222 modelChanged: function(newModel, oldModel) {
223 // Setting up the UI
224 if (newModel !== oldModel && newModel) {
225 this.shuffle = newModel.shuffle;
226 this.repeat = newModel.repeat;
227 this.volume = newModel.volume;
228 this.expanded = newModel.expanded;
229 }
230 },
231
232 /**
233 * Invoked when time is changed. 173 * Invoked when time is changed.
234 * @param {number} newValue new time (in ms). 174 * @param {number} newValue new time (in ms).
235 * @param {number} oldValue old time (in ms). 175 * @param {number} oldValue old time (in ms).
236 */ 176 */
237 timeChanged: function(newValue, oldValue) { 177 timeChanged: function(newValue, oldValue) {
238 // Ignores updates from the audio element. 178 // Ignores updates from the audio element.
239 if (this.lastAudioUpdateTime_ === newValue) 179 if (this.lastAudioUpdateTime_ === newValue)
240 return; 180 return;
241 181
242 if (this.$.audio.readyState !== 0) 182 if (this.$.audio.readyState !== 0)
(...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after
456 396
457 /** 397 /**
458 * Computes volume value for audio element. (should be in [0.0, 1.0]) 398 * Computes volume value for audio element. (should be in [0.0, 1.0])
459 * @param {number} volume Volume which is set in the UI. ([0, 100]) 399 * @param {number} volume Volume which is set in the UI. ([0, 100])
460 * @return {number} 400 * @return {number}
461 */ 401 */
462 computeAudioVolume_: function(volume) { 402 computeAudioVolume_: function(volume) {
463 return volume / 100; 403 return volume / 100;
464 } 404 }
465 }); 405 });
OLDNEW
« no previous file with comments | « no previous file | ui/file_manager/audio_player/js/audio_player.js » ('j') | ui/file_manager/audio_player/js/audio_player.js » ('J')

Powered by Google App Engine
This is Rietveld 408576698