Chromium Code Reviews| Index: ui/file_manager/audio_player/elements/track_list.js |
| diff --git a/ui/file_manager/audio_player/elements/track_list.js b/ui/file_manager/audio_player/elements/track_list.js |
| index 353083d88bf56f5c53ccf59d7e12d5208c4e726d..69b9f90913af732c614de4b925a1dfa434ed7bfe 100644 |
| --- a/ui/file_manager/audio_player/elements/track_list.js |
| +++ b/ui/file_manager/audio_player/elements/track_list.js |
| @@ -11,13 +11,26 @@ |
| * element is ready. |
| */ |
| ready: function() { |
| - this.tracksObserver_ = new ArrayObserver( |
| - this.tracks, |
| - this.tracksValueChanged_.bind(this)); |
| + this.observeTrackList(); |
| window.addEventListener('resize', this.onWindowResize_.bind(this)); |
| }, |
| + observeTrackList: function() { |
| + // Unobserve the previous track list. |
| + if (this.unobserveTrackList_) |
| + this.unobserveTrackList_(); |
| + |
| + // Observe the new track list. |
| + var observer = this.tracksValueChanged_.bind(this); |
| + Array.observe(this.tracks, observer); |
| + |
| + // Set the function to unobserve it. |
| + this.unobserveTrackList_ = function(tracks, observer) { |
| + Array.unobserve(tracks, observer); |
| + }.bind(null, this.tracks, observer); |
| + }, |
| + |
| /** |
| * Registers handlers for changing of external variables |
| */ |
| @@ -101,9 +114,7 @@ |
| // values are not null. Maybe it's a bug of Polymer. |
| // Re-register the observer of 'this.tracks'. |
| - this.tracksObserver_.close(); |
| - this.tracksObserver_ = new ArrayObserver(this.tracks); |
| - this.tracksObserver_.open(this.tracksValueChanged_.bind(this)); |
| + this.observeTrackList(); |
| if (this.tracks.length !== 0) { |
| // Restore the active track. |
| @@ -124,7 +135,7 @@ |
| * Invoked when the value in the 'tracks' is changed. |
| * @param {Array.<Object>} splices The detail of the change. |
|
fukino
2015/03/06 12:14:21
nit: splices -> changes in annotation
|
| */ |
| - tracksValueChanged_: function(splices) { |
| + tracksValueChanged_: function(changes) { |
| if (this.tracks.length === 0) |
| this.currentTrackIndex = -1; |
| else |