Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(670)

Unified Diff: chrome/browser/importer/external_process_importer_client.cc

Issue 2470283002: Convert profile import IPCs to Mojo (Closed)
Patch Set: Address review comments Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/importer/external_process_importer_client.cc
diff --git a/chrome/browser/importer/external_process_importer_client.cc b/chrome/browser/importer/external_process_importer_client.cc
index 325691bf5f862668efe04109905bbbc81a0a07cc..1c95a28156d50aa97086d6cf97b43b82e3741a7d 100644
--- a/chrome/browser/importer/external_process_importer_client.cc
+++ b/chrome/browser/importer/external_process_importer_client.cc
@@ -4,6 +4,8 @@
#include "chrome/browser/importer/external_process_importer_client.h"
+#include <utility>
+
#include "base/bind.h"
#include "base/strings/string_number_conversions.h"
#include "build/build_config.h"
@@ -12,11 +14,11 @@
#include "chrome/browser/importer/in_process_importer_bridge.h"
#include "chrome/common/importer/firefox_importer_utils.h"
#include "chrome/common/importer/imported_bookmark_entry.h"
-#include "chrome/common/importer/profile_import_process_messages.h"
#include "chrome/grit/generated_resources.h"
#include "components/strings/grit/components_strings.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/utility_process_host.h"
+#include "services/service_manager/public/cpp/interface_provider.h"
#include "ui/base/l10n/l10n_util.h"
using content::BrowserThread;
@@ -34,19 +36,52 @@ ExternalProcessImporterClient::ExternalProcessImporterClient(
source_profile_(source_profile),
items_(items),
bridge_(bridge),
- cancelled_(false) {
+ cancelled_(false),
+ binding_(this) {
process_importer_host_->NotifyImportStarted();
}
void ExternalProcessImporterClient::Start() {
AddRef(); // balanced in Cleanup.
+
+ chrome::mojom::ProfileImportRequest request =
+ mojo::GetProxy(&profile_import_);
+
BrowserThread::ID thread_id;
CHECK(BrowserThread::GetCurrentThreadIdentifier(&thread_id));
BrowserThread::PostTask(
BrowserThread::IO, FROM_HERE,
- base::Bind(&ExternalProcessImporterClient::StartProcessOnIOThread,
- this,
- thread_id));
+ base::Bind(&ExternalProcessImporterClient::StartProcessOnIOThread, this,
+ thread_id, base::Passed(&request)));
gab 2016/11/08 13:34:24 Using base::Passed() on a pointer to a local varia
tibell 2016/11/09 23:08:41 Done.
+
+ // Dictionary of all localized strings that could be needed by the importer
+ // in the external process.
+ base::DictionaryValue localized_strings;
+ localized_strings.SetString(base::IntToString(IDS_BOOKMARK_GROUP),
+ l10n_util::GetStringUTF8(IDS_BOOKMARK_GROUP));
+ localized_strings.SetString(
+ base::IntToString(IDS_BOOKMARK_GROUP_FROM_FIREFOX),
+ l10n_util::GetStringUTF8(IDS_BOOKMARK_GROUP_FROM_FIREFOX));
+ localized_strings.SetString(
+ base::IntToString(IDS_BOOKMARK_GROUP_FROM_SAFARI),
+ l10n_util::GetStringUTF8(IDS_BOOKMARK_GROUP_FROM_SAFARI));
+ localized_strings.SetString(
+ base::IntToString(IDS_IMPORT_FROM_FIREFOX),
+ l10n_util::GetStringUTF8(IDS_IMPORT_FROM_FIREFOX));
+ localized_strings.SetString(
+ base::IntToString(IDS_IMPORT_FROM_ICEWEASEL),
+ l10n_util::GetStringUTF8(IDS_IMPORT_FROM_ICEWEASEL));
+ localized_strings.SetString(base::IntToString(IDS_IMPORT_FROM_SAFARI),
+ l10n_util::GetStringUTF8(IDS_IMPORT_FROM_SAFARI));
+ localized_strings.SetString(
+ base::IntToString(IDS_BOOKMARK_BAR_FOLDER_NAME),
+ l10n_util::GetStringUTF8(IDS_BOOKMARK_BAR_FOLDER_NAME));
+
+ // If the utility process hasn't started yet the message will queue until it
+ // does.
+ auto observer_ptr = binding_.CreateInterfacePtrAndBind();
+ profile_import_->StartImport(source_profile_, items_, localized_strings,
+ std::move(observer_ptr));
}
void ExternalProcessImporterClient::Cancel() {
@@ -54,11 +89,9 @@ void ExternalProcessImporterClient::Cancel() {
return;
cancelled_ = true;
- BrowserThread::PostTask(
- BrowserThread::IO, FROM_HERE,
- base::Bind(
- &ExternalProcessImporterClient::CancelImportProcessOnIOThread,
- this));
+ if (utility_process_host_.get())
+ profile_import_->CancelImport();
+ CloseMojoHandles();
Release();
}
@@ -75,49 +108,7 @@ void ExternalProcessImporterClient::OnProcessCrashed(int exit_code) {
bool ExternalProcessImporterClient::OnMessageReceived(
const IPC::Message& message) {
- bool handled = true;
- IPC_BEGIN_MESSAGE_MAP(ExternalProcessImporterClient, message)
- // Notification messages about the state of the import process.
- IPC_MESSAGE_HANDLER(ProfileImportProcessHostMsg_Import_Started,
- OnImportStart)
- IPC_MESSAGE_HANDLER(ProfileImportProcessHostMsg_Import_Finished,
- OnImportFinished)
- IPC_MESSAGE_HANDLER(ProfileImportProcessHostMsg_ImportItem_Started,
- OnImportItemStart)
- IPC_MESSAGE_HANDLER(ProfileImportProcessHostMsg_ImportItem_Finished,
- OnImportItemFinished)
- // Data messages containing items to be written to the user profile.
- IPC_MESSAGE_HANDLER(ProfileImportProcessHostMsg_NotifyHistoryImportStart,
- OnHistoryImportStart)
- IPC_MESSAGE_HANDLER(ProfileImportProcessHostMsg_NotifyHistoryImportGroup,
- OnHistoryImportGroup)
- IPC_MESSAGE_HANDLER(ProfileImportProcessHostMsg_NotifyHomePageImportReady,
- OnHomePageImportReady)
- IPC_MESSAGE_HANDLER(ProfileImportProcessHostMsg_NotifyBookmarksImportStart,
- OnBookmarksImportStart)
- IPC_MESSAGE_HANDLER(ProfileImportProcessHostMsg_NotifyBookmarksImportGroup,
- OnBookmarksImportGroup)
- IPC_MESSAGE_HANDLER(ProfileImportProcessHostMsg_NotifyFaviconsImportStart,
- OnFaviconsImportStart)
- IPC_MESSAGE_HANDLER(ProfileImportProcessHostMsg_NotifyFaviconsImportGroup,
- OnFaviconsImportGroup)
- IPC_MESSAGE_HANDLER(ProfileImportProcessHostMsg_NotifyPasswordFormReady,
- OnPasswordFormImportReady)
- IPC_MESSAGE_HANDLER(ProfileImportProcessHostMsg_NotifyKeywordsReady,
- OnKeywordsImportReady)
- IPC_MESSAGE_HANDLER(ProfileImportProcessHostMsg_NotifyFirefoxSearchEngData,
- OnFirefoxSearchEngineDataReceived)
- IPC_MESSAGE_HANDLER(ProfileImportProcessHostMsg_AutofillFormDataImportStart,
- OnAutofillFormDataImportStart)
- IPC_MESSAGE_HANDLER(ProfileImportProcessHostMsg_AutofillFormDataImportGroup,
- OnAutofillFormDataImportGroup)
-#if defined(OS_WIN)
- IPC_MESSAGE_HANDLER(ProfileImportProcessHostMsg_NotifyIE7PasswordInfo,
- OnIE7PasswordReceived)
-#endif
- IPC_MESSAGE_UNHANDLED(handled = false)
- IPC_END_MESSAGE_MAP()
- return handled;
+ return false;
}
void ExternalProcessImporterClient::OnImportStart() {
@@ -137,29 +128,25 @@ void ExternalProcessImporterClient::OnImportFinished(
Cleanup();
}
-void ExternalProcessImporterClient::OnImportItemStart(int item_data) {
+void ExternalProcessImporterClient::OnImportItemStart(
+ importer::ImportItem import_item) {
if (cancelled_)
return;
- bridge_->NotifyItemStarted(static_cast<importer::ImportItem>(item_data));
+ bridge_->NotifyItemStarted(import_item);
}
-void ExternalProcessImporterClient::OnImportItemFinished(int item_data) {
+void ExternalProcessImporterClient::OnImportItemFinished(
+ importer::ImportItem import_item) {
if (cancelled_)
return;
- importer::ImportItem import_item =
- static_cast<importer::ImportItem>(item_data);
bridge_->NotifyItemEnded(import_item);
- BrowserThread::PostTask(
- BrowserThread::IO, FROM_HERE,
- base::Bind(&ExternalProcessImporterClient::NotifyItemFinishedOnIOThread,
- this,
- import_item));
+ profile_import_->ReportImportItemFinished(import_item);
}
void ExternalProcessImporterClient::OnHistoryImportStart(
- size_t total_history_rows_count) {
+ int total_history_rows_count) {
if (cancelled_)
return;
@@ -190,7 +177,7 @@ void ExternalProcessImporterClient::OnHomePageImportReady(
void ExternalProcessImporterClient::OnBookmarksImportStart(
const base::string16& first_folder_name,
- size_t total_bookmarks_count) {
+ int total_bookmarks_count) {
if (cancelled_)
return;
@@ -213,7 +200,7 @@ void ExternalProcessImporterClient::OnBookmarksImportGroup(
}
void ExternalProcessImporterClient::OnFaviconsImportStart(
- size_t total_favicons_count) {
+ int total_favicons_count) {
if (cancelled_)
return;
@@ -249,14 +236,14 @@ void ExternalProcessImporterClient::OnKeywordsImportReady(
}
void ExternalProcessImporterClient::OnFirefoxSearchEngineDataReceived(
- const std::vector<std::string> search_engine_data) {
+ const std::vector<std::string>& search_engine_data) {
if (cancelled_)
return;
bridge_->SetFirefoxSearchEnginesXMLData(search_engine_data);
}
void ExternalProcessImporterClient::OnAutofillFormDataImportStart(
- size_t total_autofill_form_data_entry_count) {
+ int total_autofill_form_data_entry_count) {
if (cancelled_)
return;
@@ -277,14 +264,16 @@ void ExternalProcessImporterClient::OnAutofillFormDataImportGroup(
bridge_->SetAutofillFormData(autofill_form_data_);
}
-#if defined(OS_WIN)
void ExternalProcessImporterClient::OnIE7PasswordReceived(
const importer::ImporterIE7PasswordInfo& importer_password_info) {
+#if defined(OS_WIN)
if (cancelled_)
return;
bridge_->AddIE7PasswordInfo(importer_password_info);
-}
+#else
+ NOTREACHED();
#endif
+}
ExternalProcessImporterClient::~ExternalProcessImporterClient() {}
@@ -294,22 +283,13 @@ void ExternalProcessImporterClient::Cleanup() {
if (process_importer_host_.get())
process_importer_host_->NotifyImportEnded();
+ CloseMojoHandles();
Release();
}
-void ExternalProcessImporterClient::CancelImportProcessOnIOThread() {
- if (utility_process_host_.get())
- utility_process_host_->Send(new ProfileImportProcessMsg_CancelImport());
-}
-
-void ExternalProcessImporterClient::NotifyItemFinishedOnIOThread(
- importer::ImportItem import_item) {
- utility_process_host_->Send(
- new ProfileImportProcessMsg_ReportImportItemFinished(import_item));
-}
-
void ExternalProcessImporterClient::StartProcessOnIOThread(
- BrowserThread::ID thread_id) {
+ BrowserThread::ID thread_id,
+ chrome::mojom::ProfileImportRequest request) {
utility_process_host_ =
UtilityProcessHost::Create(
this, BrowserThread::GetTaskRunnerForThread(thread_id).get())
@@ -326,31 +306,13 @@ void ExternalProcessImporterClient::StartProcessOnIOThread(
utility_process_host_->SetEnv(env);
#endif
- // Dictionary of all localized strings that could be needed by the importer
- // in the external process.
- base::DictionaryValue localized_strings;
- localized_strings.SetString(
- base::IntToString(IDS_BOOKMARK_GROUP),
- l10n_util::GetStringUTF8(IDS_BOOKMARK_GROUP));
- localized_strings.SetString(
- base::IntToString(IDS_BOOKMARK_GROUP_FROM_FIREFOX),
- l10n_util::GetStringUTF8(IDS_BOOKMARK_GROUP_FROM_FIREFOX));
- localized_strings.SetString(
- base::IntToString(IDS_BOOKMARK_GROUP_FROM_SAFARI),
- l10n_util::GetStringUTF8(IDS_BOOKMARK_GROUP_FROM_SAFARI));
- localized_strings.SetString(
- base::IntToString(IDS_IMPORT_FROM_FIREFOX),
- l10n_util::GetStringUTF8(IDS_IMPORT_FROM_FIREFOX));
- localized_strings.SetString(
- base::IntToString(IDS_IMPORT_FROM_ICEWEASEL),
- l10n_util::GetStringUTF8(IDS_IMPORT_FROM_ICEWEASEL));
- localized_strings.SetString(
- base::IntToString(IDS_IMPORT_FROM_SAFARI),
- l10n_util::GetStringUTF8(IDS_IMPORT_FROM_SAFARI));
- localized_strings.SetString(
- base::IntToString(IDS_BOOKMARK_BAR_FOLDER_NAME),
- l10n_util::GetStringUTF8(IDS_BOOKMARK_BAR_FOLDER_NAME));
+ utility_process_host_->Start();
+ chrome::mojom::ProfileImportPtr profile_import;
+ utility_process_host_->GetRemoteInterfaces()->GetInterface(
+ std::move(request));
+}
- utility_process_host_->Send(new ProfileImportProcessMsg_StartImport(
- source_profile_, items_, localized_strings));
+void ExternalProcessImporterClient::CloseMojoHandles() {
+ profile_import_.reset();
+ binding_.Close();
}

Powered by Google App Engine
This is Rietveld 408576698