Chromium Code Reviews| Index: chrome/browser/resources/options/language_dictionary_overlay_word_list.js |
| diff --git a/chrome/browser/resources/options/language_dictionary_overlay_word_list.js b/chrome/browser/resources/options/language_dictionary_overlay_word_list.js |
| index b1bff432ec30906a46c89874f9075ac023d3cc48..6ae61410aa5bc8e128b0017315c57e5dfdd67873 100644 |
| --- a/chrome/browser/resources/options/language_dictionary_overlay_word_list.js |
| +++ b/chrome/browser/resources/options/language_dictionary_overlay_word_list.js |
| @@ -98,6 +98,15 @@ cr.define('options.dictionary_words', function() { |
| allWordsList_: null, |
| /** |
| + * The list of words that have been removed from the dictionary, but we have |
| + * not received a notification of their removal yet. Once we're notified of |
| + * a word removal, we remove it from this list. |
| + * @type {Array} |
| + * @private |
| + */ |
| + removedWordsList_: [], |
| + |
| + /** |
| * Add a dictionary word. |
| * @param {string} dictionaryWord The word to add. |
| * @private |
| @@ -136,6 +145,55 @@ cr.define('options.dictionary_words', function() { |
| }, |
| /** |
| + * Add non-duplicate dictionary words. |
|
James Hawkins
2013/01/17 19:37:30
Adds
|
| + * @param {Array} entries The list of dictionary words. |
| + */ |
| + addWords: function(entries) { |
| + var to_add = []; |
| + for (var i in entries) { |
|
James Hawkins
2013/01/17 19:37:30
Don't use 'for in' for arrays.
|
| + if (this.allWordsList_.indexOf(entries[i]) == -1) { |
| + this.allWordsList_.push(entries[i]); |
| + to_add.push(entries[i]); |
| + } |
| + } |
| + if (to_add.length == 0) |
| + return; |
| + for (var i in to_add) |
|
James Hawkins
2013/01/17 19:37:30
Same here.
|
| + this.dataModel.splice(this.dataModel.length - 1, 0, to_add[i]); |
| + this.onWordListChanged(); |
| + }, |
| + |
| + /** |
| + * Removes dictionary words that are not in |removedWordsList_|. If a word |
| + * is in |removedWordsList_|, then removes the word from there instead. |
| + * @param {Array} entries The list of dictionary words. |
| + */ |
| + removeWords: function(entries) { |
| + var index; |
| + var to_remove = []; |
| + for (var i in entries) { |
| + index = this.removedWordsList_.indexOf(entries[i]); |
| + if (index > -1) { |
| + this.removedWordsList_.splice(index, 1); |
| + } else { |
| + index = this.allWordsList_.indexOf(entries[i]); |
| + if (index > -1) { |
| + this.allWordsList_.splice(index, 1); |
| + to_remove.push(entries[i]); |
| + } |
| + } |
| + } |
| + if (to_remove.length == 0) |
| + return; |
| + for (var i in to_remove) { |
| + index = this.dataModel.indexOf(to_remove[i]); |
| + if (index > -1) |
| + this.dataModel.splice(index, 1); |
| + } |
| + this.onWordListChanged(); |
| + }, |
| + |
| + /** |
| * True if the data model contains no words, otherwise false. |
| * @type {boolean} |
| */ |
| @@ -162,6 +220,7 @@ cr.define('options.dictionary_words', function() { |
| assert(allWordsListIndex > -1); |
| this.allWordsList_.splice(allWordsListIndex, 1); |
| this.dataModel.splice(index, 1); |
| + this.removedWordsList_.push(item); |
| this.onWordListChanged(); |
| chrome.send('removeDictionaryWord', [item]); |
| }, |