Title: [202185] trunk/Source/WebKit2
Revision
202185
Author
[email protected]
Date
2016-06-17 16:31:42 -0700 (Fri, 17 Jun 2016)

Log Message

Support configurable autocapitalization.
https://bugs.webkit.org/show_bug.cgi?id=158860
rdar://problem/26231403

Reviewed by Tim Horton.

The behavior of spellchecker should be configurable to avoid
unwanted autocapitalization.

* UIProcess/API/APIPageConfiguration.cpp:
(API::PageConfiguration::copy):
* UIProcess/API/APIPageConfiguration.h:
(API::PageConfiguration::initialCapitalizationEnabled):
(API::PageConfiguration::setInitialCapitalizationEnabled):
* UIProcess/API/C/WKPageConfigurationRef.cpp:
(WKPageConfigurationSetIntialCapitalizationEnabled):
* UIProcess/API/C/WKPageConfigurationRef.h:
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _initializeWithConfiguration:]):
* UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
(-[WKWebViewConfiguration copyWithZone:]):
(-[WKWebViewConfiguration _initialCapitalizationEnabled]):
(-[WKWebViewConfiguration _setInitialCapitalizationEnabled:]):
* UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
* UIProcess/TextChecker.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::WebPageProxy):
(WebKit::WebPageProxy::checkTextOfParagraph):
(WebKit::WebPageProxy::getGuessesForWord):
* UIProcess/WebPageProxy.h:
* UIProcess/efl/TextCheckerEfl.cpp:
(WebKit::TextChecker::checkTextOfParagraph):
(WebKit::TextChecker::getGuessesForWord):
* UIProcess/gtk/TextCheckerGtk.cpp:
(WebKit::TextChecker::getGuessesForWord):
(WebKit::TextChecker::checkTextOfParagraph):
* UIProcess/ios/TextCheckerIOS.mm:
(WebKit::TextChecker::checkTextOfParagraph):
(WebKit::TextChecker::getGuessesForWord):
* UIProcess/mac/TextCheckerMac.mm:
(WebKit::TextChecker::checkTextOfParagraph):
(WebKit::TextChecker::getGuessesForWord):

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (202184 => 202185)


--- trunk/Source/WebKit2/ChangeLog	2016-06-17 23:27:28 UTC (rev 202184)
+++ trunk/Source/WebKit2/ChangeLog	2016-06-17 23:31:42 UTC (rev 202185)
@@ -1,3 +1,48 @@
+2016-06-16  Enrica Casucci  <[email protected]>
+
+        Support configurable autocapitalization.
+        https://bugs.webkit.org/show_bug.cgi?id=158860
+        rdar://problem/26231403
+
+        Reviewed by Tim Horton.
+
+        The behavior of spellchecker should be configurable to avoid
+        unwanted autocapitalization.
+
+        * UIProcess/API/APIPageConfiguration.cpp:
+        (API::PageConfiguration::copy):
+        * UIProcess/API/APIPageConfiguration.h:
+        (API::PageConfiguration::initialCapitalizationEnabled):
+        (API::PageConfiguration::setInitialCapitalizationEnabled):
+        * UIProcess/API/C/WKPageConfigurationRef.cpp:
+        (WKPageConfigurationSetIntialCapitalizationEnabled):
+        * UIProcess/API/C/WKPageConfigurationRef.h:
+        * UIProcess/API/Cocoa/WKWebView.mm:
+        (-[WKWebView _initializeWithConfiguration:]):
+        * UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
+        (-[WKWebViewConfiguration copyWithZone:]):
+        (-[WKWebViewConfiguration _initialCapitalizationEnabled]):
+        (-[WKWebViewConfiguration _setInitialCapitalizationEnabled:]):
+        * UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
+        * UIProcess/TextChecker.h:
+        * UIProcess/WebPageProxy.cpp:
+        (WebKit::WebPageProxy::WebPageProxy):
+        (WebKit::WebPageProxy::checkTextOfParagraph):
+        (WebKit::WebPageProxy::getGuessesForWord):
+        * UIProcess/WebPageProxy.h:
+        * UIProcess/efl/TextCheckerEfl.cpp:
+        (WebKit::TextChecker::checkTextOfParagraph):
+        (WebKit::TextChecker::getGuessesForWord):
+        * UIProcess/gtk/TextCheckerGtk.cpp:
+        (WebKit::TextChecker::getGuessesForWord):
+        (WebKit::TextChecker::checkTextOfParagraph):
+        * UIProcess/ios/TextCheckerIOS.mm:
+        (WebKit::TextChecker::checkTextOfParagraph):
+        (WebKit::TextChecker::getGuessesForWord):
+        * UIProcess/mac/TextCheckerMac.mm:
+        (WebKit::TextChecker::checkTextOfParagraph):
+        (WebKit::TextChecker::getGuessesForWord):
+
 2016-06-17  Chris Dumez  <[email protected]>
 
         Use WTF::NoncopyableFunction in NetworkDataTaskClient

