Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(9800)

Unified Diff: chrome/utility/importer/bookmark_html_reader.cc

Issue 1873403003: Read bookmarks from 'NETSCAPE-Bookmark-file's that don't have a beginning <DT> tag. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Reverted to old interface Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/utility/importer/bookmark_html_reader.cc
diff --git a/chrome/utility/importer/bookmark_html_reader.cc b/chrome/utility/importer/bookmark_html_reader.cc
index a9edfebcc0e3d2c7c9ab59c5bb28ea0ecae9b9c6..f23183c0723e71dab21ed6eb43ae56946f87ab16 100644
--- a/chrome/utility/importer/bookmark_html_reader.cc
+++ b/chrome/utility/importer/bookmark_html_reader.cc
@@ -91,6 +91,20 @@ void DataURLToFaviconUsage(const GURL& link_url,
namespace bookmark_html_reader {
+static std::string stripDt(const std::string& lineDt) {
+ // Remove "<DT>" if the line starts with "<DT>". This may not occur if
+ // "<DT>" was on the previous line. Liberally accept entries that do not
+ // have an opening "<DT>" at all.
+ std::string line = lineDt;
+ static const char kDtTag[] = "<DT>";
+ if (base::StartsWith(line, kDtTag,
+ base::CompareCase::INSENSITIVE_ASCII)) {
+ line.erase(0, arraysize(kDtTag) - 1);
+ base::TrimString(line, " ", &line);
+ }
+ return line;
+}
+
void ImportBookmarksFile(
const base::Callback<bool(void)>& cancellation_callback,
const base::Callback<bool(const GURL&)>& valid_url_callback,
@@ -298,16 +312,18 @@ bool ParseCharsetFromLine(const std::string& line, std::string* charset) {
return false;
}
-bool ParseFolderNameFromLine(const std::string& line,
+bool ParseFolderNameFromLine(const std::string& lineDt,
const std::string& charset,
base::string16* folder_name,
bool* is_toolbar_folder,
base::Time* add_date) {
- const char kFolderOpen[] = "<DT><H3";
+ const char kFolderOpen[] = "<H3";
const char kFolderClose[] = "</H3>";
const char kToolbarFolderAttribute[] = "PERSONAL_TOOLBAR_FOLDER";
const char kAddDateAttribute[] = "ADD_DATE";
+ std::string line = stripDt(lineDt);
+
if (!base::StartsWith(line, kFolderOpen, base::CompareCase::SENSITIVE))
return false;
@@ -343,7 +359,7 @@ bool ParseFolderNameFromLine(const std::string& line,
return true;
}
-bool ParseBookmarkFromLine(const std::string& line,
+bool ParseBookmarkFromLine(const std::string& lineDt,
const std::string& charset,
base::string16* title,
GURL* url,
@@ -351,7 +367,7 @@ bool ParseBookmarkFromLine(const std::string& line,
base::string16* shortcut,
base::Time* add_date,
base::string16* post_data) {
- const char kItemOpen[] = "<DT><A";
+ const char kItemOpen[] = "<A";
const char kItemClose[] = "</A>";
const char kFeedURLAttribute[] = "FEEDURL";
const char kHrefAttribute[] = "HREF";
@@ -360,6 +376,7 @@ bool ParseBookmarkFromLine(const std::string& line,
const char kAddDateAttribute[] = "ADD_DATE";
const char kPostDataAttribute[] = "POST_DATA";
+ std::string line = stripDt(lineDt);
title->clear();
*url = GURL();
*favicon = GURL();
@@ -430,15 +447,16 @@ bool ParseBookmarkFromLine(const std::string& line,
return true;
}
-bool ParseMinimumBookmarkFromLine(const std::string& line,
+bool ParseMinimumBookmarkFromLine(const std::string& lineDt,
const std::string& charset,
base::string16* title,
GURL* url) {
- const char kItemOpen[] = "<DT><A";
+ const char kItemOpen[] = "<A";
const char kItemClose[] = "</";
const char kHrefAttributeUpper[] = "HREF";
const char kHrefAttributeLower[] = "href";
+ std::string line = stripDt(lineDt);
title->clear();
*url = GURL();
« no previous file with comments | « chrome/test/data/bookmark_html_reader/redditsaver.html ('k') | chrome/utility/importer/bookmark_html_reader_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698