blob: 9c48735dea76af790d95f152c5b3b7cea2e41c04 [file]
// Copyright 2024 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#import <string>
#import "base/strings/sys_string_conversions.h"
#import "components/translate/core/common/language_detection_details.h"
#import "ios/web_view/internal/translate/cwv_translation_language_detection_details_internal.h"
@implementation CWVTranslationLanguageDetectionDetails
- (instancetype)initWithHasRunLanguageDetection:(BOOL)hasRunLanguageDetection
contentLanguage:(NSString*)contentLanguage
modelDetectedLanguage:(NSString*)modelDetectedLanguage
isModelReliable:(BOOL)isModelReliable
hasNoTranslate:(BOOL)hasNoTranslate
htmlRootLanguage:(NSString*)htmlRootLanguage
adoptedLanguage:(NSString*)adoptedLanguage
reliabilityScore:(CGFloat)reliabilityScore {
self = [super init];
if (self) {
_hasRunLanguageDetection = hasRunLanguageDetection;
_contentLanguage = contentLanguage;
_modelDetectedLanguage = modelDetectedLanguage;
_isModelReliable = isModelReliable;
_hasNoTranslate = hasNoTranslate;
_htmlRootLanguage = htmlRootLanguage;
_adoptedLanguage = adoptedLanguage;
_reliabilityScore = reliabilityScore;
}
return self;
}
+ (instancetype)languageDetectionDetailsFrom:
(const translate::LanguageDetectionDetails&)details {
NSString* contentLanguage = base::SysUTF8ToNSString(details.content_language);
NSString* modelDetectedLanguage =
base::SysUTF8ToNSString(details.model_detected_language);
NSString* htmlRootLanguage =
base::SysUTF8ToNSString(details.html_root_language);
NSString* adoptedLanguage = base::SysUTF8ToNSString(details.adopted_language);
return [[CWVTranslationLanguageDetectionDetails alloc]
initWithHasRunLanguageDetection:details.has_run_lang_detection
contentLanguage:contentLanguage
modelDetectedLanguage:modelDetectedLanguage
isModelReliable:details.is_model_reliable
hasNoTranslate:details.has_notranslate
htmlRootLanguage:htmlRootLanguage
adoptedLanguage:adoptedLanguage
reliabilityScore:details.model_reliability_score];
}
- (BOOL)isEqual:(id)object {
if (self == object) {
return YES;
}
if (![object isKindOfClass:[CWVTranslationLanguageDetectionDetails class]]) {
return NO;
}
CWVTranslationLanguageDetectionDetails* otherDetails =
(CWVTranslationLanguageDetectionDetails*)object;
return (_hasRunLanguageDetection == otherDetails.hasRunLanguageDetection) &&
[_contentLanguage isEqualToString:otherDetails.contentLanguage] &&
[_modelDetectedLanguage
isEqualToString:otherDetails.modelDetectedLanguage] &&
(_isModelReliable == otherDetails.isModelReliable) &&
(_hasNoTranslate == otherDetails.hasNoTranslate) &&
[_htmlRootLanguage isEqualToString:otherDetails.htmlRootLanguage] &&
[_adoptedLanguage isEqualToString:otherDetails.adoptedLanguage] &&
(_reliabilityScore == otherDetails.reliabilityScore);
}
- (NSString*)description {
return [NSString stringWithFormat:@"%@ adoptedLanguage:%@ hasNoTranslate:%i "
@"isModelReliable:%i, reliabilityScore:%f",
[super description], _adoptedLanguage,
_hasNoTranslate, _isModelReliable,
_reliabilityScore];
}
@end