in_process_importer_bridge.cc revision 1320f92c476a1ad9d19dba2a48c72b75566198e9
1f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.com// Copyright (c) 2012 The Chromium Authors. All rights reserved. 243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// Use of this source code is governed by a BSD-style license that can be 343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// found in the LICENSE file. 443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen#include "chrome/browser/importer/in_process_importer_bridge.h" 643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen#include "base/bind.h" 843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen#include "base/debug/dump_without_crashing.h" 943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen#include "base/files/file_util.h" 1043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen#include "base/strings/string_util.h" 1143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen#include "base/strings/utf_string_conversions.h" 1243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen#include "chrome/browser/importer/external_process_importer_host.h" 1343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen#include "chrome/browser/search_engines/ui_thread_search_terms_data.h" 1443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen#include "chrome/common/importer/imported_bookmark_entry.h" 1543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen#include "chrome/common/importer/imported_favicon_usage.h" 1643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen#include "chrome/common/importer/importer_autofill_form_data_entry.h" 1743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen#include "components/autofill/core/browser/webdata/autofill_entry.h" 1843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen#include "components/autofill/core/common/password_form.h" 1943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen#include "components/search_engines/template_url.h" 2043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen#include "components/search_engines/template_url_parser.h" 2143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen#include "components/search_engines/template_url_prepopulate_data.h" 2243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen#include "content/public/browser/browser_thread.h" 2343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen#include "ui/base/l10n/l10n_util.h" 2443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 2543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen#if defined(OS_WIN) 2643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen#include "components/os_crypt/ie7_password_win.h" 2743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen#endif 2843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 29eb7c144137bd7d461d4996f752f1353a0856fac1ricow@chromium.org#include <iterator> 30659ceec4628056d3c6e7076c850fba1c412cbb8ayangguo@chromium.org 3177ca49ac05d25684c89442029c22f5b2bce94395ulan@chromium.orgnamespace { 32659ceec4628056d3c6e7076c850fba1c412cbb8ayangguo@chromium.org 33659ceec4628056d3c6e7076c850fba1c412cbb8ayangguo@chromium.orghistory::URLRows ConvertImporterURLRowsToHistoryURLRows( 34659ceec4628056d3c6e7076c850fba1c412cbb8ayangguo@chromium.org const std::vector<ImporterURLRow>& rows) { 3579e7902fa5f94747b5383dd40f3002dd8b62303arossberg@chromium.org history::URLRows converted; 3643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen converted.reserve(rows.size()); 37753aee4dcf0868130789b5af7c1eeb6ab2ab24f9verwaest@chromium.org for (std::vector<ImporterURLRow>::const_iterator it = rows.begin(); 3843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen it != rows.end(); ++it) { 39659ceec4628056d3c6e7076c850fba1c412cbb8ayangguo@chromium.org history::URLRow row(it->url); 40659ceec4628056d3c6e7076c850fba1c412cbb8ayangguo@chromium.org row.set_title(it->title); 41c1789eecd43bf9c5497636592bf14fa754d04c89machenbach@chromium.org row.set_visit_count(it->visit_count); 4243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen row.set_typed_count(it->typed_count); 43a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org row.set_last_visit(it->last_visit); 4443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen row.set_hidden(it->hidden); 4543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen converted.push_back(row); 462c186ca6690a1cb19ec7584e71f167234587c87cwhesse@chromium.org } 472e04b58f1dc7cee8fdf047b5dbc9dc93e767821dulan@chromium.org return converted; 48169691d93a961c8b511f8ac8fd8ee33d081ca10fdanno@chromium.org} 49594006017e46d82ed7146611dc12c20e3c509c7ddanno@chromium.org 50ce5e87bd905d592a8bd612b3dedf7a994177c13aager@chromium.orghistory::VisitSource ConvertImporterVisitSourceToHistoryVisitSource( 51f7a588466d1e61e14fec951e5f10c7cec501b3b4jkummerow@chromium.org importer::VisitSource visit_source) { 52f7a588466d1e61e14fec951e5f10c7cec501b3b4jkummerow@chromium.org switch (visit_source) { 53f7a588466d1e61e14fec951e5f10c7cec501b3b4jkummerow@chromium.org case importer::VISIT_SOURCE_BROWSED: 54eb7c144137bd7d461d4996f752f1353a0856fac1ricow@chromium.org return history::SOURCE_BROWSED; 5543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen case importer::VISIT_SOURCE_FIREFOX_IMPORTED: 563d00d0a753cf5e5091f883517e6612ece769f999jkummerow@chromium.org return history::SOURCE_FIREFOX_IMPORTED; 57357bf65ed5309ac3a2c4bf20b6ce7770488787c2ager@chromium.org case importer::VISIT_SOURCE_IE_IMPORTED: 58659ceec4628056d3c6e7076c850fba1c412cbb8ayangguo@chromium.org return history::SOURCE_IE_IMPORTED; 59659ceec4628056d3c6e7076c850fba1c412cbb8ayangguo@chromium.org case importer::VISIT_SOURCE_SAFARI_IMPORTED: 60ca29dd85fa02449d17188f5a6ff9a7cdf2ad9680danno@chromium.org return history::SOURCE_SAFARI_IMPORTED; 61a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org } 6255ee80713569ab0324fc8dcedcb5518501daa6a6ricow@chromium.org NOTREACHED(); 6343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen return history::SOURCE_SYNCED; 64659ceec4628056d3c6e7076c850fba1c412cbb8ayangguo@chromium.org} 65c5d4971574b7a205fa0e788d8121dc79485e5e67hpayer@chromium.org 66ddb913d619a6e602f53dd17b0fe71158ce66888dager@chromium.org// http://crbug.com/404012. Let's see where the empty fields come from. 675ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.orgvoid CheckForEmptyUsernameAndPassword(const autofill::PasswordForm& form) { 68a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org if (form.username_value.empty() && 6943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen form.password_value.empty() && 7043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen !form.blacklisted_by_user) { 71ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.org base::debug::DumpWithoutCrashing(); 7243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen } 73ca29dd85fa02449d17188f5a6ff9a7cdf2ad9680danno@chromium.org} 74ca29dd85fa02449d17188f5a6ff9a7cdf2ad9680danno@chromium.org 75ca29dd85fa02449d17188f5a6ff9a7cdf2ad9680danno@chromium.org} // namespace 7643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 7743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenusing content::BrowserThread; 7843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 79ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.orgnamespace { 80ae16103bc671a8693911bc99b5fd619e2c772e33machenbach@chromium.org 819155e252524a2bf92aecd27493feafed86702312kmillikin@chromium.org// FirefoxURLParameterFilter is used to remove parameter mentioning Firefox from 829155e252524a2bf92aecd27493feafed86702312kmillikin@chromium.org// the search URL when importing search engines. 8343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenclass FirefoxURLParameterFilter : public TemplateURLParser::ParameterFilter { 8443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen public: 8543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen FirefoxURLParameterFilter() {} 867979bbb1df2eaff193e85d44c8da1ffa1525b7fcfschneider@chromium.org virtual ~FirefoxURLParameterFilter() {} 877979bbb1df2eaff193e85d44c8da1ffa1525b7fcfschneider@chromium.org 887979bbb1df2eaff193e85d44c8da1ffa1525b7fcfschneider@chromium.org // TemplateURLParser::ParameterFilter method. 8943d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen virtual bool KeepParameter(const std::string& key, 9043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen const std::string& value) OVERRIDE { 9143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen std::string low_value = base::StringToLowerASCII(value); 92fab1498f2f42726c7de46c3ed560d56dd072a8b3rossberg@chromium.org if (low_value.find("mozilla") != std::string::npos || 9343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen low_value.find("firefox") != std::string::npos || 94ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.org low_value.find("moz:") != std::string::npos) { 957979bbb1df2eaff193e85d44c8da1ffa1525b7fcfschneider@chromium.org return false; 96ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.org } 9743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen return true; 98ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.org } 997979bbb1df2eaff193e85d44c8da1ffa1525b7fcfschneider@chromium.org 100fab1498f2f42726c7de46c3ed560d56dd072a8b3rossberg@chromium.org private: 10143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen DISALLOW_COPY_AND_ASSIGN(FirefoxURLParameterFilter); 10243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen}; 103fab1498f2f42726c7de46c3ed560d56dd072a8b3rossberg@chromium.org 10443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// Creates a TemplateURL with the |keyword| and |url|. |title| may be empty. 10543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen// This function transfers ownership of the created TemplateURL to the caller. 10643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenTemplateURL* CreateTemplateURL(const base::string16& title, 107fab1498f2f42726c7de46c3ed560d56dd072a8b3rossberg@chromium.org const base::string16& keyword, 108fab1498f2f42726c7de46c3ed560d56dd072a8b3rossberg@chromium.org const GURL& url) { 109fab1498f2f42726c7de46c3ed560d56dd072a8b3rossberg@chromium.org // Skip if the url is invalid. 110fab1498f2f42726c7de46c3ed560d56dd072a8b3rossberg@chromium.org if (!url.is_valid()) 111fab1498f2f42726c7de46c3ed560d56dd072a8b3rossberg@chromium.org return NULL; 112fab1498f2f42726c7de46c3ed560d56dd072a8b3rossberg@chromium.org 113fab1498f2f42726c7de46c3ed560d56dd072a8b3rossberg@chromium.org TemplateURLData data; 114fab1498f2f42726c7de46c3ed560d56dd072a8b3rossberg@chromium.org if (keyword.empty()) 115fab1498f2f42726c7de46c3ed560d56dd072a8b3rossberg@chromium.org data.SetKeyword(TemplateURL::GenerateKeyword(url)); 11643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen else 11743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen data.SetKeyword(keyword); 11843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen // We set short name by using the title if it exists. 1194a6c3279070e8f133607a74c08d8c08ac394ab98erik.corry@gmail.com // Otherwise, we use the shortcut. 1204a6c3279070e8f133607a74c08d8c08ac394ab98erik.corry@gmail.com data.short_name = title.empty() ? keyword : title; 1214a6c3279070e8f133607a74c08d8c08ac394ab98erik.corry@gmail.com data.SetURL( 1224a6c3279070e8f133607a74c08d8c08ac394ab98erik.corry@gmail.com TemplateURLRef::DisplayURLToURLRef(base::UTF8ToUTF16(url.spec()))); 12343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen return new TemplateURL(data); 12443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen} 12543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen 126c4e51ac6d26b42753a57a4a9e4a419243b50151clrn@chromium.org// Parses the OpenSearch XML files in |xml_files| and populates |search_engines| 127ac6aa175ab59d65cfb7a88dbb621e1d7f1a80b8fsgjesse@chromium.org// with the resulting TemplateURLs. 128ac6aa175ab59d65cfb7a88dbb621e1d7f1a80b8fsgjesse@chromium.orgvoid ParseSearchEnginesFromFirefoxXMLData( 129ac6aa175ab59d65cfb7a88dbb621e1d7f1a80b8fsgjesse@chromium.org const std::vector<std::string>& xml_data, 130ac6aa175ab59d65cfb7a88dbb621e1d7f1a80b8fsgjesse@chromium.org std::vector<TemplateURL*>* search_engines) { 131ac6aa175ab59d65cfb7a88dbb621e1d7f1a80b8fsgjesse@chromium.org DCHECK(search_engines); 132ac6aa175ab59d65cfb7a88dbb621e1d7f1a80b8fsgjesse@chromium.org 133ac6aa175ab59d65cfb7a88dbb621e1d7f1a80b8fsgjesse@chromium.org typedef std::map<std::string, TemplateURL*> SearchEnginesMap; 134f05f2913e034b9332e55c02c9395e701725c02c1kmillikin@chromium.org SearchEnginesMap search_engine_for_url; 135ac6aa175ab59d65cfb7a88dbb621e1d7f1a80b8fsgjesse@chromium.org FirefoxURLParameterFilter param_filter; 136f05f2913e034b9332e55c02c9395e701725c02c1kmillikin@chromium.org // The first XML file represents the default search engine in Firefox 3, so we 137ac6aa175ab59d65cfb7a88dbb621e1d7f1a80b8fsgjesse@chromium.org // need to keep it on top of the list. 138f05f2913e034b9332e55c02c9395e701725c02c1kmillikin@chromium.org SearchEnginesMap::const_iterator default_turl = search_engine_for_url.end(); 139ac6aa175ab59d65cfb7a88dbb621e1d7f1a80b8fsgjesse@chromium.org for (std::vector<std::string>::const_iterator xml_iter = 140f05f2913e034b9332e55c02c9395e701725c02c1kmillikin@chromium.org xml_data.begin(); xml_iter != xml_data.end(); ++xml_iter) { 141ac6aa175ab59d65cfb7a88dbb621e1d7f1a80b8fsgjesse@chromium.org TemplateURL* template_url = TemplateURLParser::Parse( 142f05f2913e034b9332e55c02c9395e701725c02c1kmillikin@chromium.org UIThreadSearchTermsData(NULL), true, 143ac6aa175ab59d65cfb7a88dbb621e1d7f1a80b8fsgjesse@chromium.org xml_iter->data(), xml_iter->length(), ¶m_filter); 144f05f2913e034b9332e55c02c9395e701725c02c1kmillikin@chromium.org if (template_url) { 145ac6aa175ab59d65cfb7a88dbb621e1d7f1a80b8fsgjesse@chromium.org SearchEnginesMap::iterator iter = 146f05f2913e034b9332e55c02c9395e701725c02c1kmillikin@chromium.org search_engine_for_url.find(template_url->url()); 147ac6aa175ab59d65cfb7a88dbb621e1d7f1a80b8fsgjesse@chromium.org if (iter == search_engine_for_url.end()) { 148f05f2913e034b9332e55c02c9395e701725c02c1kmillikin@chromium.org iter = search_engine_for_url.insert( 149ac6aa175ab59d65cfb7a88dbb621e1d7f1a80b8fsgjesse@chromium.org std::make_pair(template_url->url(), template_url)).first; 150f05f2913e034b9332e55c02c9395e701725c02c1kmillikin@chromium.org } else { 151ac6aa175ab59d65cfb7a88dbb621e1d7f1a80b8fsgjesse@chromium.org // We have already found a search engine with the same URL. We give 152f05f2913e034b9332e55c02c9395e701725c02c1kmillikin@chromium.org // priority to the latest one found, as GetSearchEnginesXMLFiles() 153ac6aa175ab59d65cfb7a88dbb621e1d7f1a80b8fsgjesse@chromium.org // returns a vector with first Firefox default search engines and then 15441728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org // the user's ones. We want to give priority to the user ones. 15541728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org delete iter->second; 15641728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org iter->second = template_url; 15741728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org } 158f05f2913e034b9332e55c02c9395e701725c02c1kmillikin@chromium.org if (default_turl == search_engine_for_url.end()) 159ac6aa175ab59d65cfb7a88dbb621e1d7f1a80b8fsgjesse@chromium.org default_turl = iter; 160ac6aa175ab59d65cfb7a88dbb621e1d7f1a80b8fsgjesse@chromium.org } 161ac6aa175ab59d65cfb7a88dbb621e1d7f1a80b8fsgjesse@chromium.org } 162ac6aa175ab59d65cfb7a88dbb621e1d7f1a80b8fsgjesse@chromium.org 163ac6aa175ab59d65cfb7a88dbb621e1d7f1a80b8fsgjesse@chromium.org // Put the results in the |search_engines| vector. 164ac6aa175ab59d65cfb7a88dbb621e1d7f1a80b8fsgjesse@chromium.org for (SearchEnginesMap::iterator t_iter = search_engine_for_url.begin(); 165ac6aa175ab59d65cfb7a88dbb621e1d7f1a80b8fsgjesse@chromium.org t_iter != search_engine_for_url.end(); ++t_iter) { 166ac6aa175ab59d65cfb7a88dbb621e1d7f1a80b8fsgjesse@chromium.org if (t_iter == default_turl) 167ac6aa175ab59d65cfb7a88dbb621e1d7f1a80b8fsgjesse@chromium.org search_engines->insert(search_engines->begin(), default_turl->second); 168e297f5973a8a9ff0d9945da3f1e2d8a6230c294djkummerow@chromium.org else 169e297f5973a8a9ff0d9945da3f1e2d8a6230c294djkummerow@chromium.org search_engines->push_back(t_iter->second); 170f05f2913e034b9332e55c02c9395e701725c02c1kmillikin@chromium.org } 171c4e51ac6d26b42753a57a4a9e4a419243b50151clrn@chromium.org} 172f05f2913e034b9332e55c02c9395e701725c02c1kmillikin@chromium.org 173c4e51ac6d26b42753a57a4a9e4a419243b50151clrn@chromium.org} // namespace 174c4e51ac6d26b42753a57a4a9e4a419243b50151clrn@chromium.org 175c4e51ac6d26b42753a57a4a9e4a419243b50151clrn@chromium.orgInProcessImporterBridge::InProcessImporterBridge( 176c4e51ac6d26b42753a57a4a9e4a419243b50151clrn@chromium.org ProfileWriter* writer, 177c4e51ac6d26b42753a57a4a9e4a419243b50151clrn@chromium.org base::WeakPtr<ExternalProcessImporterHost> host) : writer_(writer), 178ea4f62e1df22417fc8dc2c2425485dca98b13d07ager@chromium.org host_(host) { 179ea4f62e1df22417fc8dc2c2425485dca98b13d07ager@chromium.org} 180ac6aa175ab59d65cfb7a88dbb621e1d7f1a80b8fsgjesse@chromium.org 181ac6aa175ab59d65cfb7a88dbb621e1d7f1a80b8fsgjesse@chromium.orgvoid InProcessImporterBridge::AddBookmarks( 1827979bbb1df2eaff193e85d44c8da1ffa1525b7fcfschneider@chromium.org const std::vector<ImportedBookmarkEntry>& bookmarks, 1839768bf12a67dd4585cf1a62928708883161f64c3yangguo@chromium.org const base::string16& first_folder_name) { 1849768bf12a67dd4585cf1a62928708883161f64c3yangguo@chromium.org BrowserThread::PostTask( 1859768bf12a67dd4585cf1a62928708883161f64c3yangguo@chromium.org BrowserThread::UI, FROM_HERE, 1869768bf12a67dd4585cf1a62928708883161f64c3yangguo@chromium.org base::Bind(&ProfileWriter::AddBookmarks, writer_, bookmarks, 1879768bf12a67dd4585cf1a62928708883161f64c3yangguo@chromium.org first_folder_name)); 1884ddd2f1981d343a2efe6609a3e0ce6b9c80b6ed9machenbach@chromium.org} 1894ddd2f1981d343a2efe6609a3e0ce6b9c80b6ed9machenbach@chromium.org 190e900018c7a2a695fde788911564da37535c7e736mstarzinger@chromium.orgvoid InProcessImporterBridge::AddHomePage(const GURL& home_page) { 19143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen BrowserThread::PostTask( 19243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen BrowserThread::UI, FROM_HERE, 19343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen base::Bind(&ProfileWriter::AddHomepage, writer_, home_page)); 1944ddd2f1981d343a2efe6609a3e0ce6b9c80b6ed9machenbach@chromium.org} 195e900018c7a2a695fde788911564da37535c7e736mstarzinger@chromium.org 196e31286d471eb2e656a1809383fa16b76053dd673machenbach@chromium.org#if defined(OS_WIN) 197e31286d471eb2e656a1809383fa16b76053dd673machenbach@chromium.orgvoid InProcessImporterBridge::AddIE7PasswordInfo( 198e31286d471eb2e656a1809383fa16b76053dd673machenbach@chromium.org const importer::ImporterIE7PasswordInfo& password_info) { 199e31286d471eb2e656a1809383fa16b76053dd673machenbach@chromium.org IE7PasswordInfo ie7_password_info; 200e31286d471eb2e656a1809383fa16b76053dd673machenbach@chromium.org ie7_password_info.url_hash = password_info.url_hash; 201e31286d471eb2e656a1809383fa16b76053dd673machenbach@chromium.org ie7_password_info.encrypted_data = password_info.encrypted_data; 202e31286d471eb2e656a1809383fa16b76053dd673machenbach@chromium.org ie7_password_info.date_created = password_info.date_created; 203e31286d471eb2e656a1809383fa16b76053dd673machenbach@chromium.org 204e900018c7a2a695fde788911564da37535c7e736mstarzinger@chromium.org BrowserThread::PostTask( 20543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen BrowserThread::UI, FROM_HERE, 20643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen base::Bind(&ProfileWriter::AddIE7PasswordInfo, writer_, 20743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen ie7_password_info)); 20843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen} 209e900018c7a2a695fde788911564da37535c7e736mstarzinger@chromium.org#endif // OS_WIN 210e900018c7a2a695fde788911564da37535c7e736mstarzinger@chromium.org 21143d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenvoid InProcessImporterBridge::SetFavicons( 21243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen const std::vector<ImportedFaviconUsage>& favicons) { 21343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen BrowserThread::PostTask( 2147979bbb1df2eaff193e85d44c8da1ffa1525b7fcfschneider@chromium.org BrowserThread::UI, FROM_HERE, 2157979bbb1df2eaff193e85d44c8da1ffa1525b7fcfschneider@chromium.org base::Bind(&ProfileWriter::AddFavicons, writer_, favicons)); 2167979bbb1df2eaff193e85d44c8da1ffa1525b7fcfschneider@chromium.org} 2177979bbb1df2eaff193e85d44c8da1ffa1525b7fcfschneider@chromium.org 2187979bbb1df2eaff193e85d44c8da1ffa1525b7fcfschneider@chromium.orgvoid InProcessImporterBridge::SetHistoryItems( 2197979bbb1df2eaff193e85d44c8da1ffa1525b7fcfschneider@chromium.org const std::vector<ImporterURLRow>& rows, 2207979bbb1df2eaff193e85d44c8da1ffa1525b7fcfschneider@chromium.org importer::VisitSource visit_source) { 2217979bbb1df2eaff193e85d44c8da1ffa1525b7fcfschneider@chromium.org history::URLRows converted_rows = 2227979bbb1df2eaff193e85d44c8da1ffa1525b7fcfschneider@chromium.org ConvertImporterURLRowsToHistoryURLRows(rows); 2237979bbb1df2eaff193e85d44c8da1ffa1525b7fcfschneider@chromium.org history::VisitSource converted_visit_source = 22443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen ConvertImporterVisitSourceToHistoryVisitSource(visit_source); 22543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen BrowserThread::PostTask(BrowserThread::UI, 22643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen FROM_HERE, 2271510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org base::Bind(&ProfileWriter::AddHistoryPage, 2281510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org writer_, 2291510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org converted_rows, 2301510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org converted_visit_source)); 2311510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org} 2321510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 2331510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgvoid InProcessImporterBridge::SetKeywords( 234ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.org const std::vector<importer::URLKeywordInfo>& url_keywords, 235ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.org bool unique_on_host_and_path) { 23643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen ScopedVector<TemplateURL> owned_template_urls; 23743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen for (size_t i = 0; i < url_keywords.size(); ++i) { 238ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.org owned_template_urls.push_back( 239ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.org CreateTemplateURL(url_keywords[i].display_name, 2404ddd2f1981d343a2efe6609a3e0ce6b9c80b6ed9machenbach@chromium.org url_keywords[i].keyword, 2414ddd2f1981d343a2efe6609a3e0ce6b9c80b6ed9machenbach@chromium.org url_keywords[i].url)); 2424ddd2f1981d343a2efe6609a3e0ce6b9c80b6ed9machenbach@chromium.org } 2434ddd2f1981d343a2efe6609a3e0ce6b9c80b6ed9machenbach@chromium.org BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, 244ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.org base::Bind(&ProfileWriter::AddKeywords, writer_, 245ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.org base::Passed(&owned_template_urls), unique_on_host_and_path)); 246e0e1b0d3e70c933d36ed381d511e9fda39f2a751mstarzinger@chromium.org} 247ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.org 248ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.orgvoid InProcessImporterBridge::SetFirefoxSearchEnginesXMLData( 249ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.org const std::vector<std::string>& search_engine_data) { 250ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.org std::vector<TemplateURL*> search_engines; 251ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.org ParseSearchEnginesFromFirefoxXMLData(search_engine_data, &search_engines); 252ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.org 253ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.org ScopedVector<TemplateURL> owned_template_urls; 254ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.org std::copy(search_engines.begin(), search_engines.end(), 255ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.org std::back_inserter(owned_template_urls)); 256ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.org 257ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.org BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, 25843d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen base::Bind(&ProfileWriter::AddKeywords, writer_, 259ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.org base::Passed(&owned_template_urls), true)); 260ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.org} 261ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.org 262ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.orgvoid InProcessImporterBridge::SetPasswordForm( 263ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.org const autofill::PasswordForm& form) { 264ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.org CheckForEmptyUsernameAndPassword(form); 265e297f5973a8a9ff0d9945da3f1e2d8a6230c294djkummerow@chromium.org BrowserThread::PostTask( 266e297f5973a8a9ff0d9945da3f1e2d8a6230c294djkummerow@chromium.org BrowserThread::UI, FROM_HERE, 267e297f5973a8a9ff0d9945da3f1e2d8a6230c294djkummerow@chromium.org base::Bind(&ProfileWriter::AddPasswordForm, writer_, form)); 268e297f5973a8a9ff0d9945da3f1e2d8a6230c294djkummerow@chromium.org} 269e297f5973a8a9ff0d9945da3f1e2d8a6230c294djkummerow@chromium.org 270e297f5973a8a9ff0d9945da3f1e2d8a6230c294djkummerow@chromium.orgvoid InProcessImporterBridge::SetAutofillFormData( 271e297f5973a8a9ff0d9945da3f1e2d8a6230c294djkummerow@chromium.org const std::vector<ImporterAutofillFormDataEntry>& entries) { 272e297f5973a8a9ff0d9945da3f1e2d8a6230c294djkummerow@chromium.org std::vector<autofill::AutofillEntry> autofill_entries; 273e297f5973a8a9ff0d9945da3f1e2d8a6230c294djkummerow@chromium.org for (size_t i = 0; i < entries.size(); ++i) { 274e297f5973a8a9ff0d9945da3f1e2d8a6230c294djkummerow@chromium.org autofill_entries.push_back(autofill::AutofillEntry( 275e297f5973a8a9ff0d9945da3f1e2d8a6230c294djkummerow@chromium.org autofill::AutofillKey(entries[i].name, entries[i].value), 276e297f5973a8a9ff0d9945da3f1e2d8a6230c294djkummerow@chromium.org entries[i].first_used, 277e297f5973a8a9ff0d9945da3f1e2d8a6230c294djkummerow@chromium.org entries[i].last_used)); 278e297f5973a8a9ff0d9945da3f1e2d8a6230c294djkummerow@chromium.org } 279e297f5973a8a9ff0d9945da3f1e2d8a6230c294djkummerow@chromium.org 280e297f5973a8a9ff0d9945da3f1e2d8a6230c294djkummerow@chromium.org BrowserThread::PostTask(BrowserThread::UI, 281e297f5973a8a9ff0d9945da3f1e2d8a6230c294djkummerow@chromium.org FROM_HERE, 282e297f5973a8a9ff0d9945da3f1e2d8a6230c294djkummerow@chromium.org base::Bind(&ProfileWriter::AddAutofillFormDataEntries, 283e297f5973a8a9ff0d9945da3f1e2d8a6230c294djkummerow@chromium.org writer_, 284e297f5973a8a9ff0d9945da3f1e2d8a6230c294djkummerow@chromium.org autofill_entries)); 285e297f5973a8a9ff0d9945da3f1e2d8a6230c294djkummerow@chromium.org} 286e297f5973a8a9ff0d9945da3f1e2d8a6230c294djkummerow@chromium.org 287e297f5973a8a9ff0d9945da3f1e2d8a6230c294djkummerow@chromium.orgvoid InProcessImporterBridge::NotifyStarted() { 288e297f5973a8a9ff0d9945da3f1e2d8a6230c294djkummerow@chromium.org BrowserThread::PostTask( 289e297f5973a8a9ff0d9945da3f1e2d8a6230c294djkummerow@chromium.org BrowserThread::UI, FROM_HERE, 290e297f5973a8a9ff0d9945da3f1e2d8a6230c294djkummerow@chromium.org base::Bind(&ExternalProcessImporterHost::NotifyImportStarted, host_)); 291e297f5973a8a9ff0d9945da3f1e2d8a6230c294djkummerow@chromium.org} 292e297f5973a8a9ff0d9945da3f1e2d8a6230c294djkummerow@chromium.org 293e297f5973a8a9ff0d9945da3f1e2d8a6230c294djkummerow@chromium.orgvoid InProcessImporterBridge::NotifyItemStarted(importer::ImportItem item) { 294e297f5973a8a9ff0d9945da3f1e2d8a6230c294djkummerow@chromium.org BrowserThread::PostTask( 295e297f5973a8a9ff0d9945da3f1e2d8a6230c294djkummerow@chromium.org BrowserThread::UI, FROM_HERE, 296e297f5973a8a9ff0d9945da3f1e2d8a6230c294djkummerow@chromium.org base::Bind(&ExternalProcessImporterHost::NotifyImportItemStarted, 297e297f5973a8a9ff0d9945da3f1e2d8a6230c294djkummerow@chromium.org host_, item)); 298e297f5973a8a9ff0d9945da3f1e2d8a6230c294djkummerow@chromium.org} 299e297f5973a8a9ff0d9945da3f1e2d8a6230c294djkummerow@chromium.org 300e297f5973a8a9ff0d9945da3f1e2d8a6230c294djkummerow@chromium.orgvoid InProcessImporterBridge::NotifyItemEnded(importer::ImportItem item) { 301f7a588466d1e61e14fec951e5f10c7cec501b3b4jkummerow@chromium.org BrowserThread::PostTask( 302e297f5973a8a9ff0d9945da3f1e2d8a6230c294djkummerow@chromium.org BrowserThread::UI, FROM_HERE, 303e297f5973a8a9ff0d9945da3f1e2d8a6230c294djkummerow@chromium.org base::Bind(&ExternalProcessImporterHost::NotifyImportItemEnded, 304e297f5973a8a9ff0d9945da3f1e2d8a6230c294djkummerow@chromium.org host_, item)); 305e297f5973a8a9ff0d9945da3f1e2d8a6230c294djkummerow@chromium.org} 3068e8294a88dc7d58f579aee0ba08c19fc8a616e2dsgjesse@chromium.org 3078e8294a88dc7d58f579aee0ba08c19fc8a616e2dsgjesse@chromium.orgvoid InProcessImporterBridge::NotifyEnded() { 3088e8294a88dc7d58f579aee0ba08c19fc8a616e2dsgjesse@chromium.org BrowserThread::PostTask( 3098e8294a88dc7d58f579aee0ba08c19fc8a616e2dsgjesse@chromium.org BrowserThread::UI, FROM_HERE, 3108e8294a88dc7d58f579aee0ba08c19fc8a616e2dsgjesse@chromium.org base::Bind(&ExternalProcessImporterHost::NotifyImportEnded, host_)); 3118e8294a88dc7d58f579aee0ba08c19fc8a616e2dsgjesse@chromium.org} 3128e8294a88dc7d58f579aee0ba08c19fc8a616e2dsgjesse@chromium.org 3138e8294a88dc7d58f579aee0ba08c19fc8a616e2dsgjesse@chromium.orgbase::string16 InProcessImporterBridge::GetLocalizedString(int message_id) { 3148e8294a88dc7d58f579aee0ba08c19fc8a616e2dsgjesse@chromium.org return l10n_util::GetStringUTF16(message_id); 3158e8294a88dc7d58f579aee0ba08c19fc8a616e2dsgjesse@chromium.org} 3168e8294a88dc7d58f579aee0ba08c19fc8a616e2dsgjesse@chromium.org 3178e8294a88dc7d58f579aee0ba08c19fc8a616e2dsgjesse@chromium.orgInProcessImporterBridge::~InProcessImporterBridge() {} 318e297f5973a8a9ff0d9945da3f1e2d8a6230c294djkummerow@chromium.org