| OLD | NEW |
| (Empty) |
| 1 // Copyright (c) 2006-2008 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_FIREFOX2_IMPORTER_H_ | |
| 6 #define CHROME_BROWSER_FIREFOX2_IMPORTER_H_ | |
| 7 | |
| 8 #include "chrome/browser/importer.h" | |
| 9 | |
| 10 class TemplateURL; | |
| 11 | |
| 12 // Importer for Mozilla Firefox 2. | |
| 13 class Firefox2Importer : public Importer { | |
| 14 public: | |
| 15 Firefox2Importer(); | |
| 16 virtual ~Firefox2Importer(); | |
| 17 | |
| 18 // Importer methods. | |
| 19 virtual void StartImport(ProfileInfo profile_info, | |
| 20 uint16 items, | |
| 21 ProfileWriter* writer, | |
| 22 ImporterHost* host); | |
| 23 | |
| 24 // Loads the default bookmarks in the Firefox installed at |firefox_app_path|, | |
| 25 // and stores their locations in |urls|. | |
| 26 static void LoadDefaultBookmarks(const std::wstring& firefox_app_path, | |
| 27 std::set<GURL> *urls); | |
| 28 | |
| 29 // Creates a TemplateURL with the |keyword| and |url|. |title| may be empty. | |
| 30 // This function transfers ownership of the created TemplateURL to the caller. | |
| 31 static TemplateURL* CreateTemplateURL(const std::wstring& title, | |
| 32 const std::wstring& keyword, | |
| 33 const GURL& url); | |
| 34 | |
| 35 private: | |
| 36 FRIEND_TEST(FirefoxImporterTest, Firefox2BookmarkParse); | |
| 37 FRIEND_TEST(FirefoxImporterTest, Firefox2CookesParse); | |
| 38 | |
| 39 void ImportBookmarks(); | |
| 40 void ImportPasswords(); | |
| 41 void ImportHistory(); | |
| 42 void ImportSearchEngines(); | |
| 43 // Import the user's home page, unless it is set to default home page as | |
| 44 // defined in browserconfig.properties. | |
| 45 void ImportHomepage(); | |
| 46 | |
| 47 // Fills |files| with the paths to the files containing the search engine | |
| 48 // descriptions. | |
| 49 void GetSearchEnginesXMLFiles(std::vector<std::wstring>* files); | |
| 50 | |
| 51 // Helper methods for parsing bookmark file. | |
| 52 // Firefox 2 saves its bookmarks in a html file. We are interested in the | |
| 53 // bookmarks and folders, and their hierarchy. A folder starts with a | |
| 54 // heading tag, which contains it title. All bookmarks and sub-folders is | |
| 55 // following, and bracketed by a <DL> tag: | |
| 56 // <DT><H3 PERSONAL_TOOLBAR_FOLDER="true" ...>title</H3> | |
| 57 // <DL><p> | |
| 58 // ... container ... | |
| 59 // </DL><p> | |
| 60 // And a bookmark is presented by a <A> tag: | |
| 61 // <DT><A HREF="url" SHORTCUTURL="shortcut" ADD_DATE="11213014"...>name</A> | |
| 62 // Reference: http://kb.mozillazine.org/Bookmarks.html | |
| 63 static bool ParseCharsetFromLine(const std::string& line, | |
| 64 std::string* charset); | |
| 65 static bool ParseFolderNameFromLine(const std::string& line, | |
| 66 const std::string& charset, | |
| 67 std::wstring* folder_name, | |
| 68 bool* is_toolbar_folder); | |
| 69 // See above, this will also put the data: URL of the favicon into *favicon | |
| 70 // if there is a favicon given. |post_data| is set for POST base keywords to | |
| 71 // the contents of the actual POST (with %s for the search term). | |
| 72 static bool ParseBookmarkFromLine(const std::string& line, | |
| 73 const std::string& charset, | |
| 74 std::wstring* title, | |
| 75 GURL* url, | |
| 76 GURL* favicon, | |
| 77 std::wstring* shortcut, | |
| 78 Time* add_date, | |
| 79 std::wstring* post_data); | |
| 80 | |
| 81 // Fetches the given attribute value from the |tag|. Returns true if | |
| 82 // successful, and |value| will contain the value. | |
| 83 static bool GetAttribute(const std::string& tag, | |
| 84 const std::string& attribute, | |
| 85 std::string* value); | |
| 86 | |
| 87 // There are some characters in html file will be escaped: | |
| 88 // '<', '>', '"', '\', '&' | |
| 89 // Un-escapes them if the bookmark name has those characters. | |
| 90 static void HTMLUnescape(std::wstring* text); | |
| 91 | |
| 92 // Fills |xml_files| with the file with an xml extension found under |dir|. | |
| 93 static void FindXMLFilesInDir(const std::wstring& dir, | |
| 94 std::vector<std::wstring>* xml_files); | |
| 95 | |
| 96 // Given the URL of a page and a favicon data URL, adds an appropriate record | |
| 97 // to the given favicon usage vector. Will do nothing if the favicon is not | |
| 98 // valid. | |
| 99 static void DataURLToFaviconUsage( | |
| 100 const GURL& link_url, | |
| 101 const GURL& favicon_data, | |
| 102 std::vector<history::ImportedFavIconUsage>* favicons); | |
| 103 | |
| 104 ProfileWriter* writer_; | |
| 105 std::wstring source_path_; | |
| 106 std::wstring app_path_; | |
| 107 | |
| 108 DISALLOW_EVIL_CONSTRUCTORS(Firefox2Importer); | |
| 109 }; | |
| 110 | |
| 111 #endif // CHROME_BROWSER_FIREFOX2_IMPORTER_H_ | |
| 112 | |
| OLD | NEW |