OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/bookmarks/bookmark_html_writer.h" | 5 #include "chrome/browser/bookmarks/bookmark_html_writer.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 | 9 |
10 #include <memory> | 10 #include <memory> |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
106 observer_(observer) { | 106 observer_(observer) { |
107 } | 107 } |
108 | 108 |
109 // Writing bookmarks and favicons data to file. | 109 // Writing bookmarks and favicons data to file. |
110 void DoWrite() { | 110 void DoWrite() { |
111 if (!OpenFile()) | 111 if (!OpenFile()) |
112 return; | 112 return; |
113 | 113 |
114 base::Value* roots = NULL; | 114 base::Value* roots = NULL; |
115 if (!Write(kHeader) || | 115 if (!Write(kHeader) || |
116 bookmarks_->GetType() != base::Value::TYPE_DICTIONARY || | 116 bookmarks_->GetType() != base::Value::Type::DICTIONARY || |
117 !static_cast<base::DictionaryValue*>(bookmarks_.get())->Get( | 117 !static_cast<base::DictionaryValue*>(bookmarks_.get())->Get( |
118 BookmarkCodec::kRootsKey, &roots) || | 118 BookmarkCodec::kRootsKey, &roots) || |
119 roots->GetType() != base::Value::TYPE_DICTIONARY) { | 119 roots->GetType() != base::Value::Type::DICTIONARY) { |
120 NOTREACHED(); | 120 NOTREACHED(); |
121 return; | 121 return; |
122 } | 122 } |
123 | 123 |
124 base::DictionaryValue* roots_d_value = | 124 base::DictionaryValue* roots_d_value = |
125 static_cast<base::DictionaryValue*>(roots); | 125 static_cast<base::DictionaryValue*>(roots); |
126 base::Value* root_folder_value; | 126 base::Value* root_folder_value; |
127 base::Value* other_folder_value = NULL; | 127 base::Value* other_folder_value = NULL; |
128 base::Value* mobile_folder_value = NULL; | 128 base::Value* mobile_folder_value = NULL; |
129 if (!roots_d_value->Get(BookmarkCodec::kRootFolderNameKey, | 129 if (!roots_d_value->Get(BookmarkCodec::kRootFolderNameKey, |
130 &root_folder_value) || | 130 &root_folder_value) || |
131 root_folder_value->GetType() != base::Value::TYPE_DICTIONARY || | 131 root_folder_value->GetType() != base::Value::Type::DICTIONARY || |
132 !roots_d_value->Get(BookmarkCodec::kOtherBookmarkFolderNameKey, | 132 !roots_d_value->Get(BookmarkCodec::kOtherBookmarkFolderNameKey, |
133 &other_folder_value) || | 133 &other_folder_value) || |
134 other_folder_value->GetType() != base::Value::TYPE_DICTIONARY || | 134 other_folder_value->GetType() != base::Value::Type::DICTIONARY || |
135 !roots_d_value->Get(BookmarkCodec::kMobileBookmarkFolderNameKey, | 135 !roots_d_value->Get(BookmarkCodec::kMobileBookmarkFolderNameKey, |
136 &mobile_folder_value) || | 136 &mobile_folder_value) || |
137 mobile_folder_value->GetType() != base::Value::TYPE_DICTIONARY) { | 137 mobile_folder_value->GetType() != base::Value::Type::DICTIONARY) { |
138 NOTREACHED(); | 138 NOTREACHED(); |
139 return; // Invalid type for root folder and/or other folder. | 139 return; // Invalid type for root folder and/or other folder. |
140 } | 140 } |
141 | 141 |
142 IncrementIndent(); | 142 IncrementIndent(); |
143 | 143 |
144 if (!WriteNode(*static_cast<base::DictionaryValue*>(root_folder_value), | 144 if (!WriteNode(*static_cast<base::DictionaryValue*>(root_folder_value), |
145 BookmarkNode::BOOKMARK_BAR) || | 145 BookmarkNode::BOOKMARK_BAR) || |
146 !WriteNode(*static_cast<base::DictionaryValue*>(other_folder_value), | 146 !WriteNode(*static_cast<base::DictionaryValue*>(other_folder_value), |
147 BookmarkNode::OTHER_NODE) || | 147 BookmarkNode::OTHER_NODE) || |
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
299 } | 299 } |
300 return true; | 300 return true; |
301 } | 301 } |
302 | 302 |
303 // Folder. | 303 // Folder. |
304 std::string last_modified_date; | 304 std::string last_modified_date; |
305 const base::Value* child_values = NULL; | 305 const base::Value* child_values = NULL; |
306 if (!value.GetString(BookmarkCodec::kDateModifiedKey, | 306 if (!value.GetString(BookmarkCodec::kDateModifiedKey, |
307 &last_modified_date) || | 307 &last_modified_date) || |
308 !value.Get(BookmarkCodec::kChildrenKey, &child_values) || | 308 !value.Get(BookmarkCodec::kChildrenKey, &child_values) || |
309 child_values->GetType() != base::Value::TYPE_LIST) { | 309 child_values->GetType() != base::Value::Type::LIST) { |
310 NOTREACHED(); | 310 NOTREACHED(); |
311 return false; | 311 return false; |
312 } | 312 } |
313 if (folder_type != BookmarkNode::OTHER_NODE && | 313 if (folder_type != BookmarkNode::OTHER_NODE && |
314 folder_type != BookmarkNode::MOBILE) { | 314 folder_type != BookmarkNode::MOBILE) { |
315 // The other/mobile folder name are not written out. This gives the effect | 315 // The other/mobile folder name are not written out. This gives the effect |
316 // of making the contents of the 'other folder' be a sibling to the | 316 // of making the contents of the 'other folder' be a sibling to the |
317 // bookmark bar folder. | 317 // bookmark bar folder. |
318 if (!WriteIndent() || | 318 if (!WriteIndent() || |
319 !Write(kFolderStart) || | 319 !Write(kFolderStart) || |
(...skipping 19 matching lines...) Expand all Loading... |
339 } | 339 } |
340 IncrementIndent(); | 340 IncrementIndent(); |
341 } | 341 } |
342 | 342 |
343 // Write the children. | 343 // Write the children. |
344 const base::ListValue* children = | 344 const base::ListValue* children = |
345 static_cast<const base::ListValue*>(child_values); | 345 static_cast<const base::ListValue*>(child_values); |
346 for (size_t i = 0; i < children->GetSize(); ++i) { | 346 for (size_t i = 0; i < children->GetSize(); ++i) { |
347 const base::Value* child_value; | 347 const base::Value* child_value; |
348 if (!children->Get(i, &child_value) || | 348 if (!children->Get(i, &child_value) || |
349 child_value->GetType() != base::Value::TYPE_DICTIONARY) { | 349 child_value->GetType() != base::Value::Type::DICTIONARY) { |
350 NOTREACHED(); | 350 NOTREACHED(); |
351 return false; | 351 return false; |
352 } | 352 } |
353 if (!WriteNode(*static_cast<const base::DictionaryValue*>(child_value), | 353 if (!WriteNode(*static_cast<const base::DictionaryValue*>(child_value), |
354 BookmarkNode::FOLDER)) { | 354 BookmarkNode::FOLDER)) { |
355 return false; | 355 return false; |
356 } | 356 } |
357 } | 357 } |
358 if (folder_type != BookmarkNode::OTHER_NODE && | 358 if (folder_type != BookmarkNode::OTHER_NODE && |
359 folder_type != BookmarkNode::MOBILE) { | 359 folder_type != BookmarkNode::MOBILE) { |
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
515 // BookmarkModel isn't thread safe (nor would we want to lock it down | 515 // BookmarkModel isn't thread safe (nor would we want to lock it down |
516 // for the duration of the write), as such we make a copy of the | 516 // for the duration of the write), as such we make a copy of the |
517 // BookmarkModel using BookmarkCodec then write from that. | 517 // BookmarkModel using BookmarkCodec then write from that. |
518 if (!g_fetcher) { | 518 if (!g_fetcher) { |
519 g_fetcher = new BookmarkFaviconFetcher(profile, path, observer); | 519 g_fetcher = new BookmarkFaviconFetcher(profile, path, observer); |
520 g_fetcher->ExportBookmarks(); | 520 g_fetcher->ExportBookmarks(); |
521 } | 521 } |
522 } | 522 } |
523 | 523 |
524 } // namespace bookmark_html_writer | 524 } // namespace bookmark_html_writer |
OLD | NEW |