| 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/sync/syncable/directory_unittest.h" | 5 #include "components/sync/syncable/directory_unittest.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <cstdlib> | 9 #include <cstdlib> |
| 10 | 10 |
| (...skipping 1693 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1704 base::PlatformThread::Join(threads[i]); | 1704 base::PlatformThread::Join(threads[i]); |
| 1705 } | 1705 } |
| 1706 } | 1706 } |
| 1707 | 1707 |
| 1708 // Verify that Directory is notifed when a MutableEntry's AttachmentMetadata | 1708 // Verify that Directory is notifed when a MutableEntry's AttachmentMetadata |
| 1709 // changes. | 1709 // changes. |
| 1710 TEST_F(SyncableDirectoryTest, MutableEntry_PutAttachmentMetadata) { | 1710 TEST_F(SyncableDirectoryTest, MutableEntry_PutAttachmentMetadata) { |
| 1711 sync_pb::AttachmentMetadata attachment_metadata; | 1711 sync_pb::AttachmentMetadata attachment_metadata; |
| 1712 sync_pb::AttachmentMetadataRecord* record = attachment_metadata.add_record(); | 1712 sync_pb::AttachmentMetadataRecord* record = attachment_metadata.add_record(); |
| 1713 sync_pb::AttachmentIdProto attachment_id_proto = | 1713 sync_pb::AttachmentIdProto attachment_id_proto = |
| 1714 syncer::CreateAttachmentIdProto(0, 0); | 1714 CreateAttachmentIdProto(0, 0); |
| 1715 *record->mutable_id() = attachment_id_proto; | 1715 *record->mutable_id() = attachment_id_proto; |
| 1716 ASSERT_FALSE(dir()->IsAttachmentLinked(attachment_id_proto)); | 1716 ASSERT_FALSE(dir()->IsAttachmentLinked(attachment_id_proto)); |
| 1717 { | 1717 { |
| 1718 WriteTransaction trans(FROM_HERE, UNITTEST, dir().get()); | 1718 WriteTransaction trans(FROM_HERE, UNITTEST, dir().get()); |
| 1719 | 1719 |
| 1720 // Create an entry with attachment metadata and see that the attachment id | 1720 // Create an entry with attachment metadata and see that the attachment id |
| 1721 // is not linked. | 1721 // is not linked. |
| 1722 MutableEntry entry(&trans, CREATE, PREFERENCES, trans.root_id(), | 1722 MutableEntry entry(&trans, CREATE, PREFERENCES, trans.root_id(), |
| 1723 "some entry"); | 1723 "some entry"); |
| 1724 entry.PutId(TestIdFactory::FromNumber(-1)); | 1724 entry.PutId(TestIdFactory::FromNumber(-1)); |
| (...skipping 23 matching lines...) Expand all Loading... |
| 1748 ASSERT_TRUE(metahandles.empty()); | 1748 ASSERT_TRUE(metahandles.empty()); |
| 1749 } | 1749 } |
| 1750 ASSERT_FALSE(dir()->IsAttachmentLinked(attachment_id_proto)); | 1750 ASSERT_FALSE(dir()->IsAttachmentLinked(attachment_id_proto)); |
| 1751 } | 1751 } |
| 1752 | 1752 |
| 1753 // Verify that UpdateAttachmentId updates attachment_id and is_on_server flag. | 1753 // Verify that UpdateAttachmentId updates attachment_id and is_on_server flag. |
| 1754 TEST_F(SyncableDirectoryTest, MutableEntry_UpdateAttachmentId) { | 1754 TEST_F(SyncableDirectoryTest, MutableEntry_UpdateAttachmentId) { |
| 1755 sync_pb::AttachmentMetadata attachment_metadata; | 1755 sync_pb::AttachmentMetadata attachment_metadata; |
| 1756 sync_pb::AttachmentMetadataRecord* r1 = attachment_metadata.add_record(); | 1756 sync_pb::AttachmentMetadataRecord* r1 = attachment_metadata.add_record(); |
| 1757 sync_pb::AttachmentMetadataRecord* r2 = attachment_metadata.add_record(); | 1757 sync_pb::AttachmentMetadataRecord* r2 = attachment_metadata.add_record(); |
| 1758 *r1->mutable_id() = syncer::CreateAttachmentIdProto(0, 0); | 1758 *r1->mutable_id() = CreateAttachmentIdProto(0, 0); |
| 1759 *r2->mutable_id() = syncer::CreateAttachmentIdProto(0, 0); | 1759 *r2->mutable_id() = CreateAttachmentIdProto(0, 0); |
| 1760 sync_pb::AttachmentIdProto attachment_id_proto = r1->id(); | 1760 sync_pb::AttachmentIdProto attachment_id_proto = r1->id(); |
| 1761 | 1761 |
| 1762 WriteTransaction trans(FROM_HERE, UNITTEST, dir().get()); | 1762 WriteTransaction trans(FROM_HERE, UNITTEST, dir().get()); |
| 1763 | 1763 |
| 1764 MutableEntry entry(&trans, CREATE, PREFERENCES, trans.root_id(), | 1764 MutableEntry entry(&trans, CREATE, PREFERENCES, trans.root_id(), |
| 1765 "some entry"); | 1765 "some entry"); |
| 1766 entry.PutId(TestIdFactory::FromNumber(-1)); | 1766 entry.PutId(TestIdFactory::FromNumber(-1)); |
| 1767 entry.PutAttachmentMetadata(attachment_metadata); | 1767 entry.PutAttachmentMetadata(attachment_metadata); |
| 1768 | 1768 |
| 1769 { | 1769 { |
| (...skipping 17 matching lines...) Expand all Loading... |
| 1787 ASSERT_FALSE(entry_metadata.record(1).is_on_server()); | 1787 ASSERT_FALSE(entry_metadata.record(1).is_on_server()); |
| 1788 ASSERT_TRUE(entry.GetIsUnsynced()); | 1788 ASSERT_TRUE(entry.GetIsUnsynced()); |
| 1789 } | 1789 } |
| 1790 } | 1790 } |
| 1791 | 1791 |
| 1792 // Verify that deleted entries with attachments will retain the attachments. | 1792 // Verify that deleted entries with attachments will retain the attachments. |
| 1793 TEST_F(SyncableDirectoryTest, Directory_DeleteDoesNotUnlinkAttachments) { | 1793 TEST_F(SyncableDirectoryTest, Directory_DeleteDoesNotUnlinkAttachments) { |
| 1794 sync_pb::AttachmentMetadata attachment_metadata; | 1794 sync_pb::AttachmentMetadata attachment_metadata; |
| 1795 sync_pb::AttachmentMetadataRecord* record = attachment_metadata.add_record(); | 1795 sync_pb::AttachmentMetadataRecord* record = attachment_metadata.add_record(); |
| 1796 sync_pb::AttachmentIdProto attachment_id_proto = | 1796 sync_pb::AttachmentIdProto attachment_id_proto = |
| 1797 syncer::CreateAttachmentIdProto(0, 0); | 1797 CreateAttachmentIdProto(0, 0); |
| 1798 *record->mutable_id() = attachment_id_proto; | 1798 *record->mutable_id() = attachment_id_proto; |
| 1799 ASSERT_FALSE(dir()->IsAttachmentLinked(attachment_id_proto)); | 1799 ASSERT_FALSE(dir()->IsAttachmentLinked(attachment_id_proto)); |
| 1800 const Id id = TestIdFactory::FromNumber(-1); | 1800 const Id id = TestIdFactory::FromNumber(-1); |
| 1801 | 1801 |
| 1802 // Create an entry with attachment metadata and see that the attachment id | 1802 // Create an entry with attachment metadata and see that the attachment id |
| 1803 // is linked. | 1803 // is linked. |
| 1804 CreateEntryWithAttachmentMetadata(PREFERENCES, "some entry", id, | 1804 CreateEntryWithAttachmentMetadata(PREFERENCES, "some entry", id, |
| 1805 attachment_metadata); | 1805 attachment_metadata); |
| 1806 ASSERT_TRUE(dir()->IsAttachmentLinked(attachment_id_proto)); | 1806 ASSERT_TRUE(dir()->IsAttachmentLinked(attachment_id_proto)); |
| 1807 | 1807 |
| 1808 // Delete the entry and see that it's still linked because the entry hasn't | 1808 // Delete the entry and see that it's still linked because the entry hasn't |
| 1809 // yet been purged. | 1809 // yet been purged. |
| 1810 DeleteEntry(id); | 1810 DeleteEntry(id); |
| 1811 ASSERT_TRUE(dir()->IsAttachmentLinked(attachment_id_proto)); | 1811 ASSERT_TRUE(dir()->IsAttachmentLinked(attachment_id_proto)); |
| 1812 | 1812 |
| 1813 // Reload the Directory, purging the deleted entry, and see that the | 1813 // Reload the Directory, purging the deleted entry, and see that the |
| 1814 // attachment is no longer linked. | 1814 // attachment is no longer linked. |
| 1815 SimulateSaveAndReloadDir(); | 1815 SimulateSaveAndReloadDir(); |
| 1816 ASSERT_FALSE(dir()->IsAttachmentLinked(attachment_id_proto)); | 1816 ASSERT_FALSE(dir()->IsAttachmentLinked(attachment_id_proto)); |
| 1817 } | 1817 } |
| 1818 | 1818 |
| 1819 // Verify that a given attachment can be referenced by multiple entries and that | 1819 // Verify that a given attachment can be referenced by multiple entries and that |
| 1820 // any one of the references is sufficient to ensure it remains linked. | 1820 // any one of the references is sufficient to ensure it remains linked. |
| 1821 TEST_F(SyncableDirectoryTest, Directory_LastReferenceUnlinksAttachments) { | 1821 TEST_F(SyncableDirectoryTest, Directory_LastReferenceUnlinksAttachments) { |
| 1822 // Create one attachment. | 1822 // Create one attachment. |
| 1823 sync_pb::AttachmentMetadata attachment_metadata; | 1823 sync_pb::AttachmentMetadata attachment_metadata; |
| 1824 sync_pb::AttachmentMetadataRecord* record = attachment_metadata.add_record(); | 1824 sync_pb::AttachmentMetadataRecord* record = attachment_metadata.add_record(); |
| 1825 sync_pb::AttachmentIdProto attachment_id_proto = | 1825 sync_pb::AttachmentIdProto attachment_id_proto = |
| 1826 syncer::CreateAttachmentIdProto(0, 0); | 1826 CreateAttachmentIdProto(0, 0); |
| 1827 *record->mutable_id() = attachment_id_proto; | 1827 *record->mutable_id() = attachment_id_proto; |
| 1828 | 1828 |
| 1829 // Create two entries, each referencing the attachment. | 1829 // Create two entries, each referencing the attachment. |
| 1830 const Id id1 = TestIdFactory::FromNumber(-1); | 1830 const Id id1 = TestIdFactory::FromNumber(-1); |
| 1831 const Id id2 = TestIdFactory::FromNumber(-2); | 1831 const Id id2 = TestIdFactory::FromNumber(-2); |
| 1832 CreateEntryWithAttachmentMetadata(PREFERENCES, "some entry", id1, | 1832 CreateEntryWithAttachmentMetadata(PREFERENCES, "some entry", id1, |
| 1833 attachment_metadata); | 1833 attachment_metadata); |
| 1834 CreateEntryWithAttachmentMetadata(PREFERENCES, "some other entry", id2, | 1834 CreateEntryWithAttachmentMetadata(PREFERENCES, "some other entry", id2, |
| 1835 attachment_metadata); | 1835 attachment_metadata); |
| 1836 | 1836 |
| (...skipping 300 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2137 | 2137 |
| 2138 const base::DictionaryValue* first_result; | 2138 const base::DictionaryValue* first_result; |
| 2139 ASSERT_TRUE(nodes->GetDictionary(0, &first_result)); | 2139 ASSERT_TRUE(nodes->GetDictionary(0, &first_result)); |
| 2140 EXPECT_TRUE(first_result->HasKey("ID")); | 2140 EXPECT_TRUE(first_result->HasKey("ID")); |
| 2141 EXPECT_TRUE(first_result->HasKey("NON_UNIQUE_NAME")); | 2141 EXPECT_TRUE(first_result->HasKey("NON_UNIQUE_NAME")); |
| 2142 } | 2142 } |
| 2143 | 2143 |
| 2144 } // namespace syncable | 2144 } // namespace syncable |
| 2145 | 2145 |
| 2146 } // namespace syncer | 2146 } // namespace syncer |
| OLD | NEW |