OLD | NEW |
1 // Copyright 2017 The Chromium Authors. All rights reserved. | 1 // Copyright 2017 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 #import "ios/web_view/internal/translate/cwv_translation_controller_internal.h" | 5 #import "ios/web_view/internal/translate/cwv_translation_controller_internal.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "base/memory/ptr_util.h" | 9 #include "base/memory/ptr_util.h" |
10 #include "base/strings/string16.h" | 10 #include "base/strings/string16.h" |
11 #include "base/strings/sys_string_conversions.h" | 11 #include "base/strings/sys_string_conversions.h" |
12 #include "components/translate/core/browser/translate_download_manager.h" | 12 #include "components/translate/core/browser/translate_download_manager.h" |
13 #include "components/translate/core/browser/translate_manager.h" | 13 #include "components/translate/core/browser/translate_manager.h" |
14 #import "ios/web_view/internal/cwv_web_view_configuration_internal.h" | 14 #import "ios/web_view/internal/cwv_web_view_configuration_internal.h" |
15 #include "ios/web_view/internal/pref_names.h" | |
16 #import "ios/web_view/internal/translate/cwv_translation_language_internal.h" | 15 #import "ios/web_view/internal/translate/cwv_translation_language_internal.h" |
17 #import "ios/web_view/internal/translate/web_view_translate_client.h" | 16 #import "ios/web_view/internal/translate/web_view_translate_client.h" |
18 #include "ios/web_view/internal/web_view_browser_state.h" | |
19 #import "ios/web_view/public/cwv_translation_controller_delegate.h" | 17 #import "ios/web_view/public/cwv_translation_controller_delegate.h" |
20 #import "ios/web_view/public/cwv_translation_policy.h" | 18 #import "ios/web_view/public/cwv_translation_policy.h" |
21 #include "ui/base/l10n/l10n_util.h" | 19 #include "ui/base/l10n/l10n_util.h" |
22 | 20 |
23 #if !defined(__has_feature) || !__has_feature(objc_arc) | 21 #if !defined(__has_feature) || !__has_feature(objc_arc) |
24 #error "This file requires ARC support." | 22 #error "This file requires ARC support." |
25 #endif | 23 #endif |
26 | 24 |
27 NSErrorDomain const CWVTranslationErrorDomain = | 25 NSErrorDomain const CWVTranslationErrorDomain = |
28 @"org.chromium.chromewebview.TranslationErrorDomain"; | 26 @"org.chromium.chromewebview.TranslationErrorDomain"; |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
61 | 59 |
62 @implementation CWVTranslationController { | 60 @implementation CWVTranslationController { |
63 ios_web_view::WebViewTranslateClient* _translateClient; | 61 ios_web_view::WebViewTranslateClient* _translateClient; |
64 std::unique_ptr<translate::TranslatePrefs> _translatePrefs; | 62 std::unique_ptr<translate::TranslatePrefs> _translatePrefs; |
65 } | 63 } |
66 | 64 |
67 @synthesize delegate = _delegate; | 65 @synthesize delegate = _delegate; |
68 @synthesize supportedLanguagesByCode = _supportedLanguagesByCode; | 66 @synthesize supportedLanguagesByCode = _supportedLanguagesByCode; |
69 @synthesize webState = _webState; | 67 @synthesize webState = _webState; |
70 | 68 |
71 #pragma mark - Class Methods | |
72 | |
73 + (void)resetTranslationPolicies { | |
74 CWVWebViewConfiguration* configuration = | |
75 [CWVWebViewConfiguration defaultConfiguration]; | |
76 PrefService* prefService = configuration.browserState->GetPrefs(); | |
77 translate::TranslatePrefs translatePrefs(prefService, prefs::kAcceptLanguages, | |
78 nullptr); | |
79 translatePrefs.ResetToDefaults(); | |
80 } | |
81 | |
82 #pragma mark - Internal Methods | 69 #pragma mark - Internal Methods |
83 | 70 |
84 - (void)setWebState:(web::WebState*)webState { | 71 - (void)setWebState:(web::WebState*)webState { |
85 _webState = webState; | 72 _webState = webState; |
86 | 73 |
87 ios_web_view::WebViewTranslateClient::CreateForWebState(_webState); | 74 ios_web_view::WebViewTranslateClient::CreateForWebState(_webState); |
88 _translateClient = | 75 _translateClient = |
89 ios_web_view::WebViewTranslateClient::FromWebState(_webState); | 76 ios_web_view::WebViewTranslateClient::FromWebState(_webState); |
90 _translateClient->set_translation_controller(self); | 77 _translateClient->set_translation_controller(self); |
91 _translatePrefs = _translateClient->translate_manager() | 78 _translatePrefs = _translateClient->translate_manager() |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
162 _translateClient->translate_manager()->TranslatePage( | 149 _translateClient->translate_manager()->TranslatePage( |
163 sourceLanguageCode, targetLanguageCode, userInitiated); | 150 sourceLanguageCode, targetLanguageCode, userInitiated); |
164 } | 151 } |
165 | 152 |
166 - (void)revertTranslation { | 153 - (void)revertTranslation { |
167 _translateClient->translate_manager()->RevertTranslation(); | 154 _translateClient->translate_manager()->RevertTranslation(); |
168 } | 155 } |
169 | 156 |
170 - (void)setTranslationPolicy:(CWVTranslationPolicy*)policy | 157 - (void)setTranslationPolicy:(CWVTranslationPolicy*)policy |
171 forPageLanguage:(CWVTranslationLanguage*)pageLanguage { | 158 forPageLanguage:(CWVTranslationLanguage*)pageLanguage { |
172 DCHECK(!_webState->GetBrowserState()->IsOffTheRecord()); | |
173 std::string languageCode = base::SysNSStringToUTF8(pageLanguage.languageCode); | 159 std::string languageCode = base::SysNSStringToUTF8(pageLanguage.languageCode); |
174 switch (policy.type) { | 160 switch (policy.type) { |
175 case CWVTranslationPolicyAsk: { | 161 case CWVTranslationPolicyAsk: { |
176 _translatePrefs->UnblockLanguage(languageCode); | 162 _translatePrefs->UnblockLanguage(languageCode); |
177 _translatePrefs->RemoveLanguagePairFromWhitelist(languageCode, | 163 _translatePrefs->RemoveLanguagePairFromWhitelist(languageCode, |
178 std::string()); | 164 std::string()); |
179 break; | 165 break; |
180 } | 166 } |
181 case CWVTranslationPolicyNever: { | 167 case CWVTranslationPolicyNever: { |
182 _translatePrefs->BlockLanguage(languageCode); | 168 _translatePrefs->BlockLanguage(languageCode); |
(...skipping 23 matching lines...) Expand all Loading... |
206 } | 192 } |
207 | 193 |
208 CWVTranslationLanguage* targetLanguage = | 194 CWVTranslationLanguage* targetLanguage = |
209 [self languageWithCode:autoTargetLanguageCode]; | 195 [self languageWithCode:autoTargetLanguageCode]; |
210 return [CWVTranslationPolicy | 196 return [CWVTranslationPolicy |
211 translationPolicyAutoTranslateToLanguage:targetLanguage]; | 197 translationPolicyAutoTranslateToLanguage:targetLanguage]; |
212 } | 198 } |
213 | 199 |
214 - (void)setTranslationPolicy:(CWVTranslationPolicy*)policy | 200 - (void)setTranslationPolicy:(CWVTranslationPolicy*)policy |
215 forPageHost:(NSString*)pageHost { | 201 forPageHost:(NSString*)pageHost { |
216 DCHECK(!_webState->GetBrowserState()->IsOffTheRecord()); | |
217 DCHECK(pageHost.length); | 202 DCHECK(pageHost.length); |
218 switch (policy.type) { | 203 switch (policy.type) { |
219 case CWVTranslationPolicyAsk: { | 204 case CWVTranslationPolicyAsk: { |
220 _translatePrefs->RemoveSiteFromBlacklist( | 205 _translatePrefs->RemoveSiteFromBlacklist( |
221 base::SysNSStringToUTF8(pageHost)); | 206 base::SysNSStringToUTF8(pageHost)); |
222 break; | 207 break; |
223 } | 208 } |
224 case CWVTranslationPolicyNever: { | 209 case CWVTranslationPolicyNever: { |
225 _translatePrefs->BlacklistSite(base::SysNSStringToUTF8(pageHost)); | 210 _translatePrefs->BlacklistSite(base::SysNSStringToUTF8(pageHost)); |
226 break; | 211 break; |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
270 } | 255 } |
271 return _supportedLanguagesByCode; | 256 return _supportedLanguagesByCode; |
272 } | 257 } |
273 | 258 |
274 - (CWVTranslationLanguage*)languageWithCode:(const std::string&)languageCode { | 259 - (CWVTranslationLanguage*)languageWithCode:(const std::string&)languageCode { |
275 NSString* languageCodeString = base::SysUTF8ToNSString(languageCode); | 260 NSString* languageCodeString = base::SysUTF8ToNSString(languageCode); |
276 return self.supportedLanguagesByCode[languageCodeString]; | 261 return self.supportedLanguagesByCode[languageCodeString]; |
277 } | 262 } |
278 | 263 |
279 @end | 264 @end |
OLD | NEW |