// Copyright (c) 2013 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CHROME_BROWSER_SPELLCHECKER_SPELLCHECK_ACTION_H_ #define CHROME_BROWSER_SPELLCHECKER_SPELLCHECK_ACTION_H_ #include "base/strings/string16.h" namespace base { class DictionaryValue; } // User's action on a misspelled word. class SpellcheckAction { public: // Type of spellcheck action. enum SpellcheckActionType { // User added the word to the dictionary and cannot take more actions on // this misspelling. TYPE_ADD_TO_DICT, // User took a look at the suggestions in the context menu, but did not // select any suggestions. The user cannot take any more actions on the // misspelling, because it has been deleted from the web page. TYPE_IGNORE, // The misspelling is in user's custom spellcheck dictionary. The user will // not see spellcheck suggestions for this misspelling. TYPE_IN_DICTIONARY, // The user manually corrected the word to |value|. The user cannot take // more actions on this misspelling. TYPE_MANUALLY_CORRECTED, // The user has taken no action on the misspelling and will not take any // more actions, because the misspelled text has been removed from the web // page. TYPE_NO_ACTION, // The user has taken no action on the misspelled yet, but might take an // action in the future, because the misspelling is still on the web page. TYPE_PENDING, // User took a look at the suggestions in the context menu, but did not // select any suggestions. The user still can take further actions on the // misspelling. TYPE_PENDING_IGNORE, // The user has selected the suggestion at |index| and cannot take more // actions on this misspelling. TYPE_SELECT, }; SpellcheckAction(); SpellcheckAction(SpellcheckActionType type, int index, base::string16 value); ~SpellcheckAction(); // Returns true if the action is final and should be sent to the feedback // server. Otherwise returns false. bool IsFinal() const; // Makes this action final and ready to be sent to the feedback server. The // method is idempotent. Finalizing an action that is already final does // nothing. void Finalize(); // Serializes the data in this object into a dictionary value. The caller owns // the result. base::DictionaryValue* Serialize() const; // User action. SpellcheckActionType type; // The index for the user action, if applicable. int index; // The value for the user action, if applicable. base::string16 value; }; #endif // CHROME_BROWSER_SPELLCHECKER_SPELLCHECK_ACTION_H_