| // Copyright 2016 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #import "ios/chrome/browser/voice/speech_input_locale_match.h" |
| |
| #import "base/apple/bundle_locations.h" |
| #import "base/apple/foundation_util.h" |
| |
| namespace { |
| |
| // Keys used in SpeechInputLocaleMatches.plist: |
| NSString* const kMatchedLocaleKey = @"Locale"; |
| NSString* const kMatchingLocalesKey = @"MatchingLocales"; |
| NSString* const kMatchingLanguagesKey = @"MatchingLanguages"; |
| |
| } // namespace |
| |
| @implementation SpeechInputLocaleMatch |
| |
| @synthesize matchedLocale = _matchedLocale; |
| @synthesize matchingLocales = _matchingLocales; |
| @synthesize matchingLanguages = _matchingLanguages; |
| |
| - (instancetype)initWithMatchedLocale:(NSString*)matchedLocale |
| matchingLocales:(NSArray<NSString*>*)matchingLocales |
| matchingLanguages:(NSArray<NSString*>*)matchingLanguages { |
| if ((self = [super init])) { |
| _matchedLocale = [matchedLocale copy]; |
| _matchingLocales = [matchingLocales copy]; |
| _matchingLanguages = [matchingLanguages copy]; |
| } |
| return self; |
| } |
| |
| - (instancetype)initWithDictionary:(NSDictionary*)dict { |
| NSString* matchedLocale = |
| base::apple::ObjCCastStrict<NSString>(dict[kMatchedLocaleKey]); |
| |
| NSArray* matchingLocales = |
| base::apple::ObjCCastStrict<NSArray>(dict[kMatchingLocalesKey]); |
| for (id machingLocale : matchingLocales) { |
| DCHECK([machingLocale isKindOfClass:[NSString class]]); |
| } |
| |
| NSArray* machingLanguages = |
| base::apple::ObjCCastStrict<NSArray>(dict[kMatchingLanguagesKey]); |
| for (id machingLanguage : machingLanguages) { |
| DCHECK([machingLanguage isKindOfClass:[NSString class]]); |
| } |
| |
| return [self initWithMatchedLocale:matchedLocale |
| matchingLocales:matchingLocales |
| matchingLanguages:machingLanguages]; |
| } |
| |
| @end |
| |
| NSArray<SpeechInputLocaleMatch*>* LoadSpeechInputLocaleMatches() { |
| NSString* path = [base::apple::FrameworkBundle() |
| pathForResource:@"SpeechInputLocaleMatches" |
| ofType:@"plist" |
| inDirectory:@"gm-config/ANY"]; |
| |
| NSMutableArray<SpeechInputLocaleMatch*>* matches = [NSMutableArray array]; |
| for (id item in [NSArray arrayWithContentsOfFile:path]) { |
| NSDictionary* dict = base::apple::ObjCCastStrict<NSDictionary>(item); |
| SpeechInputLocaleMatch* match = |
| [[SpeechInputLocaleMatch alloc] initWithDictionary:dict]; |
| [matches addObject:match]; |
| } |
| return matches; |
| } |