| OLD | NEW |
| (Empty) | |
| 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_BROWSER_BOOKMARKS_BOOKMARK_HTML_READER_H_ |
| 6 #define CHROME_BROWSER_BOOKMARKS_BOOKMARK_HTML_READER_H_ |
| 7 |
| 8 #include <string> |
| 9 #include <vector> |
| 10 |
| 11 #include "base/callback_forward.h" |
| 12 #include "base/string16.h" |
| 13 |
| 14 class GURL; |
| 15 struct ImportedBookmarkEntry; |
| 16 struct ImportedFaviconUsage; |
| 17 |
| 18 namespace base { |
| 19 class FilePath; |
| 20 class Time; |
| 21 } |
| 22 |
| 23 namespace bookmark_html_reader { |
| 24 |
| 25 // Imports the bookmarks from the specified file. |
| 26 // |
| 27 // |cancellation_callback| is polled to query if the import should be cancelled; |
| 28 // if it returns |true| at any time the import will be cancelled. If |
| 29 // |cancellation_callback| is NULL the import will run to completion. |
| 30 // |
| 31 // |valid_url_callback| is called to determine if a specified URL is valid for |
| 32 // import; it returns |true| if it is. If |valid_url_callback| is NULL, all |
| 33 // URLs are considered to be valid. |
| 34 // |
| 35 // |file_path| is the path of the file on disk to import. |
| 36 // |
| 37 // |bookmarks| is a pointer to a vector, which is filled with the imported |
| 38 // bookmarks. It may not be NULL. |
| 39 // |
| 40 // |favicons| is a pointer to a vector, which is filled with the favicons of |
| 41 // imported bookmarks. It may be NULL, in which case favicons are not imported. |
| 42 void ImportBookmarksFile( |
| 43 base::Callback<bool(void)>* cancellation_callback, |
| 44 base::Callback<bool(const GURL&)>* valid_url_callback, |
| 45 const base::FilePath& file_path, |
| 46 std::vector<ImportedBookmarkEntry>* bookmarks, |
| 47 std::vector<ImportedFaviconUsage>* favicons); |
| 48 |
| 49 namespace internal { |
| 50 |
| 51 // The file format that BookmarkHTMLReader parses starts with a heading |
| 52 // tag, which contains its title. All bookmarks and sub-folders follow, |
| 53 // bracketed by a <DL> tag: |
| 54 // <DT><H3 PERSONAL_TOOLBAR_FOLDER="true" ...>title</H3> |
| 55 // <DL><p> |
| 56 // ... container ... |
| 57 // </DL><p> |
| 58 // And a bookmark is presented by a <A> tag: |
| 59 // <DT><A HREF="url" SHORTCUTURL="shortcut" ADD_DATE="11213014"...>name</A> |
| 60 // Reference: http://kb.mozillazine.org/Bookmarks.html |
| 61 |
| 62 bool ParseCharsetFromLine(const std::string& line, |
| 63 std::string* charset); |
| 64 bool ParseFolderNameFromLine(const std::string& line, |
| 65 const std::string& charset, |
| 66 base::string16* folder_name, |
| 67 bool* is_toolbar_folder, |
| 68 base::Time* add_date); |
| 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 bool ParseBookmarkFromLine(const std::string& line, |
| 73 const std::string& charset, |
| 74 base::string16* title, |
| 75 GURL* url, |
| 76 GURL* favicon, |
| 77 base::string16* shortcut, |
| 78 base::Time* add_date, |
| 79 base::string16* post_data); |
| 80 // Save bookmarks imported from browsers with Firefox 2 compatible bookmark |
| 81 // systems such as Epiphany. This bookmark format is the same as that of the |
| 82 // basic Firefox 2 bookmark, but it misses additional properties and uses |
| 83 // lower-case tag: |
| 84 // ...<h1>Bookmarks</h1><dl> |
| 85 // <dt><a href="url">name</a></dt> |
| 86 // <dt><a href="url">name</a></dt> |
| 87 // </dl> |
| 88 bool ParseMinimumBookmarkFromLine(const std::string& line, |
| 89 const std::string& charset, |
| 90 base::string16* title, |
| 91 GURL* url); |
| 92 |
| 93 } // namespace internal |
| 94 |
| 95 } // namespace bookmark_html_reader |
| 96 |
| 97 #endif // CHROME_BROWSER_BOOKMARKS_BOOKMARK_HTML_READER_H_ |
| OLD | NEW |