OLD | NEW |
| (Empty) |
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 #include "chrome/browser/spellchecker/spellcheck_action.h" | |
6 | |
7 #include "base/logging.h" | |
8 #include "base/values.h" | |
9 | |
10 SpellcheckAction::SpellcheckAction() : type_(TYPE_PENDING), index_(-1) {} | |
11 | |
12 SpellcheckAction::SpellcheckAction(SpellcheckActionType type, | |
13 int index, | |
14 base::string16 value) | |
15 : type_(type), index_(index), value_(value) {} | |
16 | |
17 SpellcheckAction::~SpellcheckAction() {} | |
18 | |
19 bool SpellcheckAction::IsFinal() const { | |
20 return type_ == TYPE_ADD_TO_DICT || | |
21 type_ == TYPE_IGNORE || | |
22 type_ == TYPE_IN_DICTIONARY || | |
23 type_ == TYPE_MANUALLY_CORRECTED || | |
24 type_ == TYPE_NO_ACTION || | |
25 type_ == TYPE_SELECT; | |
26 } | |
27 | |
28 void SpellcheckAction::Finalize() { | |
29 switch (type_) { | |
30 case TYPE_PENDING: | |
31 type_ = TYPE_NO_ACTION; | |
32 break; | |
33 case TYPE_PENDING_IGNORE: | |
34 type_ = TYPE_IGNORE; | |
35 break; | |
36 default: | |
37 DCHECK(IsFinal()); | |
38 break; | |
39 } | |
40 } | |
41 | |
42 base::DictionaryValue* SpellcheckAction::Serialize() const { | |
43 base::DictionaryValue* result = new base::DictionaryValue; | |
44 switch (type_) { | |
45 case TYPE_SELECT: | |
46 result->SetString("actionType", "SELECT"); | |
47 result->SetInteger("actionTargetIndex", index_); | |
48 break; | |
49 case TYPE_ADD_TO_DICT: | |
50 result->SetString("actionType", "ADD_TO_DICT"); | |
51 break; | |
52 case TYPE_IGNORE: | |
53 result->SetString("actionType", "IGNORE"); | |
54 break; | |
55 case TYPE_IN_DICTIONARY: | |
56 result->SetString("actionType", "IN_DICTIONARY"); | |
57 break; | |
58 case TYPE_NO_ACTION: | |
59 result->SetString("actionType", "NO_ACTION"); | |
60 break; | |
61 case TYPE_MANUALLY_CORRECTED: | |
62 result->SetString("actionType", "MANUALLY_CORRECTED"); | |
63 result->SetString("actionTargetValue", value_); | |
64 break; | |
65 case TYPE_PENDING: | |
66 case TYPE_PENDING_IGNORE: | |
67 result->SetString("actionType", "PENDING"); | |
68 break; | |
69 default: | |
70 NOTREACHED(); | |
71 break; | |
72 } | |
73 return result; | |
74 } | |
OLD | NEW |