Commit 3af29001 authored by John Z Wu's avatar John Z Wu Committed by Commit Bot

Change CWVTranslationController dependency injection to use init.

This will help in writing tests for CWVTranslationController.

Bug: 770983
Cq-Include-Trybots: master.tryserver.chromium.mac:ios-simulator-cronet;master.tryserver.chromium.mac:ios-simulator-full-configs
Change-Id: I8f0b67e14872e654fcf276f0fba20dab4289b6b9
Reviewed-on: https://chromium-review.googlesource.com/939045
Commit-Queue: John Wu <jzw@chromium.org>
Reviewed-by: default avatarEugene But <eugenebut@chromium.org>
Cr-Commit-Position: refs/heads/master@{#539494}
parent 69001d48
...@@ -86,6 +86,8 @@ NSString* const kSessionStorageKey = @"sessionStorage"; ...@@ -86,6 +86,8 @@ NSString* const kSessionStorageKey = @"sessionStorage";
- (void)updateTitle; - (void)updateTitle;
// Returns a new CWVAutofillController created from |_webState|. // Returns a new CWVAutofillController created from |_webState|.
- (CWVAutofillController*)newAutofillController; - (CWVAutofillController*)newAutofillController;
// Returns a new CWVTranslationController created from |_webState|.
- (CWVTranslationController*)newTranslationController;
@end @end
...@@ -390,12 +392,19 @@ static NSString* gUserAgentProduct = nil; ...@@ -390,12 +392,19 @@ static NSString* gUserAgentProduct = nil;
- (CWVTranslationController*)translationController { - (CWVTranslationController*)translationController {
if (!_translationController) { if (!_translationController) {
_translationController = [[CWVTranslationController alloc] init]; _translationController = [self newTranslationController];
_translationController.webState = _webState.get();
} }
return _translationController; return _translationController;
} }
- (CWVTranslationController*)newTranslationController {
ios_web_view::WebViewTranslateClient::CreateForWebState(_webState.get());
ios_web_view::WebViewTranslateClient* translateClient =
ios_web_view::WebViewTranslateClient::FromWebState(_webState.get());
return [[CWVTranslationController alloc]
initWithTranslateClient:translateClient];
}
#pragma mark - Autofill #pragma mark - Autofill
- (CWVAutofillController*)autofillController { - (CWVAutofillController*)autofillController {
...@@ -482,7 +491,12 @@ static NSString* gUserAgentProduct = nil; ...@@ -482,7 +491,12 @@ static NSString* gUserAgentProduct = nil;
_scrollView.proxy = _webState.get()->GetWebViewProxy().scrollViewProxy; _scrollView.proxy = _webState.get()->GetWebViewProxy().scrollViewProxy;
_translationController.webState = _webState.get(); if (_translationController) {
id<CWVTranslationControllerDelegate> delegate =
_translationController.delegate;
_translationController = [self newTranslationController];
_translationController.delegate = delegate;
}
// Recreate and restore the delegate only if previously lazily loaded. // Recreate and restore the delegate only if previously lazily loaded.
if (_autofillController) { if (_autofillController) {
......
...@@ -12,7 +12,6 @@ ...@@ -12,7 +12,6 @@
#include "components/translate/core/browser/translate_download_manager.h" #include "components/translate/core/browser/translate_download_manager.h"
#include "components/translate/core/browser/translate_manager.h" #include "components/translate/core/browser/translate_manager.h"
#import "ios/web_view/internal/cwv_web_view_configuration_internal.h" #import "ios/web_view/internal/cwv_web_view_configuration_internal.h"
#import "ios/web_view/internal/language/web_view_url_language_histogram_factory.h"
#import "ios/web_view/internal/translate/cwv_translation_language_internal.h" #import "ios/web_view/internal/translate/cwv_translation_language_internal.h"
#import "ios/web_view/internal/translate/web_view_translate_client.h" #import "ios/web_view/internal/translate/web_view_translate_client.h"
#include "ios/web_view/internal/web_view_browser_state.h" #include "ios/web_view/internal/web_view_browser_state.h"
...@@ -66,29 +65,19 @@ const NSInteger CWVTranslationErrorScriptLoadError = ...@@ -66,29 +65,19 @@ const NSInteger CWVTranslationErrorScriptLoadError =
@synthesize delegate = _delegate; @synthesize delegate = _delegate;
@synthesize supportedLanguagesByCode = _supportedLanguagesByCode; @synthesize supportedLanguagesByCode = _supportedLanguagesByCode;
@synthesize webState = _webState;
#pragma mark - Internal Methods #pragma mark - Internal Methods
- (void)setWebState:(web::WebState*)webState { - (instancetype)initWithTranslateClient:
_webState = webState; (ios_web_view::WebViewTranslateClient*)translateClient {
self = [super init];
ios_web_view::WebViewTranslateClient::CreateForWebState(_webState); if (self) {
language::IOSLanguageDetectionTabHelper::CreateForWebState( _translateClient = translateClient;
_webState, _translateClient->set_translation_controller(self);
ios_web_view::WebViewTranslateClient::FromWebState(_webState)
->GetTranslateDriver() _translatePrefs = _translateClient->GetTranslatePrefs();
->CreateLanguageDetectionCallback(), }
ios_web_view::WebViewUrlLanguageHistogramFactory::GetForBrowserState( return self;
ios_web_view::WebViewBrowserState::FromBrowserState(
_webState->GetBrowserState())));
_translateClient =
ios_web_view::WebViewTranslateClient::FromWebState(_webState);
_translateClient->set_translation_controller(self);
_translatePrefs = _translateClient->translate_manager()
->translate_client()
->GetTranslatePrefs();
} }
- (void)updateTranslateStep:(translate::TranslateStep)step - (void)updateTranslateStep:(translate::TranslateStep)step
......
...@@ -12,17 +12,18 @@ ...@@ -12,17 +12,18 @@
#include "components/translate/core/browser/translate_step.h" #include "components/translate/core/browser/translate_step.h"
#include "components/translate/core/common/translate_errors.h" #include "components/translate/core/common/translate_errors.h"
namespace web { namespace ios_web_view {
class WebState; class WebViewTranslateClient;
} } // namespace ios_web_view
NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_BEGIN
// Some internal methods needed to hide any C++ details. // Some internal methods needed to hide any C++ details.
@interface CWVTranslationController () @interface CWVTranslationController ()
// Set to create a new translate stack under the new webState. - (instancetype)initWithTranslateClient:
@property(nonatomic, assign) web::WebState* webState; (ios_web_view::WebViewTranslateClient*)translateClient
NS_DESIGNATED_INITIALIZER;
// Called to keep this class informed of the current translate progress. // Called to keep this class informed of the current translate progress.
// |step| the state of current translation. // |step| the state of current translation.
......
...@@ -19,6 +19,7 @@ ...@@ -19,6 +19,7 @@
#include "ios/web/public/browser_state.h" #include "ios/web/public/browser_state.h"
#import "ios/web/public/web_state/web_state.h" #import "ios/web/public/web_state/web_state.h"
#include "ios/web_view/internal/language/web_view_language_model_factory.h" #include "ios/web_view/internal/language/web_view_language_model_factory.h"
#import "ios/web_view/internal/language/web_view_url_language_histogram_factory.h"
#include "ios/web_view/internal/pref_names.h" #include "ios/web_view/internal/pref_names.h"
#import "ios/web_view/internal/translate/cwv_translation_controller_internal.h" #import "ios/web_view/internal/translate/cwv_translation_controller_internal.h"
#include "ios/web_view/internal/translate/web_view_translate_accept_languages_factory.h" #include "ios/web_view/internal/translate/web_view_translate_accept_languages_factory.h"
...@@ -45,6 +46,11 @@ WebViewTranslateClient::WebViewTranslateClient(web::WebState* web_state) ...@@ -45,6 +46,11 @@ WebViewTranslateClient::WebViewTranslateClient(web::WebState* web_state)
web_state->GetNavigationManager(), web_state->GetNavigationManager(),
translate_manager_.get()) { translate_manager_.get()) {
web_state->AddObserver(this); web_state->AddObserver(this);
language::IOSLanguageDetectionTabHelper::CreateForWebState(
web_state, translate_driver_.CreateLanguageDetectionCallback(),
ios_web_view::WebViewUrlLanguageHistogramFactory::GetForBrowserState(
ios_web_view::WebViewBrowserState::FromBrowserState(
web_state->GetBrowserState())));
} }
WebViewTranslateClient::~WebViewTranslateClient() = default; WebViewTranslateClient::~WebViewTranslateClient() = default;
......
...@@ -52,6 +52,8 @@ CWV_EXPORT ...@@ -52,6 +52,8 @@ CWV_EXPORT
@property(nonatomic, readonly) @property(nonatomic, readonly)
NSSet<CWVTranslationLanguage*>* supportedLanguages; NSSet<CWVTranslationLanguage*>* supportedLanguages;
- (instancetype)init NS_UNAVAILABLE;
// Begins translation on the current page from |sourceLanguage| to // Begins translation on the current page from |sourceLanguage| to
// |targetLanguage|. These language parameters must be chosen from // |targetLanguage|. These language parameters must be chosen from
// |supportedLanguages|. Set |userInitiated| to YES if translation // |supportedLanguages|. Set |userInitiated| to YES if translation
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment