blob: 36090d0be874753f115ed9688b4e53d26fd13977 [file] [log] [blame]
// Copyright 2025 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef COMPONENTS_OMNIBOX_BROWSER_OMNIBOX_TEXT_UTIL_H_
#define COMPONENTS_OMNIBOX_BROWSER_OMNIBOX_TEXT_UTIL_H_
#include <string>
namespace omnibox {
// Returns `text` with any leading javascript schemas stripped.
std::u16string StripJavascriptSchemas(const std::u16string& text);
// Automatically collapses internal whitespace as follows:
// * Leading and trailing whitespace are often copied accidentally and rarely
// affect behavior, so they are stripped. If this collapses the whole
// string, returns a space, since pasting nothing feels broken.
// * Internal whitespace sequences not containing CR/LF may be integral to the
// meaning of the string and are preserved exactly. The presence of any of
// these also suggests the input is more likely a search than a navigation,
// which affects the next bullet.
// * Internal whitespace sequences containing CR/LF have likely been split
// across lines by terminals, email programs, etc., and are collapsed. If
// there are any internal non-CR/LF whitespace sequences, the input is more
// likely search data (e.g. street addresses), so collapse these to a single
// space. If not, the input might be a navigation (e.g. a line-broken URL),
// so collapse these away entirely.
//
// Finally, calls StripJavascriptSchemas() on the resulting string.
std::u16string SanitizeTextForPaste(const std::u16string& text);
} // namespace omnibox
#endif // COMPONENTS_OMNIBOX_BROWSER_OMNIBOX_TEXT_UTIL_H_