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

Unified Diff: ui/file_manager/audio_player/js/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 side-by-side diff with in-line comments
Download patch
Index: ui/file_manager/audio_player/js/audio_player.js
diff --git a/ui/file_manager/audio_player/js/audio_player.js b/ui/file_manager/audio_player/js/audio_player.js
index f07bb0d4e6d14c5cb445f2e7bd37aac16cf883c1..4cbfb3f2c9811a93175dbb95ebfbad08af650987 100644
--- a/ui/file_manager/audio_player/js/audio_player.js
+++ b/ui/file_manager/audio_player/js/audio_player.js
@@ -19,19 +19,6 @@ function AudioPlayer(container) {
this.metadataModel_ = MetadataModel.create(this.volumeManager_);
this.selectedEntry_ = null;
this.invalidTracks_ = {};
-
- this.model_ = new AudioPlayerModel();
- Object.observe(this.model_, function(changes) {
- for (var i = 0; i < changes.length; i++) {
- var change = changes[i];
- if (change.name == 'expanded' &&
- (change.type == 'add' || change.type == 'update')) {
- this.onModelExpandedChanged(change.oldValue, change.object.expanded);
- break;
- }
- }
- }.bind(this));
-
this.entries_ = [];
this.currentTrackIndex_ = -1;
this.playlistGeneration_ = 0;
@@ -48,10 +35,32 @@ function AudioPlayer(container) {
this.player_ =
/** @type {AudioPlayerElement} */ (document.querySelector('audio-player'));
- // TODO(yoshiki): Move tracks into the model.
this.player_.tracks = [];
- this.model_.initialize(function() {
- this.player_.model = this.model_;
+
+ // Restore the saved state from local storage, and update the local storage
+ // if the states are changed.
+ var STORAGE_PREFIX = 'audioplayer-';
+ var KEYS_TO_SAVE_STATES = ['shuffle', 'repeat', 'volume', 'expanded'];
+ var objectsToBeRead = KEYS_TO_SAVE_STATES.map(a => STORAGE_PREFIX + a);
+ chrome.storage.local.get(objectsToBeRead, function(results) {
+ for (var storageKey in results) {
+ // Update the UI, and start listening UI changes to write back the states
+ // to local storage.
+ var key = storageKey.substr(STORAGE_PREFIX.length);
+ this.player_[key] = results[storageKey];
+ this.player_.addEventListener(
yoshiki 2015/12/07 05:39:21 Is it guaranteed that all requested items are retu
fukino 2015/12/07 07:21:01 Oops, thank you for pointing this out! I had all k
+ key + '-changed',
+ function(storageKey, event) {
+ var objectToBeSaved = {};
+ objectToBeSaved[storageKey] = event.detail.value;
+ chrome.storage.local.set(objectToBeSaved);
+ }.bind(this, storageKey));
+ }
+ }.bind(this));
+
+ // Update the window size when UI's 'expanded' state is changed.
+ this.player_.addEventListener('expanded-changed', function(event) {
+ this.onExpandedChanged_(event.detail.value);
}.bind(this));
// Run asynchronously after an event of model change is delivered.
@@ -372,10 +381,10 @@ AudioPlayer.EXPANDED_MODE_MIN_HEIGHT = AudioPlayer.CONTROLS_HEIGHT +
/**
* Invoked when the 'expanded' property in the model is changed.
- * @param {boolean} oldValue Old value.
* @param {boolean} newValue New value.
+ * @private
*/
-AudioPlayer.prototype.onModelExpandedChanged = function(oldValue, newValue) {
+AudioPlayer.prototype.onExpandedChanged_ = function(newValue) {
if (this.isExpanded_ !== null &&
this.isExpanded_ === newValue)
return;

Powered by Google App Engine
This is Rietveld 408576698