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_IMPORTER_BOOKMARK_HTML_READER_H_ | |
6 #define CHROME_BROWSER_IMPORTER_BOOKMARK_HTML_READER_H_ | |
7 | |
8 #include <string> | |
9 #include <vector> | |
10 | |
11 #include "base/callback_forward.h" | |
12 #include "base/strings/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 a null callback 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 a null | |
33 // callback, all 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 const base::Callback<bool(void)>& cancellation_callback, | |
44 const 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_IMPORTER_BOOKMARK_HTML_READER_H_ | |
OLD | NEW |