1// Copyright (c) 2012 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_COMMON_IMPORTER_IMPORTER_BRIDGE_H_
6#define CHROME_COMMON_IMPORTER_IMPORTER_BRIDGE_H_
7
8#include <string>
9#include <vector>
10
11#include "base/basictypes.h"
12#include "base/memory/ref_counted.h"
13#include "base/strings/string16.h"
14#include "build/build_config.h"
15#include "chrome/common/importer/importer_data_types.h"
16#include "chrome/common/importer/importer_url_row.h"
17
18class GURL;
19struct ImportedBookmarkEntry;
20struct ImportedFaviconUsage;
21
22namespace importer {
23#if defined(OS_WIN)
24struct ImporterIE7PasswordInfo;
25#endif
26struct ImporterURlRow;
27struct URLKeywordInfo;
28}
29
30namespace content {
31struct PasswordForm;
32}
33
34class ImporterBridge : public base::RefCountedThreadSafe<ImporterBridge> {
35 public:
36  ImporterBridge();
37
38  virtual void AddBookmarks(
39      const std::vector<ImportedBookmarkEntry>& bookmarks,
40      const string16& first_folder_name) = 0;
41
42  virtual void AddHomePage(const GURL& home_page) = 0;
43
44#if defined(OS_WIN)
45  virtual void AddIE7PasswordInfo(
46      const importer::ImporterIE7PasswordInfo& password_info) = 0;
47#endif
48
49  virtual void SetFavicons(
50      const std::vector<ImportedFaviconUsage>& favicons) = 0;
51
52  virtual void SetHistoryItems(const std::vector<ImporterURLRow>& rows,
53                               importer::VisitSource visit_source) = 0;
54
55  virtual void SetKeywords(
56      const std::vector<importer::URLKeywordInfo>& url_keywords,
57      bool unique_on_host_and_path) = 0;
58
59  // The search_engine_data vector contains XML data retrieved from the Firefox
60  // profile and its sqlite db.
61  virtual void SetFirefoxSearchEnginesXMLData(
62      const std::vector<std::string>& search_engine_data) = 0;
63
64  virtual void SetPasswordForm(const content::PasswordForm& form) = 0;
65
66  // Notifies the coordinator that the import operation has begun.
67  virtual void NotifyStarted() = 0;
68
69  // Notifies the coordinator that the collection of data for the specified
70  // item has begun.
71  virtual void NotifyItemStarted(importer::ImportItem item) = 0;
72
73  // Notifies the coordinator that the collection of data for the specified
74  // item has completed.
75  virtual void NotifyItemEnded(importer::ImportItem item) = 0;
76
77  // Notifies the coordinator that the entire import operation has completed.
78  virtual void NotifyEnded() = 0;
79
80  // For InProcessImporters this calls l10n_util. For ExternalProcessImporters
81  // this calls the set of strings we've ported over to the external process.
82  // It's good to avoid having to create a separate ResourceBundle for the
83  // external import process, since the importer only needs a few strings.
84  virtual string16 GetLocalizedString(int message_id) = 0;
85
86 protected:
87  friend class base::RefCountedThreadSafe<ImporterBridge>;
88
89  virtual ~ImporterBridge();
90
91  DISALLOW_COPY_AND_ASSIGN(ImporterBridge);
92};
93
94#endif  // CHROME_COMMON_IMPORTER_IMPORTER_BRIDGE_H_
95