Modified: trunk/Source/WebKit2/UIProcess/API/APIPageConfiguration.cpp (202184 => 202185)


--- trunk/Source/WebKit2/UIProcess/API/APIPageConfiguration.cpp	2016-06-17 23:27:28 UTC (rev 202184)
+++ trunk/Source/WebKit2/UIProcess/API/APIPageConfiguration.cpp	2016-06-17 23:31:42 UTC (rev 202185)
@@ -67,6 +67,7 @@
 #if PLATFORM(IOS)
     copy->m_alwaysRunsAtForegroundPriority = this->m_alwaysRunsAtForegroundPriority;
 #endif
+    copy->m_initialCapitalizationEnabled = this->m_initialCapitalizationEnabled;
 
     return copy;
 }

Modified: trunk/Source/WebKit2/UIProcess/API/APIPageConfiguration.h (202184 => 202185)


--- trunk/Source/WebKit2/UIProcess/API/APIPageConfiguration.h	2016-06-17 23:27:28 UTC (rev 202184)
+++ trunk/Source/WebKit2/UIProcess/API/APIPageConfiguration.h	2016-06-17 23:31:42 UTC (rev 202185)
@@ -89,6 +89,8 @@
     bool alwaysRunsAtForegroundPriority() { return m_alwaysRunsAtForegroundPriority; }
     void setAlwaysRunsAtForegroundPriority(bool alwaysRunsAtForegroundPriority) { m_alwaysRunsAtForegroundPriority = alwaysRunsAtForegroundPriority; } 
 #endif
+    bool initialCapitalizationEnabled() { return m_initialCapitalizationEnabled; }
+    void setInitialCapitalizationEnabled(bool initialCapitalizationEnabled) { m_initialCapitalizationEnabled = initialCapitalizationEnabled; }
 
 private:
 
@@ -109,6 +111,7 @@
 #if PLATFORM(IOS)
     bool m_alwaysRunsAtForegroundPriority = false;
 #endif
+    bool m_initialCapitalizationEnabled = true;
 };
 
 } // namespace API

Modified: trunk/Source/WebKit2/UIProcess/API/C/WKPageConfigurationRef.cpp (202184 => 202185)


--- trunk/Source/WebKit2/UIProcess/API/C/WKPageConfigurationRef.cpp	2016-06-17 23:27:28 UTC (rev 202184)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKPageConfigurationRef.cpp	2016-06-17 23:31:42 UTC (rev 202185)
@@ -103,3 +103,8 @@
 {
     toImpl(configuration)->setWebsiteDataStore(toImpl(websiteDataStore));
 }
+
+void WKPageConfigurationSetInitialCapitalizationEnabled(WKPageConfigurationRef configuration, bool enabled)
+{
+    toImpl(configuration)->setInitialCapitalizationEnabled(enabled);
+}

Modified: trunk/Source/WebKit2/UIProcess/API/C/WKPageConfigurationRef.h (202184 => 202185)


