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