From cdf352979c96acd453085a392edb97e3a23ee66d Mon Sep 17 00:00:00 2001 From: camsim99 Date: Mon, 5 Dec 2022 12:50:36 -0800 Subject: [PATCH 1/4] Change format --- .../darwin/ios/framework/Source/FlutterSpellCheckPlugin.mm | 5 ++++- .../ios/framework/Source/FlutterSpellCheckPluginTest.mm | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/shell/platform/darwin/ios/framework/Source/FlutterSpellCheckPlugin.mm b/shell/platform/darwin/ios/framework/Source/FlutterSpellCheckPlugin.mm index 1b2038b5f63ea..76c45197b0607 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterSpellCheckPlugin.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterSpellCheckPlugin.mm @@ -62,7 +62,10 @@ - (void)handleMethodCall:(FlutterMethodCall*)call result:(FlutterResult)result { - (NSArray*>*)findAllSpellCheckSuggestionsForText:(NSString*)text inLanguage:(NSString*)language { // Transform Dart Locale format to iOS language format. - language = [language stringByReplacingOccurrencesOfString:@"-" withString:@"_"]; + NSArray* languageCodes = [language componentsSeparatedByString:@"-"]; + NSString lastCode = [[languageCodes lastObject] uppercaseString]; + language = [NSString stringWithFormat:@"%@_%@", [languageCodes firstObject], lastCode]; + if (![UITextChecker.availableLanguages containsObject:language]) { return nil; } diff --git a/shell/platform/darwin/ios/framework/Source/FlutterSpellCheckPluginTest.mm b/shell/platform/darwin/ios/framework/Source/FlutterSpellCheckPluginTest.mm index 221050638efea..d35d72f0154d8 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterSpellCheckPluginTest.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterSpellCheckPluginTest.mm @@ -274,7 +274,7 @@ - (void)testSupportSubLanguage { self.partialMockPlugin = OCMPartialMock(self.plugin); OCMStub([self.partialMockPlugin textChecker]).andReturn(self.mockTextChecker); id textCheckerClassMock = OCMClassMock([UITextChecker class]); - [[[textCheckerClassMock stub] andReturn:@[ @"en_us" ]] availableLanguages]; + [[[textCheckerClassMock stub] andReturn:@[ @"en_US" ]] availableLanguages]; NSArray* suggestions1 = @[ @"suggestion 1", @"suggestion 2" ]; [self mockUITextCheckerWithExpectedMisspelledWordRange:NSMakeRange(0, 5) From fc35c1c8ef7c936582872c5f1cc1f316def01620 Mon Sep 17 00:00:00 2001 From: camsim99 Date: Tue, 6 Dec 2022 11:24:27 -0800 Subject: [PATCH 2/4] Add pointer --- .../darwin/ios/framework/Source/FlutterSpellCheckPlugin.mm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shell/platform/darwin/ios/framework/Source/FlutterSpellCheckPlugin.mm b/shell/platform/darwin/ios/framework/Source/FlutterSpellCheckPlugin.mm index 76c45197b0607..f93829aa44840 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterSpellCheckPlugin.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterSpellCheckPlugin.mm @@ -63,7 +63,7 @@ - (void)handleMethodCall:(FlutterMethodCall*)call result:(FlutterResult)result { inLanguage:(NSString*)language { // Transform Dart Locale format to iOS language format. NSArray* languageCodes = [language componentsSeparatedByString:@"-"]; - NSString lastCode = [[languageCodes lastObject] uppercaseString]; + NSString* lastCode = [[languageCodes lastObject] uppercaseString]; language = [NSString stringWithFormat:@"%@_%@", [languageCodes firstObject], lastCode]; if (![UITextChecker.availableLanguages containsObject:language]) { From c957a4a58ba5a7c066c5280291526dcaf4384013 Mon Sep 17 00:00:00 2001 From: camsim99 Date: Tue, 6 Dec 2022 15:58:22 -0800 Subject: [PATCH 3/4] Check length --- .../ios/framework/Source/FlutterSpellCheckPlugin.mm | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/shell/platform/darwin/ios/framework/Source/FlutterSpellCheckPlugin.mm b/shell/platform/darwin/ios/framework/Source/FlutterSpellCheckPlugin.mm index f93829aa44840..c41704638dd32 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterSpellCheckPlugin.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterSpellCheckPlugin.mm @@ -61,10 +61,12 @@ - (void)handleMethodCall:(FlutterMethodCall*)call result:(FlutterResult)result { // Returns an empty array if no spell check suggestions. - (NSArray*>*)findAllSpellCheckSuggestionsForText:(NSString*)text inLanguage:(NSString*)language { - // Transform Dart Locale format to iOS language format. - NSArray* languageCodes = [language componentsSeparatedByString:@"-"]; - NSString* lastCode = [[languageCodes lastObject] uppercaseString]; - language = [NSString stringWithFormat:@"%@_%@", [languageCodes firstObject], lastCode]; + // Transform Dart Locale format to iOS language format if necessary. + if ([language containsString:@"-"]) { + NSArray* languageCodes = [language componentsSeparatedByString:@"-"]; + NSString* lastCode = [[languageCodes lastObject] uppercaseString]; + language = [NSString stringWithFormat:@"%@_%@", [languageCodes firstObject], lastCode]; + } if (![UITextChecker.availableLanguages containsObject:language]) { return nil; From 15c18c9bbeaae331465a2a239bcc10e35db8b62f Mon Sep 17 00:00:00 2001 From: camsim99 Date: Wed, 7 Dec 2022 11:07:18 -0800 Subject: [PATCH 4/4] Add check --- .../darwin/ios/framework/Source/FlutterSpellCheckPlugin.mm | 1 + 1 file changed, 1 insertion(+) diff --git a/shell/platform/darwin/ios/framework/Source/FlutterSpellCheckPlugin.mm b/shell/platform/darwin/ios/framework/Source/FlutterSpellCheckPlugin.mm index c41704638dd32..1b172b9334777 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterSpellCheckPlugin.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterSpellCheckPlugin.mm @@ -64,6 +64,7 @@ - (void)handleMethodCall:(FlutterMethodCall*)call result:(FlutterResult)result { // Transform Dart Locale format to iOS language format if necessary. if ([language containsString:@"-"]) { NSArray* languageCodes = [language componentsSeparatedByString:@"-"]; + FML_DCHECK(languageCodes.count == 2); NSString* lastCode = [[languageCodes lastObject] uppercaseString]; language = [NSString stringWithFormat:@"%@_%@", [languageCodes firstObject], lastCode]; }