1ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved. 2ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Use of this source code is governed by a BSD-style license that can be 3ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// found in the LICENSE file. 4ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 5ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/browser/importer/external_process_importer_client.h" 6ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 7ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/browser/browser_process.h" 8ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/browser/importer/external_process_importer_host.h" 9ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/browser/importer/importer_host.h" 10ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/browser/importer/in_process_importer_bridge.h" 11ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/browser/importer/profile_import_process_host.h" 12ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/browser/search_engines/template_url.h" 13ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/browser/search_engines/template_url_model.h" 14ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "content/browser/browser_thread.h" 15ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "content/browser/renderer_host/resource_dispatcher_host.h" 16ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 17ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian MonsenExternalProcessImporterClient::ExternalProcessImporterClient( 18ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen ExternalProcessImporterHost* importer_host, 19ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen const importer::SourceProfile& source_profile, 20ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen uint16 items, 21ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen InProcessImporterBridge* bridge, 22ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen bool import_to_bookmark_bar) 23ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen : bookmarks_options_(0), 24ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen total_bookmarks_count_(0), 25ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen total_history_rows_count_(0), 26ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen total_favicons_count_(0), 27ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen process_importer_host_(importer_host), 28ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen profile_import_process_host_(NULL), 29ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen source_profile_(source_profile), 30ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen items_(items), 31ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen import_to_bookmark_bar_(import_to_bookmark_bar), 32ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen bridge_(bridge), 33ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen cancelled_(false) { 34ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen bridge_->AddRef(); 35ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen process_importer_host_->NotifyImportStarted(); 36ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} 37ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 38ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian MonsenExternalProcessImporterClient::~ExternalProcessImporterClient() { 39ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen bridge_->Release(); 40ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} 41ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 42ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenvoid ExternalProcessImporterClient::Start() { 43ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen AddRef(); // balanced in Cleanup. 44ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen BrowserThread::ID thread_id; 45ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen CHECK(BrowserThread::GetCurrentThreadIdentifier(&thread_id)); 46ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen BrowserThread::PostTask( 47ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen BrowserThread::IO, FROM_HERE, 48ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen NewRunnableMethod( 49ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen this, 50ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen &ExternalProcessImporterClient::StartImportProcessOnIOThread, 51ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen thread_id)); 52ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} 53ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 54ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenvoid ExternalProcessImporterClient::Cancel() { 55ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (cancelled_) 56ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen return; 57ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 58ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen cancelled_ = true; 59ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (profile_import_process_host_) { 60ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen BrowserThread::PostTask( 61ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen BrowserThread::IO, FROM_HERE, 62ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen NewRunnableMethod(this, 63ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen &ExternalProcessImporterClient::CancelImportProcessOnIOThread)); 64ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen } 65ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen Release(); 66ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} 67ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 68ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenvoid ExternalProcessImporterClient::Cleanup() { 69ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (cancelled_) 70ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen return; 71ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 72ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (process_importer_host_) 73ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen process_importer_host_->NotifyImportEnded(); 74ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen Release(); 75ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} 76ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 77ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenvoid ExternalProcessImporterClient::StartImportProcessOnIOThread( 78ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen BrowserThread::ID thread_id) { 79ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen profile_import_process_host_ = 80ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen new ProfileImportProcessHost(this, thread_id); 81ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen profile_import_process_host_->StartProfileImportProcess( 82ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen source_profile_, items_, import_to_bookmark_bar_); 83ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} 84ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 85ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenvoid ExternalProcessImporterClient::CancelImportProcessOnIOThread() { 86ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen profile_import_process_host_->CancelProfileImportProcess(); 87ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} 88ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 89ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenvoid ExternalProcessImporterClient::NotifyItemFinishedOnIOThread( 90ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen importer::ImportItem import_item) { 91ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen profile_import_process_host_->ReportImportItemFinished(import_item); 92ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} 93ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 94ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenvoid ExternalProcessImporterClient::OnProcessCrashed(int exit_code) { 95ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (cancelled_) 96ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen return; 97ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 98ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen process_importer_host_->Cancel(); 99ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} 100ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 101ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenvoid ExternalProcessImporterClient::OnImportStart() { 102ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (cancelled_) 103ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen return; 104ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 105ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen bridge_->NotifyStarted(); 106ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} 107ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 108ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenvoid ExternalProcessImporterClient::OnImportFinished( 109ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen bool succeeded, const std::string& error_msg) { 110ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (cancelled_) 111ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen return; 112ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 113ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (!succeeded) 114ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen LOG(WARNING) << "Import failed. Error: " << error_msg; 115ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen Cleanup(); 116ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} 117ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 118ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenvoid ExternalProcessImporterClient::OnImportItemStart(int item_data) { 119ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (cancelled_) 120ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen return; 121ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 122ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen bridge_->NotifyItemStarted(static_cast<importer::ImportItem>(item_data)); 123ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} 124ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 125ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenvoid ExternalProcessImporterClient::OnImportItemFinished(int item_data) { 126ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (cancelled_) 127ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen return; 128ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 129ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen importer::ImportItem import_item = 130ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen static_cast<importer::ImportItem>(item_data); 131ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen bridge_->NotifyItemEnded(import_item); 132ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen BrowserThread::PostTask( 133ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen BrowserThread::IO, FROM_HERE, 134ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen NewRunnableMethod(this, 135ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen &ExternalProcessImporterClient::NotifyItemFinishedOnIOThread, 136ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen import_item)); 137ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} 138ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 139ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenvoid ExternalProcessImporterClient::OnHistoryImportStart( 140ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen size_t total_history_rows_count) { 141ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (cancelled_) 142ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen return; 143ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 144ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen total_history_rows_count_ = total_history_rows_count; 145ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen history_rows_.reserve(total_history_rows_count); 146ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} 147ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 148ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenvoid ExternalProcessImporterClient::OnHistoryImportGroup( 149ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen const std::vector<history::URLRow>& history_rows_group, 150ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen int visit_source) { 151ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (cancelled_) 152ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen return; 153ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 154ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen history_rows_.insert(history_rows_.end(), history_rows_group.begin(), 155ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen history_rows_group.end()); 156ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (history_rows_.size() == total_history_rows_count_) 157ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen bridge_->SetHistoryItems(history_rows_, 158ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen static_cast<history::VisitSource>(visit_source)); 159ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} 160ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 161ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenvoid ExternalProcessImporterClient::OnHomePageImportReady( 162ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen const GURL& home_page) { 163ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (cancelled_) 164ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen return; 165ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 166ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen bridge_->AddHomePage(home_page); 167ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} 168ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 169ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenvoid ExternalProcessImporterClient::OnBookmarksImportStart( 170ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen const string16& first_folder_name, 171ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen int options, 172ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen size_t total_bookmarks_count) { 173ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (cancelled_) 174ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen return; 175ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 176ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen bookmarks_first_folder_name_ = first_folder_name; 177ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen bookmarks_options_ = options; 178ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen total_bookmarks_count_ = total_bookmarks_count; 179ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen bookmarks_.reserve(total_bookmarks_count); 180ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} 181ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 182ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenvoid ExternalProcessImporterClient::OnBookmarksImportGroup( 183ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen const std::vector<ProfileWriter::BookmarkEntry>& bookmarks_group) { 184ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (cancelled_) 185ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen return; 186ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 187ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // Collect sets of bookmarks from importer process until we have reached 188ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // total_bookmarks_count_: 189ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen bookmarks_.insert(bookmarks_.end(), bookmarks_group.begin(), 190ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen bookmarks_group.end()); 191ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (bookmarks_.size() == total_bookmarks_count_) { 192ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen bridge_->AddBookmarkEntries(bookmarks_, bookmarks_first_folder_name_, 193ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen bookmarks_options_); 194ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen } 195ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} 196ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 197ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenvoid ExternalProcessImporterClient::OnFaviconsImportStart( 198ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen size_t total_favicons_count) { 199ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (cancelled_) 200ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen return; 201ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 202ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen total_favicons_count_ = total_favicons_count; 203ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen favicons_.reserve(total_favicons_count); 204ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} 205ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 206ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenvoid ExternalProcessImporterClient::OnFaviconsImportGroup( 207ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen const std::vector<history::ImportedFaviconUsage>& favicons_group) { 208ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (cancelled_) 209ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen return; 210ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 211ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen favicons_.insert(favicons_.end(), favicons_group.begin(), 212ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen favicons_group.end()); 213ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (favicons_.size() == total_favicons_count_) 214ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen bridge_->SetFavicons(favicons_); 215ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} 216ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 217ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenvoid ExternalProcessImporterClient::OnPasswordFormImportReady( 218ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen const webkit_glue::PasswordForm& form) { 219ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (cancelled_) 220ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen return; 221ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 222ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen bridge_->SetPasswordForm(form); 223ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} 224ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 225ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenvoid ExternalProcessImporterClient::OnKeywordsImportReady( 226ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen const std::vector<TemplateURL>& template_urls, 227ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen int default_keyword_index, bool unique_on_host_and_path) { 228ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen if (cancelled_) 229ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen return; 230ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 231ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen std::vector<TemplateURL*> template_url_vec; 232ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen template_url_vec.reserve(template_urls.size()); 233ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen std::vector<TemplateURL>::const_iterator iter; 234ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen for (iter = template_urls.begin(); 235ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen iter != template_urls.end(); 236ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen ++iter) { 237ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen template_url_vec.push_back(new TemplateURL(*iter)); 238ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen } 239ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen bridge_->SetKeywords(template_url_vec, default_keyword_index, 240ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen unique_on_host_and_path); 241ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} 242