1// Copyright (c) 2011 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef CHROME_BROWSER_IMPORTER_PROFILE_IMPORT_PROCESS_CLIENT_H_
6#define CHROME_BROWSER_IMPORTER_PROFILE_IMPORT_PROCESS_CLIENT_H_
7#pragma once
8
9#include <string>
10#include <vector>
11
12#include "base/basictypes.h"
13#include "base/memory/ref_counted.h"
14#include "chrome/browser/importer/profile_writer.h"
15
16class GURL;
17class TemplateURL;
18
19namespace history {
20class URLRow;
21}
22
23namespace IPC {
24class Message;
25}
26
27namespace webkit_glue {
28struct PasswordForm;
29}
30
31// An interface that must be implemented by consumers of the profile import
32// process in order to get results back from the process host. The
33// ProfileImportProcessHost calls the client's functions on the thread passed to
34// it when it's created.
35class ProfileImportProcessClient :
36    public base::RefCountedThreadSafe<ProfileImportProcessClient> {
37 public:
38  ProfileImportProcessClient();
39
40  // These methods are used by the ProfileImportProcessHost to pass messages
41  // received from the external process back to the ImportProcessClient in
42  // ImporterHost.
43  virtual void OnProcessCrashed(int exit_status);
44  virtual void OnImportStart();
45  virtual void OnImportFinished(bool succeeded, const std::string& error_msg);
46  virtual void OnImportItemStart(int item);
47  virtual void OnImportItemFinished(int item);
48  virtual void OnImportItemFailed(const std::string& error_msg);
49
50  // These methods pass back data to be written to the user's profile from
51  // the external process to the process host client.
52  virtual void OnHistoryImportStart(size_t total_history_rows_count);
53  virtual void OnHistoryImportGroup(
54      const std::vector<history::URLRow>& history_rows_group,
55      int visit_source); // visit_source has history::VisitSource type.
56
57  virtual void OnHomePageImportReady(const GURL& home_page);
58
59  virtual void OnBookmarksImportStart(
60      const string16& first_folder_name,
61      int options,
62      size_t total_bookmarks_count);
63  virtual void OnBookmarksImportGroup(
64      const std::vector<ProfileWriter::BookmarkEntry>& bookmarks);
65
66  virtual void OnFaviconsImportStart(size_t total_favicons_count);
67  virtual void OnFaviconsImportGroup(
68      const std::vector<history::ImportedFaviconUsage>& favicons_group);
69
70  virtual void OnPasswordFormImportReady(
71      const webkit_glue::PasswordForm& form);
72
73  virtual void OnKeywordsImportReady(
74      const std::vector<TemplateURL>& template_urls,
75      int default_keyword_index,
76      bool unique_on_host_and_path);
77
78  virtual bool OnMessageReceived(const IPC::Message& message);
79
80 protected:
81  friend class base::RefCountedThreadSafe<ProfileImportProcessClient>;
82
83  virtual ~ProfileImportProcessClient();
84
85 private:
86  friend class ProfileImportProcessHost;
87
88  DISALLOW_COPY_AND_ASSIGN(ProfileImportProcessClient);
89};
90
91#endif  // CHROME_BROWSER_IMPORTER_PROFILE_IMPORT_PROCESS_CLIENT_H_
92