| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "components/bookmarks/browser/bookmark_codec.h" | 5 #include "components/bookmarks/browser/bookmark_codec.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <algorithm> | 9 #include <algorithm> |
| 10 #include <utility> | 10 #include <utility> |
| (...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 170 const base::DictionaryValue* d_value = nullptr; | 170 const base::DictionaryValue* d_value = nullptr; |
| 171 if (!value.GetAsDictionary(&d_value)) | 171 if (!value.GetAsDictionary(&d_value)) |
| 172 return false; // Unexpected type. | 172 return false; // Unexpected type. |
| 173 | 173 |
| 174 int version; | 174 int version; |
| 175 if (!d_value->GetInteger(kVersionKey, &version) || version != kCurrentVersion) | 175 if (!d_value->GetInteger(kVersionKey, &version) || version != kCurrentVersion) |
| 176 return false; // Unknown version. | 176 return false; // Unknown version. |
| 177 | 177 |
| 178 const base::Value* checksum_value; | 178 const base::Value* checksum_value; |
| 179 if (d_value->Get(kChecksumKey, &checksum_value)) { | 179 if (d_value->Get(kChecksumKey, &checksum_value)) { |
| 180 if (checksum_value->GetType() != base::Value::TYPE_STRING) | 180 if (checksum_value->GetType() != base::Value::Type::STRING) |
| 181 return false; | 181 return false; |
| 182 if (!checksum_value->GetAsString(&stored_checksum_)) | 182 if (!checksum_value->GetAsString(&stored_checksum_)) |
| 183 return false; | 183 return false; |
| 184 } | 184 } |
| 185 | 185 |
| 186 const base::Value* roots; | 186 const base::Value* roots; |
| 187 if (!d_value->Get(kRootsKey, &roots)) | 187 if (!d_value->Get(kRootsKey, &roots)) |
| 188 return false; // No roots. | 188 return false; // No roots. |
| 189 | 189 |
| 190 const base::DictionaryValue* roots_d_value = nullptr; | 190 const base::DictionaryValue* roots_d_value = nullptr; |
| (...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 326 UpdateChecksumWithUrlNode(id_string, title, url_string); | 326 UpdateChecksumWithUrlNode(id_string, title, url_string); |
| 327 } else { | 327 } else { |
| 328 std::string last_modified_date; | 328 std::string last_modified_date; |
| 329 if (!value.GetString(kDateModifiedKey, &last_modified_date)) | 329 if (!value.GetString(kDateModifiedKey, &last_modified_date)) |
| 330 last_modified_date = base::Int64ToString(Time::Now().ToInternalValue()); | 330 last_modified_date = base::Int64ToString(Time::Now().ToInternalValue()); |
| 331 | 331 |
| 332 const base::Value* child_values; | 332 const base::Value* child_values; |
| 333 if (!value.Get(kChildrenKey, &child_values)) | 333 if (!value.Get(kChildrenKey, &child_values)) |
| 334 return false; | 334 return false; |
| 335 | 335 |
| 336 if (child_values->GetType() != base::Value::TYPE_LIST) | 336 if (child_values->GetType() != base::Value::Type::LIST) |
| 337 return false; | 337 return false; |
| 338 | 338 |
| 339 if (!node) { | 339 if (!node) { |
| 340 node = new BookmarkNode(id, GURL()); | 340 node = new BookmarkNode(id, GURL()); |
| 341 } else { | 341 } else { |
| 342 // If a new node is not created, explicitly assign ID to the existing one. | 342 // If a new node is not created, explicitly assign ID to the existing one. |
| 343 node->set_id(id); | 343 node->set_id(id); |
| 344 } | 344 } |
| 345 | 345 |
| 346 node->set_type(BookmarkNode::FOLDER); | 346 node->set_type(BookmarkNode::FOLDER); |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 388 meta_info_map->clear(); | 388 meta_info_map->clear(); |
| 389 | 389 |
| 390 const base::Value* meta_info; | 390 const base::Value* meta_info; |
| 391 if (!value.Get(kMetaInfo, &meta_info)) | 391 if (!value.Get(kMetaInfo, &meta_info)) |
| 392 return true; | 392 return true; |
| 393 | 393 |
| 394 std::unique_ptr<base::Value> deserialized_holder; | 394 std::unique_ptr<base::Value> deserialized_holder; |
| 395 | 395 |
| 396 // Meta info used to be stored as a serialized dictionary, so attempt to | 396 // Meta info used to be stored as a serialized dictionary, so attempt to |
| 397 // parse the value as one. | 397 // parse the value as one. |
| 398 if (meta_info->IsType(base::Value::TYPE_STRING)) { | 398 if (meta_info->IsType(base::Value::Type::STRING)) { |
| 399 std::string meta_info_str; | 399 std::string meta_info_str; |
| 400 meta_info->GetAsString(&meta_info_str); | 400 meta_info->GetAsString(&meta_info_str); |
| 401 JSONStringValueDeserializer deserializer(meta_info_str); | 401 JSONStringValueDeserializer deserializer(meta_info_str); |
| 402 deserialized_holder = deserializer.Deserialize(nullptr, nullptr); | 402 deserialized_holder = deserializer.Deserialize(nullptr, nullptr); |
| 403 if (!deserialized_holder) | 403 if (!deserialized_holder) |
| 404 return false; | 404 return false; |
| 405 meta_info = deserialized_holder.get(); | 405 meta_info = deserialized_holder.get(); |
| 406 } | 406 } |
| 407 // meta_info is now either the kMetaInfo node, or the deserialized node if it | 407 // meta_info is now either the kMetaInfo node, or the deserialized node if it |
| 408 // was stored as a string. Either way it should now be a (possibly nested) | 408 // was stored as a string. Either way it should now be a (possibly nested) |
| (...skipping 17 matching lines...) Expand all Loading... |
| 426 } | 426 } |
| 427 | 427 |
| 428 return true; | 428 return true; |
| 429 } | 429 } |
| 430 | 430 |
| 431 void BookmarkCodec::DecodeMetaInfoHelper( | 431 void BookmarkCodec::DecodeMetaInfoHelper( |
| 432 const base::DictionaryValue& dict, | 432 const base::DictionaryValue& dict, |
| 433 const std::string& prefix, | 433 const std::string& prefix, |
| 434 BookmarkNode::MetaInfoMap* meta_info_map) { | 434 BookmarkNode::MetaInfoMap* meta_info_map) { |
| 435 for (base::DictionaryValue::Iterator it(dict); !it.IsAtEnd(); it.Advance()) { | 435 for (base::DictionaryValue::Iterator it(dict); !it.IsAtEnd(); it.Advance()) { |
| 436 if (it.value().IsType(base::Value::TYPE_DICTIONARY)) { | 436 if (it.value().IsType(base::Value::Type::DICTIONARY)) { |
| 437 const base::DictionaryValue* subdict; | 437 const base::DictionaryValue* subdict; |
| 438 it.value().GetAsDictionary(&subdict); | 438 it.value().GetAsDictionary(&subdict); |
| 439 DecodeMetaInfoHelper(*subdict, prefix + it.key() + ".", meta_info_map); | 439 DecodeMetaInfoHelper(*subdict, prefix + it.key() + ".", meta_info_map); |
| 440 } else if (it.value().IsType(base::Value::TYPE_STRING)) { | 440 } else if (it.value().IsType(base::Value::Type::STRING)) { |
| 441 it.value().GetAsString(&(*meta_info_map)[prefix + it.key()]); | 441 it.value().GetAsString(&(*meta_info_map)[prefix + it.key()]); |
| 442 } | 442 } |
| 443 } | 443 } |
| 444 } | 444 } |
| 445 | 445 |
| 446 void BookmarkCodec::ReassignIDs(BookmarkNode* bb_node, | 446 void BookmarkCodec::ReassignIDs(BookmarkNode* bb_node, |
| 447 BookmarkNode* other_node, | 447 BookmarkNode* other_node, |
| 448 BookmarkNode* mobile_node) { | 448 BookmarkNode* mobile_node) { |
| 449 maximum_id_ = 0; | 449 maximum_id_ = 0; |
| 450 ReassignIDsHelper(bb_node); | 450 ReassignIDsHelper(bb_node); |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 492 base::MD5Init(&md5_context_); | 492 base::MD5Init(&md5_context_); |
| 493 } | 493 } |
| 494 | 494 |
| 495 void BookmarkCodec::FinalizeChecksum() { | 495 void BookmarkCodec::FinalizeChecksum() { |
| 496 base::MD5Digest digest; | 496 base::MD5Digest digest; |
| 497 base::MD5Final(&digest, &md5_context_); | 497 base::MD5Final(&digest, &md5_context_); |
| 498 computed_checksum_ = base::MD5DigestToBase16(digest); | 498 computed_checksum_ = base::MD5DigestToBase16(digest); |
| 499 } | 499 } |
| 500 | 500 |
| 501 } // namespace bookmarks | 501 } // namespace bookmarks |
| OLD | NEW |