Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/web_view_translate_client.h" | 5 #import "ios/web_view/internal/translate/web_view_translate_client.h" |
| 6 | 6 |
| 7 #include <vector> | 7 #include <vector> |
| 8 | 8 |
| 9 #include "base/logging.h" | 9 #include "base/logging.h" |
| 10 #import "base/mac/scoped_nsobject.h" | 10 #import "base/mac/scoped_nsobject.h" |
| 11 #include "base/memory/ptr_util.h" | 11 #include "base/memory/ptr_util.h" |
| 12 #include "components/infobars/core/infobar.h" | 12 #include "components/infobars/core/infobar.h" |
| 13 #include "components/prefs/pref_service.h" | 13 #include "components/prefs/pref_service.h" |
| 14 #include "components/translate/core/browser/page_translated_details.h" | 14 #include "components/translate/core/browser/page_translated_details.h" |
| 15 #include "components/translate/core/browser/translate_accept_languages.h" | 15 #include "components/translate/core/browser/translate_accept_languages.h" |
| 16 #include "components/translate/core/browser/translate_infobar_delegate.h" | 16 #include "components/translate/core/browser/translate_infobar_delegate.h" |
| 17 #include "components/translate/core/browser/translate_manager.h" | 17 #include "components/translate/core/browser/translate_manager.h" |
| 18 #include "components/translate/core/browser/translate_prefs.h" | 18 #include "components/translate/core/browser/translate_prefs.h" |
| 19 #include "components/translate/core/browser/translate_step.h" | 19 #include "components/translate/core/browser/translate_step.h" |
| 20 #include "ios/web/public/browser_state.h" | 20 #include "ios/web/public/browser_state.h" |
| 21 #import "ios/web/public/web_state/web_state.h" | 21 #import "ios/web/public/web_state/web_state.h" |
| 22 #include "ios/web_view/internal/pref_names.h" | 22 #include "ios/web_view/internal/pref_names.h" |
| 23 #import "ios/web_view/internal/translate/cwv_translate_manager_impl.h" | 23 #import "ios/web_view/internal/translate/cwv_translation_controller_internal.h" |
| 24 #include "ios/web_view/internal/translate/web_view_translate_accept_languages_fa ctory.h" | 24 #include "ios/web_view/internal/translate/web_view_translate_accept_languages_fa ctory.h" |
| 25 #include "ios/web_view/internal/translate/web_view_translate_ranker_factory.h" | 25 #include "ios/web_view/internal/translate/web_view_translate_ranker_factory.h" |
| 26 #include "ios/web_view/internal/web_view_browser_state.h" | 26 #include "ios/web_view/internal/web_view_browser_state.h" |
| 27 #import "ios/web_view/public/cwv_translate_delegate.h" | |
| 28 #include "url/gurl.h" | 27 #include "url/gurl.h" |
| 29 | 28 |
| 30 #if !defined(__has_feature) || !__has_feature(objc_arc) | 29 #if !defined(__has_feature) || !__has_feature(objc_arc) |
| 31 #error "This file requires ARC support." | 30 #error "This file requires ARC support." |
| 32 #endif | 31 #endif |
| 33 | 32 |
| 34 DEFINE_WEB_STATE_USER_DATA_KEY(ios_web_view::WebViewTranslateClient); | 33 DEFINE_WEB_STATE_USER_DATA_KEY(ios_web_view::WebViewTranslateClient); |
| 35 | 34 |
| 36 namespace ios_web_view { | 35 namespace ios_web_view { |
| 37 | 36 |
| (...skipping 18 matching lines...) Expand all Loading... | |
| 56 NOTREACHED(); | 55 NOTREACHED(); |
| 57 return nullptr; | 56 return nullptr; |
| 58 } | 57 } |
| 59 | 58 |
| 60 void WebViewTranslateClient::ShowTranslateUI( | 59 void WebViewTranslateClient::ShowTranslateUI( |
| 61 translate::TranslateStep step, | 60 translate::TranslateStep step, |
| 62 const std::string& source_language, | 61 const std::string& source_language, |
| 63 const std::string& target_language, | 62 const std::string& target_language, |
| 64 translate::TranslateErrors::Type error_type, | 63 translate::TranslateErrors::Type error_type, |
| 65 bool triggered_from_menu) { | 64 bool triggered_from_menu) { |
| 66 if (!delegate_.get()) | |
| 67 return; | |
| 68 | |
| 69 if (error_type != translate::TranslateErrors::NONE) | |
| 70 step = translate::TRANSLATE_STEP_TRANSLATE_ERROR; | |
| 71 | |
| 72 translate_manager_->GetLanguageState().SetTranslateEnabled(true); | 65 translate_manager_->GetLanguageState().SetTranslateEnabled(true); |
| 73 | 66 |
| 74 if (step == translate::TRANSLATE_STEP_BEFORE_TRANSLATE && | 67 if (step == translate::TRANSLATE_STEP_BEFORE_TRANSLATE && |
| 75 !translate_manager_->GetLanguageState().HasLanguageChanged()) { | 68 !translate_manager_->GetLanguageState().HasLanguageChanged()) { |
| 76 return; | 69 return; |
| 77 } | 70 } |
| 78 | 71 |
| 79 base::scoped_nsobject<CWVTranslateManagerImpl> criwv_manager( | 72 if (!translation_controller_) { |
|
Eugene But (OOO till 7-30)
2017/04/28 07:18:07
There is no need for this check calling method on
jzw1
2017/04/28 09:55:33
I see. I need to read more about these wrapper cla
| |
| 80 [[CWVTranslateManagerImpl alloc] | 73 return; |
| 81 initWithTranslateManager:translate_manager_.get() | 74 } |
| 82 sourceLanguage:source_language | |
| 83 targetLanguage:target_language]); | |
| 84 | 75 |
| 85 CRIWVTransateStep criwv_step; | 76 [translation_controller_ updateTranslateStep:step |
| 86 switch (step) { | 77 sourceLanguage:source_language |
| 87 case translate::TRANSLATE_STEP_BEFORE_TRANSLATE: | 78 targetLanguage:target_language |
| 88 criwv_step = CRIWVTransateStepBeforeTranslate; | 79 errorType:error_type |
| 89 break; | 80 triggeredFromMenu:triggered_from_menu]; |
| 90 case translate::TRANSLATE_STEP_TRANSLATING: | |
| 91 criwv_step = CRIWVTransateStepTranslating; | |
| 92 break; | |
| 93 case translate::TRANSLATE_STEP_AFTER_TRANSLATE: | |
| 94 criwv_step = CRIWVTransateStepAfterTranslate; | |
| 95 break; | |
| 96 case translate::TRANSLATE_STEP_TRANSLATE_ERROR: | |
| 97 criwv_step = CRIWVTransateStepError; | |
| 98 break; | |
| 99 case translate::TRANSLATE_STEP_NEVER_TRANSLATE: | |
| 100 NOTREACHED() << "Never translate is not supported yet in web_view."; | |
| 101 criwv_step = CRIWVTransateStepError; | |
| 102 break; | |
| 103 } | |
| 104 [delegate_ translateStepChanged:criwv_step manager:criwv_manager.get()]; | |
| 105 } | 81 } |
| 106 | 82 |
| 107 translate::TranslateDriver* WebViewTranslateClient::GetTranslateDriver() { | 83 translate::TranslateDriver* WebViewTranslateClient::GetTranslateDriver() { |
| 108 return &translate_driver_; | 84 return &translate_driver_; |
| 109 } | 85 } |
| 110 | 86 |
| 111 PrefService* WebViewTranslateClient::GetPrefs() { | 87 PrefService* WebViewTranslateClient::GetPrefs() { |
| 112 DCHECK(web_state()); | 88 DCHECK(web_state()); |
| 113 return WebViewBrowserState::FromBrowserState(web_state()->GetBrowserState()) | 89 return WebViewBrowserState::FromBrowserState(web_state()->GetBrowserState()) |
| 114 ->GetPrefs(); | 90 ->GetPrefs(); |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 146 } | 122 } |
| 147 | 123 |
| 148 void WebViewTranslateClient::WebStateDestroyed() { | 124 void WebViewTranslateClient::WebStateDestroyed() { |
| 149 // Translation process can be interrupted. | 125 // Translation process can be interrupted. |
| 150 // Destroying the TranslateManager now guarantees that it never has to deal | 126 // Destroying the TranslateManager now guarantees that it never has to deal |
| 151 // with nullptr WebState. | 127 // with nullptr WebState. |
| 152 translate_manager_.reset(); | 128 translate_manager_.reset(); |
| 153 } | 129 } |
| 154 | 130 |
| 155 } // namespace ios_web_view | 131 } // namespace ios_web_view |
| OLD | NEW |