• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 //
5 // An object to store user feedback to a single spellcheck suggestion.
6 //
7 // Stores the spellcheck suggestion, its uint32 hash identifier, and user's
8 // feedback. The feedback is indirect, in the sense that we record user's
9 // |action| instead of asking them how they feel about a spellcheck suggestion.
10 // The object can serialize itself.
11 
12 #ifndef CHROME_BROWSER_SPELLCHECKER_MISSPELLING_H_
13 #define CHROME_BROWSER_SPELLCHECKER_MISSPELLING_H_
14 
15 #include <vector>
16 
17 #include "base/time/time.h"
18 #include "chrome/browser/spellchecker/spellcheck_action.h"
19 
20 // Stores user feedback to a spellcheck suggestion. Sample usage:
21 //    Misspelling misspelling.
22 //    misspelling.context = base::ASCIIToUTF16("Helllo world");
23 //    misspelling.location = 0;
24 //    misspelling.length = 6;
25 //    misspelling.suggestions =
26 //        std::vector<base::string16>(1, base::ASCIIToUTF16("Hello"));
27 //    misspelling.hash = GenerateRandomHash();
28 //    misspelling.action.type = SpellcheckAction::TYPE_SELECT;
29 //    misspelling.action.index = 0;
30 //    Process(misspelling.Serialize());
31 class Misspelling {
32  public:
33   Misspelling();
34   Misspelling(const base::string16& context,
35               size_t location,
36               size_t length,
37               const std::vector<base::string16>& suggestions,
38               uint32 hash);
39   ~Misspelling();
40 
41   // Serializes the data in this object into a dictionary value. The caller owns
42   // the result.
43   base::DictionaryValue* Serialize() const;
44 
45   // Returns the substring of |context| that begins at |location| and contains
46   // |length| characters.
47   base::string16 GetMisspelledString() const;
48 
49   // A several-word text snippet that immediately surrounds the misspelling.
50   base::string16 context;
51 
52   // The number of characters between the beginning of |context| and the first
53   // misspelled character.
54   size_t location;
55 
56   // The number of characters in the misspelling.
57   size_t length;
58 
59   // Spelling suggestions.
60   std::vector<base::string16> suggestions;
61 
62   // The hash that identifies the misspelling.
63   uint32 hash;
64 
65   // User action.
66   SpellcheckAction action;
67 
68   // The time when the user applied the action.
69   base::Time timestamp;
70 };
71 
72 #endif  // CHROME_BROWSER_SPELLCHECKER_MISSPELLING_H_
73