Commit ef11aff0 authored by Sylvain Defresne's avatar Sylvain Defresne Committed by Commit Bot

Allow WebStateObserver to observe N WebStates [35/N].

Convert WebViewTranslateClient to directly track the
registration with the observed WebState instead of
relying on the deprecated code in WebStateObserver.

Bug: 775684
Change-Id: Ifdf8f2ba5e113f67269d4329500d1693e772eeae
Cq-Include-Trybots: master.tryserver.chromium.mac:ios-simulator-cronet;master.tryserver.chromium.mac:ios-simulator-full-configs
Reviewed-on: https://chromium-review.googlesource.com/768877
Commit-Queue: Sylvain Defresne <sdefresne@chromium.org>
Reviewed-by: default avatarEugene But <eugenebut@chromium.org>
Cr-Commit-Position: refs/heads/master@{#517793}
parent 16f7b1ef
...@@ -46,8 +46,7 @@ WebViewBrowserState* GetMainBrowserState() { ...@@ -46,8 +46,7 @@ WebViewBrowserState* GetMainBrowserState() {
} // namespace } // namespace
WebViewTranslateClient::WebViewTranslateClient(web::WebState* web_state) WebViewTranslateClient::WebViewTranslateClient(web::WebState* web_state)
: web::WebStateObserver(web_state), : translate_manager_(base::MakeUnique<translate::TranslateManager>(
translate_manager_(base::MakeUnique<translate::TranslateManager>(
this, this,
WebViewTranslateRankerFactory::GetForBrowserState( WebViewTranslateRankerFactory::GetForBrowserState(
WebViewBrowserState::FromBrowserState(GetMainBrowserState())), WebViewBrowserState::FromBrowserState(GetMainBrowserState())),
...@@ -55,7 +54,9 @@ WebViewTranslateClient::WebViewTranslateClient(web::WebState* web_state) ...@@ -55,7 +54,9 @@ WebViewTranslateClient::WebViewTranslateClient(web::WebState* web_state)
WebViewBrowserState::FromBrowserState(GetMainBrowserState())))), WebViewBrowserState::FromBrowserState(GetMainBrowserState())))),
translate_driver_(web_state, translate_driver_(web_state,
web_state->GetNavigationManager(), web_state->GetNavigationManager(),
translate_manager_.get()) {} translate_manager_.get()) {
web_state->AddObserver(this);
}
WebViewTranslateClient::~WebViewTranslateClient() = default; WebViewTranslateClient::~WebViewTranslateClient() = default;
...@@ -90,7 +91,6 @@ PrefService* WebViewTranslateClient::GetPrefs() { ...@@ -90,7 +91,6 @@ PrefService* WebViewTranslateClient::GetPrefs() {
std::unique_ptr<translate::TranslatePrefs> std::unique_ptr<translate::TranslatePrefs>
WebViewTranslateClient::GetTranslatePrefs() { WebViewTranslateClient::GetTranslatePrefs() {
DCHECK(web_state());
return base::MakeUnique<translate::TranslatePrefs>( return base::MakeUnique<translate::TranslatePrefs>(
GetPrefs(), prefs::kAcceptLanguages, nullptr); GetPrefs(), prefs::kAcceptLanguages, nullptr);
} }
...@@ -129,6 +129,7 @@ void WebViewTranslateClient::ShowReportLanguageDetectionErrorUI( ...@@ -129,6 +129,7 @@ void WebViewTranslateClient::ShowReportLanguageDetectionErrorUI(
} }
void WebViewTranslateClient::WebStateDestroyed(web::WebState* web_state) { void WebViewTranslateClient::WebStateDestroyed(web::WebState* web_state) {
web_state->RemoveObserver(this);
// Translation process can be interrupted. // Translation process can be interrupted.
// Destroying the TranslateManager now guarantees that it never has to deal // Destroying the TranslateManager now guarantees that it never has to deal
// with nullptr WebState. // with nullptr WebState.
......
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