From e91512525e57be1a64dc61cbc2291995c5e82d4a Mon Sep 17 00:00:00 2001 From: Mikhail Atuchin Date: Thu, 7 Oct 2021 14:35:01 +0700 Subject: [PATCH] Minor improvements --- ...direct_network_delegate_helper_unittest.cc | 3 +- .../translate/translate_bubble_model_impl.cc | 38 +++++++++++++------ .../translate/translate_bubble_model_impl.h | 4 ++ 3 files changed, 31 insertions(+), 14 deletions(-) diff --git a/browser/net/brave_translate_redirect_network_delegate_helper_unittest.cc b/browser/net/brave_translate_redirect_network_delegate_helper_unittest.cc index a502d9e838d3f..fee7da292c840 100644 --- a/browser/net/brave_translate_redirect_network_delegate_helper_unittest.cc +++ b/browser/net/brave_translate_redirect_network_delegate_helper_unittest.cc @@ -22,8 +22,7 @@ class BraveTranslateRedirectNetworkDelegateHelperTest : public testing::Test { public: BraveTranslateRedirectNetworkDelegateHelperTest() - : task_environment_(content::BrowserTaskEnvironment::IO_MAINLOOP), - context_(new net::TestURLRequestContext(true)) {} + : context_(new net::TestURLRequestContext(true)) {} ~BraveTranslateRedirectNetworkDelegateHelperTest() override {} void SetUp() override { context_->Init(); } net::TestURLRequestContext* context() { return context_.get(); } diff --git a/chromium_src/chrome/browser/ui/translate/translate_bubble_model_impl.cc b/chromium_src/chrome/browser/ui/translate/translate_bubble_model_impl.cc index 4959d5636e3e5..8d83d61c7c111 100644 --- a/chromium_src/chrome/browser/ui/translate/translate_bubble_model_impl.cc +++ b/chromium_src/chrome/browser/ui/translate/translate_bubble_model_impl.cc @@ -16,6 +16,9 @@ namespace { const int kNoIndex = static_cast(translate::TranslateUIDelegate::kNoIndex); } // namespace +// A mapping between a chromium languages list in |ui_delegate| and a brave +// languages list (a limited subset of chromium list preassigned by |filter|). +// Note: mixin of int/size_t types is used because of chromium implementation. class BraveLanguageMap { public: BraveLanguageMap(const translate::TranslateUIDelegate* ui_delegate, @@ -33,28 +36,39 @@ class BraveLanguageMap { DCHECK_EQ(to_ui_index_.size(), to_core_index_.size()); #if DCHECK_IS_ON() for (int i = 0; i < static_cast(to_core_index_.size()); ++i) { - const int core_ind = to_core_index_[i]; + const auto core_ind = to_core_index_[i]; DCHECK_EQ(to_ui_index_[to_core_index_[i]], i); DCHECK_EQ(to_core_index_[to_ui_index_[core_ind]], core_ind); } #endif // DCHECK_IS_ON() } + + // Coverts index in brave list (index in [0, GetSize() - 1]) to a correspoding + // chromium index. size_t ToCoreIndex(int index) const { - if (index == kNoIndex || !base::Contains(to_core_index_, index)) + if (index == kNoIndex) return translate::TranslateUIDelegate::kNoIndex; - return to_core_index_.at(index); + const auto it = to_core_index_.find(index); + return it != to_core_index_.end() + ? it->second + : translate::TranslateUIDelegate::kNoIndex; } - size_t ToUiIndex(int index) const { - if (index == kNoIndex || !base::Contains(to_ui_index_, index)) - return translate::TranslateUIDelegate::kNoIndex; - return to_ui_index_.at(index); + + // An inverse function to ToCoreIndex(). Coverts chromium index + // (form [0, ui_delegate->GetNumberOfLanguages()] to a + // correspoding index in brave list. + int FromCoreIndex(size_t index) const { + if (index == translate::TranslateUIDelegate::kNoIndex) + return kNoIndex; + const auto it = to_ui_index_.find(index); + return it != to_ui_index_.end() ? it->second : kNoIndex; } int GetSize() const { return to_core_index_.size(); } private: - std::map to_core_index_; - std::map to_ui_index_; + std::map to_core_index_; + std::map to_ui_index_; }; TranslateBubbleModelImpl::TranslateBubbleModelImpl( @@ -68,7 +82,7 @@ TranslateBubbleModelImpl::TranslateBubbleModelImpl( ui_delegate_.get(), base::BindRepeating(&translate::IsTargetLanguageCodeSupported)); - // If the source language is unsupported the drop it to unknown. + // If the source language is unsupported then drop it to unknown. // TODO(atuchin): is it good place to call this? if (!translate::IsSourceLanguageCodeSupported( ui_delegate_->GetSourceLanguageCode())) { @@ -99,12 +113,12 @@ std::u16string TranslateBubbleModelImpl::GetTargetLanguageNameAt( } int TranslateBubbleModelImpl::GetSourceLanguageIndex() const { - return source_language_map_->ToUiIndex( + return source_language_map_->FromCoreIndex( ui_delegate_->GetSourceLanguageIndex()); } int TranslateBubbleModelImpl::GetTargetLanguageIndex() const { - return target_language_map_->ToUiIndex( + return target_language_map_->FromCoreIndex( ui_delegate_->GetTargetLanguageIndex()); } diff --git a/chromium_src/chrome/browser/ui/translate/translate_bubble_model_impl.h b/chromium_src/chrome/browser/ui/translate/translate_bubble_model_impl.h index 584f96f2e5820..32c1e74dd1dfb 100644 --- a/chromium_src/chrome/browser/ui/translate/translate_bubble_model_impl.h +++ b/chromium_src/chrome/browser/ui/translate/translate_bubble_model_impl.h @@ -18,6 +18,10 @@ using BraveTranslateBubbleModelImpl = TranslateBubbleModelImpl; #undef TranslateBubbleModelImpl class BraveLanguageMap; + +// Brave customization of TranslateBubbleModelImpl to uses separated lists for +// source and target languages. Holds two mappings between chromium list in +// |ui_delegate| and brave lists. class TranslateBubbleModelImpl : public ChromiumTranslateBubbleModelImpl { public: TranslateBubbleModelImpl(