Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(704)

Side by Side Diff: chrome/browser/autocomplete/autocomplete_match.cc

Issue 8502027: Fix AutocompleteMatch DCHECK() triggered by |RenderViewContextMenu::AppendSearchProvider()|. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/logging.h" 5 #include "base/logging.h"
6 #include "base/string_util.h" 6 #include "base/string_util.h"
7 #include "chrome/browser/autocomplete/autocomplete_match.h" 7 #include "chrome/browser/autocomplete/autocomplete_match.h"
8 #include "grit/theme_resources.h" 8 #include "grit/theme_resources.h"
9 9
10 // AutocompleteMatch ---------------------------------------------------------- 10 // AutocompleteMatch ----------------------------------------------------------
11 11
12 // static
13 const char16 AutocompleteMatch::kInvalidChars[] = {
14 '\n', '\r', '\t',
15 0x2028, // Line separator
16 0x2029, // Paragraph separator
17 0
18 };
19
12 AutocompleteMatch::AutocompleteMatch() 20 AutocompleteMatch::AutocompleteMatch()
13 : provider(NULL), 21 : provider(NULL),
14 relevance(0), 22 relevance(0),
15 deletable(false), 23 deletable(false),
16 inline_autocomplete_offset(string16::npos), 24 inline_autocomplete_offset(string16::npos),
17 transition(content::PAGE_TRANSITION_GENERATED), 25 transition(content::PAGE_TRANSITION_GENERATED),
18 is_history_what_you_typed_match(false), 26 is_history_what_you_typed_match(false),
19 type(SEARCH_WHAT_YOU_TYPED), 27 type(SEARCH_WHAT_YOU_TYPED),
20 template_url(NULL), 28 template_url(NULL),
21 starred(false), 29 starred(false),
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
154 const size_t after_match(match_location + match_length); 162 const size_t after_match(match_location + match_length);
155 if (after_match < overall_length) { 163 if (after_match < overall_length) {
156 classification->push_back(ACMatchClassification(after_match, style)); 164 classification->push_back(ACMatchClassification(after_match, style));
157 } 165 }
158 } 166 }
159 167
160 // static 168 // static
161 string16 AutocompleteMatch::SanitizeString(const string16& text) { 169 string16 AutocompleteMatch::SanitizeString(const string16& text) {
162 // NOTE: This logic is mirrored by |sanitizeString()| in 170 // NOTE: This logic is mirrored by |sanitizeString()| in
163 // extension_process_bindings.js. 171 // extension_process_bindings.js.
164 // 0x2028 = line separator; 0x2029 = paragraph separator.
165 const char16 kRemoveChars[] = { '\n', '\r', '\t',
166 0x2028, // Line separator
167 0x2029, // Paragraph separator
168 0 };
169 string16 result; 172 string16 result;
170 TrimWhitespace(text, TRIM_LEADING, &result); 173 TrimWhitespace(text, TRIM_LEADING, &result);
171 RemoveChars(result, kRemoveChars, &result); 174 RemoveChars(result, kInvalidChars, &result);
172 return result; 175 return result;
173 } 176 }
174 177
175 #ifndef NDEBUG 178 #ifndef NDEBUG
176 void AutocompleteMatch::Validate() const { 179 void AutocompleteMatch::Validate() const {
177 ValidateClassifications(contents, contents_class); 180 ValidateClassifications(contents, contents_class);
178 ValidateClassifications(description, description_class); 181 ValidateClassifications(description, description_class);
179 } 182 }
180 183
181 void AutocompleteMatch::ValidateClassifications( 184 void AutocompleteMatch::ValidateClassifications(
(...skipping 13 matching lines...) Expand all
195 // The classifications should always be sorted. 198 // The classifications should always be sorted.
196 size_t last_offset = classifications[0].offset; 199 size_t last_offset = classifications[0].offset;
197 for (ACMatchClassifications::const_iterator i(classifications.begin() + 1); 200 for (ACMatchClassifications::const_iterator i(classifications.begin() + 1);
198 i != classifications.end(); ++i) { 201 i != classifications.end(); ++i) {
199 DCHECK(i->offset > last_offset) << "Classification unsorted"; 202 DCHECK(i->offset > last_offset) << "Classification unsorted";
200 DCHECK(i->offset < text.length()) << "Classification out of bounds"; 203 DCHECK(i->offset < text.length()) << "Classification out of bounds";
201 last_offset = i->offset; 204 last_offset = i->offset;
202 } 205 }
203 } 206 }
204 #endif 207 #endif
OLDNEW
« no previous file with comments | « chrome/browser/autocomplete/autocomplete_match.h ('k') | chrome/browser/tab_contents/render_view_context_menu.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698