| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 // This file implements the interface defined in spellchecker_platform_engine.h | 5 // Integration with OS X native spellchecker. |
| 6 // for the OS X platform. | |
| 7 | 6 |
| 8 #include "chrome/browser/spellchecker/spellchecker_platform_engine.h" | 7 #include "chrome/browser/spellchecker/spellcheck_platform_mac.h" |
| 9 | 8 |
| 10 #import <Cocoa/Cocoa.h> | 9 #import <Cocoa/Cocoa.h> |
| 11 | 10 |
| 12 #include "base/logging.h" | 11 #include "base/logging.h" |
| 13 #include "base/metrics/histogram.h" | 12 #include "base/metrics/histogram.h" |
| 14 #include "base/sys_string_conversions.h" | 13 #include "base/sys_string_conversions.h" |
| 15 #include "base/task.h" | 14 #include "base/task.h" |
| 16 #include "base/time.h" | 15 #include "base/time.h" |
| 17 #include "chrome/common/spellcheck_common.h" | 16 #include "chrome/common/spellcheck_common.h" |
| 18 #include "chrome/common/spellcheck_messages.h" | 17 #include "chrome/common/spellcheck_messages.h" |
| (...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 142 [lang_code characterAtIndex:kShortLanguageCodeSize] == '_') { | 141 [lang_code characterAtIndex:kShortLanguageCodeSize] == '_') { |
| 143 return base::SysNSStringToUTF8([NSString stringWithFormat:@"%@-%@", | 142 return base::SysNSStringToUTF8([NSString stringWithFormat:@"%@-%@", |
| 144 [lang_code substringToIndex:kShortLanguageCodeSize], | 143 [lang_code substringToIndex:kShortLanguageCodeSize], |
| 145 [lang_code substringFromIndex:(kShortLanguageCodeSize + 1)]]); | 144 [lang_code substringFromIndex:(kShortLanguageCodeSize + 1)]]); |
| 146 } | 145 } |
| 147 return base::SysNSStringToUTF8(lang_code); | 146 return base::SysNSStringToUTF8(lang_code); |
| 148 } | 147 } |
| 149 | 148 |
| 150 } // namespace | 149 } // namespace |
| 151 | 150 |
| 152 namespace SpellCheckerPlatform { | 151 namespace spellcheck_mac { |
| 153 | 152 |
| 154 void GetAvailableLanguages(std::vector<std::string>* spellcheck_languages) { | 153 void GetAvailableLanguages(std::vector<std::string>* spellcheck_languages) { |
| 155 NSArray* availableLanguages = [[NSSpellChecker sharedSpellChecker] | 154 NSArray* availableLanguages = [[NSSpellChecker sharedSpellChecker] |
| 156 availableLanguages]; | 155 availableLanguages]; |
| 157 for (NSString* lang_code in availableLanguages) { | 156 for (NSString* lang_code in availableLanguages) { |
| 158 spellcheck_languages->push_back( | 157 spellcheck_languages->push_back( |
| 159 ConvertLanguageCodeFromMac(lang_code)); | 158 ConvertLanguageCodeFromMac(lang_code)); |
| 160 } | 159 } |
| 161 } | 160 } |
| 162 | 161 |
| (...skipping 30 matching lines...) Expand all Loading... |
| 193 | 192 |
| 194 void UpdateSpellingPanelWithMisspelledWord(const string16& word) { | 193 void UpdateSpellingPanelWithMisspelledWord(const string16& word) { |
| 195 NSString * word_to_display = base::SysUTF16ToNSString(word); | 194 NSString * word_to_display = base::SysUTF16ToNSString(word); |
| 196 [[NSSpellChecker sharedSpellChecker] | 195 [[NSSpellChecker sharedSpellChecker] |
| 197 performSelectorOnMainThread: | 196 performSelectorOnMainThread: |
| 198 @selector(updateSpellingPanelWithMisspelledWord:) | 197 @selector(updateSpellingPanelWithMisspelledWord:) |
| 199 withObject:word_to_display | 198 withObject:word_to_display |
| 200 waitUntilDone:YES]; | 199 waitUntilDone:YES]; |
| 201 } | 200 } |
| 202 | 201 |
| 203 void Init() { | |
| 204 } | |
| 205 | |
| 206 bool PlatformSupportsLanguage(const std::string& current_language) { | 202 bool PlatformSupportsLanguage(const std::string& current_language) { |
| 207 // First, convert the language to an OS X language code. | 203 // First, convert the language to an OS X language code. |
| 208 NSString* mac_lang_code = ConvertLanguageCodeToMac(current_language); | 204 NSString* mac_lang_code = ConvertLanguageCodeToMac(current_language); |
| 209 | 205 |
| 210 // Then grab the languages available. | 206 // Then grab the languages available. |
| 211 NSArray* availableLanguages; | 207 NSArray* availableLanguages; |
| 212 availableLanguages = [[NSSpellChecker sharedSpellChecker] | 208 availableLanguages = [[NSSpellChecker sharedSpellChecker] |
| 213 availableLanguages]; | 209 availableLanguages]; |
| 214 | 210 |
| 215 // Return true if the given language is supported by OS X. | 211 // Return true if the given language is supported by OS X. |
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 290 void RequestTextCheck(int route_id, | 286 void RequestTextCheck(int route_id, |
| 291 int identifier, | 287 int identifier, |
| 292 int document_tag, | 288 int document_tag, |
| 293 const string16& text, BrowserMessageFilter* destination) { | 289 const string16& text, BrowserMessageFilter* destination) { |
| 294 BrowserThread::PostTask( | 290 BrowserThread::PostTask( |
| 295 BrowserThread::FILE, FROM_HERE, | 291 BrowserThread::FILE, FROM_HERE, |
| 296 new TextCheckingTask( | 292 new TextCheckingTask( |
| 297 destination, route_id, identifier, text, document_tag)); | 293 destination, route_id, identifier, text, document_tag)); |
| 298 } | 294 } |
| 299 | 295 |
| 300 } // namespace SpellCheckerPlatform | 296 } // namespace spellcheck_mac |
| OLD | NEW |