Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / chrome / utility / importer / ie_importer_win.h
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_UTILITY_IMPORTER_IE_IMPORTER_WIN_H_
6 #define CHROME_UTILITY_IMPORTER_IE_IMPORTER_WIN_H_
7
8 #include <vector>
9
10 #include "base/basictypes.h"
11 #include "base/compiler_specific.h"
12 #include "base/files/file_path.h"
13 #include "base/gtest_prod_util.h"
14 #include "base/strings/string16.h"
15 #include "chrome/utility/importer/importer.h"
16
17 struct ImportedBookmarkEntry;
18 struct ImportedFaviconUsage;
19
20 class IEImporter : public Importer {
21  public:
22   IEImporter();
23
24   // Importer:
25   virtual void StartImport(const importer::SourceProfile& source_profile,
26                            uint16 items,
27                            ImporterBridge* bridge) override;
28
29  private:
30   typedef std::vector<ImportedBookmarkEntry> BookmarkVector;
31
32   // A struct that hosts the information of IE Favorite folder.
33   struct FavoritesInfo {
34     base::FilePath path;
35     base::string16 links_folder;
36   };
37
38   // IE PStore subkey GUID: AutoComplete password & form data.
39   static const GUID kPStoreAutocompleteGUID;
40
41   // A fake GUID for unit test.
42   static const GUID kUnittestGUID;
43
44   FRIEND_TEST_ALL_PREFIXES(ImporterTest, IEImporter);
45
46   virtual ~IEImporter();
47
48   void ImportFavorites();
49
50   // Reads history information from COM interface.
51   void ImportHistory();
52
53   // Import password for IE6 stored in protected storage.
54   void ImportPasswordsIE6();
55
56   // Import password for IE7 and IE8 stored in Storage2.
57   void ImportPasswordsIE7();
58
59   void ImportSearchEngines();
60
61   // Import the homepage setting of IE. Note: IE supports multiple home pages,
62   // whereas Chrome doesn't, so we import only the one defined under the
63   // 'Start Page' registry key. We don't import if the homepage is set to the
64   // machine default.
65   void ImportHomepage();
66
67   // Gets the information of Favorites folder. Returns true if successful.
68   bool GetFavoritesInfo(FavoritesInfo* info);
69
70   // This function will read the files in the Favorites folder, and store
71   // the bookmark items in |bookmarks| and favicon information in |favicons|.
72   void ParseFavoritesFolder(
73       const FavoritesInfo& info,
74       BookmarkVector* bookmarks,
75       std::vector<ImportedFaviconUsage>* favicons);
76
77   // Determines which version of IE is in use.
78   int CurrentIEVersion() const;
79
80   // IE does not have source path. It's used in unit tests only for providing a
81   // fake source.
82   base::FilePath source_path_;
83
84   DISALLOW_COPY_AND_ASSIGN(IEImporter);
85 };
86
87 #endif  // CHROME_UTILITY_IMPORTER_IE_IMPORTER_WIN_H_