| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/sync/internal_api/write_node.h" | 5 #include "chrome/browser/sync/internal_api/write_node.h" |
| 6 | 6 |
| 7 #include "base/json/json_writer.h" | 7 #include "base/json/json_writer.h" |
| 8 #include "base/utf_string_conversions.h" | 8 #include "base/utf_string_conversions.h" |
| 9 #include "base/values.h" | 9 #include "base/values.h" |
| 10 #include "chrome/browser/sync/engine/nigori_util.h" | 10 #include "chrome/browser/sync/engine/nigori_util.h" |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 49 const sync_pb::EntitySpecifics& new_specifics, | 49 const sync_pb::EntitySpecifics& new_specifics, |
| 50 syncable::MutableEntry* entry) { | 50 syncable::MutableEntry* entry) { |
| 51 syncable::ModelType type = syncable::GetModelTypeFromSpecifics(new_specifics); | 51 syncable::ModelType type = syncable::GetModelTypeFromSpecifics(new_specifics); |
| 52 DCHECK_GE(type, syncable::FIRST_REAL_MODEL_TYPE); | 52 DCHECK_GE(type, syncable::FIRST_REAL_MODEL_TYPE); |
| 53 syncable::ModelTypeSet encrypted_types = cryptographer->GetEncryptedTypes(); | 53 syncable::ModelTypeSet encrypted_types = cryptographer->GetEncryptedTypes(); |
| 54 | 54 |
| 55 sync_pb::EntitySpecifics generated_specifics; | 55 sync_pb::EntitySpecifics generated_specifics; |
| 56 if (type == syncable::PASSWORDS || // Has own encryption scheme. | 56 if (type == syncable::PASSWORDS || // Has own encryption scheme. |
| 57 type == syncable::NIGORI || // Encrypted separately. | 57 type == syncable::NIGORI || // Encrypted separately. |
| 58 encrypted_types.count(type) == 0 || | 58 encrypted_types.count(type) == 0 || |
| 59 new_specifics.has_encrypted()) { | 59 new_specifics.has_encrypted() || |
| 60 // No encryption required. | 60 !cryptographer->is_initialized()) { |
| 61 // No encryption required or we are unable to encrypt. |
| 61 generated_specifics.CopyFrom(new_specifics); | 62 generated_specifics.CopyFrom(new_specifics); |
| 62 } else { | 63 } else { |
| 63 // Encrypt new_specifics into generated_specifics. | 64 // Encrypt new_specifics into generated_specifics. |
| 64 if (VLOG_IS_ON(2)) { | 65 if (VLOG_IS_ON(2)) { |
| 65 scoped_ptr<DictionaryValue> value(entry->ToValue()); | 66 scoped_ptr<DictionaryValue> value(entry->ToValue()); |
| 66 std::string info; | 67 std::string info; |
| 67 base::JSONWriter::Write(value.get(), true, &info); | 68 base::JSONWriter::Write(value.get(), true, &info); |
| 68 VLOG(2) << "Encrypting specifics of type " | 69 VLOG(2) << "Encrypting specifics of type " |
| 69 << syncable::ModelTypeToString(type) | 70 << syncable::ModelTypeToString(type) |
| 70 << " with content: " | 71 << " with content: " |
| 71 << info; | 72 << info; |
| 72 } | 73 } |
| 73 if (!cryptographer->is_initialized()) | |
| 74 return false; | |
| 75 syncable::AddDefaultExtensionValue(type, &generated_specifics); | 74 syncable::AddDefaultExtensionValue(type, &generated_specifics); |
| 76 if (!cryptographer->Encrypt(new_specifics, | 75 if (!cryptographer->Encrypt(new_specifics, |
| 77 generated_specifics.mutable_encrypted())) { | 76 generated_specifics.mutable_encrypted())) { |
| 78 NOTREACHED() << "Could not encrypt data for node of type " | 77 NOTREACHED() << "Could not encrypt data for node of type " |
| 79 << syncable::ModelTypeToString(type); | 78 << syncable::ModelTypeToString(type); |
| 80 return false; | 79 return false; |
| 81 } | 80 } |
| 82 } | 81 } |
| 83 | 82 |
| 84 const sync_pb::EntitySpecifics& old_specifics = entry->Get(SPECIFICS); | 83 const sync_pb::EntitySpecifics& old_specifics = entry->Get(SPECIFICS); |
| (...skipping 446 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 531 sync_pb::BookmarkSpecifics new_value = GetBookmarkSpecifics(); | 530 sync_pb::BookmarkSpecifics new_value = GetBookmarkSpecifics(); |
| 532 new_value.set_favicon(bytes.empty() ? NULL : &bytes[0], bytes.size()); | 531 new_value.set_favicon(bytes.empty() ? NULL : &bytes[0], bytes.size()); |
| 533 SetBookmarkSpecifics(new_value); | 532 SetBookmarkSpecifics(new_value); |
| 534 } | 533 } |
| 535 | 534 |
| 536 void WriteNode::MarkForSyncing() { | 535 void WriteNode::MarkForSyncing() { |
| 537 syncable::MarkForSyncing(entry_); | 536 syncable::MarkForSyncing(entry_); |
| 538 } | 537 } |
| 539 | 538 |
| 540 } // namespace sync_api | 539 } // namespace sync_api |
| OLD | NEW |