--- trunk/Source/WebKit2/UIProcess/API/C/WKPageConfigurationRef.h	2016-06-17 23:27:28 UTC (rev 202184)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKPageConfigurationRef.h	2016-06-17 23:31:42 UTC (rev 202185)
@@ -54,6 +54,8 @@
 WK_EXPORT WKWebsiteDataStoreRef WKPageConfigurationGetWebsiteDataStore(WKPageConfigurationRef configuration);
 WK_EXPORT void WKPageConfigurationSetWebsiteDataStore(WKPageConfigurationRef configuration, WKWebsiteDataStoreRef websiteDataStore);
 
+WK_EXPORT void WKPageConfigurationSetInitialCapitalizationEnabled(WKPageConfigurationRef configuration, bool enabled);
+
 #ifdef __cplusplus
 }
 #endif

Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm (202184 => 202185)


--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm	2016-06-17 23:27:28 UTC (rev 202184)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm	2016-06-17 23:31:42 UTC (rev 202185)
@@ -434,7 +434,8 @@
     pageConfiguration->preferenceValues().set(WebKit::WebPreferencesKey::shouldConvertPositionStyleOnCopyKey(), WebKit::WebPreferencesStore::Value(!![_configuration _convertsPositionStyleOnCopy]));
     pageConfiguration->preferenceValues().set(WebKit::WebPreferencesKey::httpEquivEnabledKey(), WebKit::WebPreferencesStore::Value(!![_configuration _allowsMetaRefresh]));
     pageConfiguration->preferenceValues().set(WebKit::WebPreferencesKey::allowUniversalAccessFromFileURLsKey(), WebKit::WebPreferencesStore::Value(!![_configuration _allowUniversalAccessFromFileURLs]));
-    
+    pageConfiguration->setInitialCapitalizationEnabled([_configuration _initialCapitalizationEnabled]);
+
 #if PLATFORM(MAC)
     pageConfiguration->preferenceValues().set(WebKit::WebPreferencesKey::showsURLsInToolTipsEnabledKey(), WebKit::WebPreferencesStore::Value(!![_configuration _showsURLsInToolTips]));
     pageConfiguration->preferenceValues().set(WebKit::WebPreferencesKey::serviceControlsEnabledKey(), WebKit::WebPreferencesStore::Value(!![_configuration _serviceControlsEnabled]));

Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewConfiguration.mm (202184 => 202185)


--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewConfiguration.mm	2016-06-17 23:27:28 UTC (rev 202184)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewConfiguration.mm	2016-06-17 23:31:42 UTC (rev 202185)
@@ -122,6 +122,7 @@
     BOOL _imageControlsEnabled;
     BOOL _requiresUserActionForEditingControlsManager;
 #endif
+    BOOL _initialCapitalizationEnabled;
 
 #if USE(APPLE_INTERNAL_SDK)
 #import <WebKitAdditions/WKWebViewConfigurationIvars.mm>
@@ -171,6 +172,7 @@
     _imageControlsEnabled = NO;
     _requiresUserActionForEditingControlsManager = NO;
 #endif
+    _initialCapitalizationEnabled = YES;
 
 #if ENABLE(WIRELESS_PLAYBACK_TARGET)
     _allowsAirPlayForMediaPlayback = YES;
@@ -278,6 +280,7 @@
     configuration->_attachmentElementEnabled = self->_attachmentElementEnabled;
     configuration->_mediaTypesRequiringUserActionForPlayback = self->_mediaTypesRequiringUserActionForPlayback;
     configuration->_mainContentUserGestureOverrideEnabled = self->_mainContentUserGestureOverrideEnabled;
+    configuration->_initialCapitalizationEnabled = self->_initialCapitalizationEnabled;
 
 #if PLATFORM(IOS)
     configuration->_allowsInlineMediaPlayback = self->_allowsInlineMediaPlayback;
