| 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
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..0cb54844e9f37221a1878273ee83137120ca784c
|
| --- /dev/null
|
| +++ b/chrome/browser/importer/external_process_importer_client.h
|
| @@ -0,0 +1,164 @@
|
| +// Copyright (c) 2011 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#ifndef CHROME_BROWSER_IMPORTER_EXTERNAL_PROCESS_IMPORTER_CLIENT_H_
|
| +#define CHROME_BROWSER_IMPORTER_EXTERNAL_PROCESS_IMPORTER_CLIENT_H_
|
| +#pragma once
|
| +
|
| +#include <string>
|
| +#include <vector>
|
| +
|
| +#include "base/basictypes.h"
|
| +#include "base/compiler_specific.h"
|
| +#include "chrome/browser/importer/profile_writer.h"
|
| +#include "chrome/browser/profile_import_process_host.h"
|
| +
|
| +class ExternalProcessImporterHost;
|
| +class InProcessImporterBridge;
|
| +
|
| +namespace history {
|
| +class URLRow;
|
| +struct ImportedFavIconUsage;
|
| +}
|
| +
|
| +namespace importer {
|
| +struct ProfileInfo;
|
| +}
|
| +
|
| +// This class is the client for the ProfileImportProcessHost. It collects
|
| +// notifications from this process host and feeds data back to the importer
|
| +// host, who actually does the writing.
|
| +class ExternalProcessImporterClient
|
| + : public ProfileImportProcessHost::ImportProcessClient {
|
| + public:
|
| + ExternalProcessImporterClient(ExternalProcessImporterHost* importer_host,
|
| + const importer::ProfileInfo& profile_info,
|
| + uint16 items,
|
| + InProcessImporterBridge* bridge,
|
| + bool import_to_bookmark_bar);
|
| + virtual ~ExternalProcessImporterClient();
|
| +
|
| + // Cancel import process on IO thread.
|
| + void CancelImportProcessOnIOThread();
|
| +
|
| + // Report item completely downloaded on IO thread.
|
| + void NotifyItemFinishedOnIOThread(importer::ImportItem import_item);
|
| +
|
| + // Notifies the importerhost that import has finished, and calls Release().
|
| + void Cleanup();
|
| +
|
| + // Launches the task to start the external process.
|
| + virtual void Start();
|
| +
|
| + // Creates a new ProfileImportProcessHost, which launches the import process.
|
| + virtual void StartProcessOnIOThread(ResourceDispatcherHost* rdh,
|
| + BrowserThread::ID thread_id);
|
| +
|
| + // Called by the ExternalProcessImporterHost on import cancel.
|
| + virtual void Cancel();
|
| +
|
| + // Begin ProfileImportProcessHost::ImportProcessClient implementation.
|
| + virtual void OnProcessCrashed(int exit_status) OVERRIDE;
|
| + virtual void OnImportStart() OVERRIDE;
|
| + virtual void OnImportFinished(bool succeeded, std::string error_msg) OVERRIDE;
|
| + virtual void OnImportItemStart(int item) OVERRIDE;
|
| + virtual void OnImportItemFinished(int item) OVERRIDE;
|
| +
|
| + // Called on first message received when importing history; gives total
|
| + // number of rows to be imported.
|
| + virtual void OnHistoryImportStart(size_t total_history_rows_count) OVERRIDE;
|
| +
|
| + // Called when a group of URLRows has been received.
|
| + // The source is passed with history::VisitSource type.
|
| + virtual void OnHistoryImportGroup(
|
| + const std::vector<history::URLRow> &history_rows_group,
|
| + int visit_source) OVERRIDE;
|
| +
|
| + // Called when the home page has been received.
|
| + virtual void OnHomePageImportReady(const GURL& home_page) OVERRIDE;
|
| +
|
| + // First message received when importing bookmarks.
|
| + // |first_folder_name| can be NULL.
|
| + // |options| is described in ProfileWriter::BookmarkOptions.
|
| + // |total_bookmarks_count| is the total number of bookmarks to be imported.
|
| + virtual void OnBookmarksImportStart(const std::wstring first_folder_name,
|
| + int options,
|
| + size_t total_bookmarks_count) OVERRIDE;
|
| +
|
| + // Called when a group of bookmarks has been received.
|
| + virtual void OnBookmarksImportGroup(
|
| + const std::vector<ProfileWriter::BookmarkEntry>& bookmarks_group)
|
| + OVERRIDE;
|
| +
|
| + // First message received when importing favicons. |total_fav_icons_size|
|
| + // gives the total number of fav icons to be imported.
|
| + virtual void OnFavIconsImportStart(size_t total_fav_icons_count) OVERRIDE;
|
| +
|
| + // Called when a group of favicons has been received.
|
| + virtual void OnFavIconsImportGroup(
|
| + const std::vector<history::ImportedFavIconUsage>& fav_icons_group)
|
| + OVERRIDE;
|
| +
|
| + // Called when the passwordform has been received.
|
| + virtual void OnPasswordFormImportReady(
|
| + const webkit_glue::PasswordForm& form) OVERRIDE;
|
| +
|
| + // Called when search engines have been received.
|
| + virtual void OnKeywordsImportReady(
|
| + const std::vector<TemplateURL>& template_urls,
|
| + int default_keyword_index,
|
| + bool unique_on_host_and_path) OVERRIDE;
|
| +
|
| + // End ProfileImportProcessHost::ImportProcessClient implementation.
|
| +
|
| + private:
|
| + // 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.
|
| + std::vector<history::URLRow> history_rows_;
|
| + std::vector<ProfileWriter::BookmarkEntry> bookmarks_;
|
| + std::vector<history::ImportedFavIconUsage> fav_icons_;
|
| +
|
| + // Usually some variation on IDS_BOOKMARK_GROUP_...; the name of the folder
|
| + // under which imported bookmarks will be placed.
|
| + std::wstring bookmarks_first_folder_name_;
|
| +
|
| + // Determines how bookmarks should be added (ProfileWriter::BookmarkOptions).
|
| + int bookmarks_options_;
|
| +
|
| + // Total number of bookmarks to import.
|
| + size_t total_bookmarks_count_;
|
| +
|
| + // Total number of history items to import.
|
| + size_t total_history_rows_count_;
|
| +
|
| + // Total number of fav icons to import.
|
| + size_t total_fav_icons_count_;
|
| +
|
| + // Notifications received from the ProfileImportProcessHost are passed back
|
| + // to process_importer_host_, which calls the ProfileWriter to record the
|
| + // import data. When the import process is done, process_importer_host_
|
| + // deletes itself.
|
| + ExternalProcessImporterHost* process_importer_host_;
|
| +
|
| + // Handles sending messages to the external process. Deletes itself when
|
| + // the external process dies (see ChildProcessHost::OnChildDied).
|
| + ProfileImportProcessHost* profile_import_process_host_;
|
| +
|
| + // Data to be passed from the importer host to the external importer.
|
| + const importer::ProfileInfo& profile_info_;
|
| + uint16 items_;
|
| + bool import_to_bookmark_bar_;
|
| +
|
| + // Takes import data coming over IPC and delivers it to be written by the
|
| + // ProfileWriter. Released by ExternalProcessImporterClient in its
|
| + // destructor.
|
| + InProcessImporterBridge* bridge_;
|
| +
|
| + // True if import process has been cancelled.
|
| + bool cancelled_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(ExternalProcessImporterClient);
|
| +};
|
| +
|
| +#endif // CHROME_BROWSER_IMPORTER_EXTERNAL_PROCESS_IMPORTER_CLIENT_H_
|
|
|