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

Unified Diff: chrome/browser/resources/options/language_dictionary_overlay_word_list.js

Issue 11445002: Sync user's custom spellcheck dictionary (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Address comments Created 7 years, 11 months 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: 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.
+ * @param {Array} entries The list of dictionary words.
+ */
+ addWords: function(entries) {
+ var to_add = [];
+ for (var i in entries) {
+ 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)
+ 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]);
},

Powered by Google App Engine
This is Rietveld 408576698