Home | History | Annotate | Download | only in importer
      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     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_
     88