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

Side by Side Diff: webkit/tools/test_shell/mock_spellcheck.cc

Issue 15028002: Delete test_shell. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Add dummy test_shell build target. Created 7 years, 7 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2009 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 "webkit/tools/test_shell/mock_spellcheck.h"
6
7 #include <map>
8 #include <utility>
9
10 #include "base/logging.h"
11 #include "base/string16.h"
12 #include "base/string_util.h"
13 #include "base/utf_string_conversions.h"
14
15 MockSpellCheck::MockSpellCheck()
16 : initialized_(false) {
17 }
18
19 MockSpellCheck::~MockSpellCheck() {
20 }
21
22 bool MockSpellCheck::SpellCheckWord(const base::string16& text,
23 int* misspelledOffset,
24 int* misspelledLength) {
25 DCHECK(misspelledOffset && misspelledLength);
26
27 // Initialize this spellchecker.
28 InitializeIfNeeded();
29
30 // Reset the result values as our spellchecker does.
31 *misspelledOffset = 0;
32 *misspelledLength = 0;
33
34 // Extract the first possible English word from the given string.
35 // The given string may include non-ASCII characters or numbers. So, we
36 // should filter out such characters before start looking up our
37 // misspelled-word table.
38 // (This is a simple version of our SpellCheckWordIterator class.)
39 // If the given string doesn't include any ASCII characters, we can treat the
40 // string as valid one.
41 // Unfortunately, This implementation splits a contraction, i.e. "isn't" is
42 // split into two pieces "isn" and "t". This is OK because webkit tests
43 // don't have misspelled contractions.
44 static const char* kWordCharacters =
45 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
46 base::string16 word_characters(ASCIIToUTF16(kWordCharacters));
47
48 size_t word_offset = text.find_first_of(word_characters);
49 if (word_offset == std::string::npos)
50 return true;
51
52 size_t word_end = text.find_first_not_of(word_characters, word_offset);
53 size_t word_length = word_end == std::string::npos ?
54 text.length() - word_offset : word_end - word_offset;
55
56 // Look up our misspelled-word table to check if the extracted word is a
57 // known misspelled word, and return the offset and the length of the
58 // extracted word if this word is a known misspelled word.
59 // (See the comment in MockSpellCheck::InitializeIfNeeded() why we use a
60 // misspelled-word table.)
61 base::string16 word(text, word_offset, word_length);
62 std::map<base::string16, bool>::iterator it = misspelled_words_.find(word);
63 if (it == misspelled_words_.end())
64 return true;
65
66 *misspelledOffset = static_cast<int>(word_offset);
67 *misspelledLength = static_cast<int>(word_length);
68 return false;
69 }
70
71 bool MockSpellCheck::InitializeIfNeeded() {
72 // Exit if we have already initialized this object.
73 if (initialized_)
74 return false;
75
76 // Create a table that consists of misspelled words used in WebKit layout
77 // tests.
78 // Since WebKit layout tests don't have so many misspelled words as
79 // well-spelled words, it is easier to compare the given word with misspelled
80 // ones than to compare with well-spelled ones.
81 static const char* kMisspelledWords[] = {
82 // These words are known misspelled words in webkit tests.
83 // If there are other misspelled words in webkit tests, please add them in
84 // this array.
85 "foo",
86 "Foo",
87 "baz",
88 "fo",
89 "LibertyF",
90 "chello",
91 "xxxtestxxx",
92 "XXxxx",
93 "Textx",
94 "blockquoted",
95 "asd",
96 "Lorem",
97 "Nunc",
98 "Curabitur",
99 "eu",
100 "adlj",
101 "adaasj",
102 "sdklj",
103 "jlkds",
104 "jsaada",
105 "jlda",
106 "zz",
107 "contentEditable",
108 // The following words are used by unit tests.
109 "ifmmp",
110 "qwertyuiopasd",
111 "qwertyuiopasdf",
112 };
113
114 misspelled_words_.clear();
115 for (size_t i = 0; i < arraysize(kMisspelledWords); ++i) {
116 misspelled_words_.insert(std::make_pair<base::string16, bool>(
117 ASCIIToUTF16(kMisspelledWords[i]), false));
118 }
119
120 // Mark as initialized to prevent this object from being initialized twice
121 // or more.
122 initialized_ = true;
123
124 // Since this MockSpellCheck class doesn't download dictionaries, this
125 // function always returns false.
126 return false;
127 }
128
129 void MockSpellCheck::FillSuggestions(const base::string16& word,
130 std::vector<base::string16>* suggestions) {
131 if (word == ASCIIToUTF16("wellcome"))
132 suggestions->push_back(ASCIIToUTF16("welcome"));
133 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698