Commit efc0b7c3 authored by Megan Jablonski's avatar Megan Jablonski Committed by Chromium LUCI CQ

Rename page_needs_translation to can_offer_translation

page_needs_translation() tells us if translation is allowed, not if the
page needs translation. It should be renamed to
page_level_translation_critiera_met. We can offer translation if the
page doesn't have notranslate and the determined language isn't empty.

Bug: 1152884
Change-Id: I647b17f4775787d04f34ee2076b32d53b330af55
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2561293
Commit-Queue: Megan Jablonski <megjablon@chromium.org>
Reviewed-by: default avatarColin Blundell <blundell@chromium.org>
Reviewed-by: default avatarDaniel Cheng <dcheng@chromium.org>
Cr-Commit-Position: refs/heads/master@{#832683}
parent d2b1fb18
......@@ -27,9 +27,8 @@ namespace {
class FakeContentTranslateDriver
: public translate::mojom::ContentTranslateDriver {
public:
FakeContentTranslateDriver()
: called_new_page_(false), page_needs_translation_(false) {}
~FakeContentTranslateDriver() override {}
FakeContentTranslateDriver() = default;
~FakeContentTranslateDriver() override = default;
void BindHandle(mojo::ScopedMessagePipeHandle handle) {
receivers_.Add(
......@@ -41,13 +40,13 @@ class FakeContentTranslateDriver
void RegisterPage(
mojo::PendingRemote<translate::mojom::TranslateAgent> translate_agent,
const translate::LanguageDetectionDetails& details,
bool page_needs_translation) override {
bool page_level_translation_critiera_met) override {
called_new_page_ = true;
page_needs_translation_ = page_needs_translation;
page_level_translation_critiera_met_ = page_level_translation_critiera_met;
}
bool called_new_page_;
bool page_needs_translation_;
bool called_new_page_ = false;
bool page_level_translation_critiera_met_ = false;
private:
mojo::ReceiverSet<translate::mojom::ContentTranslateDriver> receivers_;
......@@ -95,7 +94,7 @@ TEST_F(ChromeRenderFrameObserverTest, SkipCapturingSubFrames) {
base::RunLoop().RunUntilIdle();
ASSERT_TRUE(fake_translate_driver_.called_new_page_);
EXPECT_TRUE(fake_translate_driver_.page_needs_translation_)
EXPECT_TRUE(fake_translate_driver_.page_level_translation_critiera_met_)
<< "Page should be translatable.";
// Should have 2 samples: one for preliminary capture, one for final capture.
// If there are more, then subframes are being captured more than once.
......
......@@ -33,9 +33,8 @@ namespace {
class FakeContentTranslateDriver
: public translate::mojom::ContentTranslateDriver {
public:
FakeContentTranslateDriver()
: called_new_page_(false), page_needs_translation_(false) {}
~FakeContentTranslateDriver() override {}
FakeContentTranslateDriver() = default;
~FakeContentTranslateDriver() override = default;
void BindHandle(mojo::ScopedMessagePipeHandle handle) {
receivers_.Add(
......@@ -47,21 +46,21 @@ class FakeContentTranslateDriver
void RegisterPage(
mojo::PendingRemote<translate::mojom::TranslateAgent> translate_agent,
const translate::LanguageDetectionDetails& details,
bool page_needs_translation) override {
bool page_level_translation_critiera_met) override {
called_new_page_ = true;
details_ = details;
page_needs_translation_ = page_needs_translation;
page_level_translation_critiera_met_ = page_level_translation_critiera_met;
}
void ResetNewPageValues() {
called_new_page_ = false;
details_ = base::nullopt;
page_needs_translation_ = false;
page_level_translation_critiera_met_ = false;
}
bool called_new_page_;
bool called_new_page_ = false;
bool page_level_translation_critiera_met_ = false;
base::Optional<translate::LanguageDetectionDetails> details_;
bool page_needs_translation_;
private:
mojo::ReceiverSet<translate::mojom::ContentTranslateDriver> receivers_;
......@@ -411,7 +410,7 @@ TEST_F(TranslateAgentBrowserTest, TranslatablePage) {
base::RunLoop().RunUntilIdle();
ASSERT_TRUE(fake_translate_driver_.called_new_page_);
EXPECT_TRUE(fake_translate_driver_.page_needs_translation_)
EXPECT_TRUE(fake_translate_driver_.page_level_translation_critiera_met_)
<< "Page should be translatable.";
fake_translate_driver_.ResetNewPageValues();
......@@ -422,7 +421,7 @@ TEST_F(TranslateAgentBrowserTest, TranslatablePage) {
base::RunLoop().RunUntilIdle();
ASSERT_TRUE(fake_translate_driver_.called_new_page_);
EXPECT_FALSE(fake_translate_driver_.page_needs_translation_)
EXPECT_FALSE(fake_translate_driver_.page_level_translation_critiera_met_)
<< "Page should not be translatable.";
fake_translate_driver_.ResetNewPageValues();
......@@ -433,7 +432,7 @@ TEST_F(TranslateAgentBrowserTest, TranslatablePage) {
base::RunLoop().RunUntilIdle();
ASSERT_TRUE(fake_translate_driver_.called_new_page_);
EXPECT_FALSE(fake_translate_driver_.page_needs_translation_)
EXPECT_FALSE(fake_translate_driver_.page_level_translation_critiera_met_)
<< "Page should not be translatable.";
}
......
......@@ -227,7 +227,8 @@ void ContentTranslateDriver::NavigationEntryCommitted(
return;
}
if (!translate_manager_->GetLanguageState()->page_needs_translation())
if (!translate_manager_->GetLanguageState()
->page_level_translation_critiera_met())
return;
// Note that we delay it as the ordering of the processing of this callback
......@@ -286,7 +287,7 @@ void ContentTranslateDriver::AddReceiver(
void ContentTranslateDriver::RegisterPage(
mojo::PendingRemote<translate::mojom::TranslateAgent> translate_agent,
const translate::LanguageDetectionDetails& details,
const bool page_needs_translation) {
const bool page_level_translation_critiera_met) {
base::TimeTicks language_determined_time = base::TimeTicks::Now();
ReportLanguageDeterminedDuration(finish_navigation_time_,
language_determined_time);
......@@ -303,7 +304,7 @@ void ContentTranslateDriver::RegisterPage(
translate_manager_->set_current_seq_no(next_page_seq_no_);
translate_manager_->GetLanguageState()->LanguageDetermined(
details.adopted_language, page_needs_translation);
details.adopted_language, page_level_translation_critiera_met);
if (web_contents()) {
translate_manager_->InitiateTranslation(details.adopted_language);
......
......@@ -24,7 +24,7 @@
namespace content {
class NavigationController;
class WebContents;
}
} // namespace content
namespace language {
class UrlLanguageHistogram;
......@@ -120,7 +120,7 @@ class ContentTranslateDriver : public TranslateDriver,
void RegisterPage(
mojo::PendingRemote<translate::mojom::TranslateAgent> translate_agent,
const translate::LanguageDetectionDetails& details,
bool page_needs_translation) override;
bool page_level_translation_critiera_met) override;
protected:
const base::ObserverList<Observer, true>::Unchecked& observer_list() const {
......
......@@ -250,7 +250,9 @@ void PerFrameContentTranslateDriver::NavigationEntryCommitted(
return;
}
if (!translate_manager()->GetLanguageState()->page_needs_translation())
if (!translate_manager()
->GetLanguageState()
->page_level_translation_critiera_met())
return;
// Note that we delay it as the ordering of the processing of this callback
......@@ -345,7 +347,7 @@ void PerFrameContentTranslateDriver::StartLanguageDetection() {
void PerFrameContentTranslateDriver::OnPageLanguageDetermined(
const LanguageDetectionDetails& details,
bool page_needs_translation) {
bool page_level_translation_critiera_met) {
language_determined_time_ = base::TimeTicks::Now();
ReportLanguageDeterminedDuration(finish_navigation_time_,
language_determined_time_);
......@@ -357,7 +359,7 @@ void PerFrameContentTranslateDriver::OnPageLanguageDetermined(
if (translate_manager() && web_contents()) {
translate_manager()->GetLanguageState()->LanguageDetermined(
details.adopted_language, page_needs_translation);
details.adopted_language, page_level_translation_critiera_met);
translate_manager()->InitiateTranslation(details.adopted_language);
}
......
......@@ -60,7 +60,7 @@ class PerFrameContentTranslateDriver : public ContentTranslateDriver {
void DocumentOnLoadCompletedInMainFrame() override;
void OnPageLanguageDetermined(const LanguageDetectionDetails& details,
bool page_needs_translation);
bool page_level_translation_critiera_met);
private:
friend class PerFrameContentTranslateDriverTest;
......
......@@ -77,5 +77,5 @@ interface ContentTranslateDriver {
// Notification that a new page is ready to translate,
// and the language for it has been determined.
RegisterPage(pending_remote<TranslateAgent> translate_agent,
LanguageDetectionDetails details, bool page_needs_translation);
LanguageDetectionDetails details, bool translation_critiera_met);
};
......@@ -12,7 +12,7 @@ namespace translate {
LanguageState::LanguageState(TranslateDriver* driver)
: is_page_translated_(false),
translate_driver_(driver),
page_needs_translation_(false),
page_level_translation_critiera_met_(false),
translation_pending_(false),
translation_error_(false),
translation_declined_(false),
......@@ -55,15 +55,16 @@ void LanguageState::DidNavigate(bool is_same_document_navigation,
SetTranslateEnabled(false);
}
void LanguageState::LanguageDetermined(const std::string& page_language,
bool page_needs_translation) {
void LanguageState::LanguageDetermined(
const std::string& page_language,
bool page_level_translation_critiera_met) {
if (is_same_document_navigation_ && !original_lang_.empty()) {
// Same-document navigation, we don't expect our states to change.
// Note that we'll set the languages if original_lang_ is empty. This might
// happen if the we did not get called on the top-page.
return;
}
page_needs_translation_ = page_needs_translation;
page_level_translation_critiera_met_ = page_level_translation_critiera_met;
original_lang_ = page_language;
current_lang_ = page_language;
SetIsPageTranslated(false);
......
......@@ -35,10 +35,10 @@ class LanguageState {
bool navigation_from_google);
// Should be called when the language of the page has been determined.
// |page_needs_translation| when false indicates that the browser should not
// offer to translate the page.
// |page_level_translation_critiera_met| when false indicates that the browser
// should not offer to translate the page.
void LanguageDetermined(const std::string& page_language,
bool page_needs_translation);
bool page_level_translation_critiera_met);
// Returns the language the current page should be translated to, based on the
// previous page languages and the transition. This should be called after
......@@ -62,7 +62,9 @@ class LanguageState {
const std::string& current_language() const { return current_lang_; }
void SetCurrentLanguage(const std::string& language);
bool page_needs_translation() const { return page_needs_translation_; }
bool page_level_translation_critiera_met() const {
return page_level_translation_critiera_met_;
}
// Whether the page is currently in the process of being translated.
bool translation_pending() const { return translation_pending_; }
......@@ -115,10 +117,12 @@ class LanguageState {
// outlive this object.
TranslateDriver* translate_driver_;
// Whether it is OK to offer to translate the page. Some pages explictly
// specify that they should not be translated by the browser (this is the case
// for GMail for example, which provides its own translation features).
bool page_needs_translation_;
// Whether it is OK to offer to translate the page. Translation is not offered
// if we cannot determine the source language. In addition, some pages
// explicitly specify that they should not be translated by the browser (this
// is the case for GMail for example, which provides its own translation
// features).
bool page_level_translation_critiera_met_;
// Whether a translation is currently pending.
// This is needed to avoid sending duplicate translate requests to a page.
......
......@@ -813,7 +813,7 @@ void TranslateManager::FilterIsTranslatePossible(
const std::string& target_lang) {
// Short-circuit out if not in a state where initiating translation makes
// sense (this method may be called multiple times for a given page).
if (!language_state_.page_needs_translation() ||
if (!language_state_.page_level_translation_critiera_met() ||
language_state_.translation_pending() ||
language_state_.translation_declined() ||
language_state_.IsPageTranslated()) {
......
......@@ -1005,7 +1005,7 @@ TEST_F(TranslateManagerTest, CanManuallyTranslate_PageNeedsTranslation) {
translate_manager_->GetLanguageState()->LanguageDetermined("de", false);
// Users should be able to manually translate the page, even when
// |page_needs_translation| is false.
// |page_level_translation_critiera_met| is false.
EXPECT_TRUE(translate_manager_->CanManuallyTranslate());
EXPECT_TRUE(translate_manager_->CanManuallyTranslate(true));
......
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