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

Side by Side Diff: sync/syncable/directory_backing_store.cc

Issue 247983002: Keep track of which attachments are referenced by which sync entries. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rework tests and move AttachmentIdProto creation to avoid violating DEPS. Created 6 years, 7 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « sync/syncable/directory.cc ('k') | sync/syncable/directory_unittest.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 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 "sync/syncable/directory_backing_store.h" 5 #include "sync/syncable/directory_backing_store.h"
6 6
7 #include "build/build_config.h" 7 #include "build/build_config.h"
8 8
9 #include <limits> 9 #include <limits>
10 10
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
63 for ( ; i < PROTO_FIELDS_END; ++i) { 63 for ( ; i < PROTO_FIELDS_END; ++i) {
64 std::string temp; 64 std::string temp;
65 entry.ref(static_cast<ProtoField>(i)).SerializeToString(&temp); 65 entry.ref(static_cast<ProtoField>(i)).SerializeToString(&temp);
66 statement->BindBlob(index++, temp.data(), temp.length()); 66 statement->BindBlob(index++, temp.data(), temp.length());
67 } 67 }
68 for ( ; i < UNIQUE_POSITION_FIELDS_END; ++i) { 68 for ( ; i < UNIQUE_POSITION_FIELDS_END; ++i) {
69 std::string temp; 69 std::string temp;
70 entry.ref(static_cast<UniquePositionField>(i)).SerializeToString(&temp); 70 entry.ref(static_cast<UniquePositionField>(i)).SerializeToString(&temp);
71 statement->BindBlob(index++, temp.data(), temp.length()); 71 statement->BindBlob(index++, temp.data(), temp.length());
72 } 72 }
73 for (; i < ATTACHMENT_METADATA_FIELDS_END; ++i) {
74 std::string temp;
75 entry.ref(static_cast<AttachmentMetadataField>(i)).SerializeToString(&temp);
76 statement->BindBlob(index++, temp.data(), temp.length());
77 }
73 } 78 }
74 79
75 // The caller owns the returned EntryKernel*. Assumes the statement currently 80 // The caller owns the returned EntryKernel*. Assumes the statement currently
76 // points to a valid row in the metas table. Returns NULL to indicate that 81 // points to a valid row in the metas table. Returns NULL to indicate that
77 // it detected a corruption in the data on unpacking. 82 // it detected a corruption in the data on unpacking.
78 scoped_ptr<EntryKernel> UnpackEntry(sql::Statement* statement) { 83 scoped_ptr<EntryKernel> UnpackEntry(sql::Statement* statement) {
79 scoped_ptr<EntryKernel> kernel(new EntryKernel()); 84 scoped_ptr<EntryKernel> kernel(new EntryKernel());
80 DCHECK_EQ(statement->ColumnCount(), static_cast<int>(FIELD_COUNT)); 85 DCHECK_EQ(statement->ColumnCount(), static_cast<int>(FIELD_COUNT));
81 int i = 0; 86 int i = 0;
82 for (i = BEGIN_FIELDS; i < INT64_FIELDS_END; ++i) { 87 for (i = BEGIN_FIELDS; i < INT64_FIELDS_END; ++i) {
(...skipping 24 matching lines...) Expand all
107 112
108 sync_pb::UniquePosition proto; 113 sync_pb::UniquePosition proto;
109 if (!proto.ParseFromString(temp)) { 114 if (!proto.ParseFromString(temp)) {
110 DVLOG(1) << "Unpacked invalid position. Assuming the DB is corrupt"; 115 DVLOG(1) << "Unpacked invalid position. Assuming the DB is corrupt";
111 return scoped_ptr<EntryKernel>(); 116 return scoped_ptr<EntryKernel>();
112 } 117 }
113 118
114 kernel->mutable_ref(static_cast<UniquePositionField>(i)) = 119 kernel->mutable_ref(static_cast<UniquePositionField>(i)) =
115 UniquePosition::FromProto(proto); 120 UniquePosition::FromProto(proto);
116 } 121 }
122 for (; i < ATTACHMENT_METADATA_FIELDS_END; ++i) {
123 kernel->mutable_ref(static_cast<AttachmentMetadataField>(i)).ParseFromArray(
124 statement->ColumnBlob(i), statement->ColumnByteLength(i));
125 }
117 return kernel.Pass(); 126 return kernel.Pass();
118 } 127 }
119 128
120 namespace { 129 namespace {
121 130
122 string ComposeCreateTableColumnSpecs() { 131 string ComposeCreateTableColumnSpecs() {
123 const ColumnSpec* begin = g_metas_columns; 132 const ColumnSpec* begin = g_metas_columns;
124 const ColumnSpec* end = g_metas_columns + arraysize(g_metas_columns); 133 const ColumnSpec* end = g_metas_columns + arraysize(g_metas_columns);
125 string query; 134 string query;
126 query.reserve(kUpdateStatementBufferSize); 135 query.reserve(kUpdateStatementBufferSize);
(...skipping 1422 matching lines...) Expand 10 before | Expand all | Expand 10 after
1549 } 1558 }
1550 query.append(" ) "); 1559 query.append(" ) ");
1551 values.append(" )"); 1560 values.append(" )");
1552 query.append(values); 1561 query.append(values);
1553 save_statement->Assign(db_->GetUniqueStatement( 1562 save_statement->Assign(db_->GetUniqueStatement(
1554 base::StringPrintf(query.c_str(), "metas").c_str())); 1563 base::StringPrintf(query.c_str(), "metas").c_str()));
1555 } 1564 }
1556 1565
1557 } // namespace syncable 1566 } // namespace syncable
1558 } // namespace syncer 1567 } // namespace syncer
OLDNEW
« no previous file with comments | « sync/syncable/directory.cc ('k') | sync/syncable/directory_unittest.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698