| // Copyright 2018 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "chrome/browser/ui/omnibox/test_omnibox_edit_model.h" |
| |
| #include <algorithm> |
| #include <memory> |
| |
| #include "components/omnibox/browser/test_omnibox_client.h" |
| |
| TestOmniboxEditModel::TestOmniboxEditModel( |
| OmniboxController* omnibox_controller, |
| OmniboxView* view, |
| PrefService* pref_service) |
| : OmniboxEditModel(omnibox_controller, view), |
| popup_is_open_(false), |
| pref_service_(pref_service) {} |
| |
| TestOmniboxEditModel::~TestOmniboxEditModel() = default; |
| |
| bool TestOmniboxEditModel::PopupIsOpen() const { |
| return popup_is_open_; |
| } |
| |
| AutocompleteMatch TestOmniboxEditModel::CurrentMatchAndAlternateNavUrl( |
| GURL* alternate_nav_url) const { |
| if (override_current_match_) { |
| return *override_current_match_; |
| } |
| |
| return OmniboxEditModel::CurrentMatchAndAlternateNavUrl(alternate_nav_url); |
| } |
| |
| void TestOmniboxEditModel::OpenMatchForTesting( |
| AutocompleteMatch match, |
| WindowOpenDisposition disposition, |
| const GURL& alternate_nav_url, |
| const std::u16string& pasted_text, |
| size_t index, |
| base::TimeTicks match_selection_timestamp) { |
| OpenMatch(OmniboxPopupSelection(index), match, disposition, alternate_nav_url, |
| pasted_text, match_selection_timestamp); |
| } |
| |
| const SkBitmap* TestOmniboxEditModel::GetPopupRichSuggestionBitmapForKeyword( |
| const std::u16string& keyword) const { |
| const auto& result = autocomplete_controller()->result(); |
| auto it = |
| std::ranges::find_if(result, [&keyword](const AutocompleteMatch& match) { |
| return match.associated_keyword == keyword; |
| }); |
| return it == result.end() |
| ? nullptr |
| : GetPopupRichSuggestionBitmap(std::distance(result.begin(), it)); |
| } |
| |
| void TestOmniboxEditModel::SetPopupIsOpen(bool open) { |
| popup_is_open_ = open; |
| } |
| |
| void TestOmniboxEditModel::SetCurrentMatchForTest( |
| const AutocompleteMatch& match) { |
| override_current_match_ = std::make_unique<AutocompleteMatch>(match); |
| } |
| |
| void TestOmniboxEditModel::OnPopupDataChanged( |
| const std::u16string& temporary_text, |
| bool is_temporary_text, |
| const std::u16string& inline_autocompletion, |
| const std::u16string& keyword, |
| const std::u16string& keyword_placeholder, |
| bool is_keyword_hint, |
| const std::u16string& additional_text, |
| const AutocompleteMatch& match) { |
| OmniboxEditModel::OnPopupDataChanged( |
| temporary_text, is_temporary_text, inline_autocompletion, keyword, |
| keyword_placeholder, is_keyword_hint, additional_text, match); |
| text_ = is_temporary_text ? temporary_text : inline_autocompletion; |
| is_temporary_text_ = is_temporary_text; |
| } |
| |
| PrefService* TestOmniboxEditModel::GetPrefService() { |
| return const_cast<PrefService*>( |
| const_cast<const TestOmniboxEditModel*>(this)->GetPrefService()); |
| } |
| |
| const PrefService* TestOmniboxEditModel::GetPrefService() const { |
| return pref_service_ == nullptr ? OmniboxEditModel::GetPrefService() |
| : pref_service_.get(); |
| } |