| 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 "sync/syncable/mutable_entry.h" | 5 #include "sync/syncable/mutable_entry.h" |
| 6 | 6 |
| 7 #include "base/memory/scoped_ptr.h" | 7 #include "base/memory/scoped_ptr.h" |
| 8 #include "sync/syncable/directory.h" | 8 #include "sync/syncable/directory.h" |
| 9 #include "sync/syncable/scoped_index_updater.h" | 9 #include "sync/syncable/scoped_index_updater.h" |
| 10 #include "sync/syncable/scoped_kernel_lock.h" | 10 #include "sync/syncable/scoped_kernel_lock.h" |
| (...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 225 DCHECK(kernel_); | 225 DCHECK(kernel_); |
| 226 write_transaction_->SaveOriginal(kernel_); | 226 write_transaction_->SaveOriginal(kernel_); |
| 227 // TODO(ncarter): This is unfortunately heavyweight. Can we do | 227 // TODO(ncarter): This is unfortunately heavyweight. Can we do |
| 228 // better? | 228 // better? |
| 229 if (kernel_->ref(field).SerializeAsString() != value.SerializeAsString()) { | 229 if (kernel_->ref(field).SerializeAsString() != value.SerializeAsString()) { |
| 230 const bool update_unapplied_updates_index = | 230 const bool update_unapplied_updates_index = |
| 231 (field == SERVER_SPECIFICS) && kernel_->ref(IS_UNAPPLIED_UPDATE); | 231 (field == SERVER_SPECIFICS) && kernel_->ref(IS_UNAPPLIED_UPDATE); |
| 232 if (update_unapplied_updates_index) { | 232 if (update_unapplied_updates_index) { |
| 233 // Remove ourselves from unapplied_update_metahandles with our | 233 // Remove ourselves from unapplied_update_metahandles with our |
| 234 // old server type. | 234 // old server type. |
| 235 const syncer::ModelType old_server_type = | 235 const ModelType old_server_type = kernel_->GetServerModelType(); |
| 236 kernel_->GetServerModelType(); | |
| 237 const int64 metahandle = kernel_->ref(META_HANDLE); | 236 const int64 metahandle = kernel_->ref(META_HANDLE); |
| 238 size_t erase_count = | 237 size_t erase_count = |
| 239 dir()->kernel_->unapplied_update_metahandles[old_server_type] | 238 dir()->kernel_->unapplied_update_metahandles[old_server_type] |
| 240 .erase(metahandle); | 239 .erase(metahandle); |
| 241 DCHECK_EQ(erase_count, 1u); | 240 DCHECK_EQ(erase_count, 1u); |
| 242 } | 241 } |
| 243 | 242 |
| 244 kernel_->put(field, value); | 243 kernel_->put(field, value); |
| 245 kernel_->mark_dirty(dir()->kernel_->dirty_metahandles); | 244 kernel_->mark_dirty(dir()->kernel_->dirty_metahandles); |
| 246 | 245 |
| 247 if (update_unapplied_updates_index) { | 246 if (update_unapplied_updates_index) { |
| 248 // Add ourselves back into unapplied_update_metahandles with our | 247 // Add ourselves back into unapplied_update_metahandles with our |
| 249 // new server type. | 248 // new server type. |
| 250 const syncer::ModelType new_server_type = | 249 const ModelType new_server_type = kernel_->GetServerModelType(); |
| 251 kernel_->GetServerModelType(); | |
| 252 const int64 metahandle = kernel_->ref(META_HANDLE); | 250 const int64 metahandle = kernel_->ref(META_HANDLE); |
| 253 dir()->kernel_->unapplied_update_metahandles[new_server_type] | 251 dir()->kernel_->unapplied_update_metahandles[new_server_type] |
| 254 .insert(metahandle); | 252 .insert(metahandle); |
| 255 } | 253 } |
| 256 } | 254 } |
| 257 return true; | 255 return true; |
| 258 } | 256 } |
| 259 | 257 |
| 260 bool MutableEntry::Put(BitField field, bool value) { | 258 bool MutableEntry::Put(BitField field, bool value) { |
| 261 DCHECK(kernel_); | 259 DCHECK(kernel_); |
| (...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 413 DCHECK_NE(static_cast<MutableEntry*>(NULL), e); | 411 DCHECK_NE(static_cast<MutableEntry*>(NULL), e); |
| 414 DCHECK(!e->IsRoot()) << "We shouldn't mark a permanent object for syncing."; | 412 DCHECK(!e->IsRoot()) << "We shouldn't mark a permanent object for syncing."; |
| 415 if (!(e->Put(IS_UNSYNCED, true))) | 413 if (!(e->Put(IS_UNSYNCED, true))) |
| 416 return false; | 414 return false; |
| 417 e->Put(SYNCING, false); | 415 e->Put(SYNCING, false); |
| 418 return true; | 416 return true; |
| 419 } | 417 } |
| 420 | 418 |
| 421 } // namespace syncable | 419 } // namespace syncable |
| 422 } // namespace syncer | 420 } // namespace syncer |
| OLD | NEW |