Index: chrome/browser/importer/in_process_importer_bridge.cc |
diff --git a/chrome/browser/importer/in_process_importer_bridge.cc b/chrome/browser/importer/in_process_importer_bridge.cc |
index 5504aeeb55e85ebe65409ae9333c52742a89af80..ac46d8dc150ff8812b4b02522439f5f75aa8e947 100644 |
--- a/chrome/browser/importer/in_process_importer_bridge.cc |
+++ b/chrome/browser/importer/in_process_importer_bridge.cc |
@@ -9,6 +9,7 @@ |
#include "base/bind.h" |
#include "base/files/file_util.h" |
#include "base/macros.h" |
+#include "base/memory/ptr_util.h" |
#include "base/strings/string_util.h" |
#include "base/strings/utf_string_conversions.h" |
#include "build/build_config.h" |
@@ -96,53 +97,51 @@ class FirefoxURLParameterFilter : public TemplateURLParser::ParameterFilter { |
}; |
// Attempts to create a TemplateURL from the provided data. |title| is optional. |
-// If TemplateURL creation fails, returns NULL. |
-// This function transfers ownership of the created TemplateURL to the caller. |
-TemplateURL* CreateTemplateURL(const base::string16& url, |
- const base::string16& keyword, |
- const base::string16& title) { |
+// If TemplateURL creation fails, returns null. |
+std::unique_ptr<TemplateURL> CreateTemplateURL(const base::string16& url, |
+ const base::string16& keyword, |
+ const base::string16& title) { |
if (url.empty() || keyword.empty()) |
- return NULL; |
+ return nullptr; |
TemplateURLData data; |
data.SetKeyword(keyword); |
// We set short name by using the title if it exists. |
// Otherwise, we use the shortcut. |
data.SetShortName(title.empty() ? keyword : title); |
data.SetURL(TemplateURLRef::DisplayURLToURLRef(url)); |
- return new TemplateURL(data); |
+ return base::MakeUnique<TemplateURL>(data); |
} |
// Parses the OpenSearch XML files in |xml_files| and populates |search_engines| |
// with the resulting TemplateURLs. |
void ParseSearchEnginesFromFirefoxXMLData( |
const std::vector<std::string>& xml_data, |
- std::vector<TemplateURL*>* search_engines) { |
+ TemplateURLService::OwnedTemplateURLVector* search_engines) { |
DCHECK(search_engines); |
- typedef std::map<std::string, TemplateURL*> SearchEnginesMap; |
- SearchEnginesMap search_engine_for_url; |
+ std::map<std::string, std::unique_ptr<TemplateURL>> search_engine_for_url; |
FirefoxURLParameterFilter param_filter; |
// The first XML file represents the default search engine in Firefox 3, so we |
// need to keep it on top of the list. |
- SearchEnginesMap::const_iterator default_turl = search_engine_for_url.end(); |
+ auto default_turl = search_engine_for_url.end(); |
for (std::vector<std::string>::const_iterator xml_iter = |
xml_data.begin(); xml_iter != xml_data.end(); ++xml_iter) { |
- TemplateURL* template_url = TemplateURLParser::Parse( |
- UIThreadSearchTermsData(NULL), true, |
- xml_iter->data(), xml_iter->length(), ¶m_filter); |
+ std::unique_ptr<TemplateURL> template_url = TemplateURLParser::Parse( |
+ UIThreadSearchTermsData(nullptr), true, xml_iter->data(), |
+ xml_iter->length(), ¶m_filter); |
if (template_url) { |
- SearchEnginesMap::iterator iter = |
- search_engine_for_url.find(template_url->url()); |
+ auto iter = search_engine_for_url.find(template_url->url()); |
if (iter == search_engine_for_url.end()) { |
- iter = search_engine_for_url.insert( |
- std::make_pair(template_url->url(), template_url)).first; |
+ iter = search_engine_for_url |
+ .insert(std::make_pair(template_url->url(), |
+ std::move(template_url))) |
+ .first; |
} else { |
// We have already found a search engine with the same URL. We give |
// priority to the latest one found, as GetSearchEnginesXMLFiles() |
// returns a vector with first Firefox default search engines and then |
// the user's ones. We want to give priority to the user ones. |
- delete iter->second; |
- iter->second = template_url; |
+ iter->second = std::move(template_url); |
} |
if (default_turl == search_engine_for_url.end()) |
default_turl = iter; |
@@ -150,12 +149,13 @@ void ParseSearchEnginesFromFirefoxXMLData( |
} |
// Put the results in the |search_engines| vector. |
- for (SearchEnginesMap::iterator t_iter = search_engine_for_url.begin(); |
+ for (auto t_iter = search_engine_for_url.begin(); |
t_iter != search_engine_for_url.end(); ++t_iter) { |
if (t_iter == default_turl) |
- search_engines->insert(search_engines->begin(), default_turl->second); |
+ search_engines->insert(search_engines->begin(), |
+ std::move(default_turl->second)); |
else |
- search_engines->push_back(t_iter->second); |
+ search_engines->push_back(std::move(t_iter->second)); |
} |
} |
@@ -222,14 +222,12 @@ void InProcessImporterBridge::SetHistoryItems( |
void InProcessImporterBridge::SetKeywords( |
const std::vector<importer::SearchEngineInfo>& search_engines, |
bool unique_on_host_and_path) { |
- ScopedVector<TemplateURL> owned_template_urls; |
+ TemplateURLService::OwnedTemplateURLVector owned_template_urls; |
for (const auto& search_engine : search_engines) { |
- TemplateURL* owned_template_url = |
- CreateTemplateURL(search_engine.url, |
- search_engine.keyword, |
- search_engine.display_name); |
+ std::unique_ptr<TemplateURL> owned_template_url = CreateTemplateURL( |
+ search_engine.url, search_engine.keyword, search_engine.display_name); |
if (owned_template_url) |
- owned_template_urls.push_back(owned_template_url); |
+ owned_template_urls.push_back(std::move(owned_template_url)); |
} |
BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, |
base::Bind(&ProfileWriter::AddKeywords, writer_, |
@@ -238,16 +236,12 @@ void InProcessImporterBridge::SetKeywords( |
void InProcessImporterBridge::SetFirefoxSearchEnginesXMLData( |
const std::vector<std::string>& search_engine_data) { |
- std::vector<TemplateURL*> search_engines; |
+ TemplateURLService::OwnedTemplateURLVector search_engines; |
ParseSearchEnginesFromFirefoxXMLData(search_engine_data, &search_engines); |
- ScopedVector<TemplateURL> owned_template_urls; |
- std::copy(search_engines.begin(), search_engines.end(), |
- std::back_inserter(owned_template_urls)); |
- |
BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, |
- base::Bind(&ProfileWriter::AddKeywords, writer_, |
- base::Passed(&owned_template_urls), true)); |
+ base::Bind(&ProfileWriter::AddKeywords, writer_, |
+ base::Passed(&search_engines), true)); |
} |
void InProcessImporterBridge::SetPasswordForm( |