Commit fb029ddf authored by Megan Jablonski's avatar Megan Jablonski Committed by Commit Bot

[Translate] Update source language on translate

This makes sure it is updated for same language translations as well as
if the user changes it via the UI. If the user opens the UI on the
same page load, their changes via settings are now there rather than
reset to the original values.

Bug: 976352, 1024512
Change-Id: I1bafea9e8f95267d2388590b194d82996ad3d206
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1940560Reviewed-by: default avataranthonyvd <anthonyvd@chromium.org>
Commit-Queue: Megan Jablonski <megjablon@chromium.org>
Cr-Commit-Position: refs/heads/master@{#721148}
parent 43ac07e5
...@@ -21,8 +21,7 @@ LanguageState::LanguageState(TranslateDriver* driver) ...@@ -21,8 +21,7 @@ LanguageState::LanguageState(TranslateDriver* driver)
DCHECK(translate_driver_); DCHECK(translate_driver_);
} }
LanguageState::~LanguageState() { LanguageState::~LanguageState() {}
}
void LanguageState::DidNavigate(bool is_same_document_navigation, void LanguageState::DidNavigate(bool is_same_document_navigation,
bool is_main_frame, bool is_main_frame,
...@@ -76,11 +75,14 @@ bool LanguageState::InTranslateNavigation() const { ...@@ -76,11 +75,14 @@ bool LanguageState::InTranslateNavigation() const {
// - this page is in the same language as the previous page // - this page is in the same language as the previous page
// - the previous page had been translated // - the previous page had been translated
// - the new page was navigated through a link. // - the new page was navigated through a link.
return return !translation_pending_ && prev_original_lang_ == original_lang_ &&
!translation_pending_ && prev_original_lang_ != prev_current_lang_ &&
prev_original_lang_ == original_lang_ && translate_driver_->IsLinkNavigation();
prev_original_lang_ != prev_current_lang_ && }
translate_driver_->IsLinkNavigation();
void LanguageState::SetOriginalLanguage(const std::string& language) {
original_lang_ = language;
SetIsPageTranslated(current_lang_ != original_lang_);
} }
void LanguageState::SetCurrentLanguage(const std::string& language) { void LanguageState::SetCurrentLanguage(const std::string& language) {
......
...@@ -52,6 +52,7 @@ class LanguageState { ...@@ -52,6 +52,7 @@ class LanguageState {
// Returns true if the current page in the associated tab has been translated. // Returns true if the current page in the associated tab has been translated.
bool IsPageTranslated() const { return original_lang_ != current_lang_; } bool IsPageTranslated() const { return original_lang_ != current_lang_; }
void SetOriginalLanguage(const std::string& language);
const std::string& original_language() const { return original_lang_; } const std::string& original_language() const { return original_lang_; }
void SetCurrentLanguage(const std::string& language); void SetCurrentLanguage(const std::string& language);
......
...@@ -387,8 +387,12 @@ void TranslateManager::NotifyTranslateInit(std::string page_language_code, ...@@ -387,8 +387,12 @@ void TranslateManager::NotifyTranslateInit(std::string page_language_code,
void TranslateManager::PageTranslated(const std::string& source_lang, void TranslateManager::PageTranslated(const std::string& source_lang,
const std::string& target_lang, const std::string& target_lang,
TranslateErrors::Type error_type) { TranslateErrors::Type error_type) {
if (error_type == TranslateErrors::NONE) if (error_type == TranslateErrors::NONE) {
// The user could have updated the source language before translating, so
// update the language state with both original and current.
language_state_.SetOriginalLanguage(source_lang);
language_state_.SetCurrentLanguage(target_lang); language_state_.SetCurrentLanguage(target_lang);
}
language_state_.set_translation_pending(false); language_state_.set_translation_pending(false);
language_state_.set_translation_error(error_type != TranslateErrors::NONE); language_state_.set_translation_error(error_type != TranslateErrors::NONE);
......
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