| OLD | NEW |
| 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 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 // The Mac interface forwards most of these commands to the application layer, | 5 // The Mac interface forwards most of these commands to the application layer, |
| 6 // and I'm not really sure what to do about most of them. | 6 // and I'm not really sure what to do about most of them. |
| 7 | 7 |
| 8 #include "config.h" | 8 #include "config.h" |
| 9 | 9 |
| 10 #include "Document.h" | 10 #include "Document.h" |
| (...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 145 | 145 |
| 146 bool EditorClientImpl::isGrammarCheckingEnabled() { | 146 bool EditorClientImpl::isGrammarCheckingEnabled() { |
| 147 return false; | 147 return false; |
| 148 } | 148 } |
| 149 | 149 |
| 150 void EditorClientImpl::toggleGrammarChecking() { | 150 void EditorClientImpl::toggleGrammarChecking() { |
| 151 NOTIMPLEMENTED(); | 151 NOTIMPLEMENTED(); |
| 152 } | 152 } |
| 153 | 153 |
| 154 int EditorClientImpl::spellCheckerDocumentTag() { | 154 int EditorClientImpl::spellCheckerDocumentTag() { |
| 155 #if defined(OS_MACOSX) |
| 156 WebViewDelegate* d = web_view_->delegate(); |
| 157 if (d) |
| 158 return d->SpellCheckerDocumentTag(); |
| 159 #else |
| 155 NOTIMPLEMENTED(); | 160 NOTIMPLEMENTED(); |
| 161 #endif // OS_MACOSX |
| 156 return 0; | 162 return 0; |
| 157 } | 163 } |
| 158 | 164 |
| 159 bool EditorClientImpl::isEditable() { | 165 bool EditorClientImpl::isEditable() { |
| 160 return false; | 166 return false; |
| 161 } | 167 } |
| 162 | 168 |
| 163 bool EditorClientImpl::shouldBeginEditing(WebCore::Range* range) { | 169 bool EditorClientImpl::shouldBeginEditing(WebCore::Range* range) { |
| 164 if (editing_client_) { | 170 if (editing_client_) { |
| 165 return editing_client_->shouldBeginEditing( | 171 return editing_client_->shouldBeginEditing( |
| (...skipping 665 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 831 // SpellCheckWord will write (0, 0) into the output vars, which is what our | 837 // SpellCheckWord will write (0, 0) into the output vars, which is what our |
| 832 // caller expects if the word is spelled correctly. | 838 // caller expects if the word is spelled correctly. |
| 833 int spell_location = -1; | 839 int spell_location = -1; |
| 834 int spell_length = 0; | 840 int spell_length = 0; |
| 835 WebViewDelegate* d = web_view_->delegate(); | 841 WebViewDelegate* d = web_view_->delegate(); |
| 836 | 842 |
| 837 // Check to see if the provided str is spelled correctly. | 843 // Check to see if the provided str is spelled correctly. |
| 838 if (isContinuousSpellCheckingEnabled() && d) { | 844 if (isContinuousSpellCheckingEnabled() && d) { |
| 839 std::wstring word = | 845 std::wstring word = |
| 840 webkit_glue::StringToStdWString(WebCore::String(str, length)); | 846 webkit_glue::StringToStdWString(WebCore::String(str, length)); |
| 841 d->SpellCheck(word, &spell_location, &spell_length); | 847 d->SpellCheck(word, spellCheckerDocumentTag(), |
| 848 &spell_location, &spell_length); |
| 842 } else { | 849 } else { |
| 843 spell_location = 0; | 850 spell_location = 0; |
| 844 spell_length = 0; | 851 spell_length = 0; |
| 845 } | 852 } |
| 846 | 853 |
| 847 // Note: the Mac code checks if the pointers are NULL before writing to them, | 854 // Note: the Mac code checks if the pointers are NULL before writing to them, |
| 848 // so we do too. | 855 // so we do too. |
| 849 if (misspellingLocation) | 856 if (misspellingLocation) |
| 850 *misspellingLocation = spell_location; | 857 *misspellingLocation = spell_location; |
| 851 if (misspellingLength) | 858 if (misspellingLength) |
| 852 *misspellingLength = spell_length; | 859 *misspellingLength = spell_length; |
| 853 } | 860 } |
| 854 | 861 |
| 855 WebCore::String EditorClientImpl::getAutoCorrectSuggestionForMisspelledWord( | 862 WebCore::String EditorClientImpl::getAutoCorrectSuggestionForMisspelledWord( |
| 856 const WebCore::String& misspelledWord) { | 863 const WebCore::String& misspelledWord) { |
| 857 WebViewDelegate* d = web_view_->delegate(); | 864 WebViewDelegate* d = web_view_->delegate(); |
| 858 if (!(isContinuousSpellCheckingEnabled() && d)) | 865 if (!(isContinuousSpellCheckingEnabled() && d)) |
| 859 return WebCore::String(); | 866 return WebCore::String(); |
| 860 | 867 |
| 861 std::wstring word = webkit_glue::StringToStdWString(misspelledWord); | 868 std::wstring word = webkit_glue::StringToStdWString(misspelledWord); |
| 862 | 869 |
| 863 // Do not autocorrect words with capital letters in it except the | 870 // Do not autocorrect words with capital letters in it except the |
| 864 // first letter. This will remove cases changing "IMB" to "IBM". | 871 // first letter. This will remove cases changing "IMB" to "IBM". |
| 865 for (size_t i = 1; i < word.length(); i++) { | 872 for (size_t i = 1; i < word.length(); i++) { |
| 866 if (u_isupper(static_cast<UChar32>(word[i]))) | 873 if (u_isupper(static_cast<UChar32>(word[i]))) |
| 867 return WebCore::String(); | 874 return WebCore::String(); |
| 868 } | 875 } |
| 869 | 876 |
| 870 std::wstring autocorrect_word = d->GetAutoCorrectWord(word); | 877 std::wstring autocorrect_word = |
| 878 d->GetAutoCorrectWord(word, spellCheckerDocumentTag()); |
| 871 return webkit_glue::StdWStringToString(autocorrect_word); | 879 return webkit_glue::StdWStringToString(autocorrect_word); |
| 872 } | 880 } |
| 873 | 881 |
| 874 void EditorClientImpl::checkGrammarOfString(const UChar*, int length, | 882 void EditorClientImpl::checkGrammarOfString(const UChar*, int length, |
| 875 WTF::Vector<WebCore::GrammarDetail>&
, | 883 WTF::Vector<WebCore::GrammarDetail>&
, |
| 876 int* badGrammarLocation, | 884 int* badGrammarLocation, |
| 877 int* badGrammarLength) { | 885 int* badGrammarLength) { |
| 878 NOTIMPLEMENTED(); | 886 NOTIMPLEMENTED(); |
| 879 if (badGrammarLocation) | 887 if (badGrammarLocation) |
| 880 *badGrammarLocation = 0; | 888 *badGrammarLocation = 0; |
| 881 if (badGrammarLength) | 889 if (badGrammarLength) |
| 882 *badGrammarLength = 0; | 890 *badGrammarLength = 0; |
| 883 } | 891 } |
| 884 | 892 |
| 885 void EditorClientImpl::updateSpellingUIWithGrammarString(const WebCore::String&, | 893 void EditorClientImpl::updateSpellingUIWithGrammarString(const WebCore::String&, |
| 886 const WebCore::GrammarD
etail& detail) { | 894 const WebCore::GrammarD
etail& detail) { |
| 887 NOTIMPLEMENTED(); | 895 NOTIMPLEMENTED(); |
| 888 } | 896 } |
| 889 | 897 |
| 890 void EditorClientImpl::updateSpellingUIWithMisspelledWord(const WebCore::String&
) { | 898 void EditorClientImpl::updateSpellingUIWithMisspelledWord( |
| 891 NOTIMPLEMENTED(); | 899 const WebCore::String& misspelled_word) { |
| 900 std::wstring word = webkit_glue::StringToStdWString(misspelled_word); |
| 901 WebViewDelegate* d = web_view_->delegate(); |
| 902 if (d) { |
| 903 d->UpdateSpellingUIWithMisspelledWord(word); |
| 904 } |
| 892 } | 905 } |
| 893 | 906 |
| 894 void EditorClientImpl::showSpellingUI(bool show) { | 907 void EditorClientImpl::showSpellingUI(bool show) { |
| 895 NOTIMPLEMENTED(); | 908 WebViewDelegate* d = web_view_->delegate(); |
| 909 if (d) { |
| 910 d->ShowSpellingUI(show); |
| 911 } |
| 896 } | 912 } |
| 897 | 913 |
| 898 bool EditorClientImpl::spellingUIIsShowing() { | 914 bool EditorClientImpl::spellingUIIsShowing() { |
| 899 return false; | 915 // SpellingPanel visibility is stored in the web_view_ every time a toggle |
| 916 // message is sent from the browser. If we were to send a message to the |
| 917 // browser and ask for the visibility, then we run into problems accessing |
| 918 // cocoa methods on the UI thread. |
| 919 return web_view_->GetSpellingPanelVisibility(); |
| 900 } | 920 } |
| 901 | 921 |
| 902 void EditorClientImpl::getGuessesForWord(const WebCore::String&, | 922 void EditorClientImpl::getGuessesForWord(const WebCore::String&, |
| 903 WTF::Vector<WebCore::String>& guesses)
{ | 923 WTF::Vector<WebCore::String>& guesses)
{ |
| 904 NOTIMPLEMENTED(); | 924 NOTIMPLEMENTED(); |
| 905 } | 925 } |
| 906 | 926 |
| 907 void EditorClientImpl::setInputMethodState(bool enabled) { | 927 void EditorClientImpl::setInputMethodState(bool enabled) { |
| 908 if (editing_client_) | 928 if (editing_client_) |
| 909 editing_client_->setInputMethodEnabled(enabled); | 929 editing_client_->setInputMethodEnabled(enabled); |
| 910 } | 930 } |
| OLD | NEW |