Chromium Code Reviews| Index: chrome/browser/importer/external_process_importer_client.h |
| diff --git a/chrome/browser/importer/external_process_importer_client.h b/chrome/browser/importer/external_process_importer_client.h |
| index 06553c054ff57927221203f4ab45f90060e56c07..d83188e24e8c6e185a2562bee581b8f9a7266174 100644 |
| --- a/chrome/browser/importer/external_process_importer_client.h |
| +++ b/chrome/browser/importer/external_process_importer_client.h |
| @@ -19,10 +19,12 @@ |
| #include "chrome/common/importer/importer_autofill_form_data_entry.h" |
| #include "chrome/common/importer/importer_data_types.h" |
| #include "chrome/common/importer/importer_url_row.h" |
| +#include "chrome/common/importer/profile_import.mojom.h" |
| #include "components/favicon_base/favicon_usage_data.h" |
| #include "components/history/core/browser/history_types.h" |
| #include "content/public/browser/browser_thread.h" |
| #include "content/public/browser/utility_process_host_client.h" |
| +#include "mojo/public/cpp/bindings/binding.h" |
| class ExternalProcessImporterHost; |
| struct ImportedBookmarkEntry; |
| @@ -47,7 +49,9 @@ struct SearchEngineInfo; |
| // This class is the client for the out of process profile importing. It |
| // collects notifications from this process host and feeds data back to the |
| // importer host, who actually does the writing. |
| -class ExternalProcessImporterClient : public content::UtilityProcessHostClient { |
| +class ExternalProcessImporterClient |
| + : public content::UtilityProcessHostClient, |
| + public chrome::mojom::ProfileImportObserver { |
| public: |
| ExternalProcessImporterClient( |
| base::WeakPtr<ExternalProcessImporterHost> importer_host, |
| @@ -65,37 +69,36 @@ class ExternalProcessImporterClient : public content::UtilityProcessHostClient { |
| void OnProcessCrashed(int exit_code) override; |
| bool OnMessageReceived(const IPC::Message& message) override; |
| - // Message handlers |
| - void OnImportStart(); |
| - void OnImportFinished(bool succeeded, const std::string& error_msg); |
| - void OnImportItemStart(int item); |
| - void OnImportItemFinished(int item); |
| - void OnHistoryImportStart(size_t total_history_rows_count); |
| + // chrome::mojom::ProfileImportObserver: |
| + void OnImportStart() override; |
| + void OnImportFinished(bool succeeded, const std::string& error_msg) override; |
| + void OnImportItemStart(importer::ImportItem item) override; |
| + void OnImportItemFinished(importer::ImportItem item) override; |
| + void OnHistoryImportStart(int total_history_rows_count) override; |
| void OnHistoryImportGroup( |
| const std::vector<ImporterURLRow>& history_rows_group, |
| - int visit_source); |
| - void OnHomePageImportReady(const GURL& home_page); |
| + int visit_source) override; |
| + void OnHomePageImportReady(const GURL& home_page) override; |
| void OnBookmarksImportStart(const base::string16& first_folder_name, |
| - size_t total_bookmarks_count); |
| + int total_bookmarks_count) override; |
| void OnBookmarksImportGroup( |
| - const std::vector<ImportedBookmarkEntry>& bookmarks_group); |
| - void OnFaviconsImportStart(size_t total_favicons_count); |
| + const std::vector<ImportedBookmarkEntry>& bookmarks_group) override; |
| + void OnFaviconsImportStart(int total_favicons_count) override; |
| void OnFaviconsImportGroup( |
| - const favicon_base::FaviconUsageDataList& favicons_group); |
| - void OnPasswordFormImportReady(const autofill::PasswordForm& form); |
| + const favicon_base::FaviconUsageDataList& favicons_group) override; |
| + void OnPasswordFormImportReady(const autofill::PasswordForm& form) override; |
| void OnKeywordsImportReady( |
| const std::vector<importer::SearchEngineInfo>& search_engines, |
| - bool unique_on_host_and_path); |
| + bool unique_on_host_and_path) override; |
| void OnFirefoxSearchEngineDataReceived( |
| - const std::vector<std::string> search_engine_data); |
| + const std::vector<std::string>& search_engine_data) override; |
| void OnAutofillFormDataImportStart( |
| - size_t total_autofill_form_data_entry_count); |
| - void OnAutofillFormDataImportGroup(const std::vector< |
| - ImporterAutofillFormDataEntry>& autofill_form_data_entry_group); |
| -#if defined(OS_WIN) |
|
gab
2016/11/08 13:34:25
Is this because mojom doesn't have the concept of
tibell
2016/11/09 23:08:41
Correct. This is by design.
|
| + int total_autofill_form_data_entry_count) override; |
| + void OnAutofillFormDataImportGroup( |
| + const std::vector<ImporterAutofillFormDataEntry>& |
| + autofill_form_data_entry_group) override; |
| void OnIE7PasswordReceived( |
| - const importer::ImporterIE7PasswordInfo& importer_password_info); |
| -#endif |
| + const importer::ImporterIE7PasswordInfo& importer_password_info) override; |
| protected: |
| ~ExternalProcessImporterClient() override; |
| @@ -104,14 +107,14 @@ class ExternalProcessImporterClient : public content::UtilityProcessHostClient { |
| // Notifies the importerhost that import has finished, and calls Release(). |
| void Cleanup(); |
| - // Cancel import process on IO thread. |
| - void CancelImportProcessOnIOThread(); |
| - |
| - // Report item completely downloaded on IO thread. |
| - void NotifyItemFinishedOnIOThread(importer::ImportItem import_item); |
| - |
| // Creates a new UtilityProcessHost, which launches the import process. |
| - void StartProcessOnIOThread(content::BrowserThread::ID thread_id); |
| + void StartProcessOnIOThread(content::BrowserThread::ID thread_id, |
| + chrome::mojom::ProfileImportRequest request); |
| + |
| + // The Mojo connections need to be torn down on the same thread that created |
| + // them, but the destructor is not guaranteed to be run on that thread so we |
| + // tear down the connections explicitly. |
| + void CloseMojoHandles(); |
| // These variables store data being collected from the importer until the |
| // entire group has been collected and is ready to be written to the profile. |
| @@ -160,6 +163,12 @@ class ExternalProcessImporterClient : public content::UtilityProcessHostClient { |
| // True if import process has been cancelled. |
| bool cancelled_; |
| + // Used to start and stop the actual importer running in a different process. |
| + chrome::mojom::ProfileImportPtr profile_import_; |
| + |
| + // Used to receive progress updates from the importer. |
| + mojo::Binding<chrome::mojom::ProfileImportObserver> binding_; |
| + |
| DISALLOW_COPY_AND_ASSIGN(ExternalProcessImporterClient); |
| }; |