From 531e034c4256147c7edd37f5404eaaeb8fe3b0cd Mon Sep 17 00:00:00 2001 From: "asvitkine@chromium.org" Date: Thu, 10 Nov 2011 15:08:41 +0000 Subject: Fix AutocompleteMatch DCHECK() triggered by |RenderViewContextMenu::AppendSearchProvider()|. Makes |AppendSearchProvider()| sanitize the text by replacing unwanted whitespace characters with spaces. Do this instead of calling |AutocompleteMatch::SanitizeString()|, since we want to preserve the whitespace between words separated by newlines here, rather than appending such words together. Added |ReplaceChars()| to base/string_util to support replacing any occurence of the given characters with a replacement string. BUG=103338 TEST=Right click on multiline text in a text area in a Debug build. A DCHECK() shouldn't trigger. Review URL: http://codereview.chromium.org/8502027 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@109430 0039d316-1c4b-4281-b951-d872f2087c98 --- base/string_util.h | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) (limited to 'base/string_util.h') diff --git a/base/string_util.h b/base/string_util.h index 740124f..c359e73 100644 --- a/base/string_util.h +++ b/base/string_util.h @@ -173,9 +173,9 @@ BASE_EXPORT extern const char kWhitespaceASCII[]; BASE_EXPORT extern const char kUtf8ByteOrderMark[]; -// Removes characters in |remove_chars| from anywhere in input. Returns true if -// any characters were removed. |remove_chars| must be null-terminated. -// NOTE: Safe to use the same variable for both input and output. +// Removes characters in |remove_chars| from anywhere in |input|. Returns true +// if any characters were removed. |remove_chars| must be null-terminated. +// NOTE: Safe to use the same variable for both |input| and |output|. BASE_EXPORT bool RemoveChars(const string16& input, const char16 remove_chars[], string16* output); @@ -183,9 +183,23 @@ BASE_EXPORT bool RemoveChars(const std::string& input, const char remove_chars[], std::string* output); -// Removes characters in |trim_chars| from the beginning and end of input. +// Replaces characters in |replace_chars| from anywhere in |input| with +// |replace_with|. Each character in |replace_chars| will be replaced with +// the |replace_with| string. Returns true if any characters were replaced. +// |replace_chars| must be null-terminated. +// NOTE: Safe to use the same variable for both |input| and |output|. +BASE_EXPORT bool ReplaceChars(const string16& input, + const char16 replace_chars[], + const string16& replace_with, + string16* output); +BASE_EXPORT bool ReplaceChars(const std::string& input, + const char replace_chars[], + const std::string& replace_with, + std::string* output); + +// Removes characters in |trim_chars| from the beginning and end of |input|. // |trim_chars| must be null-terminated. -// NOTE: Safe to use the same variable for both input and output. +// NOTE: Safe to use the same variable for both |input| and |output|. BASE_EXPORT bool TrimString(const std::wstring& input, const wchar_t trim_chars[], std::wstring* output); -- cgit v1.1