@@ -649,6 +652,16 @@
     _mainContentUserGestureOverrideEnabled = mainContentUserGestureOverrideEnabled;
 }
 
+- (BOOL)_initialCapitalizationEnabled
+{
+    return _initialCapitalizationEnabled;
+}
+
+- (void)_setInitialCapitalizationEnabled:(BOOL)initialCapitalizationEnabled
+{
+    _initialCapitalizationEnabled = initialCapitalizationEnabled;
+}
+
 #if PLATFORM(MAC)
 - (BOOL)_showsURLsInToolTips
 {

Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h (202184 => 202185)


--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h	2016-06-17 23:27:28 UTC (rev 202184)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h	2016-06-17 23:31:42 UTC (rev 202185)
@@ -54,6 +54,7 @@
 @property (nonatomic, setter=_setInvisibleAutoplayNotPermitted:) BOOL _invisibleAutoplayNotPermitted WK_AVAILABLE(WK_MAC_TBA, WK_IOS_TBA);
 @property (nonatomic, setter=_setMediaDataLoadsAutomatically:) BOOL _mediaDataLoadsAutomatically WK_AVAILABLE(WK_MAC_TBA, WK_IOS_TBA);
 @property (nonatomic, setter=_setAttachmentElementEnabled:) BOOL _attachmentElementEnabled WK_AVAILABLE(WK_MAC_TBA, WK_IOS_TBA);
+@property (nonatomic, setter=_setInitialCapitalizationEnabled:) BOOL _initialCapitalizationEnabled WK_AVAILABLE(WK_MAC_TBA, WK_IOS_TBA);
 
 #if TARGET_OS_IPHONE
 @property (nonatomic, setter=_setAlwaysRunsAtForegroundPriority:) BOOL _alwaysRunsAtForegroundPriority WK_AVAILABLE(NA, 9_0);

Modified: trunk/Source/WebKit2/UIProcess/TextChecker.h (202184 => 202185)


--- trunk/Source/WebKit2/UIProcess/TextChecker.h	2016-06-17 23:27:28 UTC (rev 202184)
+++ trunk/Source/WebKit2/UIProcess/TextChecker.h	2016-06-17 23:31:42 UTC (rev 202185)
@@ -72,7 +72,7 @@
     static int64_t uniqueSpellDocumentTag(WebPageProxy*);
     static void closeSpellDocumentWithTag(int64_t);
 #if USE(UNIFIED_TEXT_CHECKING)
-    static Vector<WebCore::TextCheckingResult> checkTextOfParagraph(int64_t spellDocumentTag, StringView text, int32_t insertionPoint, uint64_t checkingTypes);
+    static Vector<WebCore::TextCheckingResult> checkTextOfParagraph(int64_t spellDocumentTag, StringView text, int32_t insertionPoint, uint64_t checkingTypes, bool initialCapitalizationEnabled);
 #endif
     static void checkSpellingOfString(int64_t spellDocumentTag, StringView text, int32_t& misspellingLocation, int32_t& misspellingLength);
     static void checkGrammarOfString(int64_t spellDocumentTag, StringView text, Vector<WebCore::GrammarDetail>&, int32_t& badGrammarLocation, int32_t& badGrammarLength);
@@ -80,7 +80,7 @@
     static void toggleSpellingUIIsShowing();
     static void updateSpellingUIWithMisspelledWord(int64_t spellDocumentTag, const String& misspelledWord);
     static void updateSpellingUIWithGrammarString(int64_t spellDocumentTag, const String& badGrammarPhrase, const WebCore::GrammarDetail&);
-    static void getGuessesForWord(int64_t spellDocumentTag, const String& word, const String& context, int32_t insertionPoint, Vector<String>& guesses);
+    static void getGuessesForWord(int64_t spellDocumentTag, const String& word, const String& context, int32_t insertionPoint, Vector<String>& guesses, bool initialCapitalizationEnabled);
     static void learnWord(int64_t spellDocumentTag, const String& word);
     static void ignoreWord(int64_t spellDocumentTag, const String& word);
     static void requestCheckingOfString(PassRefPtr<TextCheckerCompletion>, int32_t insertionPoint);

Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp (202184 => 202185)


--- trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp	2016-06-17 23:27:28 UTC (rev 202184)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp	2016-06-17 23:31:42 UTC (rev 202185)
@@ -348,6 +348,7 @@
 #if PLATFORM(IOS)
     , m_alwaysRunsAtForegroundPriority(m_configuration->alwaysRunsAtForegroundPriority())
 #endif
+    , m_initialCapitalizationEnabled(m_configuration->initialCapitalizationEnabled())
     , m_backForwardList(WebBackForwardList::create(*this))
     , m_maintainsInactiveSelection(false)
     , m_isEditable(false)
@@ -4510,7 +4511,7 @@
 #if USE(UNIFIED_TEXT_CHECKING)
 void WebPageProxy::checkTextOfParagraph(const String& text, uint64_t checkingTypes, int32_t insertionPoint, Vector<TextCheckingResult>& results)
 {
-    results = TextChecker::checkTextOfParagraph(spellDocumentTag(), text, insertionPoint, checkingTypes);
+    results = TextChecker::checkTextOfParagraph(spellDocumentTag(), text, insertionPoint, checkingTypes, m_initialCapitalizationEnabled);
 }
 #endif
 
@@ -4541,7 +4542,7 @@
 
 void WebPageProxy::getGuessesForWord(const String& word, const String& context, int32_t insertionPoint, Vector<String>& guesses)
 {
-    TextChecker::getGuessesForWord(spellDocumentTag(), word, context, insertionPoint, guesses);
+    TextChecker::getGuessesForWord(spellDocumentTag(), word, context, insertionPoint, guesses, m_initialCapitalizationEnabled);
 }
 
 void WebPageProxy::learnWord(const String& word)

Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.h (202184 => 202185)


--- trunk/Source/WebKit2/UIProcess/WebPageProxy.h	2016-06-17 23:27:28 UTC (rev 202184)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.h	2016-06-17 23:31:42 UTC (rev 202185)
@@ -1616,7 +1616,7 @@
     bool m_alwaysRunsAtForegroundPriority;
     ProcessThrottler::ForegroundActivityToken m_activityToken;
 #endif
-        
+    bool m_initialCapitalizationEnabled;
     Ref<WebBackForwardList> m_backForwardList;
         
     bool m_maintainsInactiveSelection;

Modified: trunk/Source/WebKit2/UIProcess/efl/TextCheckerEfl.cpp (202184 => 202185)


--- trunk/Source/WebKit2/UIProcess/efl/TextCheckerEfl.cpp	2016-06-17 23:27:28 UTC (rev 202184)
+++ trunk/Source/WebKit2/UIProcess/efl/TextCheckerEfl.cpp	2016-06-17 23:31:42 UTC (rev 202185)
@@ -148,7 +148,7 @@
 #endif // ENABLE(SPELLCHECK)
 
 #if USE(UNIFIED_TEXT_CHECKING)
-Vector<TextCheckingResult> TextChecker::checkTextOfParagraph(int64_t spellDocumentTag, StringView text, int32_t insertionPoint, uint64_t checkingTypes)
+Vector<TextCheckingResult> TextChecker::checkTextOfParagraph(int64_t spellDocumentTag, StringView text, int32_t insertionPoint, uint64_t checkingTypes, bool)
 {
     UNUSED_PARAM(insertionPoint);
 
@@ -232,7 +232,7 @@
     notImplemented();
 }
 
-void TextChecker::getGuessesForWord(int64_t spellDocumentTag, const String& word, const String& , int32_t insertionPoint, Vector<String>& guesses)
+void TextChecker::getGuessesForWord(int64_t spellDocumentTag, const String& word, const String& , int32_t insertionPoint, Vector<String>& guesses, bool)
 {
     UNUSED_PARAM(insertionPoint);
 #if ENABLE(SPELLCHECK)
@@ -274,7 +274,7 @@
     ASSERT(request.sequence() != unrequestedTextCheckingSequence);
     ASSERT(request.mask() != TextCheckingTypeNone);
 
-    completion->didFinishCheckingText(checkTextOfParagraph(completion->spellDocumentTag(), request.text(), insertionPoint, request.mask()));
+    completion->didFinishCheckingText(checkTextOfParagraph(completion->spellDocumentTag(), request.text(), insertionPoint, request.mask(), false));
 #else
     UNUSED_PARAM(completion);
     UNUSED_PARAM(insertionPoint);

Modified: trunk/Source/WebKit2/UIProcess/gtk/TextCheckerGtk.cpp (202184 => 202185)


--- trunk/Source/WebKit2/UIProcess/gtk/TextCheckerGtk.cpp	2016-06-17 23:27:28 UTC (rev 202184)
+++ trunk/Source/WebKit2/UIProcess/gtk/TextCheckerGtk.cpp	2016-06-17 23:31:42 UTC (rev 202185)
@@ -166,7 +166,7 @@
 {
 }
 
-void TextChecker::getGuessesForWord(int64_t /* spellDocumentTag */, const String& word, const String& /* context */, int32_t /* insertionPoint */, Vector<String>& guesses)
+void TextChecker::getGuessesForWord(int64_t /* spellDocumentTag */, const String& word, const String& /* context */, int32_t /* insertionPoint */, Vector<String>& guesses, bool)
 {
 #if ENABLE(SPELLCHECK)
     guesses = enchantTextChecker().getGuessesForWord(word);
@@ -204,7 +204,7 @@
     ASSERT(request.sequence() != unrequestedTextCheckingSequence);
     ASSERT(request.mask() != TextCheckingTypeNone);
 
-    completion->didFinishCheckingText(checkTextOfParagraph(completion->spellDocumentTag(), request.text(), insertionPoint, request.mask()));
+    completion->didFinishCheckingText(checkTextOfParagraph(completion->spellDocumentTag(), request.text(), insertionPoint, request.mask(), false));
 #else
     UNUSED_PARAM(completion);
 #endif
@@ -239,7 +239,7 @@
 #endif
 
 #if USE(UNIFIED_TEXT_CHECKING)
-Vector<TextCheckingResult> TextChecker::checkTextOfParagraph(int64_t spellDocumentTag, StringView text, int32_t insertionPoint, uint64_t checkingTypes)
+Vector<TextCheckingResult> TextChecker::checkTextOfParagraph(int64_t spellDocumentTag, StringView text, int32_t insertionPoint, uint64_t checkingTypes, bool)
 {
     UNUSED_PARAM(insertionPoint);
 #if ENABLE(SPELLCHECK)

Modified: trunk/Source/WebKit2/UIProcess/ios/TextCheckerIOS.mm (202184 => 202185)


--- trunk/Source/WebKit2/UIProcess/ios/TextCheckerIOS.mm	2016-06-17 23:27:28 UTC (rev 202184)
+++ trunk/Source/WebKit2/UIProcess/ios/TextCheckerIOS.mm	2016-06-17 23:31:42 UTC (rev 202185)
@@ -132,7 +132,7 @@
 
 #if USE(UNIFIED_TEXT_CHECKING)
 
-Vector<TextCheckingResult> TextChecker::checkTextOfParagraph(int64_t, StringView, int32_t, uint64_t)
+Vector<TextCheckingResult> TextChecker::checkTextOfParagraph(int64_t, StringView, int32_t, uint64_t, bool)
 {
     notImplemented();
     return Vector<TextCheckingResult>();
@@ -171,7 +171,7 @@
     notImplemented();
 }
 
-void TextChecker::getGuessesForWord(int64_t, const String&, const String&, int32_t, Vector<String>&)
+void TextChecker::getGuessesForWord(int64_t, const String&, const String&, int32_t, Vector<String>&, bool)
 {
     notImplemented();
 }

Modified: trunk/Source/WebKit2/UIProcess/mac/TextCheckerMac.mm (202184 => 202185)


--- trunk/Source/WebKit2/UIProcess/mac/TextCheckerMac.mm	2016-06-17 23:27:28 UTC (rev 202184)
+++ trunk/Source/WebKit2/UIProcess/mac/TextCheckerMac.mm	2016-06-17 23:31:42 UTC (rev 202185)
@@ -47,6 +47,13 @@
 static NSString* const WebAutomaticLinkDetectionEnabled = @"WebAutomaticLinkDetectionEnabled";
 static NSString* const WebAutomaticTextReplacementEnabled = @"WebAutomaticTextReplacementEnabled";
 
+#if HAVE(ADVANCED_SPELL_CHECKING)
+// FIXME: this needs to be removed and replaced with NSTextCheckingSuppressInitialCapitalizationKey as soon as
+// rdar://problem/26800924 is fixed.
+
+static NSString* const WebTextCheckingSuppressInitialCapitalizationKey = @"SuppressInitialCapitalization";
+#endif
+
 using namespace WebCore;
 
 namespace WebKit {
@@ -291,14 +298,17 @@
 
 #if USE(UNIFIED_TEXT_CHECKING)
 
-Vector<TextCheckingResult> TextChecker::checkTextOfParagraph(int64_t spellDocumentTag, StringView text, int32_t insertionPoint, uint64_t checkingTypes)
+Vector<TextCheckingResult> TextChecker::checkTextOfParagraph(int64_t spellDocumentTag, StringView text, int32_t insertionPoint, uint64_t checkingTypes, bool initialCapitalizationEnabled)
 {
     Vector<TextCheckingResult> results;
 
     RetainPtr<NSString> textString = text.createNSStringWithoutCopying();
     NSDictionary *options = nil;
 #if HAVE(ADVANCED_SPELL_CHECKING)
-    options = @{ NSTextCheckingInsertionPointKey :  [NSNumber numberWithUnsignedInteger:insertionPoint] };
+    options = @{ NSTextCheckingInsertionPointKey : @(insertionPoint),
+                 WebTextCheckingSuppressInitialCapitalizationKey : @(!initialCapitalizationEnabled) };
+#else
+    UNUSED_PARAM(initialCapitalizationEnabled);
 #endif
     NSArray *incomingResults = [[NSSpellChecker sharedSpellChecker] checkString:textString.get()
                                                                           range:NSMakeRange(0, text.length())
@@ -430,14 +440,15 @@
     [[NSSpellChecker sharedSpellChecker] updateSpellingPanelWithGrammarString:badGrammarPhrase detail:grammarDetailDict.get()];
 }
 
-void TextChecker::getGuessesForWord(int64_t spellDocumentTag, const String& word, const String& context, int32_t insertionPoint, Vector<String>& guesses)
+void TextChecker::getGuessesForWord(int64_t spellDocumentTag, const String& word, const String& context, int32_t insertionPoint, Vector<String>& guesses, bool initialCapitalizationEnabled)
 {
     NSString* language = nil;
     NSOrthography* orthography = nil;
     NSSpellChecker *checker = [NSSpellChecker sharedSpellChecker];
     NSDictionary *options = nil;
 #if HAVE(ADVANCED_SPELL_CHECKING)
-    options = @{ NSTextCheckingInsertionPointKey :  [NSNumber numberWithUnsignedInteger:insertionPoint] };
+    options = @{ NSTextCheckingInsertionPointKey : @(insertionPoint),
+                 WebTextCheckingSuppressInitialCapitalizationKey : @(!initialCapitalizationEnabled) };
 #endif
     if (context.length()) {
         [checker checkString:context range:NSMakeRange(0, context.length()) types:NSTextCheckingTypeOrthography options:options inSpellDocumentWithTag:spellDocumentTag orthography:&orthography wordCount:0];
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to