OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "chrome/browser/extensions/api/omnibox/omnibox_api.h" | 5 #include "chrome/browser/extensions/api/omnibox/omnibox_api.h" |
6 | 6 |
7 #include "base/json/json_writer.h" | 7 #include "base/json/json_writer.h" |
8 #include "base/lazy_instance.h" | 8 #include "base/lazy_instance.h" |
9 #include "base/metrics/histogram.h" | 9 #include "base/metrics/histogram.h" |
10 #include "base/string_util.h" | 10 #include "base/string_util.h" |
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
172 return false; | 172 return false; |
173 } | 173 } |
174 } else if (value.HasKey(kSuggestionDescriptionStylesRaw)) { | 174 } else if (value.HasKey(kSuggestionDescriptionStylesRaw)) { |
175 // This version comes from ToValue(), which we use to persist to disk. | 175 // This version comes from ToValue(), which we use to persist to disk. |
176 const ListValue* styles = NULL; | 176 const ListValue* styles = NULL; |
177 if (!value.GetList(kSuggestionDescriptionStylesRaw, &styles) || | 177 if (!value.GetList(kSuggestionDescriptionStylesRaw, &styles) || |
178 styles->empty()) { | 178 styles->empty()) { |
179 return false; | 179 return false; |
180 } | 180 } |
181 for (size_t i = 0; i < styles->GetSize(); ++i) { | 181 for (size_t i = 0; i < styles->GetSize(); ++i) { |
182 base::DictionaryValue* style = NULL; | 182 const base::DictionaryValue* style = NULL; |
183 int offset, type; | 183 int offset, type; |
184 if (!styles->GetDictionary(i, &style)) | 184 if (!styles->GetDictionary(i, &style)) |
185 return false; | 185 return false; |
186 if (!style->GetInteger(kDescriptionStylesType, &type)) | 186 if (!style->GetInteger(kDescriptionStylesType, &type)) |
187 return false; | 187 return false; |
188 if (!style->GetInteger(kDescriptionStylesOffset, &offset)) | 188 if (!style->GetInteger(kDescriptionStylesOffset, &offset)) |
189 return false; | 189 return false; |
190 description_styles.push_back(ACMatchClassification(offset, type)); | 190 description_styles.push_back(ACMatchClassification(offset, type)); |
191 } | 191 } |
192 } else { | 192 } else { |
193 description_styles.push_back( | 193 description_styles.push_back( |
194 ACMatchClassification(0, ACMatchClassification::NONE)); | 194 ACMatchClassification(0, ACMatchClassification::NONE)); |
195 } | 195 } |
196 | 196 |
197 return true; | 197 return true; |
198 } | 198 } |
199 | 199 |
200 bool ExtensionOmniboxSuggestion::ReadStylesFromValue( | 200 bool ExtensionOmniboxSuggestion::ReadStylesFromValue( |
201 const ListValue& styles_value) { | 201 const ListValue& styles_value) { |
202 description_styles.clear(); | 202 description_styles.clear(); |
203 | 203 |
204 // Step 1: Build a vector of styles, 1 per character of description text. | 204 // Step 1: Build a vector of styles, 1 per character of description text. |
205 std::vector<int> styles; | 205 std::vector<int> styles; |
206 styles.resize(description.length()); // sets all styles to 0 | 206 styles.resize(description.length()); // sets all styles to 0 |
207 | 207 |
208 for (size_t i = 0; i < styles_value.GetSize(); ++i) { | 208 for (size_t i = 0; i < styles_value.GetSize(); ++i) { |
209 DictionaryValue* style; | 209 const DictionaryValue* style; |
210 std::string type; | 210 std::string type; |
211 int offset; | 211 int offset; |
212 int length; | 212 int length; |
213 if (!styles_value.GetDictionary(i, &style)) | 213 if (!styles_value.GetDictionary(i, &style)) |
214 return false; | 214 return false; |
215 if (!style->GetString(kDescriptionStylesType, &type)) | 215 if (!style->GetString(kDescriptionStylesType, &type)) |
216 return false; | 216 return false; |
217 if (!style->GetInteger(kDescriptionStylesOffset, &offset)) | 217 if (!style->GetInteger(kDescriptionStylesOffset, &offset)) |
218 return false; | 218 return false; |
219 if (!style->GetInteger(kDescriptionStylesLength, &length) || length < 0) | 219 if (!style->GetInteger(kDescriptionStylesLength, &length) || length < 0) |
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
303 for (size_t i = 0; i < description_styles.size(); ++i) { | 303 for (size_t i = 0; i < description_styles.size(); ++i) { |
304 if (description_styles[i].offset > placeholder) | 304 if (description_styles[i].offset > placeholder) |
305 description_styles[i].offset += replacement.length() - 2; | 305 description_styles[i].offset += replacement.length() - 2; |
306 } | 306 } |
307 } | 307 } |
308 | 308 |
309 match->contents.assign(description); | 309 match->contents.assign(description); |
310 } | 310 } |
311 | 311 |
312 } // namespace extensions | 312 } // namespace extensions |
OLD | NEW |