#ifdef UNSAFE_BUFFERS_BUILD
#pragma allow_unsafe_buffers
#endif
#include "components/omnibox/browser/autocomplete_input.h"
#include <string_view>
#include <vector>
#include "base/logging.h"
#include "base/strings/strcat.h"
#include "base/strings/string_number_conversions.h"
#include "base/strings/string_split.h"
#include "base/strings/string_util.h"
#include "base/strings/utf_string_conversions.h"
#include "base/trace_event/memory_usage_estimator.h"
#include "base/trace_event/typed_macros.h"
#include "build/build_config.h"
#include "build/chromeos_buildflags.h"
#include "components/omnibox/browser/autocomplete_scheme_classifier.h"
#include "components/url_formatter/url_fixer.h"
#include "components/url_formatter/url_formatter.h"
#include "net/base/registry_controlled_domains/registry_controlled_domain.h"
#include "net/base/url_util.h"
#include "third_party/metrics_proto/omnibox_event.pb.h"
#include "third_party/re2/src/re2/re2.h"
#include "url/url_canon_ip.h"
#include "url/url_util.h"
#if BUILDFLAG(IS_CHROMEOS)
#if BUILDFLAG(IS_CHROMEOS_ASH)
#include "chromeos/constants/url_constants.h"
#include "chromeos/crosapi/cpp/lacros_startup_state.h"
#endif
#include "chromeos/crosapi/cpp/gurl_os_handler_utils.h"
#endif
namespace {
const char kViewSourceScheme[] = …;
void AdjustCursorPositionIfNecessary(size_t num_leading_chars_removed,
size_t* cursor_position) { … }
void PopulateTermsPrefixedByHttpOrHttps(
const std::u16string& text,
std::vector<std::u16string>* terms_prefixed_by_http_or_https) { … }
void OffsetComponentsExcludingScheme(url::Parsed* parts, int offset) { … }
bool HasScheme(const std::u16string& input, const char* scheme) { … }
}
AutocompleteInput::AutocompleteInput()
: … { … }
AutocompleteInput::AutocompleteInput(
const std::u16string& text,
metrics::OmniboxEventProto::PageClassification current_page_classification,
const AutocompleteSchemeClassifier& scheme_classifier,
bool should_use_https_as_default_scheme,
int https_port_for_testing,
bool use_fake_https_for_https_upgrade_testing)
: … { … }
AutocompleteInput::AutocompleteInput(
const std::u16string& text,
size_t cursor_position,
metrics::OmniboxEventProto::PageClassification current_page_classification,
const AutocompleteSchemeClassifier& scheme_classifier,
bool should_use_https_as_default_scheme,
int https_port_for_testing,
bool use_fake_https_for_https_upgrade_testing)
: … { … }
AutocompleteInput::AutocompleteInput(
const std::u16string& text,
size_t cursor_position,
const std::string& desired_tld,
metrics::OmniboxEventProto::PageClassification current_page_classification,
const AutocompleteSchemeClassifier& scheme_classifier,
bool should_use_https_as_default_scheme,
int https_port_for_testing,
bool use_fake_https_for_https_upgrade_testing)
: … { … }
void AutocompleteInput::Init(
const std::u16string& text,
const AutocompleteSchemeClassifier& scheme_classifier) { … }
AutocompleteInput::AutocompleteInput(const AutocompleteInput& other) = default;
AutocompleteInput::~AutocompleteInput() = default;
std::string AutocompleteInput::TypeToString(metrics::OmniboxInputType type) { … }
metrics::OmniboxInputType AutocompleteInput::Parse(
const std::u16string& text,
const std::string& desired_tld,
const AutocompleteSchemeClassifier& scheme_classifier,
url::Parsed* parts,
std::u16string* scheme,
GURL* canonicalized_url) { … }
void AutocompleteInput::ParseForEmphasizeComponents(
const std::u16string& text,
const AutocompleteSchemeClassifier& scheme_classifier,
url::Component* scheme,
url::Component* host) { … }
bool AutocompleteInput::ShouldUpgradeToHttps(
const std::u16string& text,
const GURL& url,
int https_port_for_testing,
bool use_fake_https_for_https_upgrade_testing,
GURL* upgraded_url) { … }
std::u16string AutocompleteInput::FormattedStringWithEquivalentMeaning(
const GURL& url,
const std::u16string& formatted_url,
const AutocompleteSchemeClassifier& scheme_classifier,
size_t* offset) { … }
int AutocompleteInput::NumNonHostComponents(const url::Parsed& parts) { … }
bool AutocompleteInput::HasHTTPScheme(const std::u16string& input) { … }
bool AutocompleteInput::HasHTTPSScheme(const std::u16string& input) { … }
void AutocompleteInput::UpdateText(const std::u16string& text,
size_t cursor_position,
const url::Parsed& parts) { … }
void AutocompleteInput::Clear() { … }
size_t AutocompleteInput::EstimateMemoryUsage() const { … }
void AutocompleteInput::WriteIntoTrace(perfetto::TracedValue context) const { … }
bool AutocompleteInput::IsZeroSuggest() const { … }
bool AutocompleteInput::InKeywordMode() const { … }