1 // Copyright 2013 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_FIREFOX_IMPORTER_H_ 6 #define CHROME_UTILITY_IMPORTER_FIREFOX_IMPORTER_H_ 7 8 #include <map> 9 #include <set> 10 #include <string> 11 #include <vector> 12 13 #include "base/basictypes.h" 14 #include "base/compiler_specific.h" 15 #include "base/files/file_path.h" 16 #include "chrome/utility/importer/importer.h" 17 18 class GURL; 19 struct ImportedFaviconUsage; 20 21 namespace sql { 22 class Connection; 23 } 24 25 // Importer for Mozilla Firefox 3 and later. 26 // Firefox stores its persistent information in a system called places. 27 // http://wiki.mozilla.org/Places 28 class FirefoxImporter : public Importer { 29 public: 30 FirefoxImporter(); 31 32 // Importer: 33 virtual void StartImport(const importer::SourceProfile& source_profile, 34 uint16 items, 35 ImporterBridge* bridge) OVERRIDE; 36 37 private: 38 typedef std::map<int64, std::set<GURL> > FaviconMap; 39 40 virtual ~FirefoxImporter(); 41 42 void ImportBookmarks(); 43 void ImportPasswords(); 44 void ImportHistory(); 45 void ImportSearchEngines(); 46 // Import the user's home page, unless it is set to default home page as 47 // defined in browserconfig.properties. 48 void ImportHomepage(); 49 void GetSearchEnginesXMLData(std::vector<std::string>* search_engine_data); 50 51 // The struct stores the information about a bookmark item. 52 struct BookmarkItem; 53 typedef std::vector<BookmarkItem*> BookmarkList; 54 55 // Gets the specific IDs of bookmark root node from |db|. 56 void LoadRootNodeID(sql::Connection* db, int* toolbar_folder_id, 57 int* menu_folder_id, int* unsorted_folder_id); 58 59 // Loads all livemark IDs from database |db|. 60 void LoadLivemarkIDs(sql::Connection* db, std::set<int>* livemark); 61 62 // Gets the bookmark folder with given ID, and adds the entry in |list| 63 // if successful. 64 void GetTopBookmarkFolder(sql::Connection* db, 65 int folder_id, 66 BookmarkList* list); 67 68 // Loads all children of the given folder, and appends them to the |list|. 69 void GetWholeBookmarkFolder(sql::Connection* db, BookmarkList* list, 70 size_t position, bool* empty_folder); 71 72 // Loads the favicons given in the map from the database, loads the data, 73 // and converts it into FaviconUsage structures. 74 void LoadFavicons(sql::Connection* db, 75 const FaviconMap& favicon_map, 76 std::vector<ImportedFaviconUsage>* favicons); 77 78 base::FilePath source_path_; 79 base::FilePath app_path_; 80 81 #if defined(OS_POSIX) 82 // Stored because we can only access it from the UI thread. 83 std::string locale_; 84 #endif 85 86 DISALLOW_COPY_AND_ASSIGN(FirefoxImporter); 87 }; 88 89 #endif // CHROME_UTILITY_IMPORTER_FIREFOX_IMPORTER_H_ 90