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/importer/firefox_importer_utils.h" | 5 #include "chrome/browser/importer/firefox_importer_utils.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <map> | 8 #include <map> |
9 #include <string> | 9 #include <string> |
10 | 10 |
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
193 typedef std::map<std::string, TemplateURL*> SearchEnginesMap; | 193 typedef std::map<std::string, TemplateURL*> SearchEnginesMap; |
194 SearchEnginesMap search_engine_for_url; | 194 SearchEnginesMap search_engine_for_url; |
195 std::string content; | 195 std::string content; |
196 // The first XML file represents the default search engine in Firefox 3, so we | 196 // The first XML file represents the default search engine in Firefox 3, so we |
197 // need to keep it on top of the list. | 197 // need to keep it on top of the list. |
198 SearchEnginesMap::const_iterator default_turl = search_engine_for_url.end(); | 198 SearchEnginesMap::const_iterator default_turl = search_engine_for_url.end(); |
199 for (std::vector<FilePath>::const_iterator file_iter = xml_files.begin(); | 199 for (std::vector<FilePath>::const_iterator file_iter = xml_files.begin(); |
200 file_iter != xml_files.end(); ++file_iter) { | 200 file_iter != xml_files.end(); ++file_iter) { |
201 file_util::ReadFileToString(*file_iter, &content); | 201 file_util::ReadFileToString(*file_iter, &content); |
202 FirefoxURLParameterFilter param_filter; | 202 FirefoxURLParameterFilter param_filter; |
203 TemplateURL* template_url = TemplateURLParser::Parse(NULL, content.data(), | 203 TemplateURL* template_url = TemplateURLParser::Parse(NULL, true, |
204 content.length(), ¶m_filter); | 204 content.data(), content.length(), ¶m_filter); |
205 if (template_url) { | 205 if (template_url) { |
206 SearchEnginesMap::iterator iter = | 206 SearchEnginesMap::iterator iter = |
207 search_engine_for_url.find(template_url->url()); | 207 search_engine_for_url.find(template_url->url()); |
208 if (iter == search_engine_for_url.end()) { | 208 if (iter == search_engine_for_url.end()) { |
209 iter = search_engine_for_url.insert( | 209 iter = search_engine_for_url.insert( |
210 std::make_pair(template_url->url(), template_url)).first; | 210 std::make_pair(template_url->url(), template_url)).first; |
211 } else { | 211 } else { |
212 // We have already found a search engine with the same URL. We give | 212 // We have already found a search engine with the same URL. We give |
213 // priority to the latest one found, as GetSearchEnginesXMLFiles() | 213 // priority to the latest one found, as GetSearchEnginesXMLFiles() |
214 // returns a vector with first Firefox default search engines and then | 214 // returns a vector with first Firefox default search engines and then |
215 // the user's ones. We want to give priority to the user ones. | 215 // the user's ones. We want to give priority to the user ones. |
216 delete iter->second; | 216 delete iter->second; |
217 iter->second = template_url; | 217 iter->second = template_url; |
218 } | 218 } |
219 iter->second->set_show_in_default_list(true); | |
220 if (default_turl == search_engine_for_url.end()) | 219 if (default_turl == search_engine_for_url.end()) |
221 default_turl = iter; | 220 default_turl = iter; |
222 } | 221 } |
223 content.clear(); | 222 content.clear(); |
224 } | 223 } |
225 | 224 |
226 // Put the results in the |search_engines| vector. | 225 // Put the results in the |search_engines| vector. |
227 for (SearchEnginesMap::iterator t_iter = search_engine_for_url.begin(); | 226 for (SearchEnginesMap::iterator t_iter = search_engine_for_url.begin(); |
228 t_iter != search_engine_for_url.end(); ++t_iter) { | 227 t_iter != search_engine_for_url.end(); ++t_iter) { |
229 if (t_iter == default_turl) | 228 if (t_iter == default_turl) |
(...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
411 } | 410 } |
412 | 411 |
413 // String values have double quotes we don't need to return to the caller. | 412 // String values have double quotes we don't need to return to the caller. |
414 if (content[start] == '\"' && content[stop - 1] == '\"') { | 413 if (content[start] == '\"' && content[stop - 1] == '\"') { |
415 ++start; | 414 ++start; |
416 --stop; | 415 --stop; |
417 } | 416 } |
418 | 417 |
419 return content.substr(start, stop - start); | 418 return content.substr(start, stop - start); |
420 } | 419 } |
OLD | NEW |