blob: 917b28d32d6831ee862fa7fde1e390f631cd2fc5 [file] [log] [blame]
// 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();
}