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() {
} // namespace
WebViewTranslateClient::WebViewTranslateClient(web::WebState* web_state)
: web::WebStateObserver(web_state),
translate_manager_(base::MakeUnique<translate::TranslateManager>(
: translate_manager_(base::MakeUnique<translate::TranslateManager>(
this,
WebViewTranslateRankerFactory::GetForBrowserState(
WebViewBrowserState::FromBrowserState(GetMainBrowserState())),
......@@ -55,7 +54,9 @@ WebViewTranslateClient::WebViewTranslateClient(web::WebState* web_state)
WebViewBrowserState::FromBrowserState(GetMainBrowserState())))),
translate_driver_(web_state,
web_state->GetNavigationManager(),
translate_manager_.get()) {}
translate_manager_.get()) {
web_state->AddObserver(this);
}
WebViewTranslateClient::~WebViewTranslateClient() = default;
......@@ -90,7 +91,6 @@ PrefService* WebViewTranslateClient::GetPrefs() {
std::unique_ptr<translate::TranslatePrefs>
WebViewTranslateClient::GetTranslatePrefs() {
DCHECK(web_state());
return base::MakeUnique<translate::TranslatePrefs>(
GetPrefs(), prefs::kAcceptLanguages, nullptr);
}
......@@ -129,6 +129,7 @@ void WebViewTranslateClient::ShowReportLanguageDetectionErrorUI(
}
void WebViewTranslateClient::WebStateDestroyed(web::WebState* web_state) {
web_state->RemoveObserver(this);
// Translation process can be interrupted.
// Destroying the TranslateManager now guarantees that it never has to deal
// 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