diff options
author | pinkerton@chromium.org <pinkerton@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-06-30 15:09:05 +0000 |
---|---|---|
committer | pinkerton@chromium.org <pinkerton@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-06-30 15:09:05 +0000 |
commit | 9b75b5b69a63c9a7167badc5ca33e9910d4e390a (patch) | |
tree | f4336ee158e22d709c07ba92d0e10f2ae6922836 /chrome/browser/spellcheck_unittest.cc | |
parent | de9904623b5b91688a98ee987ee6ccfe2f584085 (diff) | |
download | chromium_src-9b75b5b69a63c9a7167badc5ca33e9910d4e390a.zip chromium_src-9b75b5b69a63c9a7167badc5ca33e9910d4e390a.tar.gz chromium_src-9b75b5b69a63c9a7167badc5ca33e9910d4e390a.tar.bz2 |
Enable support for the Mac OS X spellchecking service in chromium.
spellchecker_platform_engine.h provides a basic interface for
platform specific spellcheckers to follow. spellchecker_mac.mm
implements these functions for the OS X spellchecking service.
spellchecker_win.cc and spellchecker_linux.cc provide a space for
future developments on these platforms. spellchecker_common.h
contains a few shared variables and typedefs that are useful across
all spellchecking code. spellchecker.cc has been modified to
call the SpellCheckerPlatform::SpellCheckerAvailable() and use
either hunspell or the platform spellchecker based on that
call. Many new test cases have been added to one of
the unit tests as well. chrome.gyp has been edited
to reflect the added files.
patch from pwicks86@gmail.com (paul wicks)
BUG=13206
TEST=spellchecking works in web pages
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@19585 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/spellcheck_unittest.cc')
-rw-r--r-- | chrome/browser/spellcheck_unittest.cc | 299 |
1 files changed, 298 insertions, 1 deletions
diff --git a/chrome/browser/spellcheck_unittest.cc b/chrome/browser/spellcheck_unittest.cc index d3c3388..86eadff 100644 --- a/chrome/browser/spellcheck_unittest.cc +++ b/chrome/browser/spellcheck_unittest.cc @@ -306,6 +306,302 @@ TEST_F(SpellCheckTest, SpellCheckSuggestions_EN_US) { // A suggested word that should occur. const wchar_t* suggested_word; } kTestCases[] = { // A valid English word with a preceding whitespace + // We need to have separate test cases here, since hunspell and the OS X + // spellchecking service occasionally differ on what they consider a valid + // suggestion for a given word, although these lists could likely be + // integrated somewhat. +#if defined(OS_MACOSX) + // These words come from the wikipedia page of the most commonly + // misspelled words in english. + // (http://en.wikipedia.org/wiki/Commonly_misspelled_words). + {L"absense", false, 0,0,L"absence"}, + {L"acceptible", false, 0,0,L"acceptable"}, + {L"accidentaly", false, 0,0,L"accidentally"}, + {L"accomodate", false, 0,0,L"accommodate"}, + {L"acheive", false, 0,0,L"achieve"}, + {L"acknowlege", false, 0,0,L"acknowledge"}, + {L"acquaintence", false, 0,0,L"acquaintance"}, + {L"aquire", false, 0,0,L"acquire"}, + {L"aquit", false, 0,0,L"acquit"}, + {L"acrage", false, 0,0,L"acreage"}, + {L"adress", false, 0,0,L"address"}, + {L"adultary", false, 0,0,L"adultery"}, + {L"advertize", false, 0,0,L"advertise"}, + {L"adviseable", false, 0,0,L"advisable"}, + {L"agression", false, 0,0,L"aggression"}, + {L"alchohol", false, 0,0,L"alcohol"}, + {L"alege", false, 0,0,L"allege"}, + {L"allegaince", false, 0,0,L"allegiance"}, + {L"allmost", false, 0,0,L"almost"}, + // Ideally, this test should pass. It works in firefox, but not in hunspell + // or OS X. + // {L"alot", false, 0,0,L"a lot"}, + {L"amatuer", false, 0,0,L"amateur"}, + {L"ammend", false, 0,0,L"amend"}, + {L"amung", false, 0,0,L"among"}, + {L"anually", false, 0,0,L"annually"}, + {L"apparant", false, 0,0,L"apparent"}, + {L"artic", false, 0,0,L"arctic"}, + {L"arguement", false, 0,0,L"argument"}, + {L"athiest", false, 0,0,L"atheist"}, + {L"athelete", false, 0,0,L"athlete"}, + {L"avrage", false, 0,0,L"average"}, + {L"awfull", false, 0,0,L"awful"}, + {L"ballance", false, 0,0,L"balance"}, + {L"basicly", false, 0,0,L"basically"}, + {L"becuase", false, 0,0,L"because"}, + {L"becomeing", false, 0,0,L"becoming"}, + {L"befor", false, 0,0,L"before"}, + {L"begining", false, 0,0,L"beginning"}, + {L"beleive", false, 0,0,L"believe"}, + {L"bellweather", false, 0,0,L"bellwether"}, + {L"benifit", false, 0,0,L"benefit"}, + {L"bouy", false, 0,0,L"buoy"}, + {L"briliant", false, 0,0,L"brilliant"}, + {L"burgler", false, 0,0,L"burglar"}, + {L"camoflage", false, 0,0,L"camouflage"}, + {L"carrer", false, 0,0,L"career"}, + {L"carefull", false, 0,0,L"careful"}, + {L"Carribean", false, 0,0,L"Caribbean"}, + {L"catagory", false, 0,0,L"category"}, + {L"cauhgt", false, 0,0,L"caught"}, + {L"cieling", false, 0,0,L"ceiling"}, + {L"cemetary", false, 0,0,L"cemetery"}, + {L"certin", false, 0,0,L"certain"}, + {L"changable", false, 0,0,L"changeable"}, + {L"cheif", false, 0,0,L"chief"}, + {L"citezen", false, 0,0,L"citizen"}, + {L"collaegue", false, 0,0,L"colleague"}, + {L"colum", false, 0,0,L"column"}, + {L"comming", false, 0,0,L"coming"}, + {L"commited", false, 0,0,L"committed"}, + {L"compitition", false, 0,0,L"competition"}, + {L"conceed", false, 0,0,L"concede"}, + {L"congradulate", false, 0,0,L"congratulate"}, + // TODO(pwicks): This fails as a result of 13432. + // Once that is fixed, uncomment this. + // {L"consciencious", false, 0,0,L"conscientious"}, + {L"concious", false, 0,0,L"conscious"}, + {L"concensus", false, 0,0,L"consensus"}, + {L"contraversy", false, 0,0,L"controversy"}, + {L"conveniance", false, 0,0,L"convenience"}, + {L"critecize", false, 0,0,L"criticize"}, + {L"dacquiri", false, 0,0,L"daiquiri"}, + {L"decieve", false, 0,0,L"deceive"}, + {L"dicide", false, 0,0,L"decide"}, + {L"definate", false, 0,0,L"definite"}, + {L"definitly", false, 0,0,L"definitely"}, + {L"deposite", false, 0,0,L"deposit"}, + {L"desparate", false, 0,0,L"desperate"}, + {L"develope", false, 0,0,L"develop"}, + {L"diffrence", false, 0,0,L"difference"}, + {L"dilema", false, 0,0,L"dilemma"}, + {L"disapear", false, 0,0,L"disappear"}, + {L"disapoint", false, 0,0,L"disappoint"}, + {L"disasterous", false, 0,0,L"disastrous"}, + {L"disipline", false, 0,0,L"discipline"}, + {L"drunkeness", false, 0,0,L"drunkenness"}, + {L"dumbell", false, 0,0,L"dumbbell"}, + {L"durring", false, 0,0,L"during"}, + {L"easely", false, 0,0,L"easily"}, + {L"eigth", false, 0,0,L"eight"}, + {L"embarass", false, 0,0,L"embarrass"}, + {L"enviroment", false, 0,0,L"environment"}, + {L"equiped", false, 0,0,L"equipped"}, + {L"equiptment", false, 0,0,L"equipment"}, + {L"exagerate", false, 0,0,L"exaggerate"}, + {L"excede", false, 0,0,L"exceed"}, + {L"exellent", false, 0,0,L"excellent"}, + {L"exsept", false, 0,0,L"except"}, + {L"exercize", false, 0,0,L"exercise"}, + {L"exilerate", false, 0,0,L"exhilarate"}, + {L"existance", false, 0,0,L"existence"}, + {L"experiance", false, 0,0,L"experience"}, + {L"experament", false, 0,0,L"experiment"}, + {L"explaination", false, 0,0,L"explanation"}, + {L"extreem", false, 0,0,L"extreme"}, + {L"familier", false, 0,0,L"familiar"}, + {L"facinating", false, 0,0,L"fascinating"}, + {L"firey", false, 0,0,L"fiery"}, + {L"finaly", false, 0,0,L"finally"}, + {L"flourescent", false, 0,0,L"fluorescent"}, + {L"foriegn", false, 0,0,L"foreign"}, + {L"fourty", false, 0,0,L"forty"}, + {L"foreward", false, 0,0,L"forward"}, + {L"freind", false, 0,0,L"friend"}, + {L"fullfil", false, 0,0,L"fulfill"}, + {L"fundemental", false, 0,0,L"fundamental"}, + {L"guage", false, 0,0,L"gauge"}, + {L"generaly", false, 0,0,L"generally"}, + {L"goverment", false, 0,0,L"government"}, + {L"grammer", false, 0,0,L"grammar"}, + {L"gratefull", false, 0,0,L"grateful"}, + {L"garantee", false, 0,0,L"guarantee"}, + {L"guidence", false, 0,0,L"guidance"}, + {L"happyness", false, 0,0,L"happiness"}, + {L"harrass", false, 0,0,L"harass"}, + {L"heighth", false, 0,0,L"height"}, + {L"heirarchy", false, 0,0,L"hierarchy"}, + {L"humerous", false, 0,0,L"humorous"}, + {L"hygene", false, 0,0,L"hygiene"}, + {L"hipocrit", false, 0,0,L"hypocrite"}, + {L"idenity", false, 0,0,L"identity"}, + {L"ignorence", false, 0,0,L"ignorance"}, + {L"imaginery", false, 0,0,L"imaginary"}, + {L"immitate", false, 0,0,L"imitate"}, + {L"immitation", false, 0,0,L"imitation"}, + {L"imediately", false, 0,0,L"immediately"}, + {L"incidently", false, 0,0,L"incidentally"}, + {L"independant", false, 0,0,L"independent"}, + // TODO(pwicks): This fails as a result of 13432. + // Once that is fixed, uncomment this. + // {L"indispensible", false, 0,0,L"indispensable"}, + {L"innoculate", false, 0,0,L"inoculate"}, + {L"inteligence", false, 0,0,L"intelligence"}, + {L"intresting", false, 0,0,L"interesting"}, + {L"interuption", false, 0,0,L"interruption"}, + {L"irrelevent", false, 0,0,L"irrelevant"}, + {L"irritible", false, 0,0,L"irritable"}, + {L"iland", false, 0,0,L"island"}, + {L"jellous", false, 0,0,L"jealous"}, + {L"knowlege", false, 0,0,L"knowledge"}, + {L"labratory", false, 0,0,L"laboratory"}, + {L"liesure", false, 0,0,L"leisure"}, + {L"lenght", false, 0,0,L"length"}, + {L"liason", false, 0,0,L"liaison"}, + {L"libary", false, 0,0,L"library"}, + {L"lisence", false, 0,0,L"license"}, + {L"lonelyness", false, 0,0,L"loneliness"}, + {L"lieing", false, 0,0,L"lying"}, + {L"maintenence", false, 0,0,L"maintenance"}, + {L"manuever", false, 0,0,L"maneuver"}, + {L"marrige", false, 0,0,L"marriage"}, + {L"mathmatics", false, 0,0,L"mathematics"}, + {L"medcine", false, 0,0,L"medicine"}, + {L"medeval", false, 0,0,L"medieval"}, + {L"momento", false, 0,0,L"memento"}, + {L"millenium", false, 0,0,L"millennium"}, + {L"miniture", false, 0,0,L"miniature"}, + {L"minite", false, 0,0,L"minute"}, + {L"mischevous", false, 0,0,L"mischievous"}, + {L"mispell", false, 0,0,L"misspell"}, + // Maybe this one should pass, as it works in hunspell, but not in firefox. + // {L"misterius", false, 0,0,L"mysterious"}, + {L"naturaly", false, 0,0,L"naturally"}, + {L"neccessary", false, 0,0,L"necessary"}, + {L"neice", false, 0,0,L"niece"}, + {L"nieghbor", false, 0,0,L"neighbor"}, + {L"nieghbour", false, 0,0,L"neighbor"}, + {L"niether", false, 0,0,L"neither"}, + {L"noticable", false, 0,0,L"noticeable"}, + {L"occassion", false, 0,0,L"occasion"}, + {L"occasionaly", false, 0,0,L"occasionally"}, + {L"occurrance", false, 0,0,L"occurrence"}, + {L"occured", false, 0,0,L"occurred"}, + {L"oficial", false, 0,0,L"official"}, + {L"offen", false, 0,0,L"often"}, + {L"ommision", false, 0,0,L"omission"}, + {L"oprate", false, 0,0,L"operate"}, + {L"oppurtunity", false, 0,0,L"opportunity"}, + {L"orignal", false, 0,0,L"original"}, + {L"outragous", false, 0,0,L"outrageous"}, + {L"parrallel", false, 0,0,L"parallel"}, + {L"parliment", false, 0,0,L"parliament"}, + {L"particurly", false, 0,0,L"particularly"}, + {L"passtime", false, 0,0,L"pastime"}, + {L"peculier", false, 0,0,L"peculiar"}, + {L"percieve", false, 0,0,L"perceive"}, + {L"pernament", false, 0,0,L"permanent"}, + {L"perseverence", false, 0,0,L"perseverance"}, + {L"personaly", false, 0,0,L"personally"}, + {L"personell", false, 0,0,L"personnel"}, + {L"persaude", false, 0,0,L"persuade"}, + {L"pichure", false, 0,0,L"picture"}, + {L"peice", false, 0,0,L"piece"}, + {L"plagerize", false, 0,0,L"plagiarize"}, + {L"playright", false, 0,0,L"playwright"}, + {L"plesant", false, 0,0,L"pleasant"}, + {L"pollitical", false, 0,0,L"political"}, + {L"posession", false, 0,0,L"possession"}, + {L"potatos", false, 0,0,L"potatoes"}, + {L"practicle", false, 0,0,L"practical"}, + {L"preceed", false, 0,0,L"precede"}, + {L"predjudice", false, 0,0,L"prejudice"}, + {L"presance", false, 0,0,L"presence"}, + {L"privelege", false, 0,0,L"privilege"}, + // This one should probably work. It does in FF and Hunspell. + // {L"probly", false, 0,0,L"probably"}, + {L"proffesional", false, 0,0,L"professional"}, + {L"professer", false, 0,0,L"professor"}, + {L"promiss", false, 0,0,L"promise"}, + // TODO(pwicks): This fails as a result of 13432. + // Once that is fixed, uncomment this. + // {L"pronounciation", false, 0,0,L"pronunciation"}, + {L"prufe", false, 0,0,L"proof"}, + {L"psycology", false, 0,0,L"psychology"}, + {L"publically", false, 0,0,L"publicly"}, + {L"quanity", false, 0,0,L"quantity"}, + {L"quarentine", false, 0,0,L"quarantine"}, + {L"questionaire", false, 0,0,L"questionnaire"}, + {L"readible", false, 0,0,L"readable"}, + {L"realy", false, 0,0,L"really"}, + {L"recieve", false, 0,0,L"receive"}, + {L"reciept", false, 0,0,L"receipt"}, + {L"reconize", false, 0,0,L"recognize"}, + {L"recomend", false, 0,0,L"recommend"}, + {L"refered", false, 0,0,L"referred"}, + {L"referance", false, 0,0,L"reference"}, + {L"relevent", false, 0,0,L"relevant"}, + {L"religous", false, 0,0,L"religious"}, + {L"repitition", false, 0,0,L"repetition"}, + {L"restarant", false, 0,0,L"restaurant"}, + {L"rythm", false, 0,0,L"rhythm"}, + {L"rediculous", false, 0,0,L"ridiculous"}, + {L"sacrefice", false, 0,0,L"sacrifice"}, + {L"saftey", false, 0,0,L"safety"}, + {L"sissors", false, 0,0,L"scissors"}, + {L"secratary", false, 0,0,L"secretary"}, + {L"sieze", false, 0,0,L"seize"}, + {L"seperate", false, 0,0,L"separate"}, + {L"sargent", false, 0,0,L"sergeant"}, + {L"shineing", false, 0,0,L"shining"}, + {L"similer", false, 0,0,L"similar"}, + {L"sinceerly", false, 0,0,L"sincerely"}, + {L"speach", false, 0,0,L"speech"}, + {L"stoping", false, 0,0,L"stopping"}, + {L"strenght", false, 0,0,L"strength"}, + {L"succede", false, 0,0,L"succeed"}, + {L"succesful", false, 0,0,L"successful"}, + {L"supercede", false, 0,0,L"supersede"}, + {L"surelly", false, 0,0,L"surely"}, + {L"suprise", false, 0,0,L"surprise"}, + {L"temperture", false, 0,0,L"temperature"}, + {L"temprary", false, 0,0,L"temporary"}, + {L"tomatos", false, 0,0,L"tomatoes"}, + {L"tommorrow", false, 0,0,L"tomorrow"}, + {L"tounge", false, 0,0,L"tongue"}, + {L"truely", false, 0,0,L"truly"}, + {L"twelth", false, 0,0,L"twelfth"}, + {L"tyrany", false, 0,0,L"tyranny"}, + {L"underate", false, 0,0,L"underrate"}, + {L"untill", false, 0,0,L"until"}, + {L"unuseual", false, 0,0,L"unusual"}, + {L"upholstry", false, 0,0,L"upholstery"}, + {L"usible", false, 0,0,L"usable"}, + {L"useing", false, 0,0,L"using"}, + {L"usualy", false, 0,0,L"usually"}, + {L"vaccuum", false, 0,0,L"vacuum"}, + {L"vegatarian", false, 0,0,L"vegetarian"}, + {L"vehical", false, 0,0,L"vehicle"}, + {L"visious", false, 0,0,L"vicious"}, + {L"villege", false, 0,0,L"village"}, + {L"wierd", false, 0,0,L"weird"}, + {L"wellcome", false, 0,0,L"welcome"}, + {L"wellfare", false, 0,0,L"welfare"}, + {L"wilfull", false, 0,0,L"willful"}, + {L"withold", false, 0,0,L"withhold"}, + {L"writting", false, 0,0,L"writing"}, +#else {L"ello", false, 0, 0, L"hello"}, {L"ello", false, 0, 0, L"cello"}, {L"wate", false, 0, 0, L"water"}, @@ -316,6 +612,7 @@ TEST_F(SpellCheckTest, SpellCheckSuggestions_EN_US) { {L"jum", false, 0, 0, L"rum"}, {L"jum", false, 0, 0, L"sum"}, {L"jum", false, 0, 0, L"tum"}, +#endif //!OS_MACOSX // TODO (Sidchat): add many more examples. }; @@ -360,7 +657,7 @@ TEST_F(SpellCheckTest, DISABLED_SpellCheckAddToDictionary_EN_US) { static const struct { // A string to be added to SpellChecker. const wchar_t* word_to_add; - } kTestCases[] = { // word to be added to SpellChecker + } kTestCases[] = { // Words to be added to the SpellChecker. {L"Googley"}, {L"Googleplex"}, {L"Googler"}, |