diff options
author | akalin@chromium.org <akalin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-06-17 21:40:38 +0000 |
---|---|---|
committer | akalin@chromium.org <akalin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-06-17 21:40:38 +0000 |
commit | 9a68a6d01cd68fe844be2bdbb05ec415fa574b3c (patch) | |
tree | bb751e0c4144c1585d3e6ce63909b9ce10fbd6eb /chrome/browser/sync | |
parent | 72042ea571a06d578738f231961b33b0f81e42ac (diff) | |
download | chromium_src-9a68a6d01cd68fe844be2bdbb05ec415fa574b3c.zip chromium_src-9a68a6d01cd68fe844be2bdbb05ec415fa574b3c.tar.gz chromium_src-9a68a6d01cd68fe844be2bdbb05ec415fa574b3c.tar.bz2 |
[Sync] Add Location parameter to Read/WriteTransactions
Also add to SyncChangeProcessor and SyncableService.
BUG=
TEST=
Review URL: http://codereview.chromium.org/7189004
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@89556 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/sync')
54 files changed, 532 insertions, 484 deletions
diff --git a/chrome/browser/sync/abstract_profile_sync_service_test.cc b/chrome/browser/sync/abstract_profile_sync_service_test.cc index f7c5f66..2dcace3 100644 --- a/chrome/browser/sync/abstract_profile_sync_service_test.cc +++ b/chrome/browser/sync/abstract_profile_sync_service_test.cc @@ -48,7 +48,7 @@ bool ProfileSyncServiceTestHelper::CreateRoot( std::string tag_name = GetTagForType(model_type); - WriteTransaction wtrans(dir, UNITTEST, FROM_HERE); + WriteTransaction wtrans(FROM_HERE, UNITTEST, dir); MutableEntry node(&wtrans, CREATE, wtrans.root_id(), diff --git a/chrome/browser/sync/api/sync_change_processor.h b/chrome/browser/sync/api/sync_change_processor.h index e16d313..80be610 100644 --- a/chrome/browser/sync/api/sync_change_processor.h +++ b/chrome/browser/sync/api/sync_change_processor.h @@ -10,13 +10,18 @@ class SyncChange; +namespace tracked_objects { +class Location; +} // namespace tracked_objects + typedef std::vector<SyncChange> SyncChangeList; // An interface for services that handle receiving SyncChanges. class SyncChangeProcessor { public: // Process a list of SyncChanges. - virtual void ProcessSyncChanges(const SyncChangeList& change_list) = 0; + virtual void ProcessSyncChanges(const tracked_objects::Location& from_here, + const SyncChangeList& change_list) = 0; protected: virtual ~SyncChangeProcessor(); }; diff --git a/chrome/browser/sync/api/syncable_service.h b/chrome/browser/sync/api/syncable_service.h index 7f4de39..3c40975 100644 --- a/chrome/browser/sync/api/syncable_service.h +++ b/chrome/browser/sync/api/syncable_service.h @@ -8,6 +8,7 @@ #include <vector> +#include "base/compiler_specific.h" #include "chrome/browser/sync/syncable/model_type.h" #include "chrome/browser/sync/api/sync_change_processor.h" #include "chrome/browser/sync/api/sync_data.h" @@ -39,7 +40,9 @@ class SyncableService : public SyncChangeProcessor { // SyncChangeProcessor interface. // Process a list of new SyncChanges and update the local data as necessary. - virtual void ProcessSyncChanges(const SyncChangeList& change_list) = 0; + virtual void ProcessSyncChanges( + const tracked_objects::Location& from_here, + const SyncChangeList& change_list) OVERRIDE = 0; protected: virtual ~SyncableService(); diff --git a/chrome/browser/sync/api/syncable_service_mock.h b/chrome/browser/sync/api/syncable_service_mock.h index 5390e4a..29c5e9b 100644 --- a/chrome/browser/sync/api/syncable_service_mock.h +++ b/chrome/browser/sync/api/syncable_service_mock.h @@ -6,6 +6,7 @@ #define CHROME_BROWSER_SYNC_API_SYNCABLE_SERVICE_MOCK_H_ #pragma once +#include "base/tracked.h" #include "chrome/browser/sync/api/syncable_service.h" #include "chrome/browser/sync/api/sync_change.h" #include "testing/gmock/include/gmock/gmock.h" @@ -16,12 +17,12 @@ class SyncableServiceMock : public SyncableService { virtual ~SyncableServiceMock(); MOCK_METHOD3(MergeDataAndStartSyncing, bool( - syncable::ModelType type, - const SyncDataList& initial_sync_data, + syncable::ModelType, const SyncDataList&, SyncChangeProcessor* sync_processor)); - MOCK_METHOD1(StopSyncing, void(syncable::ModelType type)); - MOCK_CONST_METHOD1(GetAllSyncData, SyncDataList(syncable::ModelType type)); - MOCK_METHOD1(ProcessSyncChanges, void(const SyncChangeList& change_list)); + MOCK_METHOD1(StopSyncing, void(syncable::ModelType)); + MOCK_CONST_METHOD1(GetAllSyncData, SyncDataList(syncable::ModelType)); + MOCK_METHOD2(ProcessSyncChanges, + void(const tracked_objects::Location&, const SyncChangeList&)); }; #endif // CHROME_BROWSER_SYNC_API_SYNCABLE_SERVICE_MOCK_H_ diff --git a/chrome/browser/sync/engine/apply_updates_command.cc b/chrome/browser/sync/engine/apply_updates_command.cc index 670e171..40ce3ec 100644 --- a/chrome/browser/sync/engine/apply_updates_command.cc +++ b/chrome/browser/sync/engine/apply_updates_command.cc @@ -24,7 +24,7 @@ void ApplyUpdatesCommand::ModelChangingExecuteImpl(SyncSession* session) { LOG(ERROR) << "Scoped dir lookup failed!"; return; } - syncable::WriteTransaction trans(dir, syncable::SYNCER, FROM_HERE); + syncable::WriteTransaction trans(FROM_HERE, syncable::SYNCER, dir); syncable::Directory::UnappliedUpdateMetaHandles handles; dir->GetUnappliedUpdateMetaHandles(&trans, &handles); diff --git a/chrome/browser/sync/engine/apply_updates_command_unittest.cc b/chrome/browser/sync/engine/apply_updates_command_unittest.cc index 1e091b1..368cf15 100644 --- a/chrome/browser/sync/engine/apply_updates_command_unittest.cc +++ b/chrome/browser/sync/engine/apply_updates_command_unittest.cc @@ -56,7 +56,7 @@ class ApplyUpdatesCommandTest : public SyncerCommandTest { const string& parent_id) { ScopedDirLookup dir(syncdb()->manager(), syncdb()->name()); ASSERT_TRUE(dir.good()); - WriteTransaction trans(dir, UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir); MutableEntry entry(&trans, syncable::CREATE_NEW_UPDATE_ITEM, Id::CreateFromServerId(item_id)); ASSERT_TRUE(entry.good()); @@ -77,7 +77,7 @@ class ApplyUpdatesCommandTest : public SyncerCommandTest { bool is_unique) { ScopedDirLookup dir(syncdb()->manager(), syncdb()->name()); ASSERT_TRUE(dir.good()); - WriteTransaction trans(dir, UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir); MutableEntry entry(&trans, syncable::CREATE_NEW_UPDATE_ITEM, Id::CreateFromServerId(item_id)); ASSERT_TRUE(entry.good()); @@ -103,7 +103,7 @@ class ApplyUpdatesCommandTest : public SyncerCommandTest { int64* metahandle_out) { ScopedDirLookup dir(syncdb()->manager(), syncdb()->name()); ASSERT_TRUE(dir.good()); - WriteTransaction trans(dir, UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir); Id predecessor_id = dir->GetLastChildId(&trans, parent_id); MutableEntry entry(&trans, syncable::CREATE, parent_id, name); ASSERT_TRUE(entry.good()); @@ -222,7 +222,7 @@ TEST_F(ApplyUpdatesCommandTest, DecryptablePassword) { // know it's safe. ScopedDirLookup dir(syncdb()->manager(), syncdb()->name()); ASSERT_TRUE(dir.good()); - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); cryptographer = session()->context()->directory_manager()->GetCryptographer(&trans); } @@ -286,7 +286,7 @@ TEST_F(ApplyUpdatesCommandTest, SomeUndecryptablePassword) { { ScopedDirLookup dir(syncdb()->manager(), syncdb()->name()); ASSERT_TRUE(dir.good()); - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); Cryptographer* cryptographer = session()->context()->directory_manager()->GetCryptographer(&trans); @@ -343,7 +343,7 @@ TEST_F(ApplyUpdatesCommandTest, NigoriUpdate) { { ScopedDirLookup dir(syncdb()->manager(), syncdb()->name()); ASSERT_TRUE(dir.good()); - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); cryptographer = session()->context()->directory_manager()->GetCryptographer(&trans); EXPECT_EQ(encrypted_types, cryptographer->GetEncryptedTypes()); @@ -388,7 +388,7 @@ TEST_F(ApplyUpdatesCommandTest, EncryptUnsyncedChanges) { { ScopedDirLookup dir(syncdb()->manager(), syncdb()->name()); ASSERT_TRUE(dir.good()); - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); cryptographer = session()->context()->directory_manager()->GetCryptographer(&trans); EXPECT_EQ(encrypted_types, cryptographer->GetEncryptedTypes()); @@ -439,7 +439,7 @@ TEST_F(ApplyUpdatesCommandTest, EncryptUnsyncedChanges) { // Ensure we have unsynced nodes that aren't properly encrypted. ScopedDirLookup dir(syncdb()->manager(), syncdb()->name()); ASSERT_TRUE(dir.good()); - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); EXPECT_FALSE(VerifyUnsyncedChangesAreEncrypted(&trans, encrypted_types)); Syncer::UnsyncedMetaHandles handles; @@ -464,7 +464,7 @@ TEST_F(ApplyUpdatesCommandTest, EncryptUnsyncedChanges) { { ScopedDirLookup dir(syncdb()->manager(), syncdb()->name()); ASSERT_TRUE(dir.good()); - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); // If ProcessUnsyncedChangesForEncryption worked, all our unsynced changes // should be encrypted now. @@ -486,7 +486,7 @@ TEST_F(ApplyUpdatesCommandTest, CannotEncryptUnsyncedChanges) { { ScopedDirLookup dir(syncdb()->manager(), syncdb()->name()); ASSERT_TRUE(dir.good()); - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); cryptographer = session()->context()->directory_manager()->GetCryptographer(&trans); EXPECT_EQ(encrypted_types, cryptographer->GetEncryptedTypes()); @@ -539,7 +539,7 @@ TEST_F(ApplyUpdatesCommandTest, CannotEncryptUnsyncedChanges) { // Ensure we have unsynced nodes that aren't properly encrypted. ScopedDirLookup dir(syncdb()->manager(), syncdb()->name()); ASSERT_TRUE(dir.good()); - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); EXPECT_FALSE(VerifyUnsyncedChangesAreEncrypted(&trans, encrypted_types)); Syncer::UnsyncedMetaHandles handles; SyncerUtil::GetUnsyncedEntries(&trans, &handles); @@ -566,7 +566,7 @@ TEST_F(ApplyUpdatesCommandTest, CannotEncryptUnsyncedChanges) { // Ensure the unsynced nodes are still not encrypted. ScopedDirLookup dir(syncdb()->manager(), syncdb()->name()); ASSERT_TRUE(dir.good()); - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); // Since we're in conflict, the specifics don't reflect the unapplied // changes. diff --git a/chrome/browser/sync/engine/build_and_process_conflict_sets_command.cc b/chrome/browser/sync/engine/build_and_process_conflict_sets_command.cc index 933dfee..09147d4 100644 --- a/chrome/browser/sync/engine/build_and_process_conflict_sets_command.cc +++ b/chrome/browser/sync/engine/build_and_process_conflict_sets_command.cc @@ -44,7 +44,7 @@ bool BuildAndProcessConflictSetsCommand::BuildAndProcessConflictSets( return false; bool had_single_direction_sets = false; { // Scope for transaction. - syncable::WriteTransaction trans(dir, syncable::SYNCER, FROM_HERE); + syncable::WriteTransaction trans(FROM_HERE, syncable::SYNCER, dir); BuildConflictSets(&trans, session->status_controller()->mutable_conflict_progress()); had_single_direction_sets = ProcessSingleDirectionConflictSets(&trans, diff --git a/chrome/browser/sync/engine/conflict_resolver.cc b/chrome/browser/sync/engine/conflict_resolver.cc index 0e1b9d7..3df973c 100644 --- a/chrome/browser/sync/engine/conflict_resolver.cc +++ b/chrome/browser/sync/engine/conflict_resolver.cc @@ -433,7 +433,7 @@ bool ConflictResolver::LogAndSignalIfConflictStuck( bool ConflictResolver::ResolveSimpleConflicts(const ScopedDirLookup& dir, StatusController* status) { - WriteTransaction trans(dir, syncable::SYNCER, FROM_HERE); + WriteTransaction trans(FROM_HERE, syncable::SYNCER, dir); bool forward_progress = false; const ConflictProgress& progress = status->conflict_progress(); // First iterate over simple conflict items (those that belong to no set). @@ -478,7 +478,7 @@ bool ConflictResolver::ResolveConflicts(const ScopedDirLookup& dir, bool rv = false; if (ResolveSimpleConflicts(dir, status)) rv = true; - WriteTransaction trans(dir, syncable::SYNCER, FROM_HERE); + WriteTransaction trans(FROM_HERE, syncable::SYNCER, dir); set<ConflictSet*>::const_iterator set_it; for (set_it = progress.ConflictSetsBegin(); set_it != progress.ConflictSetsEnd(); diff --git a/chrome/browser/sync/engine/post_commit_message_command.cc b/chrome/browser/sync/engine/post_commit_message_command.cc index babfd36..abc4ee1 100644 --- a/chrome/browser/sync/engine/post_commit_message_command.cc +++ b/chrome/browser/sync/engine/post_commit_message_command.cc @@ -35,7 +35,7 @@ void PostCommitMessageCommand::ExecuteImpl(sessions::SyncSession* session) { // Not to be confused with IS_UNSYNCED, this bit is used to detect local // changes to items that happen during the server Commit operation. status->increment_num_consecutive_errors(); - syncable::WriteTransaction trans(dir, syncable::SYNCER, FROM_HERE); + syncable::WriteTransaction trans(FROM_HERE, syncable::SYNCER, dir); const vector<syncable::Id>& commit_ids = status->commit_ids(); for (size_t i = 0; i < commit_ids.size(); i++) { syncable::MutableEntry entry(&trans, syncable::GET_BY_ID, commit_ids[i]); diff --git a/chrome/browser/sync/engine/process_commit_response_command.cc b/chrome/browser/sync/engine/process_commit_response_command.cc index 6e7293d..e5c73a7 100644 --- a/chrome/browser/sync/engine/process_commit_response_command.cc +++ b/chrome/browser/sync/engine/process_commit_response_command.cc @@ -137,7 +137,7 @@ void ProcessCommitResponseCommand::ProcessCommitResponse( ConflictProgress* conflict_progress = status->mutable_conflict_progress(); OrderedCommitSet::Projection proj = status->commit_id_projection(); if (!proj.empty()) { // Scope for WriteTransaction. - WriteTransaction trans(dir, SYNCER, FROM_HERE); + WriteTransaction trans(FROM_HERE, SYNCER, dir); for (size_t i = 0; i < proj.size(); i++) { CommitResponse::ResponseType response_type = ProcessSingleCommitResponse(&trans, cr.entryresponse(proj[i]), diff --git a/chrome/browser/sync/engine/process_commit_response_command_unittest.cc b/chrome/browser/sync/engine/process_commit_response_command_unittest.cc index 4c8c796..bfa97f2 100644 --- a/chrome/browser/sync/engine/process_commit_response_command_unittest.cc +++ b/chrome/browser/sync/engine/process_commit_response_command_unittest.cc @@ -91,7 +91,7 @@ class ProcessCommitResponseCommandTestWithParam int64* metahandle_out) { ScopedDirLookup dir(syncdb()->manager(), syncdb()->name()); ASSERT_TRUE(dir.good()); - WriteTransaction trans(dir, UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir); Id predecessor_id = dir->GetLastChildId(&trans, parent_id); MutableEntry entry(&trans, syncable::CREATE, parent_id, name); ASSERT_TRUE(entry.good()); @@ -137,7 +137,7 @@ class ProcessCommitResponseCommandTestWithParam ScopedDirLookup dir(syncdb()->manager(), syncdb()->name()); ASSERT_TRUE(dir.good()); - WriteTransaction trans(dir, UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir); MutableEntry entry(&trans, syncable::GET_BY_ID, item_id); ASSERT_TRUE(entry.good()); entry.Put(syncable::SYNCING, true); @@ -233,7 +233,7 @@ TEST_F(ProcessCommitResponseCommandTest, MultipleCommitIdProjections) { ScopedDirLookup dir(syncdb()->manager(), syncdb()->name()); ASSERT_TRUE(dir.good()); - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); Id new_fid = dir->GetFirstChildId(&trans, id_factory_.root()); ASSERT_FALSE(new_fid.IsRoot()); EXPECT_TRUE(new_fid.ServerKnows()); @@ -287,7 +287,7 @@ TEST_F(ProcessCommitResponseCommandTest, NewFolderCommitKeepsChildOrder) { { ScopedDirLookup dir(syncdb()->manager(), syncdb()->name()); ASSERT_TRUE(dir.good()); - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); ASSERT_EQ(folder_id, dir->GetFirstChildId(&trans, id_factory_.root())); } @@ -320,7 +320,7 @@ TEST_F(ProcessCommitResponseCommandTest, NewFolderCommitKeepsChildOrder) { ScopedDirLookup dir(syncdb()->manager(), syncdb()->name()); ASSERT_TRUE(dir.good()); - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); // Lookup the parent folder by finding a child of the root. We can't use // folder_id here, because it changed during the commit. Id new_fid = dir->GetFirstChildId(&trans, id_factory_.root()); diff --git a/chrome/browser/sync/engine/process_updates_command.cc b/chrome/browser/sync/engine/process_updates_command.cc index f11db79..85accd3 100644 --- a/chrome/browser/sync/engine/process_updates_command.cc +++ b/chrome/browser/sync/engine/process_updates_command.cc @@ -98,7 +98,7 @@ ServerUpdateProcessingResult ProcessUpdatesCommand::ProcessUpdate( syncable::Id server_id = update.id(); const std::string name = SyncerProtoUtil::NameFromSyncEntity(update); - syncable::WriteTransaction trans(dir, syncable::SYNCER, FROM_HERE); + syncable::WriteTransaction trans(FROM_HERE, syncable::SYNCER, dir); // Look to see if there's a local item that should recieve this update, // maybe due to a duplicate client tag or a lost commit response. diff --git a/chrome/browser/sync/engine/syncapi.cc b/chrome/browser/sync/engine/syncapi.cc index 690905d..bcc19fa 100644 --- a/chrome/browser/sync/engine/syncapi.cc +++ b/chrome/browser/sync/engine/syncapi.cc @@ -964,11 +964,12 @@ bool ReadNode::InitByTagLookup(const std::string& tag) { ////////////////////////////////////////////////////////////////////////// // ReadTransaction member definitions -ReadTransaction::ReadTransaction(UserShare* share) +ReadTransaction::ReadTransaction(const tracked_objects::Location& from_here, + UserShare* share) : BaseTransaction(share), transaction_(NULL), close_transaction_(true) { - transaction_ = new syncable::ReadTransaction(GetLookup(), FROM_HERE); + transaction_ = new syncable::ReadTransaction(from_here, GetLookup()); } ReadTransaction::ReadTransaction(UserShare* share, @@ -989,11 +990,12 @@ syncable::BaseTransaction* ReadTransaction::GetWrappedTrans() const { ////////////////////////////////////////////////////////////////////////// // WriteTransaction member definitions -WriteTransaction::WriteTransaction(UserShare* share) +WriteTransaction::WriteTransaction(const tracked_objects::Location& from_here, + UserShare* share) : BaseTransaction(share), transaction_(NULL) { - transaction_ = new syncable::WriteTransaction(GetLookup(), syncable::SYNCAPI, - FROM_HERE); + transaction_ = new syncable::WriteTransaction(from_here, syncable::SYNCAPI, + GetLookup()); } WriteTransaction::~WriteTransaction() { @@ -1798,7 +1800,7 @@ bool SyncManager::SyncInternal::Init( void SyncManager::SyncInternal::BootstrapEncryption( const std::string& restored_key_for_bootstrapping) { // Cryptographer should only be accessed while holding a transaction. - ReadTransaction trans(GetUserShare()); + ReadTransaction trans(FROM_HERE, GetUserShare()); Cryptographer* cryptographer = trans.GetCryptographer(); // Set the bootstrap token before bailing out if nigori node is not there. @@ -1816,7 +1818,7 @@ bool SyncManager::SyncInternal::UpdateCryptographerFromNigori() { if (!lookup->initial_sync_ended_for_type(syncable::NIGORI)) return false; // Should only happen during first time sync. - ReadTransaction trans(GetUserShare()); + ReadTransaction trans(FROM_HERE, GetUserShare()); Cryptographer* cryptographer = trans.GetCryptographer(); ReadNode node(&trans); @@ -1965,7 +1967,7 @@ void SyncManager::SyncInternal::SetPassphrase( } // All accesses to the cryptographer are protected by a transaction. - WriteTransaction trans(GetUserShare()); + WriteTransaction trans(FROM_HERE, GetUserShare()); Cryptographer* cryptographer = trans.GetCryptographer(); KeyParams params = {"localhost", "dummy", passphrase}; @@ -2027,7 +2029,7 @@ void SyncManager::SyncInternal::SetPassphrase( } bool SyncManager::SyncInternal::IsUsingExplicitPassphrase() { - ReadTransaction trans(&share_); + ReadTransaction trans(FROM_HERE, &share_); ReadNode node(&trans); if (!node.InitByTagLookup(kNigoriTag)) { // TODO(albertb): Plumb an UnrecoverableError all the way back to the PSS. @@ -2044,7 +2046,7 @@ void SyncManager::SyncInternal::EncryptDataTypes( VLOG(1) << "Attempting to encrypt datatypes " << syncable::ModelTypeSetToString(encrypted_types); - WriteTransaction trans(GetUserShare()); + WriteTransaction trans(FROM_HERE, GetUserShare()); WriteNode node(&trans); if (!node.InitByTagLookup(kNigoriTag)) { NOTREACHED() << "Unable to set encrypted datatypes because Nigori node not " @@ -2473,7 +2475,7 @@ void SyncManager::SyncInternal::OnSyncEngineEvent( { // Check to see if we need to notify the frontend that we have newly // encrypted types or that we require a passphrase. - sync_api::ReadTransaction trans(GetUserShare()); + sync_api::ReadTransaction trans(FROM_HERE, GetUserShare()); syncable::ModelTypeSet encrypted_types = GetEncryptedTypes(&trans); syncable::ModelTypeSet encrypted_and_enabled_types; for (syncable::ModelTypeSet::iterator iter = encrypted_types.begin(); @@ -2691,7 +2693,7 @@ browser_sync::JsArgList browser_sync::JsArgList SyncManager::SyncInternal::GetRootNodeDetails( const browser_sync::JsArgList& args) { - ReadTransaction trans(GetUserShare()); + ReadTransaction trans(FROM_HERE, GetUserShare()); ReadNode root(&trans); root.InitByRootLookup(); ListValue return_args; @@ -2722,7 +2724,7 @@ browser_sync::JsArgList GetNodeInfoById( ListValue* node_summaries = new ListValue(); return_args.Append(node_summaries); ListValue* id_list = NULL; - ReadTransaction trans(user_share); + ReadTransaction trans(FROM_HERE, user_share); if (args.Get().GetList(0, &id_list)) { CHECK(id_list); for (size_t i = 0; i < id_list->GetSize(); ++i) { @@ -2762,7 +2764,7 @@ browser_sync::JsArgList SyncManager::SyncInternal:: return_args.Append(child_ids); int64 id = GetId(args.Get(), 0); if (id != kInvalidId) { - ReadTransaction trans(GetUserShare()); + ReadTransaction trans(FROM_HERE, GetUserShare()); syncable::Directory::ChildHandles child_handles; trans.GetLookup()->GetChildHandlesByHandle(trans.GetWrappedTrans(), id, &child_handles); @@ -2793,7 +2795,7 @@ browser_sync::JsArgList SyncManager::SyncInternal:: ListValue* result = new ListValue(); return_args.Append(result); - ReadTransaction trans(GetUserShare()); + ReadTransaction trans(FROM_HERE, GetUserShare()); std::vector<const syncable::EntryKernel*> entry_kernels; trans.GetLookup()->GetAllEntryKernels(trans.GetWrappedTrans(), &entry_kernels); @@ -2967,18 +2969,18 @@ void SyncManager::RefreshEncryption() { } syncable::ModelTypeSet SyncManager::GetEncryptedDataTypes() const { - sync_api::ReadTransaction trans(GetUserShare()); + sync_api::ReadTransaction trans(FROM_HERE, GetUserShare()); return GetEncryptedTypes(&trans); } bool SyncManager::HasUnsyncedItems() const { - sync_api::ReadTransaction trans(GetUserShare()); + sync_api::ReadTransaction trans(FROM_HERE, GetUserShare()); return (trans.GetWrappedTrans()->directory()->unsynced_entity_count() != 0); } void SyncManager::LogUnsyncedItems(int level) const { std::vector<int64> unsynced_handles; - sync_api::ReadTransaction trans(GetUserShare()); + sync_api::ReadTransaction trans(FROM_HERE, GetUserShare()); trans.GetWrappedTrans()->directory()->GetUnsyncedMetaHandles( trans.GetWrappedTrans(), &unsynced_handles); diff --git a/chrome/browser/sync/engine/syncapi.h b/chrome/browser/sync/engine/syncapi.h index 8264f41..94d7e36 100644 --- a/chrome/browser/sync/engine/syncapi.h +++ b/chrome/browser/sync/engine/syncapi.h @@ -101,6 +101,10 @@ class ThemeSpecifics; class TypedUrlSpecifics; } +namespace tracked_objects { +class Location; +} // namespace tracked_objects + namespace sync_api { class BaseTransaction; @@ -552,7 +556,8 @@ class BaseTransaction { class ReadTransaction : public BaseTransaction { public: // Start a new read-only transaction on the specified repository. - explicit ReadTransaction(UserShare* share); + ReadTransaction(const tracked_objects::Location& from_here, + UserShare* share); // Resume the middle of a transaction. Will not close transaction. ReadTransaction(UserShare* share, syncable::BaseTransaction* trans); @@ -576,7 +581,8 @@ class ReadTransaction : public BaseTransaction { class WriteTransaction : public BaseTransaction { public: // Start a new read/write transaction. - explicit WriteTransaction(UserShare* share); + explicit WriteTransaction(const tracked_objects::Location& from_here, + UserShare* share); virtual ~WriteTransaction(); // Provide access to the syncable.h transaction from the API WriteNode. diff --git a/chrome/browser/sync/engine/syncapi_mock.h b/chrome/browser/sync/engine/syncapi_mock.h index ada0a56..8e71aa8 100644 --- a/chrome/browser/sync/engine/syncapi_mock.h +++ b/chrome/browser/sync/engine/syncapi_mock.h @@ -1,4 +1,4 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -16,9 +16,10 @@ using sync_api::WriteTransaction; class MockWriteTransaction : public sync_api::WriteTransaction { public: - explicit MockWriteTransaction(Directory* directory) + MockWriteTransaction(const tracked_objects::Location& from_here, + Directory* directory) : sync_api::WriteTransaction() { - this->SetTransaction(new MockSyncableWriteTransaction(directory)); + SetTransaction(new MockSyncableWriteTransaction(from_here, directory)); } }; diff --git a/chrome/browser/sync/engine/syncapi_unittest.cc b/chrome/browser/sync/engine/syncapi_unittest.cc index 532e020..90ffe3f 100644 --- a/chrome/browser/sync/engine/syncapi_unittest.cc +++ b/chrome/browser/sync/engine/syncapi_unittest.cc @@ -87,7 +87,7 @@ void ExpectInt64Value(int64 expected_value, int64 MakeNode(UserShare* share, ModelType model_type, const std::string& client_tag) { - WriteTransaction trans(share); + WriteTransaction trans(FROM_HERE, share); ReadNode root_node(&trans); root_node.InitByRootLookup(); WriteNode node(&trans); @@ -102,7 +102,7 @@ int64 MakeNodeWithParent(UserShare* share, ModelType model_type, const std::string& client_tag, int64 parent_id) { - WriteTransaction trans(share); + WriteTransaction trans(FROM_HERE, share); ReadNode parent_node(&trans); EXPECT_TRUE(parent_node.InitByIdLookup(parent_id)); WriteNode node(&trans); @@ -117,7 +117,7 @@ int64 MakeFolderWithParent(UserShare* share, ModelType model_type, int64 parent_id, BaseNode* predecessor) { - WriteTransaction trans(share); + WriteTransaction trans(FROM_HERE, share); ReadNode parent_node(&trans); EXPECT_TRUE(parent_node.InitByIdLookup(parent_id)); WriteNode node(&trans); @@ -135,7 +135,7 @@ int64 MakeServerNodeForType(UserShare* share, syncable::AddDefaultExtensionValue(model_type, &specifics); syncable::ScopedDirLookup dir(share->dir_manager.get(), share->name); EXPECT_TRUE(dir.good()); - syncable::WriteTransaction trans(dir, syncable::UNITTEST, FROM_HERE); + syncable::WriteTransaction trans(FROM_HERE, syncable::UNITTEST, dir); // Attempt to lookup by nigori tag. std::string type_tag = syncable::ModelTypeToRootTag(model_type); syncable::Id node_id = syncable::Id::CreateFromServerId(type_tag); @@ -174,16 +174,16 @@ class SyncApiTest : public testing::Test { TEST_F(SyncApiTest, SanityCheckTest) { { - ReadTransaction trans(test_user_share_.user_share()); + ReadTransaction trans(FROM_HERE, test_user_share_.user_share()); EXPECT_TRUE(trans.GetWrappedTrans() != NULL); } { - WriteTransaction trans(test_user_share_.user_share()); + WriteTransaction trans(FROM_HERE, test_user_share_.user_share()); EXPECT_TRUE(trans.GetWrappedTrans() != NULL); } { // No entries but root should exist - ReadTransaction trans(test_user_share_.user_share()); + ReadTransaction trans(FROM_HERE, test_user_share_.user_share()); ReadNode node(&trans); // Metahandle 1 can be root, sanity check 2 EXPECT_FALSE(node.InitByIdLookup(2)); @@ -192,7 +192,7 @@ TEST_F(SyncApiTest, SanityCheckTest) { TEST_F(SyncApiTest, BasicTagWrite) { { - ReadTransaction trans(test_user_share_.user_share()); + ReadTransaction trans(FROM_HERE, test_user_share_.user_share()); ReadNode root_node(&trans); root_node.InitByRootLookup(); EXPECT_EQ(root_node.GetFirstChildId(), 0); @@ -202,7 +202,7 @@ TEST_F(SyncApiTest, BasicTagWrite) { syncable::BOOKMARKS, "testtag")); { - ReadTransaction trans(test_user_share_.user_share()); + ReadTransaction trans(FROM_HERE, test_user_share_.user_share()); ReadNode node(&trans); EXPECT_TRUE(node.InitByClientTagLookup(syncable::BOOKMARKS, "testtag")); @@ -232,7 +232,7 @@ TEST_F(SyncApiTest, GenerateSyncableHash) { TEST_F(SyncApiTest, ModelTypesSiloed) { { - WriteTransaction trans(test_user_share_.user_share()); + WriteTransaction trans(FROM_HERE, test_user_share_.user_share()); ReadNode root_node(&trans); root_node.InitByRootLookup(); EXPECT_EQ(root_node.GetFirstChildId(), 0); @@ -246,7 +246,7 @@ TEST_F(SyncApiTest, ModelTypesSiloed) { syncable::AUTOFILL, "collideme")); { - ReadTransaction trans(test_user_share_.user_share()); + ReadTransaction trans(FROM_HERE, test_user_share_.user_share()); ReadNode bookmarknode(&trans); EXPECT_TRUE(bookmarknode.InitByClientTagLookup(syncable::BOOKMARKS, @@ -268,13 +268,13 @@ TEST_F(SyncApiTest, ModelTypesSiloed) { TEST_F(SyncApiTest, ReadMissingTagsFails) { { - ReadTransaction trans(test_user_share_.user_share()); + ReadTransaction trans(FROM_HERE, test_user_share_.user_share()); ReadNode node(&trans); EXPECT_FALSE(node.InitByClientTagLookup(syncable::BOOKMARKS, "testtag")); } { - WriteTransaction trans(test_user_share_.user_share()); + WriteTransaction trans(FROM_HERE, test_user_share_.user_share()); WriteNode node(&trans); EXPECT_FALSE(node.InitByClientTagLookup(syncable::BOOKMARKS, "testtag")); @@ -289,7 +289,7 @@ TEST_F(SyncApiTest, TestDeleteBehavior) { std::wstring test_title(L"test1"); { - WriteTransaction trans(test_user_share_.user_share()); + WriteTransaction trans(FROM_HERE, test_user_share_.user_share()); ReadNode root_node(&trans); root_node.InitByRootLookup(); @@ -310,7 +310,7 @@ TEST_F(SyncApiTest, TestDeleteBehavior) { // Ensure we can delete something with a tag. { - WriteTransaction trans(test_user_share_.user_share()); + WriteTransaction trans(FROM_HERE, test_user_share_.user_share()); WriteNode wnode(&trans); EXPECT_TRUE(wnode.InitByClientTagLookup(syncable::BOOKMARKS, "testtag")); @@ -323,7 +323,7 @@ TEST_F(SyncApiTest, TestDeleteBehavior) { // Lookup of a node which was deleted should return failure, // but have found some data about the node. { - ReadTransaction trans(test_user_share_.user_share()); + ReadTransaction trans(FROM_HERE, test_user_share_.user_share()); ReadNode node(&trans); EXPECT_FALSE(node.InitByClientTagLookup(syncable::BOOKMARKS, "testtag")); @@ -333,7 +333,7 @@ TEST_F(SyncApiTest, TestDeleteBehavior) { } { - WriteTransaction trans(test_user_share_.user_share()); + WriteTransaction trans(FROM_HERE, test_user_share_.user_share()); ReadNode folder_node(&trans); EXPECT_TRUE(folder_node.InitByIdLookup(folder_id)); @@ -350,7 +350,7 @@ TEST_F(SyncApiTest, TestDeleteBehavior) { // Now look up should work. { - ReadTransaction trans(test_user_share_.user_share()); + ReadTransaction trans(FROM_HERE, test_user_share_.user_share()); ReadNode node(&trans); EXPECT_TRUE(node.InitByClientTagLookup(syncable::BOOKMARKS, "testtag")); @@ -362,11 +362,11 @@ TEST_F(SyncApiTest, TestDeleteBehavior) { TEST_F(SyncApiTest, WriteAndReadPassword) { KeyParams params = {"localhost", "username", "passphrase"}; { - ReadTransaction trans(test_user_share_.user_share()); + ReadTransaction trans(FROM_HERE, test_user_share_.user_share()); trans.GetCryptographer()->AddKey(params); } { - WriteTransaction trans(test_user_share_.user_share()); + WriteTransaction trans(FROM_HERE, test_user_share_.user_share()); ReadNode root_node(&trans); root_node.InitByRootLookup(); @@ -378,7 +378,7 @@ TEST_F(SyncApiTest, WriteAndReadPassword) { password_node.SetPasswordSpecifics(data); } { - ReadTransaction trans(test_user_share_.user_share()); + ReadTransaction trans(FROM_HERE, test_user_share_.user_share()); ReadNode root_node(&trans); root_node.InitByRootLookup(); @@ -394,7 +394,7 @@ TEST_F(SyncApiTest, WriteAndReadPassword) { TEST_F(SyncApiTest, BaseNodeSetSpecifics) { int64 child_id = MakeNode(test_user_share_.user_share(), syncable::BOOKMARKS, "testtag"); - WriteTransaction trans(test_user_share_.user_share()); + WriteTransaction trans(FROM_HERE, test_user_share_.user_share()); WriteNode node(&trans); EXPECT_TRUE(node.InitByIdLookup(child_id)); @@ -412,7 +412,7 @@ TEST_F(SyncApiTest, BaseNodeSetSpecifics) { TEST_F(SyncApiTest, BaseNodeSetSpecificsPreservesUnknownFields) { int64 child_id = MakeNode(test_user_share_.user_share(), syncable::BOOKMARKS, "testtag"); - WriteTransaction trans(test_user_share_.user_share()); + WriteTransaction trans(FROM_HERE, test_user_share_.user_share()); WriteNode node(&trans); EXPECT_TRUE(node.InitByIdLookup(child_id)); EXPECT_TRUE(node.GetEntitySpecifics().unknown_fields().empty()); @@ -478,7 +478,7 @@ void CheckNodeValue(const BaseNode& node, const DictionaryValue& value, } // namespace TEST_F(SyncApiTest, BaseNodeGetSummaryAsValue) { - ReadTransaction trans(test_user_share_.user_share()); + ReadTransaction trans(FROM_HERE, test_user_share_.user_share()); ReadNode node(&trans); node.InitByRootLookup(); scoped_ptr<DictionaryValue> details(node.GetSummaryAsValue()); @@ -490,7 +490,7 @@ TEST_F(SyncApiTest, BaseNodeGetSummaryAsValue) { } TEST_F(SyncApiTest, BaseNodeGetDetailsAsValue) { - ReadTransaction trans(test_user_share_.user_share()); + ReadTransaction trans(FROM_HERE, test_user_share_.user_share()); ReadNode node(&trans); node.InitByRootLookup(); scoped_ptr<DictionaryValue> details(node.GetDetailsAsValue()); @@ -574,7 +574,7 @@ TEST_F(SyncApiTest, ChangeRecordToValue) { syncable::BOOKMARKS, "testtag"); sync_pb::EntitySpecifics child_specifics; { - ReadTransaction trans(test_user_share_.user_share()); + ReadTransaction trans(FROM_HERE, test_user_share_.user_share()); ReadNode node(&trans); EXPECT_TRUE(node.InitByIdLookup(child_id)); child_specifics = node.GetEntry()->Get(syncable::SPECIFICS); @@ -582,7 +582,7 @@ TEST_F(SyncApiTest, ChangeRecordToValue) { // Add { - ReadTransaction trans(test_user_share_.user_share()); + ReadTransaction trans(FROM_HERE, test_user_share_.user_share()); SyncManager::ChangeRecord record; record.action = SyncManager::ChangeRecord::ACTION_ADD; record.id = 1; @@ -594,7 +594,7 @@ TEST_F(SyncApiTest, ChangeRecordToValue) { // Update { - ReadTransaction trans(test_user_share_.user_share()); + ReadTransaction trans(FROM_HERE, test_user_share_.user_share()); SyncManager::ChangeRecord record; record.action = SyncManager::ChangeRecord::ACTION_UPDATE; record.id = child_id; @@ -606,7 +606,7 @@ TEST_F(SyncApiTest, ChangeRecordToValue) { // Delete (no extra) { - ReadTransaction trans(test_user_share_.user_share()); + ReadTransaction trans(FROM_HERE, test_user_share_.user_share()); SyncManager::ChangeRecord record; record.action = SyncManager::ChangeRecord::ACTION_DELETE; record.id = child_id + 1; @@ -617,7 +617,7 @@ TEST_F(SyncApiTest, ChangeRecordToValue) { // Delete (with extra) { - ReadTransaction trans(test_user_share_.user_share()); + ReadTransaction trans(FROM_HERE, test_user_share_.user_share()); SyncManager::ChangeRecord record; record.action = SyncManager::ChangeRecord::ACTION_DELETE; record.id = child_id + 1; @@ -773,7 +773,7 @@ class SyncManagerTest : public testing::Test, return false; // Set the nigori cryptographer information. - WriteTransaction trans(share); + WriteTransaction trans(FROM_HERE, share); Cryptographer* cryptographer = trans.GetCryptographer(); if (!cryptographer) return false; @@ -926,7 +926,7 @@ TEST_F(SyncManagerTest, ProcessMessageGetRootNodeDetails) { DictionaryValue* node_info = NULL; EXPECT_TRUE(return_args.Get().GetDictionary(0, &node_info)); if (node_info) { - ReadTransaction trans(sync_manager_.GetUserShare()); + ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); ReadNode node(&trans); node.InitByRootLookup(); CheckNodeValue(node, *node_info, true); @@ -949,7 +949,7 @@ void CheckGetNodesByIdReturnArgs(const SyncManager& sync_manager, DictionaryValue* node_info = NULL; EXPECT_TRUE(nodes->GetDictionary(0, &node_info)); ASSERT_TRUE(node_info); - ReadTransaction trans(sync_manager.GetUserShare()); + ReadTransaction trans(FROM_HERE, sync_manager.GetUserShare()); ReadNode node(&trans); EXPECT_TRUE(node.InitByIdLookup(id)); CheckNodeValue(node, *node_info, is_detailed); @@ -962,7 +962,7 @@ class SyncManagerGetNodesByIdTest : public SyncManagerTest { void RunGetNodesByIdTest(const char* message_name, bool is_detailed) { int64 root_id = kInvalidId; { - ReadTransaction trans(sync_manager_.GetUserShare()); + ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); ReadNode root_node(&trans); root_node.InitByRootLookup(); root_id = root_node.GetId(); @@ -1275,7 +1275,7 @@ TEST_F(SyncManagerTest, EncryptDataTypesWithNoData) { EXPECT_CALL(observer_, OnEncryptionComplete(expected_types)); sync_manager_.EncryptDataTypes(encrypted_types); { - ReadTransaction trans(sync_manager_.GetUserShare()); + ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); EXPECT_EQ(expected_types, GetEncryptedTypes(&trans)); } @@ -1310,7 +1310,7 @@ TEST_F(SyncManagerTest, EncryptDataTypesWithData) { } { - ReadTransaction trans(sync_manager_.GetUserShare()); + ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); EXPECT_TRUE(syncable::VerifyDataTypeEncryption(trans.GetWrappedTrans(), syncable::BOOKMARKS, false /* not encrypted */)); @@ -1330,7 +1330,7 @@ TEST_F(SyncManagerTest, EncryptDataTypesWithData) { sync_manager_.EncryptDataTypes(encrypted_types); { - ReadTransaction trans(sync_manager_.GetUserShare()); + ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); EXPECT_EQ(encrypted_types, GetEncryptedTypes(&trans)); EXPECT_TRUE(syncable::VerifyDataTypeEncryption(trans.GetWrappedTrans(), @@ -1348,7 +1348,7 @@ TEST_F(SyncManagerTest, EncryptDataTypesWithData) { TEST_F(SyncManagerTest, SetPassphraseWithPassword) { EXPECT_TRUE(SetUpEncryption()); { - WriteTransaction trans(sync_manager_.GetUserShare()); + WriteTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); ReadNode root_node(&trans); root_node.InitByRootLookup(); @@ -1363,7 +1363,7 @@ TEST_F(SyncManagerTest, SetPassphraseWithPassword) { EXPECT_CALL(observer_, OnEncryptionComplete(_)); sync_manager_.SetPassphrase("new_passphrase", true); { - ReadTransaction trans(sync_manager_.GetUserShare()); + ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); ReadNode root_node(&trans); root_node.InitByRootLookup(); @@ -1381,7 +1381,7 @@ TEST_F(SyncManagerTest, SetPassphraseWithEmptyPasswordNode) { int64 node_id = 0; std::string tag = "foo"; { - WriteTransaction trans(sync_manager_.GetUserShare()); + WriteTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); ReadNode root_node(&trans); root_node.InitByRootLookup(); @@ -1394,7 +1394,7 @@ TEST_F(SyncManagerTest, SetPassphraseWithEmptyPasswordNode) { EXPECT_CALL(observer_, OnEncryptionComplete(_)); sync_manager_.SetPassphrase("new_passphrase", true); { - ReadTransaction trans(sync_manager_.GetUserShare()); + ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); ReadNode root_node(&trans); root_node.InitByRootLookup(); @@ -1403,7 +1403,7 @@ TEST_F(SyncManagerTest, SetPassphraseWithEmptyPasswordNode) { tag)); } { - ReadTransaction trans(sync_manager_.GetUserShare()); + ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); ReadNode root_node(&trans); root_node.InitByRootLookup(); diff --git a/chrome/browser/sync/engine/syncer.cc b/chrome/browser/sync/engine/syncer.cc index d6a580d..abcf5f0 100644 --- a/chrome/browser/sync/engine/syncer.cc +++ b/chrome/browser/sync/engine/syncer.cc @@ -168,7 +168,7 @@ void Syncer::SyncShare(sessions::SyncSession* session, LOG(ERROR) << "Scoped dir lookup failed!"; return; } - WriteTransaction trans(dir, SYNCER, FROM_HERE); + WriteTransaction trans(FROM_HERE, SYNCER, dir); sessions::ScopedSetSessionWriteTransaction set_trans(session, &trans); VLOG(1) << "Getting the Commit IDs"; diff --git a/chrome/browser/sync/engine/syncer_unittest.cc b/chrome/browser/sync/engine/syncer_unittest.cc index 5fceff0..16c4783 100644 --- a/chrome/browser/sync/engine/syncer_unittest.cc +++ b/chrome/browser/sync/engine/syncer_unittest.cc @@ -197,7 +197,7 @@ class SyncerTest : public testing::Test, ScopedDirLookup dir(syncdb_.manager(), syncdb_.name()); CHECK(dir.good()); - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); syncable::Directory::ChildHandles children; dir->GetChildHandlesById(&trans, trans.root_id(), &children); ASSERT_TRUE(0 == children.size()); @@ -282,7 +282,7 @@ class SyncerTest : public testing::Test, map<int, syncable::Id> expected_positions; { // Transaction scope. - WriteTransaction trans(dir, UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir); while (!test->id.IsRoot()) { if (test->commit_index >= 0) { map<int, syncable::Id>::value_type entry(test->commit_index, @@ -348,7 +348,7 @@ class SyncerTest : public testing::Test, // The expected order is "x", "b", "c", "e", truncated appropriately. for (size_t limit = expected_id_order.size() + 2; limit > 0; --limit) { StatusController* status = session_->status_controller(); - WriteTransaction wtrans(dir, UNITTEST, FROM_HERE); + WriteTransaction wtrans(FROM_HERE, UNITTEST, dir); ScopedSetSessionWriteTransaction set_trans(session_.get(), &wtrans); status->set_unsynced_handles(unsynced_handle_view); @@ -389,7 +389,7 @@ class SyncerTest : public testing::Test, const syncable::Id& id) { ScopedDirLookup dir(syncdb_.manager(), syncdb_.name()); EXPECT_TRUE(dir.good()); - WriteTransaction wtrans(dir, UNITTEST, FROM_HERE); + WriteTransaction wtrans(FROM_HERE, UNITTEST, dir); MutableEntry entry(&wtrans, syncable::CREATE, wtrans.root_id(), entry_name); EXPECT_TRUE(entry.good()); @@ -416,7 +416,7 @@ class SyncerTest : public testing::Test, ValueType default_value) const { ScopedDirLookup dir(syncdb_.manager(), syncdb_.name()); EXPECT_TRUE(dir.good()); - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); Entry entry(&trans, GET_BY_HANDLE, metahandle); EXPECT_TRUE(entry.good()); if (!entry.good()) { @@ -489,7 +489,7 @@ TEST_F(SyncerTest, TestCallGatherUnsyncedEntries) { { Syncer::UnsyncedMetaHandles handles; { - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); SyncerUtil::GetUnsyncedEntries(&trans, &handles); } ASSERT_TRUE(0 == handles.size()); @@ -508,7 +508,7 @@ TEST_F(SyncerTest, GetCommitIdsCommandTruncates) { int64 handle_d = CreateUnsyncedDirectory("D", ids_.MakeLocal("d")); int64 handle_e = CreateUnsyncedDirectory("E", ids_.MakeLocal("e")); { - WriteTransaction wtrans(dir, UNITTEST, FROM_HERE); + WriteTransaction wtrans(FROM_HERE, UNITTEST, dir); MutableEntry entry_x(&wtrans, GET_BY_HANDLE, handle_x); MutableEntry entry_b(&wtrans, GET_BY_HANDLE, handle_b); MutableEntry entry_c(&wtrans, GET_BY_HANDLE, handle_c); @@ -546,7 +546,7 @@ TEST_F(SyncerTest, TestCommitMetahandleIterator) { const vector<int64>& unsynced(status->unsynced_handles()); { - WriteTransaction wtrans(dir, UNITTEST, FROM_HERE); + WriteTransaction wtrans(FROM_HERE, UNITTEST, dir); ScopedSetSessionWriteTransaction set_trans(session_.get(), &wtrans); sessions::OrderedCommitSet commit_set(session_->routing_info()); @@ -563,7 +563,7 @@ TEST_F(SyncerTest, TestCommitMetahandleIterator) { session_metahandles.push_back(CreateUnsyncedDirectory("test3", "testid3")); status->set_unsynced_handles(session_metahandles); - WriteTransaction wtrans(dir, UNITTEST, FROM_HERE); + WriteTransaction wtrans(FROM_HERE, UNITTEST, dir); ScopedSetSessionWriteTransaction set_trans(session_.get(), &wtrans); sessions::OrderedCommitSet commit_set(session_->routing_info()); GetCommitIdsCommand::CommitMetahandleIterator iterator(unsynced, &wtrans, @@ -589,7 +589,7 @@ TEST_F(SyncerTest, TestGetUnsyncedAndSimpleCommit) { ScopedDirLookup dir(syncdb_.manager(), syncdb_.name()); ASSERT_TRUE(dir.good()); { - WriteTransaction wtrans(dir, UNITTEST, FROM_HERE); + WriteTransaction wtrans(FROM_HERE, UNITTEST, dir); MutableEntry parent(&wtrans, syncable::CREATE, wtrans.root_id(), "Pete"); ASSERT_TRUE(parent.good()); @@ -613,7 +613,7 @@ TEST_F(SyncerTest, TestGetUnsyncedAndSimpleCommit) { EXPECT_TRUE(parent_id_ == mock_server_->committed_ids()[0]); EXPECT_TRUE(child_id_ == mock_server_->committed_ids()[1]); { - ReadTransaction rt(dir, FROM_HERE); + ReadTransaction rt(FROM_HERE, dir); Entry entry(&rt, syncable::GET_BY_ID, child_id_); ASSERT_TRUE(entry.good()); VerifyTestDataInEntry(&rt, &entry); @@ -626,7 +626,7 @@ TEST_F(SyncerTest, TestPurgeWhileUnsynced) { ASSERT_TRUE(dir.good()); syncable::Id pref_node_id = TestIdFactory::MakeServer("Tim"); { - WriteTransaction wtrans(dir, UNITTEST, FROM_HERE); + WriteTransaction wtrans(FROM_HERE, UNITTEST, dir); MutableEntry parent(&wtrans, syncable::CREATE, wtrans.root_id(), "Pete"); ASSERT_TRUE(parent.good()); parent.Put(syncable::IS_UNSYNCED, true); @@ -661,14 +661,14 @@ TEST_F(SyncerTest, TestPurgeWhileUnsynced) { EXPECT_TRUE(parent_id_ == mock_server_->committed_ids()[0]); EXPECT_TRUE(child_id_ == mock_server_->committed_ids()[1]); { - ReadTransaction rt(dir, FROM_HERE); + ReadTransaction rt(FROM_HERE, dir); Entry entry(&rt, syncable::GET_BY_ID, child_id_); ASSERT_TRUE(entry.good()); VerifyTestDataInEntry(&rt, &entry); } dir->SaveChanges(); { - ReadTransaction rt(dir, FROM_HERE); + ReadTransaction rt(FROM_HERE, dir); Entry entry(&rt, syncable::GET_BY_ID, pref_node_id); ASSERT_FALSE(entry.good()); } @@ -679,7 +679,7 @@ TEST_F(SyncerTest, TestPurgeWhileUnapplied) { ScopedDirLookup dir(syncdb_.manager(), syncdb_.name()); ASSERT_TRUE(dir.good()); { - WriteTransaction wtrans(dir, UNITTEST, FROM_HERE); + WriteTransaction wtrans(FROM_HERE, UNITTEST, dir); MutableEntry parent(&wtrans, syncable::CREATE, wtrans.root_id(), "Pete"); ASSERT_TRUE(parent.good()); parent.Put(syncable::IS_UNAPPLIED_UPDATE, true); @@ -696,7 +696,7 @@ TEST_F(SyncerTest, TestPurgeWhileUnapplied) { syncer_->SyncShare(session_.get(), SYNCER_BEGIN, SYNCER_END); dir->SaveChanges(); { - ReadTransaction rt(dir, FROM_HERE); + ReadTransaction rt(FROM_HERE, dir); Entry entry(&rt, syncable::GET_BY_ID, parent_id_); ASSERT_FALSE(entry.good()); } @@ -837,7 +837,7 @@ TEST_F(SyncerTest, TestCommitListOrderingWithNesting) { int64 now_minus_2h = ServerTimeToClientTime(now_server_time - 7200000); { - WriteTransaction wtrans(dir, UNITTEST, FROM_HERE); + WriteTransaction wtrans(FROM_HERE, UNITTEST, dir); { MutableEntry parent(&wtrans, syncable::CREATE, wtrans.root_id(), "Bob"); @@ -920,7 +920,7 @@ TEST_F(SyncerTest, TestCommitListOrderingWithNewItems) { ScopedDirLookup dir(syncdb_.manager(), syncdb_.name()); ASSERT_TRUE(dir.good()); { - WriteTransaction wtrans(dir, UNITTEST, FROM_HERE); + WriteTransaction wtrans(FROM_HERE, UNITTEST, dir); MutableEntry parent(&wtrans, syncable::CREATE, wtrans.root_id(), "1"); ASSERT_TRUE(parent.good()); parent.Put(syncable::IS_UNSYNCED, true); @@ -937,7 +937,7 @@ TEST_F(SyncerTest, TestCommitListOrderingWithNewItems) { child.Put(syncable::BASE_VERSION, 1); } { - WriteTransaction wtrans(dir, UNITTEST, FROM_HERE); + WriteTransaction wtrans(FROM_HERE, UNITTEST, dir); MutableEntry parent(&wtrans, syncable::CREATE, parent_id_, "A"); ASSERT_TRUE(parent.good()); parent.Put(syncable::IS_UNSYNCED, true); @@ -953,7 +953,7 @@ TEST_F(SyncerTest, TestCommitListOrderingWithNewItems) { parent.Put(syncable::BASE_VERSION, 1); } { - WriteTransaction wtrans(dir, UNITTEST, FROM_HERE); + WriteTransaction wtrans(FROM_HERE, UNITTEST, dir); MutableEntry parent(&wtrans, syncable::CREATE, child_id_, "A"); ASSERT_TRUE(parent.good()); parent.Put(syncable::IS_UNSYNCED, true); @@ -988,7 +988,7 @@ TEST_F(SyncerTest, TestCommitListOrderingCounterexample) { syncable::Id child2_id = ids_.NewServerId(); { - WriteTransaction wtrans(dir, UNITTEST, FROM_HERE); + WriteTransaction wtrans(FROM_HERE, UNITTEST, dir); MutableEntry parent(&wtrans, syncable::CREATE, wtrans.root_id(), "P"); ASSERT_TRUE(parent.good()); parent.Put(syncable::IS_UNSYNCED, true); @@ -1029,7 +1029,7 @@ TEST_F(SyncerTest, TestCommitListOrderingAndNewParent) { string child_name = "B"; { - WriteTransaction wtrans(dir, UNITTEST, FROM_HERE); + WriteTransaction wtrans(FROM_HERE, UNITTEST, dir); MutableEntry parent(&wtrans, syncable::CREATE, wtrans.root_id(), parent1_name); ASSERT_TRUE(parent.good()); @@ -1043,7 +1043,7 @@ TEST_F(SyncerTest, TestCommitListOrderingAndNewParent) { syncable::Id parent2_id = ids_.NewLocalId(); syncable::Id child_id = ids_.NewServerId(); { - WriteTransaction wtrans(dir, UNITTEST, FROM_HERE); + WriteTransaction wtrans(FROM_HERE, UNITTEST, dir); MutableEntry parent2(&wtrans, syncable::CREATE, parent_id_, parent2_name); ASSERT_TRUE(parent2.good()); parent2.Put(syncable::IS_UNSYNCED, true); @@ -1068,7 +1068,7 @@ TEST_F(SyncerTest, TestCommitListOrderingAndNewParent) { EXPECT_TRUE(parent2_id == mock_server_->committed_ids()[1]); EXPECT_TRUE(child_id == mock_server_->committed_ids()[2]); { - ReadTransaction rtrans(dir, FROM_HERE); + ReadTransaction rtrans(FROM_HERE, dir); // Check that things committed correctly. Entry entry_1(&rtrans, syncable::GET_BY_ID, parent_id_); EXPECT_EQ(entry_1.Get(NON_UNIQUE_NAME), parent1_name); @@ -1100,7 +1100,7 @@ TEST_F(SyncerTest, TestCommitListOrderingAndNewParentAndChild) { string child_name = "B"; { - WriteTransaction wtrans(dir, UNITTEST, FROM_HERE); + WriteTransaction wtrans(FROM_HERE, UNITTEST, dir); MutableEntry parent(&wtrans, syncable::CREATE, wtrans.root_id(), @@ -1117,7 +1117,7 @@ TEST_F(SyncerTest, TestCommitListOrderingAndNewParentAndChild) { const Id parent2_local_id = ids_.NewLocalId(); const Id child_local_id = ids_.NewLocalId(); { - WriteTransaction wtrans(dir, UNITTEST, FROM_HERE); + WriteTransaction wtrans(FROM_HERE, UNITTEST, dir); MutableEntry parent2(&wtrans, syncable::CREATE, parent_id_, parent2_name); ASSERT_TRUE(parent2.good()); parent2.Put(syncable::IS_UNSYNCED, true); @@ -1143,7 +1143,7 @@ TEST_F(SyncerTest, TestCommitListOrderingAndNewParentAndChild) { EXPECT_TRUE(parent2_local_id == mock_server_->committed_ids()[1]); EXPECT_TRUE(child_local_id == mock_server_->committed_ids()[2]); { - ReadTransaction rtrans(dir, FROM_HERE); + ReadTransaction rtrans(FROM_HERE, dir); Entry parent(&rtrans, syncable::GET_BY_ID, GetOnlyEntryWithName(&rtrans, rtrans.root_id(), parent_name)); @@ -1206,7 +1206,7 @@ TEST_F(SyncerTest, TestBasicUpdate) { SyncShareAsDelegate(); { - WriteTransaction trans(dir, UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir); Entry entry(&trans, GET_BY_ID, syncable::Id::CreateFromServerId("some_id")); ASSERT_TRUE(entry.good()); @@ -1265,7 +1265,7 @@ TEST_F(SyncerTest, IllegalAndLegalUpdates) { } { - WriteTransaction trans(dir, UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir); // Even though it has the same name, it should work. Entry name_clash(&trans, GET_BY_ID, ids_.FromNumber(2)); ASSERT_TRUE(name_clash.good()); @@ -1302,7 +1302,7 @@ TEST_F(SyncerTest, IllegalAndLegalUpdates) { mock_server_->AddUpdateDirectory(4, 0, "old_version", 10, 10); syncer_->SyncShare(session_.get(), SYNCER_BEGIN, SYNCER_END); { - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); Entry still_a_dir(&trans, GET_BY_ID, ids_.FromNumber(10)); ASSERT_TRUE(still_a_dir.good()); @@ -1366,7 +1366,7 @@ TEST_F(SyncerTest, CommitTimeRename) { // Create a folder and an entry. { - WriteTransaction trans(dir, UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir); MutableEntry parent(&trans, CREATE, root_id_, "Folder"); ASSERT_TRUE(parent.good()); parent.Put(IS_DIR, true); @@ -1387,7 +1387,7 @@ TEST_F(SyncerTest, CommitTimeRename) { // Verify it was correctly renamed. { - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); Entry entry_folder(&trans, GET_BY_HANDLE, metahandle_folder); ASSERT_TRUE(entry_folder.good()); EXPECT_EQ("renamed_Folder", entry_folder.Get(NON_UNIQUE_NAME)); @@ -1416,7 +1416,7 @@ TEST_F(SyncerTest, CommitTimeRenameI18N) { int64 metahandle; // Create a folder, expect a commit time rename. { - WriteTransaction trans(dir, UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir); MutableEntry parent(&trans, CREATE, root_id_, "Folder"); ASSERT_TRUE(parent.good()); parent.Put(IS_DIR, true); @@ -1430,7 +1430,7 @@ TEST_F(SyncerTest, CommitTimeRenameI18N) { // Verify it was correctly renamed. { - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); string expected_folder_name(i18nString); expected_folder_name.append("Folder"); @@ -1450,7 +1450,7 @@ TEST_F(SyncerTest, CommitReuniteUpdateAdjustsChildren) { // Create a folder in the root. int64 metahandle_folder; { - WriteTransaction trans(dir, UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir); MutableEntry entry(&trans, CREATE, trans.root_id(), "new_folder"); ASSERT_TRUE(entry.good()); entry.Put(IS_DIR, true); @@ -1463,7 +1463,7 @@ TEST_F(SyncerTest, CommitReuniteUpdateAdjustsChildren) { syncable::Id folder_id; int64 metahandle_entry; { - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); Entry entry(&trans, GET_BY_HANDLE, metahandle_folder); ASSERT_TRUE(entry.good()); folder_id = entry.Get(ID); @@ -1472,7 +1472,7 @@ TEST_F(SyncerTest, CommitReuniteUpdateAdjustsChildren) { // Create an entry in the newly created folder. { - WriteTransaction trans(dir, UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir); MutableEntry entry(&trans, CREATE, folder_id, "new_entry"); ASSERT_TRUE(entry.good()); metahandle_entry = entry.Get(META_HANDLE); @@ -1482,7 +1482,7 @@ TEST_F(SyncerTest, CommitReuniteUpdateAdjustsChildren) { // Verify it and pull the ID out of the entry. syncable::Id entry_id; { - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); Entry entry(&trans, syncable::GET_BY_HANDLE, metahandle_entry); ASSERT_TRUE(entry.good()); EXPECT_EQ(folder_id, entry.Get(PARENT_ID)); @@ -1512,7 +1512,7 @@ TEST_F(SyncerTest, CommitReuniteUpdateAdjustsChildren) { SyncShareAsDelegate(); { // The folder's ID should have been updated. - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); Entry folder(&trans, GET_BY_HANDLE, metahandle_folder); ASSERT_TRUE(folder.good()); EXPECT_EQ("new_folder", folder.Get(NON_UNIQUE_NAME)); @@ -1544,7 +1544,7 @@ TEST_F(SyncerTest, CommitReuniteUpdate) { // Create an entry in the root. int64 entry_metahandle; { - WriteTransaction trans(dir, UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir); MutableEntry entry(&trans, CREATE, trans.root_id(), "new_entry"); ASSERT_TRUE(entry.good()); entry_metahandle = entry.Get(META_HANDLE); @@ -1554,7 +1554,7 @@ TEST_F(SyncerTest, CommitReuniteUpdate) { // Verify it and pull the ID out. syncable::Id entry_id; { - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); Entry entry(&trans, GET_BY_HANDLE, entry_metahandle); ASSERT_TRUE(entry.good()); @@ -1580,7 +1580,7 @@ TEST_F(SyncerTest, CommitReuniteUpdate) { // Alright! Apply that update! SyncShareAsDelegate(); { - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); Entry entry(&trans, GET_BY_HANDLE, entry_metahandle); ASSERT_TRUE(entry.good()); EXPECT_TRUE(new_version == entry.Get(BASE_VERSION)); @@ -1601,7 +1601,7 @@ TEST_F(SyncerTest, CommitReuniteUpdateDoesNotChokeOnDeletedLocalEntry) { // Create a entry in the root. int64 entry_metahandle; { - WriteTransaction trans(dir, UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir); MutableEntry entry(&trans, CREATE, trans.root_id(), "new_entry"); ASSERT_TRUE(entry.good()); entry_metahandle = entry.Get(META_HANDLE); @@ -1610,7 +1610,7 @@ TEST_F(SyncerTest, CommitReuniteUpdateDoesNotChokeOnDeletedLocalEntry) { // Verify it and pull the ID out. syncable::Id entry_id; { - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); Entry entry(&trans, GET_BY_HANDLE, entry_metahandle); ASSERT_TRUE(entry.good()); entry_id = entry.Get(ID); @@ -1635,7 +1635,7 @@ TEST_F(SyncerTest, CommitReuniteUpdateDoesNotChokeOnDeletedLocalEntry) { // Purposefully delete the entry now before the update application finishes. { - WriteTransaction trans(dir, UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir); Id new_entry_id = GetOnlyEntryWithName( &trans, trans.root_id(), "new_entry"); MutableEntry entry(&trans, GET_BY_ID, new_entry_id); @@ -1646,7 +1646,7 @@ TEST_F(SyncerTest, CommitReuniteUpdateDoesNotChokeOnDeletedLocalEntry) { // Just don't CHECK fail in sync, have the update split. SyncShareAsDelegate(); { - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); Id new_entry_id = GetOnlyEntryWithName( &trans, trans.root_id(), "new_entry"); Entry entry(&trans, GET_BY_ID, new_entry_id); @@ -1668,7 +1668,7 @@ TEST_F(SyncerTest, ConflictMatchingEntryHandlesUnsanitizedNames) { mock_server_->set_conflict_all_commits(true); SyncShareAsDelegate(); { - WriteTransaction wtrans(dir, UNITTEST, FROM_HERE); + WriteTransaction wtrans(FROM_HERE, UNITTEST, dir); MutableEntry A(&wtrans, GET_BY_ID, ids_.FromNumber(1)); ASSERT_TRUE(A.good()); @@ -1686,7 +1686,7 @@ TEST_F(SyncerTest, ConflictMatchingEntryHandlesUnsanitizedNames) { mock_server_->set_conflict_all_commits(false); { - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); Entry A(&trans, GET_BY_ID, ids_.FromNumber(1)); ASSERT_TRUE(A.good()); @@ -1710,7 +1710,7 @@ TEST_F(SyncerTest, ConflictMatchingEntryHandlesNormalNames) { mock_server_->set_conflict_all_commits(true); SyncShareAsDelegate(); { - WriteTransaction wtrans(dir, UNITTEST, FROM_HERE); + WriteTransaction wtrans(FROM_HERE, UNITTEST, dir); MutableEntry A(&wtrans, GET_BY_ID, ids_.FromNumber(1)); ASSERT_TRUE(A.good()); @@ -1728,7 +1728,7 @@ TEST_F(SyncerTest, ConflictMatchingEntryHandlesNormalNames) { mock_server_->set_conflict_all_commits(false); { - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); Entry A(&trans, GET_BY_ID, ids_.FromNumber(1)); ASSERT_TRUE(A.good()); @@ -1753,7 +1753,7 @@ TEST_F(SyncerTest, ReverseFolderOrderingTest) { mock_server_->AddUpdateDirectory(2, 1, "child", 10, 10); mock_server_->AddUpdateDirectory(1, 0, "parent", 10, 10); LoopSyncShare(); - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); Id child_id = GetOnlyEntryWithName( &trans, ids_.FromNumber(4), "gggchild"); @@ -1767,7 +1767,7 @@ class EntryCreatedInNewFolderTest : public SyncerTest { ScopedDirLookup dir(syncdb_.manager(), syncdb_.name()); CHECK(dir.good()); - WriteTransaction trans(dir, UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir); MutableEntry bob(&trans, syncable::GET_BY_ID, GetOnlyEntryWithName(&trans, @@ -1789,7 +1789,7 @@ TEST_F(EntryCreatedInNewFolderTest, EntryCreatedInNewFolderMidSync) { ASSERT_TRUE(dir.good()); dir->set_store_birthday(mock_server_->store_birthday()); { - WriteTransaction trans(dir, UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir); MutableEntry entry(&trans, syncable::CREATE, trans.root_id(), "bob"); ASSERT_TRUE(entry.good()); @@ -1804,7 +1804,7 @@ TEST_F(EntryCreatedInNewFolderTest, EntryCreatedInNewFolderMidSync) { syncer_->SyncShare(session_.get(), BUILD_COMMIT_REQUEST, SYNCER_END); EXPECT_TRUE(1 == mock_server_->committed_ids().size()); { - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); Entry parent_entry(&trans, syncable::GET_BY_ID, GetOnlyEntryWithName(&trans, TestIdFactory::root(), "bob")); ASSERT_TRUE(parent_entry.good()); @@ -1832,7 +1832,7 @@ TEST_F(SyncerTest, UnappliedUpdateOnCreatedItemItemDoesNotCrash) { int64 metahandle_fred; { // Create an item. - WriteTransaction trans(dir, UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir); MutableEntry fred_match(&trans, CREATE, trans.root_id(), "fred_match"); ASSERT_TRUE(fred_match.good()); @@ -1846,7 +1846,7 @@ TEST_F(SyncerTest, UnappliedUpdateOnCreatedItemItemDoesNotCrash) { syncable::Id fred_match_id; { // Now receive a change from outside. - WriteTransaction trans(dir, UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir); MutableEntry fred_match(&trans, GET_BY_HANDLE, metahandle_fred); ASSERT_TRUE(fred_match.good()); EXPECT_TRUE(fred_match.Get(ID).ServerKnows()); @@ -1870,7 +1870,7 @@ TEST_F(SyncerTest, DoublyChangedWithResolver) { ScopedDirLookup dir(syncdb_.manager(), syncdb_.name()); CHECK(dir.good()); { - WriteTransaction wtrans(dir, UNITTEST, FROM_HERE); + WriteTransaction wtrans(FROM_HERE, UNITTEST, dir); MutableEntry parent(&wtrans, syncable::CREATE, root_id_, "Folder"); ASSERT_TRUE(parent.good()); parent.Put(syncable::IS_DIR, true); @@ -1888,7 +1888,7 @@ TEST_F(SyncerTest, DoublyChangedWithResolver) { LoopSyncShare(); syncable::Directory::ChildHandles children; { - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); dir->GetChildHandlesById(&trans, parent_id_, &children); // We expect the conflict resolver to preserve the local entry. Entry child(&trans, syncable::GET_BY_ID, child_id_); @@ -1913,7 +1913,7 @@ TEST_F(SyncerTest, CommitsUpdateDoesntAlterEntry) { int64 test_time = 123456; int64 entry_metahandle; { - WriteTransaction wtrans(dir, UNITTEST, FROM_HERE); + WriteTransaction wtrans(FROM_HERE, UNITTEST, dir); MutableEntry entry(&wtrans, syncable::CREATE, root_id_, "Pete"); ASSERT_TRUE(entry.good()); EXPECT_FALSE(entry.Get(ID).ServerKnows()); @@ -1928,7 +1928,7 @@ TEST_F(SyncerTest, CommitsUpdateDoesntAlterEntry) { int64 version; int64 server_position_in_parent; { - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); Entry entry(&trans, syncable::GET_BY_HANDLE, entry_metahandle); ASSERT_TRUE(entry.good()); id = entry.Get(ID); @@ -1944,7 +1944,7 @@ TEST_F(SyncerTest, CommitsUpdateDoesntAlterEntry) { EXPECT_EQ(server_position_in_parent, update->position_in_parent()); SyncShareAsDelegate(); { - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); Entry entry(&trans, syncable::GET_BY_ID, id); ASSERT_TRUE(entry.good()); EXPECT_TRUE(entry.Get(MTIME) == test_time); @@ -1958,7 +1958,7 @@ TEST_F(SyncerTest, ParentAndChildBothMatch) { syncable::Id child_id = ids_.NewServerId(); { - WriteTransaction wtrans(dir, UNITTEST, FROM_HERE); + WriteTransaction wtrans(FROM_HERE, UNITTEST, dir); MutableEntry parent(&wtrans, CREATE, root_id_, "Folder"); ASSERT_TRUE(parent.good()); parent.Put(IS_DIR, true); @@ -1981,7 +1981,7 @@ TEST_F(SyncerTest, ParentAndChildBothMatch) { SyncShareAsDelegate(); SyncShareAsDelegate(); { - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); Directory::ChildHandles children; dir->GetChildHandlesById(&trans, root_id_, &children); EXPECT_TRUE(1 == children.size()); @@ -2001,7 +2001,7 @@ TEST_F(SyncerTest, CommittingNewDeleted) { ScopedDirLookup dir(syncdb_.manager(), syncdb_.name()); CHECK(dir.good()); { - WriteTransaction trans(dir, UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir); MutableEntry entry(&trans, CREATE, trans.root_id(), "bob"); entry.Put(IS_UNSYNCED, true); entry.Put(IS_DEL, true); @@ -2024,7 +2024,7 @@ TEST_F(SyncerTest, UnappliedUpdateDuringCommit) { ScopedDirLookup dir(syncdb_.manager(), syncdb_.name()); CHECK(dir.good()); { - WriteTransaction trans(dir, UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir); MutableEntry entry(&trans, CREATE, trans.root_id(), "bob"); entry.Put(ID, ids_.FromNumber(20)); entry.Put(BASE_VERSION, 1); @@ -2059,7 +2059,7 @@ TEST_F(SyncerTest, DeletingEntryInFolder) { int64 existing_metahandle; { - WriteTransaction trans(dir, UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir); MutableEntry entry(&trans, CREATE, trans.root_id(), "existing"); ASSERT_TRUE(entry.good()); entry.Put(IS_DIR, true); @@ -2069,7 +2069,7 @@ TEST_F(SyncerTest, DeletingEntryInFolder) { } syncer_->SyncShare(session_.get(), SYNCER_BEGIN, SYNCER_END); { - WriteTransaction trans(dir, UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir); MutableEntry newfolder(&trans, CREATE, trans.root_id(), "new"); ASSERT_TRUE(newfolder.good()); newfolder.Put(IS_DIR, true); @@ -2098,7 +2098,7 @@ TEST_F(SyncerTest, DeletingEntryWithLocalEdits) { mock_server_->AddUpdateDirectory(1, 0, "bob", 1, 10); SyncShareAsDelegate(); { - WriteTransaction trans(dir, UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir); MutableEntry newfolder(&trans, CREATE, ids_.FromNumber(1), "local"); ASSERT_TRUE(newfolder.good()); newfolder.Put(IS_UNSYNCED, true); @@ -2110,7 +2110,7 @@ TEST_F(SyncerTest, DeletingEntryWithLocalEdits) { mock_server_->SetLastUpdateDeleted(); syncer_->SyncShare(session_.get(), SYNCER_BEGIN, APPLY_UPDATES); { - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); Entry entry(&trans, syncable::GET_BY_HANDLE, newfolder_metahandle); ASSERT_TRUE(entry.good()); } @@ -2126,7 +2126,7 @@ TEST_F(SyncerTest, FolderSwapUpdate) { mock_server_->AddUpdateDirectory(7801, 0, "fred", 2, 20); SyncShareAsDelegate(); { - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); Entry id1(&trans, GET_BY_ID, ids_.FromNumber(7801)); ASSERT_TRUE(id1.good()); EXPECT_TRUE("fred" == id1.Get(NON_UNIQUE_NAME)); @@ -2147,7 +2147,7 @@ TEST_F(SyncerTest, NameCollidingFolderSwapWorksFine) { mock_server_->AddUpdateDirectory(4096, 0, "alice", 1, 10); SyncShareAsDelegate(); { - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); Entry id1(&trans, GET_BY_ID, ids_.FromNumber(7801)); ASSERT_TRUE(id1.good()); EXPECT_TRUE("bob" == id1.Get(NON_UNIQUE_NAME)); @@ -2166,7 +2166,7 @@ TEST_F(SyncerTest, NameCollidingFolderSwapWorksFine) { mock_server_->AddUpdateDirectory(4096, 0, "bob", 2, 20); SyncShareAsDelegate(); { - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); Entry id1(&trans, GET_BY_ID, ids_.FromNumber(7801)); ASSERT_TRUE(id1.good()); EXPECT_TRUE("fred" == id1.Get(NON_UNIQUE_NAME)); @@ -2189,7 +2189,7 @@ TEST_F(SyncerTest, CommitManyItemsInOneGo) { uint32 items_to_commit = kDefaultMaxCommitBatchSize * max_batches; CHECK(dir.good()); { - WriteTransaction trans(dir, UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir); for (uint32 i = 0; i < items_to_commit; i++) { string nameutf8 = base::StringPrintf("%d", i); string name(nameutf8.begin(), nameutf8.end()); @@ -2219,7 +2219,7 @@ TEST_F(SyncerTest, HugeConflict) { // Create a lot of updates for which the parent does not exist yet. // Generate a huge deep tree which should all fail to apply at first. { - WriteTransaction trans(dir, UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir); for (int i = 0; i < item_count ; i++) { syncable::Id next_id = ids_.NewServerId(); tree_ids.push_back(next_id); @@ -2231,7 +2231,7 @@ TEST_F(SyncerTest, HugeConflict) { // Check they're in the expected conflict state. { - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); for (int i = 0; i < item_count; i++) { Entry e(&trans, GET_BY_ID, tree_ids[i]); // They should all exist but none should be applied. @@ -2248,7 +2248,7 @@ TEST_F(SyncerTest, HugeConflict) { // Now they should all be OK. { - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); for (int i = 0; i < item_count; i++) { Entry e(&trans, GET_BY_ID, tree_ids[i]); ASSERT_TRUE(e.good()); @@ -2264,7 +2264,7 @@ TEST_F(SyncerTest, DontCrashOnCaseChange) { mock_server_->AddUpdateDirectory(1, 0, "bob", 1, 10); SyncShareAsDelegate(); { - WriteTransaction trans(dir, UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir); MutableEntry e(&trans, GET_BY_ID, ids_.FromNumber(1)); ASSERT_TRUE(e.good()); e.Put(IS_UNSYNCED, true); @@ -2294,7 +2294,7 @@ TEST_F(SyncerTest, NewEntryAndAlteredServerEntrySharePath) { int64 local_folder_handle; syncable::Id local_folder_id; { - WriteTransaction wtrans(dir, UNITTEST, FROM_HERE); + WriteTransaction wtrans(FROM_HERE, UNITTEST, dir); MutableEntry new_entry(&wtrans, CREATE, wtrans.root_id(), "Bar.htm"); ASSERT_TRUE(new_entry.good()); local_folder_id = new_entry.Get(ID); @@ -2311,7 +2311,7 @@ TEST_F(SyncerTest, NewEntryAndAlteredServerEntrySharePath) { saw_syncer_event_ = false; { // Update #20 should have been dropped in favor of the local version. - WriteTransaction wtrans(dir, UNITTEST, FROM_HERE); + WriteTransaction wtrans(FROM_HERE, UNITTEST, dir); MutableEntry server(&wtrans, GET_BY_ID, ids_.FromNumber(1)); MutableEntry local(&wtrans, GET_BY_HANDLE, local_folder_handle); ASSERT_TRUE(server.good()); @@ -2335,7 +2335,7 @@ TEST_F(SyncerTest, NewEntryAndAlteredServerEntrySharePath) { SyncShareAsDelegate(); saw_syncer_event_ = false; { - WriteTransaction wtrans(dir, UNITTEST, FROM_HERE); + WriteTransaction wtrans(FROM_HERE, UNITTEST, dir); MutableEntry server(&wtrans, GET_BY_ID, ids_.FromNumber(1)); MutableEntry local(&wtrans, GET_BY_HANDLE, local_folder_handle); ASSERT_TRUE(server.good()); @@ -2362,7 +2362,7 @@ TEST_F(SyncerTest, NewEntryAndAlteredServerEntrySharePath_OldBookmarksProto) { int64 local_folder_handle; syncable::Id local_folder_id; { - WriteTransaction wtrans(dir, UNITTEST, FROM_HERE); + WriteTransaction wtrans(FROM_HERE, UNITTEST, dir); MutableEntry new_entry(&wtrans, CREATE, wtrans.root_id(), "Bar.htm"); ASSERT_TRUE(new_entry.good()); local_folder_id = new_entry.Get(ID); @@ -2379,7 +2379,7 @@ TEST_F(SyncerTest, NewEntryAndAlteredServerEntrySharePath_OldBookmarksProto) { saw_syncer_event_ = false; { // Update #20 should have been dropped in favor of the local version. - WriteTransaction wtrans(dir, UNITTEST, FROM_HERE); + WriteTransaction wtrans(FROM_HERE, UNITTEST, dir); MutableEntry server(&wtrans, GET_BY_ID, ids_.FromNumber(1)); MutableEntry local(&wtrans, GET_BY_HANDLE, local_folder_handle); ASSERT_TRUE(server.good()); @@ -2403,7 +2403,7 @@ TEST_F(SyncerTest, NewEntryAndAlteredServerEntrySharePath_OldBookmarksProto) { SyncShareAsDelegate(); saw_syncer_event_ = false; { - WriteTransaction wtrans(dir, UNITTEST, FROM_HERE); + WriteTransaction wtrans(FROM_HERE, UNITTEST, dir); MutableEntry server(&wtrans, GET_BY_ID, ids_.FromNumber(1)); MutableEntry local(&wtrans, GET_BY_HANDLE, local_folder_handle); ASSERT_TRUE(server.good()); @@ -2430,7 +2430,7 @@ TEST_F(SyncerTest, SiblingDirectoriesBecomeCircular) { mock_server_->AddUpdateDirectory(2, 0, "B", 10, 10); SyncShareAsDelegate(); { - WriteTransaction wtrans(dir, UNITTEST, FROM_HERE); + WriteTransaction wtrans(FROM_HERE, UNITTEST, dir); MutableEntry A(&wtrans, GET_BY_ID, ids_.FromNumber(1)); ASSERT_TRUE(A.good()); A.Put(IS_UNSYNCED, true); @@ -2442,7 +2442,7 @@ TEST_F(SyncerTest, SiblingDirectoriesBecomeCircular) { SyncShareAsDelegate(); saw_syncer_event_ = false; { - WriteTransaction wtrans(dir, UNITTEST, FROM_HERE); + WriteTransaction wtrans(FROM_HERE, UNITTEST, dir); MutableEntry A(&wtrans, GET_BY_ID, ids_.FromNumber(1)); ASSERT_TRUE(A.good()); MutableEntry B(&wtrans, GET_BY_ID, ids_.FromNumber(2)); @@ -2462,7 +2462,7 @@ TEST_F(SyncerTest, ConflictSetClassificationError) { mock_server_->set_conflict_all_commits(true); SyncShareAsDelegate(); { - WriteTransaction wtrans(dir, UNITTEST, FROM_HERE); + WriteTransaction wtrans(FROM_HERE, UNITTEST, dir); MutableEntry A(&wtrans, GET_BY_ID, ids_.FromNumber(1)); ASSERT_TRUE(A.good()); A.Put(IS_UNSYNCED, true); @@ -2486,7 +2486,7 @@ TEST_F(SyncerTest, SwapEntryNames) { mock_server_->set_conflict_all_commits(true); SyncShareAsDelegate(); { - WriteTransaction wtrans(dir, UNITTEST, FROM_HERE); + WriteTransaction wtrans(FROM_HERE, UNITTEST, dir); MutableEntry A(&wtrans, GET_BY_ID, ids_.FromNumber(1)); ASSERT_TRUE(A.good()); A.Put(IS_UNSYNCED, true); @@ -2509,7 +2509,7 @@ TEST_F(SyncerTest, DualDeletionWithNewItemNameClash) { mock_server_->set_conflict_all_commits(true); SyncShareAsDelegate(); { - WriteTransaction trans(dir, UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir); MutableEntry B(&trans, GET_BY_ID, ids_.FromNumber(2)); ASSERT_TRUE(B.good()); WriteTestDataToEntry(&trans, &B); @@ -2519,7 +2519,7 @@ TEST_F(SyncerTest, DualDeletionWithNewItemNameClash) { mock_server_->SetLastUpdateDeleted(); SyncShareAsDelegate(); { - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); Entry B(&trans, GET_BY_ID, ids_.FromNumber(2)); ASSERT_TRUE(B.good()); EXPECT_FALSE(B.Get(IS_UNSYNCED)); @@ -2535,7 +2535,7 @@ TEST_F(SyncerTest, FixDirectoryLoopConflict) { mock_server_->AddUpdateDirectory(2, 0, "fred", 1, 10); SyncShareAsDelegate(); { - WriteTransaction trans(dir, UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir); MutableEntry bob(&trans, GET_BY_ID, ids_.FromNumber(1)); ASSERT_TRUE(bob.good()); bob.Put(IS_UNSYNCED, true); @@ -2546,7 +2546,7 @@ TEST_F(SyncerTest, FixDirectoryLoopConflict) { SyncShareAsDelegate(); SyncShareAsDelegate(); { - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); Entry bob(&trans, GET_BY_ID, ids_.FromNumber(1)); ASSERT_TRUE(bob.good()); Entry fred(&trans, GET_BY_ID, ids_.FromNumber(2)); @@ -2568,7 +2568,7 @@ TEST_F(SyncerTest, ResolveWeWroteTheyDeleted) { mock_server_->AddUpdateBookmark(1, 0, "bob", 1, 10); SyncShareAsDelegate(); { - WriteTransaction trans(dir, UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir); MutableEntry bob(&trans, GET_BY_ID, ids_.FromNumber(1)); ASSERT_TRUE(bob.good()); bob_metahandle = bob.Get(META_HANDLE); @@ -2580,7 +2580,7 @@ TEST_F(SyncerTest, ResolveWeWroteTheyDeleted) { SyncShareAsDelegate(); SyncShareAsDelegate(); { - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); Entry bob(&trans, GET_BY_HANDLE, bob_metahandle); ASSERT_TRUE(bob.good()); EXPECT_TRUE(bob.Get(IS_UNSYNCED)); @@ -2604,7 +2604,7 @@ TEST_F(SyncerTest, ServerDeletingFolderWeHaveMovedSomethingInto) { "fred", 1, 10); SyncShareAsDelegate(); { - WriteTransaction trans(dir, UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir); MutableEntry bob(&trans, GET_BY_ID, bob_id); ASSERT_TRUE(bob.good()); bob.Put(IS_UNSYNCED, true); @@ -2617,7 +2617,7 @@ TEST_F(SyncerTest, ServerDeletingFolderWeHaveMovedSomethingInto) { SyncShareAsDelegate(); SyncShareAsDelegate(); { - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); Entry bob(&trans, GET_BY_ID, bob_id); ASSERT_TRUE(bob.good()); @@ -2653,7 +2653,7 @@ TEST_F(SyncerTest, DISABLED_ServerDeletingFolderWeHaveAnOpenEntryIn) { mock_server_->AddUpdateDirectory(2, 0, "fred", 1, 10); SyncShareAsDelegate(); { - WriteTransaction trans(dir, UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir); MutableEntry bob(&trans, GET_BY_ID, ids_.FromNumber(1)); ASSERT_TRUE(bob.good()); bob.Put(IS_UNSYNCED, true); @@ -2661,7 +2661,7 @@ TEST_F(SyncerTest, DISABLED_ServerDeletingFolderWeHaveAnOpenEntryIn) { } SyncShareAsDelegate(); { - WriteTransaction trans(dir, UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir); MutableEntry bob(&trans, GET_BY_ID, ids_.FromNumber(1)); ASSERT_TRUE(bob.good()); EXPECT_FALSE(bob.Get(IS_UNSYNCED)); @@ -2683,7 +2683,7 @@ TEST_F(SyncerTest, DISABLED_ServerDeletingFolderWeHaveAnOpenEntryIn) { SyncShareAsDelegate(); EXPECT_FALSE(saw_syncer_event_); { - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); Entry bob(&trans, GET_BY_ID, ids_.FromNumber(1)); ASSERT_TRUE(bob.good()); Id fred_id = @@ -2711,7 +2711,7 @@ TEST_F(SyncerTest, WeMovedSomethingIntoAFolderServerHasDeleted) { "fred", 1, 10); SyncShareAsDelegate(); { - WriteTransaction trans(dir, UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir); Entry fred(&trans, GET_BY_ID, fred_id); ASSERT_TRUE(fred.good()); @@ -2727,7 +2727,7 @@ TEST_F(SyncerTest, WeMovedSomethingIntoAFolderServerHasDeleted) { SyncShareAsDelegate(); SyncShareAsDelegate(); { - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); Entry bob(&trans, GET_BY_ID, bob_id); ASSERT_TRUE(bob.good()); @@ -2771,7 +2771,7 @@ class FolderMoveDeleteRenameTest : public SyncerTest { ScopedDirLookup dir(syncdb_.manager(), syncdb_.name()); CHECK(dir.good()); - WriteTransaction trans(dir, UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir); Entry alice(&trans, GET_BY_ID, TestIdFactory::FromNumber(fred_id_number)); CHECK(alice.good()); @@ -2805,7 +2805,7 @@ TEST_F(FolderMoveDeleteRenameTest, "fred", 1, 10); SyncShareAsDelegate(); { - WriteTransaction trans(dir, UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir); MutableEntry fred(&trans, GET_BY_ID, fred_id); ASSERT_TRUE(fred.good()); fred.Put(IS_UNSYNCED, true); @@ -2826,7 +2826,7 @@ TEST_F(FolderMoveDeleteRenameTest, SyncShareAsDelegate(); SyncShareAsDelegate(); { - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); Entry bob(&trans, GET_BY_ID, bob_id); ASSERT_TRUE(bob.good()); @@ -2865,7 +2865,7 @@ TEST_F(SyncerTest, SyncShareAsDelegate(); syncable::Id new_item_id; { - WriteTransaction trans(dir, UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir); MutableEntry bob(&trans, GET_BY_ID, bob_id); ASSERT_TRUE(bob.good()); bob.Put(IS_UNSYNCED, true); @@ -2881,7 +2881,7 @@ TEST_F(SyncerTest, SyncShareAsDelegate(); SyncShareAsDelegate(); { - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); Entry bob(&trans, GET_BY_ID, bob_id); ASSERT_TRUE(bob.good()); @@ -2915,7 +2915,7 @@ TEST_F(SyncerTest, ServerMovedSomethingIntoAFolderWeHaveDeleted) { mock_server_->AddUpdateDirectory(2, 0, "fred", 1, 10); LoopSyncShare(); { - WriteTransaction trans(dir, UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir); MutableEntry bob(&trans, GET_BY_ID, ids_.FromNumber(1)); ASSERT_TRUE(bob.good()); bob.Put(IS_UNSYNCED, true); @@ -2926,7 +2926,7 @@ TEST_F(SyncerTest, ServerMovedSomethingIntoAFolderWeHaveDeleted) { LoopSyncShare(); LoopSyncShare(); { - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); Entry bob(&trans, GET_BY_ID, ids_.FromNumber(1)); ASSERT_TRUE(bob.good()); Entry fred(&trans, GET_BY_ID, ids_.FromNumber(2)); @@ -2949,7 +2949,7 @@ TEST_F(SyncerTest, ServerMovedAFolderIntoAFolderWeHaveDeletedAndMovedIntoIt) { mock_server_->AddUpdateDirectory(2, 0, "fred", 1, 10); SyncShareAsDelegate(); { - WriteTransaction trans(dir, UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir); MutableEntry bob(&trans, GET_BY_ID, ids_.FromNumber(1)); ASSERT_TRUE(bob.good()); bob.Put(IS_UNSYNCED, true); @@ -2961,7 +2961,7 @@ TEST_F(SyncerTest, ServerMovedAFolderIntoAFolderWeHaveDeletedAndMovedIntoIt) { SyncShareAsDelegate(); SyncShareAsDelegate(); { - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); Entry bob(&trans, GET_BY_ID, ids_.FromNumber(1)); ASSERT_TRUE(bob.good()); Entry fred(&trans, GET_BY_ID, ids_.FromNumber(2)); @@ -2983,7 +2983,7 @@ TEST_F(SyncerTest, NewServerItemInAFolderWeHaveDeleted) { mock_server_->AddUpdateDirectory(1, 0, "bob", 1, 10); LoopSyncShare(); { - WriteTransaction trans(dir, UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir); MutableEntry bob(&trans, GET_BY_ID, ids_.FromNumber(1)); ASSERT_TRUE(bob.good()); bob.Put(IS_UNSYNCED, true); @@ -2994,7 +2994,7 @@ TEST_F(SyncerTest, NewServerItemInAFolderWeHaveDeleted) { LoopSyncShare(); LoopSyncShare(); { - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); Entry bob(&trans, GET_BY_ID, ids_.FromNumber(1)); ASSERT_TRUE(bob.good()); Entry fred(&trans, GET_BY_ID, ids_.FromNumber(2)); @@ -3016,7 +3016,7 @@ TEST_F(SyncerTest, NewServerItemInAFolderHierarchyWeHaveDeleted) { mock_server_->AddUpdateDirectory(2, 1, "joe", 1, 10); LoopSyncShare(); { - WriteTransaction trans(dir, UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir); MutableEntry bob(&trans, GET_BY_ID, ids_.FromNumber(1)); ASSERT_TRUE(bob.good()); bob.Put(IS_UNSYNCED, true); @@ -3031,7 +3031,7 @@ TEST_F(SyncerTest, NewServerItemInAFolderHierarchyWeHaveDeleted) { LoopSyncShare(); LoopSyncShare(); { - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); Entry bob(&trans, GET_BY_ID, ids_.FromNumber(1)); ASSERT_TRUE(bob.good()); Entry joe(&trans, GET_BY_ID, ids_.FromNumber(2)); @@ -3061,7 +3061,7 @@ TEST_F(SyncerTest, NewServerItemInAFolderHierarchyWeHaveDeleted2) { mock_server_->AddUpdateDirectory(2, 1, "joe", 1, 10); LoopSyncShare(); { - WriteTransaction trans(dir, UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir); MutableEntry bob(&trans, GET_BY_ID, ids_.FromNumber(1)); ASSERT_TRUE(bob.good()); bob.Put(IS_UNSYNCED, true); @@ -3076,7 +3076,7 @@ TEST_F(SyncerTest, NewServerItemInAFolderHierarchyWeHaveDeleted2) { LoopSyncShare(); LoopSyncShare(); { - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); Entry bob(&trans, GET_BY_ID, ids_.FromNumber(1)); ASSERT_TRUE(bob.good()); Entry joe(&trans, GET_BY_ID, ids_.FromNumber(2)); @@ -3116,7 +3116,7 @@ class SusanDeletingTest : public SyncerTest { ASSERT_GT(countdown_till_delete_, 0); if (0 != --countdown_till_delete_) return; - WriteTransaction trans(dir, UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir); MutableEntry susan(&trans, GET_BY_ID, susan_id); Directory::ChildHandles children; dir->GetChildHandlesById(&trans, susan.Get(ID), &children); @@ -3147,7 +3147,7 @@ TEST_F(SusanDeletingTest, mock_server_->AddUpdateDirectory(joe_id, bob_id, "joe", 1, 10); LoopSyncShare(); { - WriteTransaction trans(dir, UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir); MutableEntry bob(&trans, GET_BY_ID, bob_id); ASSERT_TRUE(bob.good()); bob.Put(IS_UNSYNCED, true); @@ -3167,7 +3167,7 @@ TEST_F(SusanDeletingTest, SyncShareAsDelegate(); SyncShareAsDelegate(); { - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); Entry bob(&trans, GET_BY_ID, bob_id); ASSERT_TRUE(bob.good()); Entry joe(&trans, GET_BY_ID, joe_id); @@ -3191,7 +3191,7 @@ TEST_F(SusanDeletingTest, LoopSyncShare(); LoopSyncShare(); { - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); Entry bob(&trans, GET_BY_ID, bob_id); ASSERT_TRUE(bob.good()); Entry joe(&trans, GET_BY_ID, joe_id); @@ -3231,7 +3231,7 @@ TEST_F(SyncerTest, WeMovedSomethingIntoAFolderHierarchyServerHasDeleted) { mock_server_->AddUpdateDirectory(alice_id, fred_id, "alice", 1, 10); SyncShareAsDelegate(); { - WriteTransaction trans(dir, UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir); MutableEntry bob(&trans, GET_BY_ID, bob_id); ASSERT_TRUE(bob.good()); bob.Put(IS_UNSYNCED, true); @@ -3249,7 +3249,7 @@ TEST_F(SyncerTest, WeMovedSomethingIntoAFolderHierarchyServerHasDeleted) { { // Bob is the entry at the bottom of the tree. // The tree should be regenerated and old IDs removed. - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); Entry bob(&trans, GET_BY_ID, bob_id); ASSERT_TRUE(bob.good()); EXPECT_FALSE(bob.Get(IS_UNAPPLIED_UPDATE)); @@ -3303,7 +3303,7 @@ TEST_F(SyncerTest, WeMovedSomethingIntoAFolderHierarchyServerHasDeleted2) { mock_server_->AddUpdateDirectory(alice_id, fred_id, "alice", 1, 10); SyncShareAsDelegate(); { - WriteTransaction trans(dir, UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir); MutableEntry bob(&trans, GET_BY_ID, bob_id); ASSERT_TRUE(bob.good()); bob.Put(IS_UNSYNCED, true); @@ -3325,7 +3325,7 @@ TEST_F(SyncerTest, WeMovedSomethingIntoAFolderHierarchyServerHasDeleted2) { // |- Alice // |- Bob - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); Entry bob(&trans, GET_BY_ID, bob_id); ASSERT_TRUE(bob.good()); EXPECT_FALSE(bob.Get(IS_UNAPPLIED_UPDATE)); @@ -3370,7 +3370,7 @@ TEST_F(SyncerTest, DuplicateIDReturn) { ScopedDirLookup dir(syncdb_.manager(), syncdb_.name()); ASSERT_TRUE(dir.good()); { - WriteTransaction trans(dir, UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir); MutableEntry folder(&trans, CREATE, trans.root_id(), "bob"); ASSERT_TRUE(folder.good()); folder.Put(IS_UNSYNCED, true); @@ -3400,7 +3400,7 @@ TEST_F(SyncerTest, DeletedEntryWithBadParentInLoopCalculation) { mock_server_->AddUpdateDirectory(1, 0, "bob", 1, 10); SyncShareAsDelegate(); { - WriteTransaction trans(dir, UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir); MutableEntry bob(&trans, GET_BY_ID, ids_.FromNumber(1)); ASSERT_TRUE(bob.good()); // This is valid, because the parent could have gone away a long time ago. @@ -3421,7 +3421,7 @@ TEST_F(SyncerTest, ConflictResolverMergeOverwritesLocalEntry) { ConflictSet conflict_set; { - WriteTransaction trans(dir, UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir); MutableEntry local_deleted(&trans, CREATE, trans.root_id(), "name"); local_deleted.Put(ID, ids_.FromNumber(1)); @@ -3443,7 +3443,7 @@ TEST_F(SyncerTest, ConflictResolverMergeOverwritesLocalEntry) { conflict_set.push_back(ids_.FromNumber(3)); } { - WriteTransaction trans(dir, UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir); context_->resolver()->ProcessConflictSet(&trans, &conflict_set, 50); } } @@ -3453,7 +3453,7 @@ TEST_F(SyncerTest, ConflictResolverMergesLocalDeleteAndServerUpdate) { CHECK(dir.good()); { - WriteTransaction trans(dir, UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir); MutableEntry local_deleted(&trans, CREATE, trans.root_id(), "name"); local_deleted.Put(ID, ids_.FromNumber(1)); @@ -3471,7 +3471,7 @@ TEST_F(SyncerTest, ConflictResolverMergesLocalDeleteAndServerUpdate) { SyncShareAsDelegate(); { - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); Entry local_deleted(&trans, GET_BY_ID, ids_.FromNumber(1)); EXPECT_TRUE(local_deleted.Get(BASE_VERSION) == 10); EXPECT_TRUE(local_deleted.Get(IS_UNAPPLIED_UPDATE) == false); @@ -3489,7 +3489,7 @@ TEST_F(SyncerTest, UpdateFlipsTheFolderBit) { // Local object: a deleted directory (container), revision 1, unsynced. { - WriteTransaction trans(dir, UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir); MutableEntry local_deleted(&trans, CREATE, trans.root_id(), "name"); local_deleted.Put(ID, ids_.FromNumber(1)); @@ -3510,7 +3510,7 @@ TEST_F(SyncerTest, UpdateFlipsTheFolderBit) { SyncShareAsDelegate(); { - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); Entry local_deleted(&trans, GET_BY_ID, ids_.FromNumber(1)); EXPECT_TRUE(local_deleted.Get(BASE_VERSION) == 1); EXPECT_TRUE(local_deleted.Get(IS_UNAPPLIED_UPDATE) == false); @@ -3563,7 +3563,7 @@ TEST_F(SyncerTest, MergingExistingItems) { mock_server_->AddUpdateBookmark(1, 0, "base", 10, 10); SyncShareAsDelegate(); { - WriteTransaction trans(dir, UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir); MutableEntry entry(&trans, CREATE, trans.root_id(), "Copy of base"); WriteTestDataToEntry(&trans, &entry); } @@ -3619,7 +3619,7 @@ TEST_F(SyncerTest, LongChangelistWithApplicationConflict) { // Ensure our folder hasn't somehow applied. { - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); Entry child(&trans, GET_BY_ID, stuck_entry_id); EXPECT_TRUE(child.good()); EXPECT_TRUE(child.Get(IS_UNAPPLIED_UPDATE)); @@ -3635,7 +3635,7 @@ TEST_F(SyncerTest, LongChangelistWithApplicationConflict) { LoopSyncShare(); // Check that everything is as expected after the commit. { - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); Entry entry(&trans, GET_BY_ID, folder_id); ASSERT_TRUE(entry.good()); Entry child(&trans, GET_BY_ID, stuck_entry_id); @@ -3653,7 +3653,7 @@ TEST_F(SyncerTest, DontMergeTwoExistingItems) { mock_server_->AddUpdateBookmark(2, 0, "base2", 10, 10); SyncShareAsDelegate(); { - WriteTransaction trans(dir, UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir); MutableEntry entry(&trans, GET_BY_ID, ids_.FromNumber(2)); ASSERT_TRUE(entry.good()); EXPECT_TRUE(entry.Put(NON_UNIQUE_NAME, "Copy of base")); @@ -3662,7 +3662,7 @@ TEST_F(SyncerTest, DontMergeTwoExistingItems) { mock_server_->AddUpdateBookmark(1, 0, "Copy of base", 50, 50); SyncRepeatedlyToTriggerConflictResolution(session_.get()); { - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); Entry entry1(&trans, GET_BY_ID, ids_.FromNumber(1)); EXPECT_FALSE(entry1.Get(IS_UNAPPLIED_UPDATE)); EXPECT_FALSE(entry1.Get(IS_UNSYNCED)); @@ -3688,7 +3688,7 @@ TEST_F(SyncerTest, TestUndeleteUpdate) { int64 metahandle; { - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); Entry entry(&trans, GET_BY_ID, ids_.FromNumber(2)); ASSERT_TRUE(entry.good()); EXPECT_TRUE(entry.Get(IS_DEL)); @@ -3702,7 +3702,7 @@ TEST_F(SyncerTest, TestUndeleteUpdate) { mock_server_->AddUpdateDirectory(2, 1, "bar", 3, 5); SyncShareAsDelegate(); { - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); Entry entry(&trans, GET_BY_ID, ids_.FromNumber(2)); ASSERT_TRUE(entry.good()); EXPECT_TRUE(entry.Get(IS_DEL)); @@ -3719,7 +3719,7 @@ TEST_F(SyncerTest, TestMoveSanitizedNamedFolder) { mock_server_->AddUpdateDirectory(2, 0, ":::", 1, 2); SyncShareAsDelegate(); { - WriteTransaction trans(dir, UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir); MutableEntry entry(&trans, GET_BY_ID, ids_.FromNumber(2)); ASSERT_TRUE(entry.good()); EXPECT_TRUE(entry.Put(PARENT_ID, ids_.FromNumber(1))); @@ -3740,7 +3740,7 @@ TEST_F(SyncerTest, UpdateWhereParentIsNotAFolder) { // Used to cause a CHECK SyncShareAsDelegate(); { - ReadTransaction rtrans(dir, FROM_HERE); + ReadTransaction rtrans(FROM_HERE, dir); Entry good_entry(&rtrans, syncable::GET_BY_ID, ids_.FromNumber(1)); ASSERT_TRUE(good_entry.good()); EXPECT_FALSE(good_entry.Get(IS_UNAPPLIED_UPDATE)); @@ -3765,7 +3765,7 @@ TEST_F(SyncerTest, DirectoryUpdateTest) { "in_in_root_name", 3, 3); SyncShareAsDelegate(); { - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); Entry in_root(&trans, GET_BY_ID, in_root_id); ASSERT_TRUE(in_root.good()); EXPECT_EQ("in_root_name", in_root.Get(NON_UNIQUE_NAME)); @@ -3787,7 +3787,7 @@ TEST_F(SyncerTest, DirectoryCommitTest) { int64 bar_metahandle; { - WriteTransaction wtrans(dir, UNITTEST, FROM_HERE); + WriteTransaction wtrans(FROM_HERE, UNITTEST, dir); MutableEntry parent(&wtrans, syncable::CREATE, root_id_, "foo"); ASSERT_TRUE(parent.good()); parent.Put(syncable::IS_UNSYNCED, true); @@ -3806,7 +3806,7 @@ TEST_F(SyncerTest, DirectoryCommitTest) { } SyncShareAsDelegate(); { - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); Entry fail_by_old_id_entry(&trans, GET_BY_ID, in_root_id); ASSERT_FALSE(fail_by_old_id_entry.good()); @@ -3833,7 +3833,7 @@ TEST_F(SyncerTest, ConflictSetSizeReducedToOne) { "in_root", 1, 1); SyncShareAsDelegate(); { - WriteTransaction trans(dir, UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir); MutableEntry oentry(&trans, GET_BY_ID, in_root_id); ASSERT_TRUE(oentry.good()); oentry.Put(NON_UNIQUE_NAME, "old_in_root"); @@ -3890,7 +3890,7 @@ TEST_F(SyncerTest, EnsureWeSendUpOldParent) { SyncShareAsDelegate(); { // A moved entry should send an "old parent." - WriteTransaction trans(dir, UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir); MutableEntry entry(&trans, GET_BY_ID, folder_one_id); ASSERT_TRUE(entry.good()); entry.Put(PARENT_ID, folder_two_id); @@ -3917,7 +3917,7 @@ TEST_F(SyncerTest, Test64BitVersionSupport) { // Try writing max int64 to the version fields of a meta entry. { - WriteTransaction wtrans(dir, UNITTEST, FROM_HERE); + WriteTransaction wtrans(FROM_HERE, UNITTEST, dir); MutableEntry entry(&wtrans, syncable::CREATE, wtrans.root_id(), name); ASSERT_TRUE(entry.good()); entry.Put(syncable::BASE_VERSION, really_big_int); @@ -3926,7 +3926,7 @@ TEST_F(SyncerTest, Test64BitVersionSupport) { item_metahandle = entry.Get(META_HANDLE); } // Now read it back out and make sure the value is max int64. - ReadTransaction rtrans(dir, FROM_HERE); + ReadTransaction rtrans(FROM_HERE, dir); Entry entry(&rtrans, syncable::GET_BY_HANDLE, item_metahandle); ASSERT_TRUE(entry.good()); EXPECT_TRUE(really_big_int == entry.Get(syncable::BASE_VERSION)); @@ -3942,7 +3942,7 @@ TEST_F(SyncerTest, TestSimpleUndelete) { SyncShareAsDelegate(); // Check it out and delete it. { - WriteTransaction wtrans(dir, UNITTEST, FROM_HERE); + WriteTransaction wtrans(FROM_HERE, UNITTEST, dir); MutableEntry entry(&wtrans, GET_BY_ID, id); ASSERT_TRUE(entry.good()); EXPECT_FALSE(entry.Get(IS_UNAPPLIED_UPDATE)); @@ -3954,7 +3954,7 @@ TEST_F(SyncerTest, TestSimpleUndelete) { SyncShareAsDelegate(); // Confirm we see IS_DEL and not SERVER_IS_DEL. { - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); Entry entry(&trans, GET_BY_ID, id); ASSERT_TRUE(entry.good()); EXPECT_FALSE(entry.Get(IS_UNAPPLIED_UPDATE)); @@ -3969,7 +3969,7 @@ TEST_F(SyncerTest, TestSimpleUndelete) { SyncShareAsDelegate(); // IS_DEL AND SERVER_IS_DEL now both true. { - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); Entry entry(&trans, GET_BY_ID, id); ASSERT_TRUE(entry.good()); EXPECT_FALSE(entry.Get(IS_UNAPPLIED_UPDATE)); @@ -3982,7 +3982,7 @@ TEST_F(SyncerTest, TestSimpleUndelete) { SyncShareAsDelegate(); // IS_DEL and SERVER_IS_DEL now both false. { - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); Entry entry(&trans, GET_BY_ID, id); ASSERT_TRUE(entry.good()); EXPECT_FALSE(entry.Get(IS_UNAPPLIED_UPDATE)); @@ -4002,7 +4002,7 @@ TEST_F(SyncerTest, TestUndeleteWithMissingDeleteUpdate) { SyncShareAsDelegate(); // Check it out and delete it. { - WriteTransaction wtrans(dir, UNITTEST, FROM_HERE); + WriteTransaction wtrans(FROM_HERE, UNITTEST, dir); MutableEntry entry(&wtrans, GET_BY_ID, id); ASSERT_TRUE(entry.good()); EXPECT_FALSE(entry.Get(IS_UNAPPLIED_UPDATE)); @@ -4014,7 +4014,7 @@ TEST_F(SyncerTest, TestUndeleteWithMissingDeleteUpdate) { SyncShareAsDelegate(); // Confirm we see IS_DEL and not SERVER_IS_DEL. { - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); Entry entry(&trans, GET_BY_ID, id); ASSERT_TRUE(entry.good()); EXPECT_FALSE(entry.Get(IS_UNAPPLIED_UPDATE)); @@ -4029,7 +4029,7 @@ TEST_F(SyncerTest, TestUndeleteWithMissingDeleteUpdate) { SyncShareAsDelegate(); // IS_DEL and SERVER_IS_DEL now both false. { - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); Entry entry(&trans, GET_BY_ID, id); ASSERT_TRUE(entry.good()); EXPECT_FALSE(entry.Get(IS_UNAPPLIED_UPDATE)); @@ -4063,7 +4063,7 @@ TEST_F(SyncerTest, ClientTagServerCreatedUpdatesWork) { SyncShareAsDelegate(); { - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); Entry perm_folder(&trans, GET_BY_CLIENT_TAG, "permfolder"); ASSERT_TRUE(perm_folder.good()); EXPECT_FALSE(perm_folder.Get(IS_DEL)); @@ -4078,7 +4078,7 @@ TEST_F(SyncerTest, ClientTagServerCreatedUpdatesWork) { SyncShareAsDelegate(); { - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); Entry perm_folder(&trans, GET_BY_CLIENT_TAG, "permfolder"); ASSERT_TRUE(perm_folder.good()); @@ -4100,7 +4100,7 @@ TEST_F(SyncerTest, ClientTagIllegalUpdateIgnored) { SyncShareAsDelegate(); { - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); Entry perm_folder(&trans, GET_BY_CLIENT_TAG, "permfolder"); ASSERT_TRUE(perm_folder.good()); EXPECT_FALSE(perm_folder.Get(IS_UNAPPLIED_UPDATE)); @@ -4115,7 +4115,7 @@ TEST_F(SyncerTest, ClientTagIllegalUpdateIgnored) { SyncShareAsDelegate(); { - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); // This update is rejected because it has the same ID, but a // different tag than one that is already on the client. @@ -4144,7 +4144,7 @@ TEST_F(SyncerTest, ClientTagUncommittedTagMatchesUpdate) { set_url("http://bar/serversite"); { - WriteTransaction trans(dir, UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir); MutableEntry perm_folder(&trans, CREATE, ids_.root(), "clientname"); ASSERT_TRUE(perm_folder.good()); perm_folder.Put(UNIQUE_CLIENT_TAG, "clientperm"); @@ -4164,7 +4164,7 @@ TEST_F(SyncerTest, ClientTagUncommittedTagMatchesUpdate) { SyncShareAsDelegate(); // This should cause client tag reunion, preserving the metahandle. { - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); Entry perm_folder(&trans, GET_BY_CLIENT_TAG, "clientperm"); ASSERT_TRUE(perm_folder.good()); @@ -4187,7 +4187,7 @@ TEST_F(SyncerTest, ClientTagUncommittedTagMatchesUpdate) { // The resolved entry ought to commit cleanly. { - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); Entry perm_folder(&trans, GET_BY_CLIENT_TAG, "clientperm"); ASSERT_TRUE(perm_folder.good()); @@ -4211,7 +4211,7 @@ TEST_F(SyncerTest, ClientTagConflictWithDeletedLocalEntry) { EXPECT_TRUE(dir.good()); { - WriteTransaction trans(dir, UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir); MutableEntry perm_folder(&trans, CREATE, ids_.root(), "clientname"); ASSERT_TRUE(perm_folder.good()); ASSERT_FALSE(perm_folder.Get(ID).ServerKnows()); @@ -4228,7 +4228,7 @@ TEST_F(SyncerTest, ClientTagConflictWithDeletedLocalEntry) { SyncShareAsDelegate(); // This should cause client tag overwrite. { - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); Entry perm_folder(&trans, GET_BY_CLIENT_TAG, "clientperm"); ASSERT_TRUE(perm_folder.good()); @@ -4262,7 +4262,7 @@ TEST_F(SyncerTest, ClientTagUpdateClashesWithLocalEntry) { int64 tag2_metahandle = syncable::kInvalidMetaHandle; // This should cause client tag overwrite. { - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); Entry tag1(&trans, GET_BY_CLIENT_TAG, "tag1"); ASSERT_TRUE(tag1.good()); @@ -4300,7 +4300,7 @@ TEST_F(SyncerTest, ClientTagUpdateClashesWithLocalEntry) { SyncShareAsDelegate(); { - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); Entry tag1(&trans, GET_BY_CLIENT_TAG, "tag1"); ASSERT_TRUE(tag1.good()); @@ -4375,7 +4375,7 @@ TEST_F(SyncerTest, ClientTagClashWithinBatchOfUpdates) { SyncShareAsDelegate(); // This should cause client tag overwrite. { - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); Entry tag_a(&trans, GET_BY_CLIENT_TAG, "tag a"); ASSERT_TRUE(tag_a.good()); @@ -4423,7 +4423,7 @@ TEST_F(SyncerTest, UniqueServerTagUpdates) { // we'll use later. int64 hurdle_handle = CreateUnsyncedDirectory("bob", "id_bob"); { - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); Entry hurdle(&trans, GET_BY_HANDLE, hurdle_handle); ASSERT_TRUE(hurdle.good()); ASSERT_TRUE(!hurdle.Get(IS_DEL)); @@ -4445,7 +4445,7 @@ TEST_F(SyncerTest, UniqueServerTagUpdates) { SyncShareAsDelegate(); { - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); // The new items should be applied as new entries, and we should be able // to look them up by their tag values. @@ -4527,7 +4527,7 @@ class SyncerUndeletionTest : public SyncerTest { void Create() { ScopedDirLookup dir(syncdb_.manager(), syncdb_.name()); EXPECT_TRUE(dir.good()); - WriteTransaction trans(dir, UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir); MutableEntry perm_folder(&trans, CREATE, ids_.root(), "clientname"); ASSERT_TRUE(perm_folder.good()); perm_folder.Put(UNIQUE_CLIENT_TAG, client_tag_); @@ -4542,7 +4542,7 @@ class SyncerUndeletionTest : public SyncerTest { void Delete() { ScopedDirLookup dir(syncdb_.manager(), syncdb_.name()); EXPECT_TRUE(dir.good()); - WriteTransaction trans(dir, UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir); MutableEntry entry(&trans, GET_BY_CLIENT_TAG, client_tag_); ASSERT_TRUE(entry.good()); EXPECT_EQ(metahandle_, entry.Get(META_HANDLE)); @@ -4554,7 +4554,7 @@ class SyncerUndeletionTest : public SyncerTest { void Undelete() { ScopedDirLookup dir(syncdb_.manager(), syncdb_.name()); EXPECT_TRUE(dir.good()); - WriteTransaction trans(dir, UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir); MutableEntry entry(&trans, GET_BY_CLIENT_TAG, client_tag_); ASSERT_TRUE(entry.good()); EXPECT_EQ(metahandle_, entry.Get(META_HANDLE)); @@ -4567,7 +4567,7 @@ class SyncerUndeletionTest : public SyncerTest { int64 GetMetahandleOfTag() { ScopedDirLookup dir(syncdb_.manager(), syncdb_.name()); EXPECT_TRUE(dir.good()); - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); Entry entry(&trans, GET_BY_CLIENT_TAG, client_tag_); EXPECT_TRUE(entry.good()); if (!entry.good()) { @@ -4976,7 +4976,7 @@ class SyncerPositionUpdateTest : public SyncerTest { ScopedDirLookup dir(syncdb_.manager(), syncdb_.name()); EXPECT_TRUE(dir.good()); - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); Id prev_id; DCHECK(prev_id.IsRoot()); @@ -5104,7 +5104,7 @@ class SyncerPositionTiebreakingTest : public SyncerTest { void ExpectLocalOrderIsByServerId() { ScopedDirLookup dir(syncdb_.manager(), syncdb_.name()); EXPECT_TRUE(dir.good()); - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); Id null_id; Entry low(&trans, GET_BY_ID, low_id_); Entry mid(&trans, GET_BY_ID, mid_id_); diff --git a/chrome/browser/sync/engine/syncer_util.cc b/chrome/browser/sync/engine/syncer_util.cc index d61059c..090b07f 100644 --- a/chrome/browser/sync/engine/syncer_util.cc +++ b/chrome/browser/sync/engine/syncer_util.cc @@ -660,7 +660,7 @@ void SyncerUtil::MarkDeletedChildrenSynced( return; Directory::UnsyncedMetaHandles handles; { - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); dir->GetUnsyncedMetaHandles(&trans, &handles); } if (handles.empty()) @@ -668,7 +668,7 @@ void SyncerUtil::MarkDeletedChildrenSynced( Directory::UnsyncedMetaHandles::iterator it; for (it = handles.begin() ; it != handles.end() ; ++it) { // Single transaction / entry we deal with. - WriteTransaction trans(dir, SYNCER, FROM_HERE); + WriteTransaction trans(FROM_HERE, SYNCER, dir); MutableEntry entry(&trans, GET_BY_HANDLE, *it); if (!entry.Get(IS_UNSYNCED) || !entry.Get(IS_DEL)) continue; diff --git a/chrome/browser/sync/engine/verify_updates_command.cc b/chrome/browser/sync/engine/verify_updates_command.cc index cec103b..fe83446 100644 --- a/chrome/browser/sync/engine/verify_updates_command.cc +++ b/chrome/browser/sync/engine/verify_updates_command.cc @@ -35,7 +35,7 @@ void VerifyUpdatesCommand::ModelChangingExecuteImpl( LOG(ERROR) << "Scoped dir lookup failed!"; return; } - WriteTransaction trans(dir, SYNCER, FROM_HERE); + WriteTransaction trans(FROM_HERE, SYNCER, dir); sessions::StatusController* status = session->status_controller(); const GetUpdatesResponse& updates = status->updates_response().get_updates(); int update_count = updates.entries().size(); diff --git a/chrome/browser/sync/engine/verify_updates_command_unittest.cc b/chrome/browser/sync/engine/verify_updates_command_unittest.cc index 6273d55..9713d63 100644 --- a/chrome/browser/sync/engine/verify_updates_command_unittest.cc +++ b/chrome/browser/sync/engine/verify_updates_command_unittest.cc @@ -44,7 +44,7 @@ class VerifyUpdatesCommandTest : public SyncerCommandTest { const syncable::ModelType& type) { ScopedDirLookup dir(syncdb()->manager(), syncdb()->name()); ASSERT_TRUE(dir.good()); - WriteTransaction trans(dir, UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir); MutableEntry entry(&trans, syncable::CREATE_NEW_UPDATE_ITEM, Id::CreateFromServerId(item_id)); ASSERT_TRUE(entry.good()); diff --git a/chrome/browser/sync/glue/app_model_associator.cc b/chrome/browser/sync/glue/app_model_associator.cc index b2bb54c..fd6dd24 100644 --- a/chrome/browser/sync/glue/app_model_associator.cc +++ b/chrome/browser/sync/glue/app_model_associator.cc @@ -5,6 +5,7 @@ #include "chrome/browser/sync/glue/app_model_associator.h" #include "base/logging.h" +#include "base/tracked.h" #include "chrome/browser/extensions/extension_sync_data.h" #include "chrome/browser/sync/engine/syncapi.h" #include "chrome/browser/sync/glue/extension_sync_traits.h" @@ -63,7 +64,7 @@ void AppModelAssociator::AbortAssociation() { bool AppModelAssociator::CryptoReadyIfNecessary() { // We only access the cryptographer while holding a transaction. - sync_api::ReadTransaction trans(user_share_); + sync_api::ReadTransaction trans(FROM_HERE, user_share_); const syncable::ModelTypeSet& encrypted_types = sync_api::GetEncryptedTypes(&trans); return encrypted_types.count(traits_.model_type) == 0 || diff --git a/chrome/browser/sync/glue/autofill_change_processor.cc b/chrome/browser/sync/glue/autofill_change_processor.cc index 00be75c..b37830d 100644 --- a/chrome/browser/sync/glue/autofill_change_processor.cc +++ b/chrome/browser/sync/glue/autofill_change_processor.cc @@ -8,6 +8,7 @@ #include <vector> #include "base/string_util.h" +#include "base/tracked.h" #include "base/utf_string_conversions.h" #include "chrome/browser/autofill/personal_data_manager.h" #include "chrome/browser/profiles/profile.h" @@ -67,7 +68,7 @@ void AutofillChangeProcessor::Observe(NotificationType type, if (!observing_) return; - sync_api::WriteTransaction trans(share_handle()); + sync_api::WriteTransaction trans(FROM_HERE, share_handle()); sync_api::ReadNode autofill_root(&trans); if (!autofill_root.InitByTagLookup(kAutofillTag)) { error_handler()->OnUnrecoverableError(FROM_HERE, diff --git a/chrome/browser/sync/glue/autofill_model_associator.cc b/chrome/browser/sync/glue/autofill_model_associator.cc index d783f19..72951b6 100644 --- a/chrome/browser/sync/glue/autofill_model_associator.cc +++ b/chrome/browser/sync/glue/autofill_model_associator.cc @@ -10,6 +10,7 @@ #include "base/string_number_conversions.h" #include "base/task.h" #include "base/time.h" +#include "base/tracked.h" #include "base/utf_string_conversions.h" #include "chrome/browser/autofill/autofill_profile.h" #include "chrome/browser/profiles/profile.h" @@ -156,7 +157,7 @@ bool AutofillModelAssociator::AssociateModels() { DataBundle bundle; { - sync_api::WriteTransaction trans(sync_service_->GetUserShare()); + sync_api::WriteTransaction trans(FROM_HERE, sync_service_->GetUserShare()); sync_api::ReadNode autofill_root(&trans); if (!autofill_root.InitByTagLookup(kAutofillTag)) { @@ -394,7 +395,7 @@ bool AutofillModelAssociator::SyncModelHasUserCreatedNodes(bool* has_nodes) { << "might be running against an out-of-date server."; return false; } - sync_api::ReadTransaction trans(sync_service_->GetUserShare()); + sync_api::ReadTransaction trans(FROM_HERE, sync_service_->GetUserShare()); sync_api::ReadNode autofill_node(&trans); if (!autofill_node.InitByIdLookup(autofill_sync_id)) { @@ -454,7 +455,7 @@ void AutofillModelAssociator::Disassociate(int64 sync_id) { bool AutofillModelAssociator::GetSyncIdForTaggedNode(const std::string& tag, int64* sync_id) { - sync_api::ReadTransaction trans(sync_service_->GetUserShare()); + sync_api::ReadTransaction trans(FROM_HERE, sync_service_->GetUserShare()); sync_api::ReadNode sync_node(&trans); if (!sync_node.InitByTagLookup(tag.c_str())) return false; @@ -585,7 +586,7 @@ bool AutofillModelAssociator::HasNotMigratedYet( bool AutofillModelAssociator::CryptoReadyIfNecessary() { // We only access the cryptographer while holding a transaction. - sync_api::ReadTransaction trans(sync_service_->GetUserShare()); + sync_api::ReadTransaction trans(FROM_HERE, sync_service_->GetUserShare()); syncable::ModelTypeSet encrypted_types; encrypted_types = sync_api::GetEncryptedTypes(&trans); return encrypted_types.count(syncable::AUTOFILL) == 0 || diff --git a/chrome/browser/sync/glue/autofill_profile_change_processor.cc b/chrome/browser/sync/glue/autofill_profile_change_processor.cc index 36b1372..ac6099c 100644 --- a/chrome/browser/sync/glue/autofill_profile_change_processor.cc +++ b/chrome/browser/sync/glue/autofill_profile_change_processor.cc @@ -8,6 +8,7 @@ #include <vector> #include "base/string_util.h" +#include "base/tracked.h" #include "base/utf_string_conversions.h" #include "chrome/browser/autofill/autofill_profile.h" #include "chrome/browser/autofill/personal_data_manager.h" @@ -100,7 +101,7 @@ void AutofillProfileChangeProcessor::Observe(NotificationType type, if (!wds || wds->GetDatabase() != web_database_) return; - sync_api::WriteTransaction trans(share_handle()); + sync_api::WriteTransaction trans(FROM_HERE, share_handle()); sync_api::ReadNode autofill_root(&trans); if (!autofill_root.InitByTagLookup(kAutofillProfileTag)) { error_handler()->OnUnrecoverableError(FROM_HERE, diff --git a/chrome/browser/sync/glue/autofill_profile_model_associator.cc b/chrome/browser/sync/glue/autofill_profile_model_associator.cc index 4b45880..3fe51aa 100644 --- a/chrome/browser/sync/glue/autofill_profile_model_associator.cc +++ b/chrome/browser/sync/glue/autofill_profile_model_associator.cc @@ -4,6 +4,7 @@ #include "chrome/browser/sync/glue/autofill_profile_model_associator.h" +#include "base/tracked.h" #include "base/utf_string_conversions.h" #include "chrome/browser/sync/glue/autofill_profile_change_processor.h" #include "chrome/browser/sync/glue/do_optimistic_refresh_task.h" @@ -116,7 +117,7 @@ bool AutofillProfileModelAssociator::TraverseAndAssociateChromeAutofillProfiles( bool AutofillProfileModelAssociator::GetSyncIdForTaggedNode( const std::string& tag, int64* sync_id) { - sync_api::ReadTransaction trans(sync_service_->GetUserShare()); + sync_api::ReadTransaction trans(FROM_HERE, sync_service_->GetUserShare()); sync_api::ReadNode sync_node(&trans); if (!sync_node.InitByTagLookup(tag.c_str())) return false; @@ -157,7 +158,7 @@ bool AutofillProfileModelAssociator::AssociateModels() { { // The write transaction lock is held inside this block. // We do all the web db operations outside this block. - sync_api::WriteTransaction trans(sync_service_->GetUserShare()); + sync_api::WriteTransaction trans(FROM_HERE, sync_service_->GetUserShare()); sync_api::ReadNode autofill_root(&trans); if (!autofill_root.InitByTagLookup(kAutofillProfileTag)) { @@ -218,7 +219,7 @@ bool AutofillProfileModelAssociator::MergeField(FormGroup* f, bool AutofillProfileModelAssociator::SyncModelHasUserCreatedNodes( bool *has_nodes) { CHECK_NE(has_nodes, reinterpret_cast<bool*>(NULL)); - sync_api::ReadTransaction trans(sync_service_->GetUserShare()); + sync_api::ReadTransaction trans(FROM_HERE, sync_service_->GetUserShare()); sync_api::ReadNode node(&trans); @@ -506,7 +507,7 @@ AutofillProfileModelAssociator::DataBundle::~DataBundle() { bool AutofillProfileModelAssociator::CryptoReadyIfNecessary() { // We only access the cryptographer while holding a transaction. - sync_api::ReadTransaction trans(sync_service_->GetUserShare()); + sync_api::ReadTransaction trans(FROM_HERE, sync_service_->GetUserShare()); syncable::ModelTypeSet encrypted_types; encrypted_types = sync_api::GetEncryptedTypes(&trans); return encrypted_types.count(syncable::AUTOFILL_PROFILE) == 0 || diff --git a/chrome/browser/sync/glue/autofill_profile_model_associator_unittest.cc b/chrome/browser/sync/glue/autofill_profile_model_associator_unittest.cc index e1792a6..909b895 100644 --- a/chrome/browser/sync/glue/autofill_profile_model_associator_unittest.cc +++ b/chrome/browser/sync/glue/autofill_profile_model_associator_unittest.cc @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#include "base/tracked.h" #include "base/utf_string_conversions.h" #include "chrome/browser/sync/engine/read_node_mock.h" #include "chrome/browser/sync/engine/syncapi_mock.h" @@ -115,7 +116,7 @@ TEST_F(AutofillProfileModelAssociatorTest, kernel.put(syncable::SPECIFICS, specifics); kernel.put(syncable::META_HANDLE, 1); - MockWriteTransaction write_trans(&mock_directory); + MockWriteTransaction write_trans(FROM_HERE, &mock_directory); EXPECT_CALL(mock_directory, GetEntryByClientTag(_)) .WillOnce(Return(&kernel)); @@ -140,7 +141,7 @@ TEST_F(AutofillProfileModelAssociatorTest, TestAssociatingMissingWebDBProfile) { ScopedVector<AutofillProfile> profiles_from_web_db; MockDirectory mock_directory; - MockWriteTransaction write_trans(&mock_directory); + MockWriteTransaction write_trans(FROM_HERE, &mock_directory); EXPECT_CALL(mock_directory, GetEntryByClientTag(_)) .WillOnce(Return(reinterpret_cast<EntryKernel*>(NULL))); @@ -191,7 +192,7 @@ TEST_F(AutofillProfileModelAssociatorTest, kernel.put(syncable::META_HANDLE, 1); kernel.put(syncable::ID, root_id); - MockWriteTransaction write_trans(&mock_directory); + MockWriteTransaction write_trans(FROM_HERE, &mock_directory); browser_sync::AutofillProfileModelAssociator::DataBundle bundle; diff --git a/chrome/browser/sync/glue/bookmark_change_processor.cc b/chrome/browser/sync/glue/bookmark_change_processor.cc index da0605c..495753d 100644 --- a/chrome/browser/sync/glue/bookmark_change_processor.cc +++ b/chrome/browser/sync/glue/bookmark_change_processor.cc @@ -8,7 +8,7 @@ #include "base/string16.h" #include "base/string_util.h" - +#include "base/tracked.h" #include "base/utf_string_conversions.h" #include "chrome/browser/bookmarks/bookmark_utils.h" #include "chrome/browser/favicon/favicon_service.h" @@ -92,7 +92,7 @@ void BookmarkChangeProcessor::RemoveOneSyncNode( void BookmarkChangeProcessor::RemoveSyncNodeHierarchy( const BookmarkNode* topmost) { - sync_api::WriteTransaction trans(share_handle()); + sync_api::WriteTransaction trans(FROM_HERE, share_handle()); // Later logic assumes that |topmost| has been unlinked. DCHECK(topmost->is_root()); @@ -145,7 +145,7 @@ void BookmarkChangeProcessor::BookmarkNodeAdded(BookmarkModel* model, DCHECK(share_handle()); // Acquire a scoped write lock via a transaction. - sync_api::WriteTransaction trans(share_handle()); + sync_api::WriteTransaction trans(FROM_HERE, share_handle()); CreateSyncNode(parent, model, index, &trans, model_associator_, error_handler()); @@ -197,7 +197,7 @@ void BookmarkChangeProcessor::BookmarkNodeChanged(BookmarkModel* model, } // Acquire a scoped write lock via a transaction. - sync_api::WriteTransaction trans(share_handle()); + sync_api::WriteTransaction trans(FROM_HERE, share_handle()); // Lookup the sync node that's associated with |node|. sync_api::WriteNode sync_node(&trans); @@ -231,7 +231,7 @@ void BookmarkChangeProcessor::BookmarkNodeMoved(BookmarkModel* model, } // Acquire a scoped write lock via a transaction. - sync_api::WriteTransaction trans(share_handle()); + sync_api::WriteTransaction trans(FROM_HERE, share_handle()); // Lookup the sync node that's associated with |child|. sync_api::WriteNode sync_node(&trans); @@ -258,7 +258,7 @@ void BookmarkChangeProcessor::BookmarkNodeChildrenReordered( BookmarkModel* model, const BookmarkNode* node) { // Acquire a scoped write lock via a transaction. - sync_api::WriteTransaction trans(share_handle()); + sync_api::WriteTransaction trans(FROM_HERE, share_handle()); // The given node's children got reordered. We need to reorder all the // children of the corresponding sync node. diff --git a/chrome/browser/sync/glue/bookmark_model_associator.cc b/chrome/browser/sync/glue/bookmark_model_associator.cc index 9aff7ad..5b46604 100644 --- a/chrome/browser/sync/glue/bookmark_model_associator.cc +++ b/chrome/browser/sync/glue/bookmark_model_associator.cc @@ -10,6 +10,7 @@ #include "base/hash_tables.h" #include "base/message_loop.h" #include "base/task.h" +#include "base/tracked.h" #include "base/utf_string_conversions.h" #include "chrome/browser/bookmarks/bookmark_model.h" #include "chrome/browser/profiles/profile.h" @@ -249,7 +250,7 @@ bool BookmarkModelAssociator::SyncModelHasUserCreatedNodes(bool* has_nodes) { has_synced_folder = false; } - sync_api::ReadTransaction trans(user_share_); + sync_api::ReadTransaction trans(FROM_HERE, user_share_); sync_api::ReadNode bookmark_bar_node(&trans); if (!bookmark_bar_node.InitByIdLookup(bookmark_bar_sync_id)) { @@ -307,7 +308,7 @@ bool BookmarkModelAssociator::AssociateTaggedPermanentNode( bool BookmarkModelAssociator::GetSyncIdForTaggedNode(const std::string& tag, int64* sync_id) { - sync_api::ReadTransaction trans(user_share_); + sync_api::ReadTransaction trans(FROM_HERE, user_share_); sync_api::ReadNode sync_node(&trans); if (!sync_node.InitByTagLookup(tag.c_str())) return false; @@ -391,7 +392,7 @@ bool BookmarkModelAssociator::BuildAssociations() { dfs_stack.push(other_bookmarks_sync_id); dfs_stack.push(bookmark_bar_sync_id); - sync_api::WriteTransaction trans(user_share_); + sync_api::WriteTransaction trans(FROM_HERE, user_share_); while (!dfs_stack.empty()) { int64 sync_parent_id = dfs_stack.top(); @@ -478,7 +479,7 @@ void BookmarkModelAssociator::PersistAssociations() { return; } - sync_api::WriteTransaction trans(user_share_); + sync_api::WriteTransaction trans(FROM_HERE, user_share_); DirtyAssociationsSyncIds::iterator iter; for (iter = dirty_associations_sync_ids_.begin(); iter != dirty_associations_sync_ids_.end(); @@ -542,7 +543,7 @@ bool BookmarkModelAssociator::LoadAssociations() { dfs_stack.push(other_bookmarks_id); dfs_stack.push(bookmark_bar_id); - sync_api::ReadTransaction trans(user_share_); + sync_api::ReadTransaction trans(FROM_HERE, user_share_); // Count total number of nodes in sync model so that we can compare that // with the total number of nodes in the bookmark model. @@ -597,7 +598,7 @@ bool BookmarkModelAssociator::LoadAssociations() { bool BookmarkModelAssociator::CryptoReadyIfNecessary() { // We only access the cryptographer while holding a transaction. - sync_api::ReadTransaction trans(user_share_); + sync_api::ReadTransaction trans(FROM_HERE, user_share_); const syncable::ModelTypeSet& encrypted_types = sync_api::GetEncryptedTypes(&trans); return encrypted_types.count(syncable::BOOKMARKS) == 0 || diff --git a/chrome/browser/sync/glue/extension_model_associator.cc b/chrome/browser/sync/glue/extension_model_associator.cc index 6bfbece..46594b6 100644 --- a/chrome/browser/sync/glue/extension_model_associator.cc +++ b/chrome/browser/sync/glue/extension_model_associator.cc @@ -5,6 +5,7 @@ #include "chrome/browser/sync/glue/extension_model_associator.h" #include "base/logging.h" +#include "base/tracked.h" #include "chrome/browser/extensions/extension_sync_data.h" #include "chrome/browser/sync/engine/syncapi.h" #include "chrome/browser/sync/glue/extension_sync_traits.h" @@ -64,7 +65,7 @@ void ExtensionModelAssociator::AbortAssociation() { bool ExtensionModelAssociator::CryptoReadyIfNecessary() { // We only access the cryptographer while holding a transaction. - sync_api::ReadTransaction trans(user_share_); + sync_api::ReadTransaction trans(FROM_HERE, user_share_); const syncable::ModelTypeSet& encrypted_types = sync_api::GetEncryptedTypes(&trans); return encrypted_types.count(traits_.model_type) == 0 || diff --git a/chrome/browser/sync/glue/extension_sync.cc b/chrome/browser/sync/glue/extension_sync.cc index 1b3b587..c6c19ec 100644 --- a/chrome/browser/sync/glue/extension_sync.cc +++ b/chrome/browser/sync/glue/extension_sync.cc @@ -7,6 +7,7 @@ #include <utility> #include "base/logging.h" +#include "base/tracked.h" #include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/extensions/extension_sync_data.h" #include "chrome/browser/sync/engine/syncapi.h" @@ -21,7 +22,7 @@ bool RootNodeHasChildren(const char* tag, bool* has_children) { CHECK(has_children); *has_children = false; - sync_api::ReadTransaction trans(user_share); + sync_api::ReadTransaction trans(FROM_HERE, user_share); sync_api::ReadNode node(&trans); if (!node.InitByTagLookup(tag)) { LOG(ERROR) << "Root node with tag " << tag << " does not exist"; @@ -71,7 +72,7 @@ bool SlurpServerData( const ExtensionSpecificsGetter extension_specifics_getter, sync_api::UserShare* user_share, ExtensionDataMap* extension_data_map) { - sync_api::WriteTransaction trans(user_share); + sync_api::WriteTransaction trans(FROM_HERE, user_share); sync_api::ReadNode root(&trans); if (!root.InitByTagLookup(root_node_tag)) { LOG(ERROR) << GetRootNodeDoesNotExistError(root_node_tag); @@ -154,7 +155,7 @@ bool FlushExtensionData(const ExtensionSyncTraits& traits, const ExtensionDataMap& extension_data_map, ExtensionServiceInterface* extension_service, sync_api::UserShare* user_share) { - sync_api::WriteTransaction trans(user_share); + sync_api::WriteTransaction trans(FROM_HERE, user_share); sync_api::ReadNode root(&trans); if (!root.InitByTagLookup(traits.root_node_tag)) { LOG(ERROR) << GetRootNodeDoesNotExistError(traits.root_node_tag); @@ -192,7 +193,7 @@ bool UpdateServerData(const ExtensionSyncTraits& traits, return false; } - sync_api::WriteTransaction trans(user_share); + sync_api::WriteTransaction trans(FROM_HERE, user_share); if (!UpdateServer(traits, data, &trans)) { *error = std::string("Could not update server data for extension ") + id; @@ -205,7 +206,7 @@ bool UpdateServerData(const ExtensionSyncTraits& traits, void RemoveServerData(const ExtensionSyncTraits& traits, const std::string& id, sync_api::UserShare* user_share) { - sync_api::WriteTransaction trans(user_share); + sync_api::WriteTransaction trans(FROM_HERE, user_share); sync_api::WriteNode write_node(&trans); if (write_node.InitByClientTagLookup(traits.model_type, id)) { write_node.Remove(); diff --git a/chrome/browser/sync/glue/generic_change_processor.cc b/chrome/browser/sync/glue/generic_change_processor.cc index 83c1736..976955e 100644 --- a/chrome/browser/sync/glue/generic_change_processor.cc +++ b/chrome/browser/sync/glue/generic_change_processor.cc @@ -4,6 +4,7 @@ #include "chrome/browser/sync/glue/generic_change_processor.h" +#include "base/tracked.h" #include "chrome/browser/sync/api/syncable_service.h" #include "chrome/browser/sync/api/sync_change.h" #include "chrome/browser/sync/engine/syncapi.h" @@ -68,7 +69,7 @@ void GenericChangeProcessor::CommitChangesFromSyncModel() { return; if (syncer_changes_.empty()) return; - local_service_->ProcessSyncChanges(syncer_changes_); + local_service_->ProcessSyncChanges(FROM_HERE, syncer_changes_); syncer_changes_.clear(); } @@ -76,7 +77,7 @@ bool GenericChangeProcessor::GetSyncDataForType( syncable::ModelType type, SyncDataList* current_sync_data) { std::string type_name = syncable::ModelTypeToString(type); - sync_api::ReadTransaction trans(share_handle()); + sync_api::ReadTransaction trans(FROM_HERE, share_handle()); sync_api::ReadNode root(&trans); if (!root.InitByTagLookup(syncable::ModelTypeToRootTag(type))) { LOG(ERROR) << "Server did not create the top-level " + type_name + " node." @@ -99,8 +100,9 @@ bool GenericChangeProcessor::GetSyncDataForType( } void GenericChangeProcessor::ProcessSyncChanges( + const tracked_objects::Location& from_here, const SyncChangeList& list_of_changes) { - sync_api::WriteTransaction trans(share_handle()); + sync_api::WriteTransaction trans(from_here, share_handle()); for (SyncChangeList::const_iterator iter = list_of_changes.begin(); iter != list_of_changes.end(); @@ -171,7 +173,7 @@ bool GenericChangeProcessor::SyncModelHasUserCreatedNodes( std::string err_str = "Server did not create the top-level " + type_name + " node. We might be running against an out-of-date server."; *has_nodes = false; - sync_api::ReadTransaction trans(share_handle()); + sync_api::ReadTransaction trans(FROM_HERE, share_handle()); sync_api::ReadNode type_root_node(&trans); if (!type_root_node.InitByTagLookup(syncable::ModelTypeToRootTag(type))) { LOG(ERROR) << err_str; @@ -187,7 +189,7 @@ bool GenericChangeProcessor::SyncModelHasUserCreatedNodes( bool GenericChangeProcessor::CryptoReadyIfNecessary(syncable::ModelType type) { DCHECK_NE(type, syncable::UNSPECIFIED); // We only access the cryptographer while holding a transaction. - sync_api::ReadTransaction trans(share_handle()); + sync_api::ReadTransaction trans(FROM_HERE, share_handle()); const syncable::ModelTypeSet& encrypted_types = GetEncryptedTypes(&trans); return encrypted_types.count(type) == 0 || diff --git a/chrome/browser/sync/glue/generic_change_processor.h b/chrome/browser/sync/glue/generic_change_processor.h index 0a7121f..d3176e5 100644 --- a/chrome/browser/sync/glue/generic_change_processor.h +++ b/chrome/browser/sync/glue/generic_change_processor.h @@ -45,7 +45,8 @@ class GenericChangeProcessor : public ChangeProcessor, virtual void CommitChangesFromSyncModel() OVERRIDE; // SyncChangeProcessor implementation. - virtual void ProcessSyncChanges(const SyncChangeList& change_list) OVERRIDE; + virtual void ProcessSyncChanges(const tracked_objects::Location& from_here, + const SyncChangeList& change_list) OVERRIDE; // Fills |current_sync_data| with all the syncer data for the specified type. virtual bool GetSyncDataForType(syncable::ModelType type, diff --git a/chrome/browser/sync/glue/password_change_processor.cc b/chrome/browser/sync/glue/password_change_processor.cc index a19b47e..67d9187 100644 --- a/chrome/browser/sync/glue/password_change_processor.cc +++ b/chrome/browser/sync/glue/password_change_processor.cc @@ -7,6 +7,7 @@ #include <string> #include "base/string_util.h" +#include "base/tracked.h" #include "base/utf_string_conversions.h" #include "chrome/browser/password_manager/password_store.h" #include "chrome/browser/password_manager/password_store_change.h" @@ -54,7 +55,7 @@ void PasswordChangeProcessor::Observe(NotificationType type, DCHECK(running()); - sync_api::WriteTransaction trans(share_handle()); + sync_api::WriteTransaction trans(FROM_HERE, share_handle()); sync_api::ReadNode password_root(&trans); if (!password_root.InitByTagLookup(kPasswordTag)) { diff --git a/chrome/browser/sync/glue/password_model_associator.cc b/chrome/browser/sync/glue/password_model_associator.cc index baaffde..2931e94 100644 --- a/chrome/browser/sync/glue/password_model_associator.cc +++ b/chrome/browser/sync/glue/password_model_associator.cc @@ -7,6 +7,7 @@ #include <set> #include "base/stl_util-inl.h" +#include "base/tracked.h" #include "base/utf_string_conversions.h" #include "chrome/browser/password_manager/password_store.h" #include "chrome/browser/sync/engine/syncapi.h" @@ -60,7 +61,7 @@ bool PasswordModelAssociator::AssociateModels() { PasswordVector new_passwords; PasswordVector updated_passwords; { - sync_api::WriteTransaction trans(sync_service_->GetUserShare()); + sync_api::WriteTransaction trans(FROM_HERE, sync_service_->GetUserShare()); sync_api::ReadNode password_root(&trans); if (!password_root.InitByTagLookup(kPasswordTag)) { LOG(ERROR) << "Server did not create the top-level password node. We " @@ -183,7 +184,7 @@ bool PasswordModelAssociator::SyncModelHasUserCreatedNodes(bool* has_nodes) { << "might be running against an out-of-date server."; return false; } - sync_api::ReadTransaction trans(sync_service_->GetUserShare()); + sync_api::ReadTransaction trans(FROM_HERE, sync_service_->GetUserShare()); sync_api::ReadNode password_node(&trans); if (!password_node.InitByIdLookup(password_sync_id)) { @@ -206,7 +207,7 @@ void PasswordModelAssociator::AbortAssociation() { bool PasswordModelAssociator::CryptoReadyIfNecessary() { // We only access the cryptographer while holding a transaction. - sync_api::ReadTransaction trans(sync_service_->GetUserShare()); + sync_api::ReadTransaction trans(FROM_HERE, sync_service_->GetUserShare()); // We always encrypt passwords, so no need to check if encryption is enabled. return sync_service_->IsCryptographerReady(&trans); } @@ -254,7 +255,7 @@ void PasswordModelAssociator::Disassociate(int64 sync_id) { bool PasswordModelAssociator::GetSyncIdForTaggedNode(const std::string& tag, int64* sync_id) { - sync_api::ReadTransaction trans(sync_service_->GetUserShare()); + sync_api::ReadTransaction trans(FROM_HERE, sync_service_->GetUserShare()); sync_api::ReadNode sync_node(&trans); if (!sync_node.InitByTagLookup(tag.c_str())) return false; diff --git a/chrome/browser/sync/glue/session_model_associator.cc b/chrome/browser/sync/glue/session_model_associator.cc index 4f2812c..7d4eeb0 100644 --- a/chrome/browser/sync/glue/session_model_associator.cc +++ b/chrome/browser/sync/glue/session_model_associator.cc @@ -8,6 +8,7 @@ #include <utility> #include "base/logging.h" +#include "base/tracked.h" #include "chrome/browser/extensions/extension_tab_helper.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/sessions/restore_tab_helper.h" @@ -70,7 +71,7 @@ bool SessionModelAssociator::SyncModelHasUserCreatedNodes(bool* has_nodes) { DCHECK(CalledOnValidThread()); CHECK(has_nodes); *has_nodes = false; - sync_api::ReadTransaction trans(sync_service_->GetUserShare()); + sync_api::ReadTransaction trans(FROM_HERE, sync_service_->GetUserShare()); sync_api::ReadNode root(&trans); if (!root.InitByTagLookup(kSessionsTag)) { LOG(ERROR) << kNoSessionsFolderError; @@ -89,7 +90,7 @@ int64 SessionModelAssociator::GetSyncIdFromChromeId(const size_t& id) { int64 SessionModelAssociator::GetSyncIdFromSessionTag(const std::string& tag) { DCHECK(CalledOnValidThread()); - sync_api::ReadTransaction trans(sync_service_->GetUserShare()); + sync_api::ReadTransaction trans(FROM_HERE, sync_service_->GetUserShare()); sync_api::ReadNode node(&trans); if (!node.InitByClientTagLookup(syncable::SESSIONS, tag)) return sync_api::kInvalidId; @@ -160,7 +161,7 @@ void SessionModelAssociator::ReassociateWindows(bool reload_tabs) { } } - sync_api::WriteTransaction trans(sync_service_->GetUserShare()); + sync_api::WriteTransaction trans(FROM_HERE, sync_service_->GetUserShare()); sync_api::WriteNode header_node(&trans); if (!header_node.InitByIdLookup(local_session_syncid_)) { LOG(ERROR) << "Failed to load local session header node."; @@ -228,7 +229,7 @@ void SessionModelAssociator::Associate(const TabContentsWrapper* tab, TabLinks t(sync_id, tab); tab_map_[session_id] = t; - sync_api::WriteTransaction trans(sync_service_->GetUserShare()); + sync_api::WriteTransaction trans(FROM_HERE, sync_service_->GetUserShare()); WriteTabContentsToSyncModel(*browser, *tab, sync_id, &trans); } @@ -380,7 +381,7 @@ bool SessionModelAssociator::AssociateModels() { // Read any available foreign sessions and load any session data we may have. // If we don't have any local session data in the db, create a header node. { - sync_api::WriteTransaction trans(sync_service_->GetUserShare()); + sync_api::WriteTransaction trans(FROM_HERE, sync_service_->GetUserShare()); sync_api::ReadNode root(&trans); if (!root.InitByTagLookup(kSessionsTag)) { @@ -723,7 +724,7 @@ int64 SessionModelAssociator::TabNodePool::GetFreeTabNode() { DCHECK_GT(machine_tag_.length(), 0U); if (tab_pool_fp_ == -1) { // Tab pool has no free nodes, allocate new one. - sync_api::WriteTransaction trans(sync_service_->GetUserShare()); + sync_api::WriteTransaction trans(FROM_HERE, sync_service_->GetUserShare()); sync_api::ReadNode root(&trans); if (!root.InitByTagLookup(kSessionsTag)) { LOG(ERROR) << kNoSessionsFolderError; @@ -855,7 +856,7 @@ void SessionModelAssociator::OnGotSession( sync_pb::SessionHeader* header_s = specifics.mutable_header(); PopulateSessionSpecificsHeader(*windows, header_s); - sync_api::WriteTransaction trans(sync_service_->GetUserShare()); + sync_api::WriteTransaction trans(FROM_HERE, sync_service_->GetUserShare()); sync_api::ReadNode root(&trans); if (!root.InitByTagLookup(kSessionsTag)) { LOG(ERROR) << kNoSessionsFolderError; @@ -929,7 +930,7 @@ bool SessionModelAssociator::SyncLocalWindowToSyncModel( return false; } - sync_api::WriteTransaction trans(sync_service_->GetUserShare()); + sync_api::WriteTransaction trans(FROM_HERE, sync_service_->GetUserShare()); if (!WriteSessionTabToSyncModel(*tab, id, &trans)) { return false; } @@ -982,7 +983,7 @@ void SessionModelAssociator::PopulateSessionSpecificsTab( bool SessionModelAssociator::CryptoReadyIfNecessary() { // We only access the cryptographer while holding a transaction. - sync_api::ReadTransaction trans(sync_service_->GetUserShare()); + sync_api::ReadTransaction trans(FROM_HERE, sync_service_->GetUserShare()); syncable::ModelTypeSet encrypted_types; encrypted_types = sync_api::GetEncryptedTypes(&trans); return encrypted_types.count(syncable::SESSIONS) == 0 || diff --git a/chrome/browser/sync/glue/sync_backend_host.cc b/chrome/browser/sync/glue/sync_backend_host.cc index 0576711..837077a 100644 --- a/chrome/browser/sync/glue/sync_backend_host.cc +++ b/chrome/browser/sync/glue/sync_backend_host.cc @@ -11,6 +11,7 @@ #include "base/file_util.h" #include "base/task.h" #include "base/threading/thread_restrictions.h" +#include "base/tracked.h" #include "base/utf_string_conversions.h" #include "chrome/browser/net/gaia/token_service.h" #include "chrome/browser/prefs/pref_service.h" @@ -312,7 +313,7 @@ void SyncBackendHost::SetAutofillMigrationDebugInfo( void SyncBackendHost::ConfigureAutofillMigration() { if (GetAutofillMigrationState() == syncable::NOT_DETERMINED) { - sync_api::ReadTransaction trans(GetUserShare()); + sync_api::ReadTransaction trans(FROM_HERE, GetUserShare()); sync_api::ReadNode autofil_root_node(&trans); // Check for the presence of autofill node. diff --git a/chrome/browser/sync/glue/theme_change_processor.cc b/chrome/browser/sync/glue/theme_change_processor.cc index a75b7eb..ace9931 100644 --- a/chrome/browser/sync/glue/theme_change_processor.cc +++ b/chrome/browser/sync/glue/theme_change_processor.cc @@ -5,6 +5,7 @@ #include "chrome/browser/sync/glue/theme_change_processor.h" #include "base/logging.h" +#include "base/tracked.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/sync/engine/syncapi.h" #include "chrome/browser/sync/glue/theme_util.h" @@ -33,7 +34,7 @@ void ThemeChangeProcessor::Observe(NotificationType type, DCHECK(profile_); DCHECK(type == NotificationType::BROWSER_THEME_CHANGED); - sync_api::WriteTransaction trans(share_handle()); + sync_api::WriteTransaction trans(FROM_HERE, share_handle()); sync_api::WriteNode node(&trans); if (!node.InitByClientTagLookup(syncable::THEMES, kCurrentThemeClientTag)) { diff --git a/chrome/browser/sync/glue/theme_model_associator.cc b/chrome/browser/sync/glue/theme_model_associator.cc index 5c70068..e53b021 100644 --- a/chrome/browser/sync/glue/theme_model_associator.cc +++ b/chrome/browser/sync/glue/theme_model_associator.cc @@ -6,6 +6,7 @@ #include "base/basictypes.h" #include "base/logging.h" +#include "base/tracked.h" #include "base/utf_string_conversions.h" #include "chrome/browser/sync/engine/syncapi.h" #include "chrome/browser/sync/glue/sync_backend_host.h" @@ -35,7 +36,7 @@ ThemeModelAssociator::ThemeModelAssociator( ThemeModelAssociator::~ThemeModelAssociator() {} bool ThemeModelAssociator::AssociateModels() { - sync_api::WriteTransaction trans(sync_service_->GetUserShare()); + sync_api::WriteTransaction trans(FROM_HERE, sync_service_->GetUserShare()); sync_api::ReadNode root(&trans); if (!root.InitByTagLookup(kThemesTag)) { LOG(ERROR) << kNoThemesFolderError; @@ -81,7 +82,7 @@ bool ThemeModelAssociator::DisassociateModels() { bool ThemeModelAssociator::SyncModelHasUserCreatedNodes(bool* has_nodes) { DCHECK(has_nodes); *has_nodes = false; - sync_api::ReadTransaction trans(sync_service_->GetUserShare()); + sync_api::ReadTransaction trans(FROM_HERE, sync_service_->GetUserShare()); sync_api::ReadNode root(&trans); if (!root.InitByTagLookup(kThemesTag)) { LOG(ERROR) << kNoThemesFolderError; @@ -95,7 +96,7 @@ bool ThemeModelAssociator::SyncModelHasUserCreatedNodes(bool* has_nodes) { bool ThemeModelAssociator::CryptoReadyIfNecessary() { // We only access the cryptographer while holding a transaction. - sync_api::ReadTransaction trans(sync_service_->GetUserShare()); + sync_api::ReadTransaction trans(FROM_HERE, sync_service_->GetUserShare()); syncable::ModelTypeSet encrypted_types; encrypted_types = sync_api::GetEncryptedTypes(&trans); return encrypted_types.count(syncable::THEMES) == 0 || diff --git a/chrome/browser/sync/glue/typed_url_change_processor.cc b/chrome/browser/sync/glue/typed_url_change_processor.cc index 13a202d..e269814 100644 --- a/chrome/browser/sync/glue/typed_url_change_processor.cc +++ b/chrome/browser/sync/glue/typed_url_change_processor.cc @@ -5,6 +5,7 @@ #include "chrome/browser/sync/glue/typed_url_change_processor.h" #include "base/string_util.h" +#include "base/tracked.h" #include "base/utf_string_conversions.h" #include "chrome/browser/history/history_backend.h" #include "chrome/browser/history/history_notifications.h" @@ -84,7 +85,7 @@ void TypedUrlChangeProcessor::HandleURLsModified( } } - sync_api::WriteTransaction trans(share_handle()); + sync_api::WriteTransaction trans(FROM_HERE, share_handle()); sync_api::ReadNode typed_url_root(&trans); if (!typed_url_root.InitByTagLookup(kTypedUrlTag)) { @@ -125,7 +126,7 @@ void TypedUrlChangeProcessor::HandleURLsModified( void TypedUrlChangeProcessor::HandleURLsDeleted( history::URLsDeletedDetails* details) { - sync_api::WriteTransaction trans(share_handle()); + sync_api::WriteTransaction trans(FROM_HERE, share_handle()); if (details->all_history) { if (!model_associator_->DeleteAllNodes(&trans)) { @@ -164,7 +165,7 @@ void TypedUrlChangeProcessor::HandleURLsVisited( return; } - sync_api::WriteTransaction trans(share_handle()); + sync_api::WriteTransaction trans(FROM_HERE, share_handle()); std::string tag = details->row.url().spec(); sync_api::WriteNode update_node(&trans); if (!update_node.InitByClientTagLookup(syncable::TYPED_URLS, tag)) { diff --git a/chrome/browser/sync/glue/typed_url_model_associator.cc b/chrome/browser/sync/glue/typed_url_model_associator.cc index 50758a7..337a7c4 100644 --- a/chrome/browser/sync/glue/typed_url_model_associator.cc +++ b/chrome/browser/sync/glue/typed_url_model_associator.cc @@ -7,6 +7,7 @@ #include <algorithm> #include <set> +#include "base/tracked.h" #include "base/utf_string_conversions.h" #include "chrome/browser/history/history_backend.h" #include "chrome/browser/sync/engine/syncapi.h" @@ -68,7 +69,7 @@ bool TypedUrlModelAssociator::AssociateModels() { TypedUrlUpdateVector updated_urls; { - sync_api::WriteTransaction trans(sync_service_->GetUserShare()); + sync_api::WriteTransaction trans(FROM_HERE, sync_service_->GetUserShare()); sync_api::ReadNode typed_url_root(&trans); if (!typed_url_root.InitByTagLookup(kTypedUrlTag)) { LOG(ERROR) << "Server did not create the top-level typed_url node. We " @@ -265,7 +266,7 @@ bool TypedUrlModelAssociator::SyncModelHasUserCreatedNodes(bool* has_nodes) { << "might be running against an out-of-date server."; return false; } - sync_api::ReadTransaction trans(sync_service_->GetUserShare()); + sync_api::ReadTransaction trans(FROM_HERE, sync_service_->GetUserShare()); sync_api::ReadNode typed_url_node(&trans); if (!typed_url_node.InitByIdLookup(typed_url_sync_id)) { @@ -327,7 +328,7 @@ void TypedUrlModelAssociator::Disassociate(int64 sync_id) { bool TypedUrlModelAssociator::GetSyncIdForTaggedNode(const std::string& tag, int64* sync_id) { - sync_api::ReadTransaction trans(sync_service_->GetUserShare()); + sync_api::ReadTransaction trans(FROM_HERE, sync_service_->GetUserShare()); sync_api::ReadNode sync_node(&trans); if (!sync_node.InitByTagLookup(tag.c_str())) return false; @@ -577,7 +578,7 @@ void TypedUrlModelAssociator::UpdateURLRowFromTypedUrlSpecifics( bool TypedUrlModelAssociator::CryptoReadyIfNecessary() { // We only access the cryptographer while holding a transaction. - sync_api::ReadTransaction trans(sync_service_->GetUserShare()); + sync_api::ReadTransaction trans(FROM_HERE, sync_service_->GetUserShare()); syncable::ModelTypeSet encrypted_types; encrypted_types = sync_api::GetEncryptedTypes(&trans); return encrypted_types.count(syncable::TYPED_URLS) == 0 || diff --git a/chrome/browser/sync/js_sync_manager_observer_unittest.cc b/chrome/browser/sync/js_sync_manager_observer_unittest.cc index 08d38f4..e71c059 100644 --- a/chrome/browser/sync/js_sync_manager_observer_unittest.cc +++ b/chrome/browser/sync/js_sync_manager_observer_unittest.cc @@ -7,6 +7,7 @@ #include <cstddef> #include "base/basictypes.h" +#include "base/tracked.h" #include "base/values.h" #include "chrome/browser/sync/engine/syncapi.h" #include "chrome/browser/sync/js_arg_list.h" @@ -222,7 +223,7 @@ namespace { // Makes a node of the given model type. Returns the id of the // newly-created node. int64 MakeNode(sync_api::UserShare* share, syncable::ModelType model_type) { - sync_api::WriteTransaction trans(share); + sync_api::WriteTransaction trans(FROM_HERE, share); sync_api::ReadNode root_node(&trans); root_node.InitByRootLookup(); sync_api::WriteNode node(&trans); @@ -264,7 +265,7 @@ TEST_F(JsSyncManagerObserverTest, OnChangesApplied) { break; } { - sync_api::ReadTransaction trans(test_user_share.user_share()); + sync_api::ReadTransaction trans(FROM_HERE, test_user_share.user_share()); sync_api::ReadNode node(&trans); EXPECT_TRUE(node.InitByIdLookup(changes[i].id)); changes[i].specifics = node.GetEntry()->Get(syncable::SPECIFICS); @@ -285,7 +286,7 @@ TEST_F(JsSyncManagerObserverTest, OnChangesApplied) { ListValue* expected_changes = new ListValue(); expected_details.Set("changes", expected_changes); for (int j = i; j < syncable::MODEL_TYPE_COUNT; ++j) { - sync_api::ReadTransaction trans(test_user_share.user_share()); + sync_api::ReadTransaction trans(FROM_HERE, test_user_share.user_share()); expected_changes->Append(changes[j].ToValue(&trans)); } EXPECT_CALL(mock_router_, @@ -296,7 +297,7 @@ TEST_F(JsSyncManagerObserverTest, OnChangesApplied) { // Fire OnChangesApplied() for each data type. for (int i = syncable::AUTOFILL_PROFILE; i < syncable::MODEL_TYPE_COUNT; ++i) { - sync_api::ReadTransaction trans(test_user_share.user_share()); + sync_api::ReadTransaction trans(FROM_HERE, test_user_share.user_share()); sync_manager_observer_.OnChangesApplied(syncable::ModelTypeFromInt(i), &trans, &changes[i], syncable::MODEL_TYPE_COUNT - i); diff --git a/chrome/browser/sync/profile_sync_service_autofill_unittest.cc b/chrome/browser/sync/profile_sync_service_autofill_unittest.cc index b6d966d..4e13929 100644 --- a/chrome/browser/sync/profile_sync_service_autofill_unittest.cc +++ b/chrome/browser/sync/profile_sync_service_autofill_unittest.cc @@ -333,7 +333,7 @@ class ProfileSyncServiceAutofillTest : public AbstractProfileSyncServiceTest { } bool AddAutofillSyncNode(const AutofillEntry& entry) { - sync_api::WriteTransaction trans(service_->GetUserShare()); + sync_api::WriteTransaction trans(FROM_HERE, service_->GetUserShare()); sync_api::ReadNode autofill_root(&trans); if (!autofill_root.InitByTagLookup(browser_sync::kAutofillTag)) return false; @@ -349,7 +349,7 @@ class ProfileSyncServiceAutofillTest : public AbstractProfileSyncServiceTest { } bool AddAutofillSyncNode(const AutofillProfile& profile) { - sync_api::WriteTransaction trans(service_->GetUserShare()); + sync_api::WriteTransaction trans(FROM_HERE, service_->GetUserShare()); sync_api::ReadNode autofill_root(&trans); if (!autofill_root.InitByTagLookup(browser_sync::kAutofillProfileTag)) return false; @@ -364,7 +364,7 @@ class ProfileSyncServiceAutofillTest : public AbstractProfileSyncServiceTest { bool GetAutofillEntriesFromSyncDB(std::vector<AutofillEntry>* entries, std::vector<AutofillProfile>* profiles) { - sync_api::ReadTransaction trans(service_->GetUserShare()); + sync_api::ReadTransaction trans(FROM_HERE, service_->GetUserShare()); sync_api::ReadNode autofill_root(&trans); if (!autofill_root.InitByTagLookup(browser_sync::kAutofillTag)) return false; @@ -401,7 +401,7 @@ class ProfileSyncServiceAutofillTest : public AbstractProfileSyncServiceTest { bool GetAutofillProfilesFromSyncDBUnderProfileNode( std::vector<AutofillProfile>* profiles) { - sync_api::ReadTransaction trans(service_->GetUserShare()); + sync_api::ReadTransaction trans(FROM_HERE, service_->GetUserShare()); sync_api::ReadNode autofill_root(&trans); if (!autofill_root.InitByTagLookup(browser_sync::kAutofillProfileTag)) return false; @@ -491,11 +491,11 @@ class AddAutofillTask : public Task { static const bool kLoggingInfo = true; class WriteTransactionTest: public WriteTransaction { public: - WriteTransactionTest(const syncable::ScopedDirLookup& directory, + WriteTransactionTest(const tracked_objects::Location& from_here, WriterTag writer, - const tracked_objects::Location& from_here, + const syncable::ScopedDirLookup& directory, scoped_ptr<WaitableEvent> *wait_for_syncapi) - : WriteTransaction(directory, writer, from_here), + : WriteTransaction(from_here, writer, directory), wait_for_syncapi_(wait_for_syncapi) { } virtual void NotifyTransactionComplete(syncable::ModelTypeBitSet types) { @@ -553,7 +553,7 @@ class FakeServerUpdater: public base::RefCountedThreadSafe<FakeServerUpdater> { (*wait_for_start_)->Signal(); // Create write transaction. - WriteTransactionTest trans(dir, UNITTEST, FROM_HERE, + WriteTransactionTest trans(FROM_HERE, UNITTEST, dir, wait_for_syncapi_); // Create actual entry based on autofill protobuf information. diff --git a/chrome/browser/sync/profile_sync_service_bookmark_unittest.cc b/chrome/browser/sync/profile_sync_service_bookmark_unittest.cc index 39e6d74..3bdae6e 100644 --- a/chrome/browser/sync/profile_sync_service_bookmark_unittest.cc +++ b/chrome/browser/sync/profile_sync_service_bookmark_unittest.cc @@ -17,6 +17,7 @@ #include "base/string16.h" #include "base/string_number_conversions.h" #include "base/string_util.h" +#include "base/tracked.h" #include "base/utf_string_conversions.h" #include "chrome/browser/bookmarks/bookmark_model.h" #include "chrome/browser/sync/abstract_profile_sync_service_test.h" @@ -64,7 +65,7 @@ class TestBookmarkModelAssociator : public BookmarkModelAssociator { bool root_exists = false; syncable::ModelType type = model_type(); { - sync_api::WriteTransaction trans(user_share_); + sync_api::WriteTransaction trans(FROM_HERE, user_share_); sync_api::ReadNode uber_root(&trans); uber_root.InitByRootLookup(); @@ -82,7 +83,7 @@ class TestBookmarkModelAssociator : public BookmarkModelAssociator { return false; } - sync_api::WriteTransaction trans(user_share_); + sync_api::WriteTransaction trans(FROM_HERE, user_share_); sync_api::ReadNode root(&trans); EXPECT_TRUE(root.InitByTagLookup( ProfileSyncServiceTestHelper::GetTagForType(type))); @@ -403,7 +404,7 @@ class ProfileSyncServiceBookmarkTest : public testing::Test { } void ExpectSyncerNodeMatching(const BookmarkNode* bnode) { - sync_api::ReadTransaction trans(test_user_share_.user_share()); + sync_api::ReadTransaction trans(FROM_HERE, test_user_share_.user_share()); ExpectSyncerNodeMatching(&trans, bnode); } @@ -483,7 +484,7 @@ class ProfileSyncServiceBookmarkTest : public testing::Test { } void ExpectModelMatch() { - sync_api::ReadTransaction trans(test_user_share_.user_share()); + sync_api::ReadTransaction trans(FROM_HERE, test_user_share_.user_share()); ExpectModelMatch(&trans); } @@ -593,7 +594,7 @@ TEST_F(ProfileSyncServiceBookmarkTest, ServerChangeProcessing) { LoadBookmarkModel(DELETE_EXISTING_STORAGE, DONT_SAVE_TO_STORAGE); StartSync(); - sync_api::WriteTransaction trans(test_user_share_.user_share()); + sync_api::WriteTransaction trans(FROM_HERE, test_user_share_.user_share()); FakeServerChange adds(&trans); int64 f1 = adds.AddFolder(L"Server Folder B", bookmark_bar_id(), 0); @@ -690,7 +691,7 @@ TEST_F(ProfileSyncServiceBookmarkTest, ServerChangeRequiringFosterParent) { LoadBookmarkModel(DELETE_EXISTING_STORAGE, DONT_SAVE_TO_STORAGE); StartSync(); - sync_api::WriteTransaction trans(test_user_share_.user_share()); + sync_api::WriteTransaction trans(FROM_HERE, test_user_share_.user_share()); // Stress the immediate children of other_node because that's where // ApplyModelChanges puts a temporary foster parent node. @@ -739,7 +740,7 @@ TEST_F(ProfileSyncServiceBookmarkTest, ServerChangeWithNonCanonicalURL) { StartSync(); { - sync_api::WriteTransaction trans(test_user_share_.user_share()); + sync_api::WriteTransaction trans(FROM_HERE, test_user_share_.user_share()); FakeServerChange adds(&trans); std::string url("http://dev.chromium.org"); @@ -770,7 +771,7 @@ TEST_F(ProfileSyncServiceBookmarkTest, DISABLED_ServerChangeWithInvalidURL) { int child_count = 0; { - sync_api::WriteTransaction trans(test_user_share_.user_share()); + sync_api::WriteTransaction trans(FROM_HERE, test_user_share_.user_share()); FakeServerChange adds(&trans); std::string url("x"); @@ -887,7 +888,7 @@ TEST_F(ProfileSyncServiceBookmarkTest, UnrecoverableErrorSuspendsService) { // updating the ProfileSyncService state. This should introduce // inconsistency between the two models. { - sync_api::WriteTransaction trans(test_user_share_.user_share()); + sync_api::WriteTransaction trans(FROM_HERE, test_user_share_.user_share()); sync_api::WriteNode sync_node(&trans); ASSERT_TRUE(InitSyncNodeFromChromeNode(node, &sync_node)); sync_node.Remove(); diff --git a/chrome/browser/sync/profile_sync_service_password_unittest.cc b/chrome/browser/sync/profile_sync_service_password_unittest.cc index 072bb36..0433b67 100644 --- a/chrome/browser/sync/profile_sync_service_password_unittest.cc +++ b/chrome/browser/sync/profile_sync_service_password_unittest.cc @@ -10,6 +10,7 @@ #include "base/task.h" #include "base/test/test_timeouts.h" #include "base/time.h" +#include "base/tracked.h" #include "base/utf_string_conversions.h" #include "chrome/browser/password_manager/password_store.h" #include "chrome/browser/prefs/pref_service.h" @@ -86,7 +87,8 @@ ACTION_P3(MakePasswordSyncComponents, service, ps, dtc) { ACTION_P(AcquireSyncTransaction, password_test_service) { // Check to make sure we can aquire a transaction (will crash if a transaction // is already held by this thread, deadlock if held by another thread). - sync_api::WriteTransaction trans(password_test_service->GetUserShare()); + sync_api::WriteTransaction trans( + FROM_HERE, password_test_service->GetUserShare()); VLOG(1) << "Sync transaction acquired."; } @@ -238,7 +240,7 @@ class ProfileSyncServicePasswordTest : public AbstractProfileSyncServiceTest { } void AddPasswordSyncNode(const PasswordForm& entry) { - sync_api::WriteTransaction trans(service_->GetUserShare()); + sync_api::WriteTransaction trans(FROM_HERE, service_->GetUserShare()); sync_api::ReadNode password_root(&trans); ASSERT_TRUE(password_root.InitByTagLookup(browser_sync::kPasswordTag)); @@ -251,7 +253,7 @@ class ProfileSyncServicePasswordTest : public AbstractProfileSyncServiceTest { } void GetPasswordEntriesFromSyncDB(std::vector<PasswordForm>* entries) { - sync_api::ReadTransaction trans(service_->GetUserShare()); + sync_api::ReadTransaction trans(FROM_HERE, service_->GetUserShare()); sync_api::ReadNode password_root(&trans); ASSERT_TRUE(password_root.InitByTagLookup(browser_sync::kPasswordTag)); diff --git a/chrome/browser/sync/profile_sync_service_preference_unittest.cc b/chrome/browser/sync/profile_sync_service_preference_unittest.cc index b6cfd53..436f213 100644 --- a/chrome/browser/sync/profile_sync_service_preference_unittest.cc +++ b/chrome/browser/sync/profile_sync_service_preference_unittest.cc @@ -9,6 +9,7 @@ #include "base/stl_util-inl.h" #include "base/string_piece.h" #include "base/task.h" +#include "base/tracked.h" #include "chrome/browser/prefs/pref_model_associator.h" #include "chrome/browser/prefs/scoped_user_pref_update.h" #include "chrome/browser/sync/abstract_profile_sync_service_test.h" @@ -124,7 +125,7 @@ class ProfileSyncServicePreferenceTest // Caller gets ownership of the returned value. const Value* GetSyncedValue(const std::string& name) { - sync_api::ReadTransaction trans(service_->GetUserShare()); + sync_api::ReadTransaction trans(FROM_HERE, service_->GetUserShare()); sync_api::ReadNode node(&trans); if (!node.InitByClientTagLookup(syncable::PREFERENCES, name)) @@ -151,7 +152,7 @@ class ProfileSyncServicePreferenceTest } int64 SetSyncedValue(const std::string& name, const Value& value) { - sync_api::WriteTransaction trans(service_->GetUserShare()); + sync_api::WriteTransaction trans(FROM_HERE, service_->GetUserShare()); sync_api::ReadNode root(&trans); if (!root.InitByTagLookup( syncable::ModelTypeToRootTag(syncable::PREFERENCES))) { @@ -385,7 +386,7 @@ TEST_F(ProfileSyncServicePreferenceTest, UpdatedSyncNodeActionUpdate) { scoped_ptr<SyncManager::ChangeRecord> record(MakeChangeRecord( node_id, SyncManager::ChangeRecord::ACTION_UPDATE)); { - sync_api::WriteTransaction trans(service_->GetUserShare()); + sync_api::WriteTransaction trans(FROM_HERE, service_->GetUserShare()); change_processor_->ApplyChangesFromSyncModel(&trans, record.get(), 1); } change_processor_->CommitChangesFromSyncModel(); @@ -405,7 +406,7 @@ TEST_F(ProfileSyncServicePreferenceTest, UpdatedSyncNodeActionAdd) { scoped_ptr<SyncManager::ChangeRecord> record(MakeChangeRecord( node_id, SyncManager::ChangeRecord::ACTION_ADD)); { - sync_api::WriteTransaction trans(service_->GetUserShare()); + sync_api::WriteTransaction trans(FROM_HERE, service_->GetUserShare()); change_processor_->ApplyChangesFromSyncModel(&trans, record.get(), 1); } change_processor_->CommitChangesFromSyncModel(); @@ -427,7 +428,7 @@ TEST_F(ProfileSyncServicePreferenceTest, UpdatedSyncNodeUnknownPreference) { scoped_ptr<SyncManager::ChangeRecord> record(MakeChangeRecord( node_id, SyncManager::ChangeRecord::ACTION_UPDATE)); { - sync_api::WriteTransaction trans(service_->GetUserShare()); + sync_api::WriteTransaction trans(FROM_HERE, service_->GetUserShare()); change_processor_->ApplyChangesFromSyncModel(&trans, record.get(), 1); } change_processor_->CommitChangesFromSyncModel(); @@ -460,7 +461,7 @@ TEST_F(ProfileSyncServicePreferenceTest, ManagedPreferences) { scoped_ptr<SyncManager::ChangeRecord> record(MakeChangeRecord( node_id, SyncManager::ChangeRecord::ACTION_UPDATE)); { - sync_api::WriteTransaction trans(service_->GetUserShare()); + sync_api::WriteTransaction trans(FROM_HERE, service_->GetUserShare()); change_processor_->ApplyChangesFromSyncModel(&trans, record.get(), 1); } change_processor_->CommitChangesFromSyncModel(); @@ -500,7 +501,7 @@ TEST_F(ProfileSyncServicePreferenceTest, DynamicManagedPreferences) { scoped_ptr<SyncManager::ChangeRecord> record(MakeChangeRecord( node_id, SyncManager::ChangeRecord::ACTION_ADD)); { - sync_api::WriteTransaction trans(service_->GetUserShare()); + sync_api::WriteTransaction trans(FROM_HERE, service_->GetUserShare()); change_processor_->ApplyChangesFromSyncModel(&trans, record.get(), 1); } change_processor_->CommitChangesFromSyncModel(); diff --git a/chrome/browser/sync/profile_sync_service_session_unittest.cc b/chrome/browser/sync/profile_sync_service_session_unittest.cc index dac1129..590b2ad 100644 --- a/chrome/browser/sync/profile_sync_service_session_unittest.cc +++ b/chrome/browser/sync/profile_sync_service_session_unittest.cc @@ -10,6 +10,7 @@ #include "base/scoped_temp_dir.h" #include "base/stl_util-inl.h" #include "base/task.h" +#include "base/tracked.h" #include "chrome/browser/sessions/session_service.h" #include "chrome/browser/sessions/session_service_factory.h" #include "chrome/browser/sessions/session_service_test_helper.h" @@ -191,7 +192,7 @@ TEST_F(ProfileSyncServiceSessionTest, WriteSessionToNode) { ASSERT_NE(sync_api::kInvalidId, sync_id); // Check that we can get the correct session specifics back from the node. - sync_api::ReadTransaction trans(sync_service_->GetUserShare()); + sync_api::ReadTransaction trans(FROM_HERE, sync_service_->GetUserShare()); sync_api::ReadNode node(&trans); ASSERT_TRUE(node.InitByClientTagLookup(syncable::SESSIONS, machine_tag)); @@ -343,7 +344,7 @@ TEST_F(ProfileSyncServiceSessionTest, UpdatedSyncNodeActionUpdate) { record->id = node_id; ASSERT_FALSE(notified_of_update_); { - sync_api::WriteTransaction trans(sync_service_->GetUserShare()); + sync_api::WriteTransaction trans(FROM_HERE, sync_service_->GetUserShare()); change_processor_->ApplyChangesFromSyncModel(&trans, record.get(), 1); } ASSERT_TRUE(notified_of_update_); @@ -362,7 +363,7 @@ TEST_F(ProfileSyncServiceSessionTest, UpdatedSyncNodeActionAdd) { record->id = node_id; ASSERT_FALSE(notified_of_update_); { - sync_api::WriteTransaction trans(sync_service_->GetUserShare()); + sync_api::WriteTransaction trans(FROM_HERE, sync_service_->GetUserShare()); change_processor_->ApplyChangesFromSyncModel(&trans, record.get(), 1); } ASSERT_TRUE(notified_of_update_); @@ -381,7 +382,7 @@ TEST_F(ProfileSyncServiceSessionTest, UpdatedSyncNodeActionDelete) { record->id = node_id; ASSERT_FALSE(notified_of_update_); { - sync_api::WriteTransaction trans(sync_service_->GetUserShare()); + sync_api::WriteTransaction trans(FROM_HERE, sync_service_->GetUserShare()); change_processor_->ApplyChangesFromSyncModel(&trans, record.get(), 1); } ASSERT_TRUE(notified_of_update_); diff --git a/chrome/browser/sync/profile_sync_service_typed_url_unittest.cc b/chrome/browser/sync/profile_sync_service_typed_url_unittest.cc index 417036c..13b7bc5 100644 --- a/chrome/browser/sync/profile_sync_service_typed_url_unittest.cc +++ b/chrome/browser/sync/profile_sync_service_typed_url_unittest.cc @@ -10,6 +10,7 @@ #include "base/string16.h" #include "base/threading/thread.h" #include "base/time.h" +#include "base/tracked.h" #include "chrome/browser/history/history_backend.h" #include "chrome/browser/history/history_notifications.h" #include "chrome/browser/history/history_types.h" @@ -196,7 +197,7 @@ class ProfileSyncServiceTypedUrlTest : public AbstractProfileSyncServiceTest { void AddTypedUrlSyncNode(const history::URLRow& url, const history::VisitVector& visits) { - sync_api::WriteTransaction trans(service_->GetUserShare()); + sync_api::WriteTransaction trans(FROM_HERE, service_->GetUserShare()); sync_api::ReadNode typed_url_root(&trans); ASSERT_TRUE(typed_url_root.InitByTagLookup(browser_sync::kTypedUrlTag)); @@ -209,7 +210,7 @@ class ProfileSyncServiceTypedUrlTest : public AbstractProfileSyncServiceTest { } void GetTypedUrlsFromSyncDB(std::vector<history::URLRow>* urls) { - sync_api::ReadTransaction trans(service_->GetUserShare()); + sync_api::ReadTransaction trans(FROM_HERE, service_->GetUserShare()); sync_api::ReadNode typed_url_root(&trans); if (!typed_url_root.InitByTagLookup(browser_sync::kTypedUrlTag)) return; diff --git a/chrome/browser/sync/sessions/sync_session_unittest.cc b/chrome/browser/sync/sessions/sync_session_unittest.cc index dc9ad8a..b6cbe81 100644 --- a/chrome/browser/sync/sessions/sync_session_unittest.cc +++ b/chrome/browser/sync/sessions/sync_session_unittest.cc @@ -124,7 +124,7 @@ TEST_F(SyncSessionTest, SetWriteTransaction) { scoped_ptr<SyncSession> session(MakeSession()); EXPECT_TRUE(NULL == session->write_transaction()); { - WriteTransaction trans(dir, syncable::UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, syncable::UNITTEST, dir); sessions::ScopedSetSessionWriteTransaction set_trans(session.get(), &trans); EXPECT_TRUE(&trans == session->write_transaction()); } diff --git a/chrome/browser/sync/syncable/syncable.cc b/chrome/browser/sync/syncable/syncable.cc index 039ad41..43fbec6 100644 --- a/chrome/browser/sync/syncable/syncable.cc +++ b/chrome/browser/sync/syncable/syncable.cc @@ -654,7 +654,7 @@ bool Directory::SafeToPurgeFromMemory(const EntryKernel* const entry) const { } void Directory::TakeSnapshotForSaveChanges(SaveChangesSnapshot* snapshot) { - ReadTransaction trans(this, FROM_HERE); + ReadTransaction trans(FROM_HERE, this); ScopedKernelLock lock(this); // Deep copy dirty entries from kernel_->metahandles_index into snapshot and // clear dirty flags. @@ -712,7 +712,7 @@ bool Directory::SaveChanges() { void Directory::VacuumAfterSaveChanges(const SaveChangesSnapshot& snapshot) { // Need a write transaction as we are about to permanently purge entries. - WriteTransaction trans(this, VACUUM_AFTER_SAVE, FROM_HERE); + WriteTransaction trans(FROM_HERE, VACUUM_AFTER_SAVE, this); ScopedKernelLock lock(this); kernel_->flushed_metahandles.Push(0); // Begin flush marker // Now drop everything we can out of memory. @@ -753,7 +753,7 @@ void Directory::PurgeEntriesWithTypeIn(const std::set<ModelType>& types) { return; { - WriteTransaction trans(this, PURGE_ENTRIES, FROM_HERE); + WriteTransaction trans(FROM_HERE, PURGE_ENTRIES, this); { ScopedKernelLock lock(this); MetahandlesIndex::iterator it = kernel_->metahandles_index->begin(); @@ -1199,11 +1199,12 @@ void BaseTransaction::Lock() { << elapsed.InSecondsF() << " seconds."; } -BaseTransaction::BaseTransaction( - Directory* directory, const char* name, - const tracked_objects::Location& from_here, WriterTag writer) - : directory_(directory), dirkernel_(directory->kernel_), name_(name), - from_here_(from_here), writer_(writer) { +BaseTransaction::BaseTransaction(const tracked_objects::Location& from_here, + const char* name, + WriterTag writer, + Directory* directory) + : from_here_(from_here), name_(name), writer_(writer), + directory_(directory), dirkernel_(directory->kernel_) { dirkernel_->observers->Notify( &TransactionObserver::OnTransactionStart, from_here_, writer_); Lock(); @@ -1272,31 +1273,31 @@ void BaseTransaction::NotifyTransactionComplete( #undef VLOG_LOC_STREAM -ReadTransaction::ReadTransaction(Directory* directory, - const tracked_objects::Location& location) - : BaseTransaction(directory, "Read", location, INVALID) { +ReadTransaction::ReadTransaction(const tracked_objects::Location& location, + Directory* directory) + : BaseTransaction(location, "Read", INVALID, directory) { } -ReadTransaction::ReadTransaction(const ScopedDirLookup& scoped_dir, - const tracked_objects::Location& location) - : BaseTransaction(scoped_dir.operator -> (), "Read", location, INVALID) { +ReadTransaction::ReadTransaction(const tracked_objects::Location& location, + const ScopedDirLookup& scoped_dir) + : BaseTransaction(location, "Read", INVALID, scoped_dir.operator->()) { } ReadTransaction::~ReadTransaction() { UnlockAndLog(NULL); } -WriteTransaction::WriteTransaction(Directory* directory, WriterTag writer, - const tracked_objects::Location& location) - : BaseTransaction(directory, "Write", location, writer), - originals_(new OriginalEntries) { +WriteTransaction::WriteTransaction(const tracked_objects::Location& location, + WriterTag writer, Directory* directory) + : BaseTransaction(location, "Write", writer, directory), + originals_(new OriginalEntries) { } -WriteTransaction::WriteTransaction(const ScopedDirLookup& scoped_dir, +WriteTransaction::WriteTransaction(const tracked_objects::Location& location, WriterTag writer, - const tracked_objects::Location& location) - : BaseTransaction(scoped_dir.operator -> (), "Write", location, writer), - originals_(new OriginalEntries) { + const ScopedDirLookup& scoped_dir) + : BaseTransaction(location, "Write", writer, scoped_dir.operator->()), + originals_(new OriginalEntries) { } void WriteTransaction::SaveOriginal(EntryKernel* entry) { diff --git a/chrome/browser/sync/syncable/syncable.h b/chrome/browser/sync/syncable/syncable.h index f58cf1c..1f8914b 100644 --- a/chrome/browser/sync/syncable/syncable.h +++ b/chrome/browser/sync/syncable/syncable.h @@ -1132,10 +1132,10 @@ class BaseTransaction { virtual ~BaseTransaction(); protected: - BaseTransaction(Directory* directory, + BaseTransaction(const tracked_objects::Location& from_here, const char* name, - const tracked_objects::Location& from_here, - WriterTag writer); + WriterTag writer, + Directory* directory); void UnlockAndLog(OriginalEntries* entries); virtual bool NotifyTransactionChangingAndEnding( @@ -1143,12 +1143,12 @@ class BaseTransaction { ModelTypeBitSet* models_with_changes); virtual void NotifyTransactionComplete(ModelTypeBitSet models_with_changes); + const tracked_objects::Location from_here_; + const char* const name_; + WriterTag writer_; Directory* const directory_; Directory::Kernel* const dirkernel_; // for brevity - const char* const name_; base::TimeTicks time_acquired_; - const tracked_objects::Location from_here_; - WriterTag writer_; private: void Lock(); @@ -1159,10 +1159,10 @@ class BaseTransaction { // Locks db in constructor, unlocks in destructor. class ReadTransaction : public BaseTransaction { public: - ReadTransaction(Directory* directory, - const tracked_objects::Location& from_here); - ReadTransaction(const ScopedDirLookup& scoped_dir, - const tracked_objects::Location& from_here); + ReadTransaction(const tracked_objects::Location& from_here, + Directory* directory); + ReadTransaction(const tracked_objects::Location& from_here, + const ScopedDirLookup& scoped_dir); virtual ~ReadTransaction(); @@ -1177,10 +1177,11 @@ class ReadTransaction : public BaseTransaction { class WriteTransaction : public BaseTransaction { friend class MutableEntry; public: - WriteTransaction(Directory* directory, WriterTag writer, - const tracked_objects::Location& from_here); - WriteTransaction(const ScopedDirLookup& directory, WriterTag writer, - const tracked_objects::Location& from_here); + WriteTransaction(const tracked_objects::Location& from_here, + WriterTag writer, Directory* directory); + WriteTransaction(const tracked_objects::Location& from_here, + WriterTag writer, const ScopedDirLookup& directory); + virtual ~WriteTransaction(); void SaveOriginal(EntryKernel* entry); diff --git a/chrome/browser/sync/syncable/syncable_mock.cc b/chrome/browser/sync/syncable/syncable_mock.cc index 5617f48..da5e891 100644 --- a/chrome/browser/sync/syncable/syncable_mock.cc +++ b/chrome/browser/sync/syncable/syncable_mock.cc @@ -13,6 +13,6 @@ MockDirectory::MockDirectory() { MockDirectory::~MockDirectory() {} MockSyncableWriteTransaction::MockSyncableWriteTransaction( - Directory *directory) - : WriteTransaction(directory, syncable::UNITTEST, FROM_HERE) { + const tracked_objects::Location& from_here, Directory *directory) + : WriteTransaction(from_here, syncable::UNITTEST, directory) { } diff --git a/chrome/browser/sync/syncable/syncable_mock.h b/chrome/browser/sync/syncable/syncable_mock.h index c20a79b..51692a7 100644 --- a/chrome/browser/sync/syncable/syncable_mock.h +++ b/chrome/browser/sync/syncable/syncable_mock.h @@ -34,7 +34,8 @@ class MockDirectory : public Directory { class MockSyncableWriteTransaction : public syncable::WriteTransaction { public: - explicit MockSyncableWriteTransaction(Directory *directory); + MockSyncableWriteTransaction( + const tracked_objects::Location& from_here, Directory *directory); }; diff --git a/chrome/browser/sync/syncable/syncable_unittest.cc b/chrome/browser/sync/syncable/syncable_unittest.cc index ba801c4..a4b5e43 100644 --- a/chrome/browser/sync/syncable/syncable_unittest.cc +++ b/chrome/browser/sync/syncable/syncable_unittest.cc @@ -114,7 +114,7 @@ TEST_F(SyncableGeneralTest, General) { int64 root_metahandle; { - ReadTransaction rtrans(&dir, FROM_HERE); + ReadTransaction rtrans(FROM_HERE, &dir); Entry e(&rtrans, GET_BY_ID, rtrans.root_id()); ASSERT_TRUE(e.good()); root_metahandle = e.Get(META_HANDLE); @@ -125,7 +125,7 @@ TEST_F(SyncableGeneralTest, General) { std::string name = "Jeff"; // Test simple read operations on an empty DB. { - ReadTransaction rtrans(&dir, FROM_HERE); + ReadTransaction rtrans(FROM_HERE, &dir); Entry e(&rtrans, GET_BY_ID, id); ASSERT_FALSE(e.good()); // Hasn't been written yet. @@ -139,7 +139,7 @@ TEST_F(SyncableGeneralTest, General) { // Test creating a new meta entry. { - WriteTransaction wtrans(&dir, UNITTEST, FROM_HERE); + WriteTransaction wtrans(FROM_HERE, UNITTEST, &dir); MutableEntry me(&wtrans, CREATE, wtrans.root_id(), name); ASSERT_TRUE(me.good()); me.Put(ID, id); @@ -150,7 +150,7 @@ TEST_F(SyncableGeneralTest, General) { // Test GetChildHandles* after something is now in the DB. // Also check that GET_BY_ID works. { - ReadTransaction rtrans(&dir, FROM_HERE); + ReadTransaction rtrans(FROM_HERE, &dir); Entry e(&rtrans, GET_BY_ID, id); ASSERT_TRUE(e.good()); @@ -175,7 +175,7 @@ TEST_F(SyncableGeneralTest, General) { // Test writing data to an entity. Also check that GET_BY_HANDLE works. static const char s[] = "Hello World."; { - WriteTransaction trans(&dir, UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, &dir); MutableEntry e(&trans, GET_BY_HANDLE, written_metahandle); ASSERT_TRUE(e.good()); PutDataAsBookmarkFavicon(&trans, &e, s, sizeof(s)); @@ -183,7 +183,7 @@ TEST_F(SyncableGeneralTest, General) { // Test reading back the contents that we just wrote. { - WriteTransaction trans(&dir, UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, &dir); MutableEntry e(&trans, GET_BY_HANDLE, written_metahandle); ASSERT_TRUE(e.good()); ExpectDataFromBookmarkFaviconEquals(&trans, &e, s, sizeof(s)); @@ -191,13 +191,13 @@ TEST_F(SyncableGeneralTest, General) { // Verify it exists in the folder. { - ReadTransaction rtrans(&dir, FROM_HERE); + ReadTransaction rtrans(FROM_HERE, &dir); EXPECT_EQ(1, CountEntriesWithName(&rtrans, rtrans.root_id(), name)); } // Now delete it. { - WriteTransaction trans(&dir, UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, &dir); MutableEntry e(&trans, GET_BY_HANDLE, written_metahandle); e.Put(IS_DEL, true); @@ -219,7 +219,7 @@ TEST_F(SyncableGeneralTest, ClientIndexRebuildsProperly) { Directory dir; dir.Open(db_path_, "IndexTest", &delegate_); { - WriteTransaction wtrans(&dir, UNITTEST, FROM_HERE); + WriteTransaction wtrans(FROM_HERE, UNITTEST, &dir); MutableEntry me(&wtrans, CREATE, wtrans.root_id(), name); ASSERT_TRUE(me.good()); me.Put(ID, id); @@ -235,7 +235,7 @@ TEST_F(SyncableGeneralTest, ClientIndexRebuildsProperly) { Directory dir; dir.Open(db_path_, "IndexTest", &delegate_); - ReadTransaction trans(&dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, &dir); Entry me(&trans, GET_BY_CLIENT_TAG, tag); ASSERT_TRUE(me.good()); EXPECT_EQ(me.Get(ID), id); @@ -255,7 +255,7 @@ TEST_F(SyncableGeneralTest, ClientIndexRebuildsDeletedProperly) { Directory dir; dir.Open(db_path_, "IndexTest", &delegate_); { - WriteTransaction wtrans(&dir, UNITTEST, FROM_HERE); + WriteTransaction wtrans(FROM_HERE, UNITTEST, &dir); MutableEntry me(&wtrans, CREATE, wtrans.root_id(), "deleted"); ASSERT_TRUE(me.good()); me.Put(ID, id); @@ -273,7 +273,7 @@ TEST_F(SyncableGeneralTest, ClientIndexRebuildsDeletedProperly) { Directory dir; dir.Open(db_path_, "IndexTest", &delegate_); - ReadTransaction trans(&dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, &dir); Entry me(&trans, GET_BY_CLIENT_TAG, tag); ASSERT_TRUE(me.good()); EXPECT_EQ(me.Get(ID), id); @@ -289,7 +289,7 @@ TEST_F(SyncableGeneralTest, ToValue) { const Id id = TestIdFactory::FromNumber(99); { - ReadTransaction rtrans(&dir, FROM_HERE); + ReadTransaction rtrans(FROM_HERE, &dir); Entry e(&rtrans, GET_BY_ID, id); EXPECT_FALSE(e.good()); // Hasn't been written yet. @@ -300,7 +300,7 @@ TEST_F(SyncableGeneralTest, ToValue) { // Test creating a new meta entry. { - WriteTransaction wtrans(&dir, UNITTEST, FROM_HERE); + WriteTransaction wtrans(FROM_HERE, UNITTEST, &dir); MutableEntry me(&wtrans, CREATE, wtrans.root_id(), "new"); ASSERT_TRUE(me.good()); me.Put(ID, id); @@ -388,7 +388,7 @@ class SyncableDirectoryTest : public testing::Test { bool before_reload) { SCOPED_TRACE(testing::Message("Before reload: ") << before_reload); { - ReadTransaction trans(dir_.get(), FROM_HERE); + ReadTransaction trans(FROM_HERE, dir_.get()); MetahandleSet all_set; dir_->GetAllMetaHandles(&trans, &all_set); EXPECT_EQ(3U, all_set.size()); @@ -423,7 +423,7 @@ class SyncableDirectoryTest : public testing::Test { CreateEntry(entryname, TestIdFactory::FromNumber(id)); } void CreateEntry(const std::string& entryname, Id id) { - WriteTransaction wtrans(dir_.get(), UNITTEST, FROM_HERE); + WriteTransaction wtrans(FROM_HERE, UNITTEST, dir_.get()); MutableEntry me(&wtrans, CREATE, wtrans.root_id(), entryname); ASSERT_TRUE(me.good()); me.Put(ID, id); @@ -444,7 +444,7 @@ TEST_F(SyncableDirectoryTest, TakeSnapshotGetsMetahandlesToPurge) { MetahandleSet expected_purges; MetahandleSet all_handles; { - WriteTransaction trans(dir_.get(), UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir_.get()); for (int i = 0; i < metas_to_create; i++) { MutableEntry e(&trans, CREATE, trans.root_id(), "foo"); e.Put(IS_UNSYNCED, true); @@ -486,7 +486,7 @@ TEST_F(SyncableDirectoryTest, TakeSnapshotGetsAllDirtyHandlesTest) { const int metahandles_to_create = 100; std::vector<int64> expected_dirty_metahandles; { - WriteTransaction trans(dir_.get(), UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir_.get()); for (int i = 0; i < metahandles_to_create; i++) { MutableEntry e(&trans, CREATE, trans.root_id(), "foo"); expected_dirty_metahandles.push_back(e.Get(META_HANDLE)); @@ -509,7 +509,7 @@ TEST_F(SyncableDirectoryTest, TakeSnapshotGetsAllDirtyHandlesTest) { } // Put a new value with existing transactions as well as adding new ones. { - WriteTransaction trans(dir_.get(), UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir_.get()); std::vector<int64> new_dirty_metahandles; for (std::vector<int64>::const_iterator i = expected_dirty_metahandles.begin(); @@ -560,7 +560,7 @@ TEST_F(SyncableDirectoryTest, TestPurgeEntriesWithTypeIn) { TestIdFactory id_factory; // Create some items for each type. { - WriteTransaction trans(dir_.get(), UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir_.get()); MutableEntry item1(&trans, CREATE, trans.root_id(), "Item"); ASSERT_TRUE(item1.good()); item1.Put(SPECIFICS, bookmark_specs); @@ -600,7 +600,7 @@ TEST_F(SyncableDirectoryTest, TestPurgeEntriesWithTypeIn) { dir_->SaveChanges(); { - ReadTransaction trans(dir_.get(), FROM_HERE); + ReadTransaction trans(FROM_HERE, dir_.get()); MetahandleSet all_set; dir_->GetAllMetaHandles(&trans, &all_set); ASSERT_EQ(7U, all_set.size()); @@ -622,7 +622,7 @@ TEST_F(SyncableDirectoryTest, TakeSnapshotGetsOnlyDirtyHandlesTest) { const unsigned int number_changed = 100u; std::vector<int64> expected_dirty_metahandles; { - WriteTransaction trans(dir_.get(), UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir_.get()); for (int i = 0; i < metahandles_to_create; i++) { MutableEntry e(&trans, CREATE, trans.root_id(), "foo"); expected_dirty_metahandles.push_back(e.Get(META_HANDLE)); @@ -632,7 +632,7 @@ TEST_F(SyncableDirectoryTest, TakeSnapshotGetsOnlyDirtyHandlesTest) { dir_->SaveChanges(); // Put a new value with existing transactions as well as adding new ones. { - WriteTransaction trans(dir_.get(), UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir_.get()); std::vector<int64> new_dirty_metahandles; for (std::vector<int64>::const_iterator i = expected_dirty_metahandles.begin(); @@ -653,7 +653,7 @@ TEST_F(SyncableDirectoryTest, TakeSnapshotGetsOnlyDirtyHandlesTest) { dir_->SaveChanges(); // Don't make any changes whatsoever and ensure nothing comes back. { - WriteTransaction trans(dir_.get(), UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir_.get()); for (std::vector<int64>::const_iterator i = expected_dirty_metahandles.begin(); i != expected_dirty_metahandles.end(); ++i) { @@ -672,7 +672,7 @@ TEST_F(SyncableDirectoryTest, TakeSnapshotGetsOnlyDirtyHandlesTest) { dir_->VacuumAfterSaveChanges(snapshot); } { - WriteTransaction trans(dir_.get(), UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir_.get()); bool should_change = false; for (std::vector<int64>::const_iterator i = expected_dirty_metahandles.begin(); @@ -709,21 +709,21 @@ const Id SyncableDirectoryTest::kId(TestIdFactory::FromNumber(-99)); namespace { TEST_F(SyncableDirectoryTest, TestBasicLookupNonExistantID) { - ReadTransaction rtrans(dir_.get(), FROM_HERE); + ReadTransaction rtrans(FROM_HERE, dir_.get()); Entry e(&rtrans, GET_BY_ID, kId); ASSERT_FALSE(e.good()); } TEST_F(SyncableDirectoryTest, TestBasicLookupValidID) { CreateEntry("rtc"); - ReadTransaction rtrans(dir_.get(), FROM_HERE); + ReadTransaction rtrans(FROM_HERE, dir_.get()); Entry e(&rtrans, GET_BY_ID, kId); ASSERT_TRUE(e.good()); } TEST_F(SyncableDirectoryTest, TestDelete) { std::string name = "peanut butter jelly time"; - WriteTransaction trans(dir_.get(), UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir_.get()); MutableEntry e1(&trans, CREATE, trans.root_id(), name); ASSERT_TRUE(e1.good()); ASSERT_TRUE(e1.Put(IS_DEL, true)); @@ -747,7 +747,7 @@ TEST_F(SyncableDirectoryTest, TestGetUnsynced) { Directory::UnsyncedMetaHandles handles; int64 handle1, handle2; { - WriteTransaction trans(dir_.get(), UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir_.get()); dir_->GetUnsyncedMetaHandles(&trans, &handles); ASSERT_TRUE(0 == handles.size()); @@ -767,7 +767,7 @@ TEST_F(SyncableDirectoryTest, TestGetUnsynced) { } dir_->SaveChanges(); { - WriteTransaction trans(dir_.get(), UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir_.get()); dir_->GetUnsyncedMetaHandles(&trans, &handles); ASSERT_TRUE(0 == handles.size()); @@ -778,7 +778,7 @@ TEST_F(SyncableDirectoryTest, TestGetUnsynced) { } dir_->SaveChanges(); { - WriteTransaction trans(dir_.get(), UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir_.get()); dir_->GetUnsyncedMetaHandles(&trans, &handles); ASSERT_TRUE(1 == handles.size()); ASSERT_TRUE(handle1 == handles[0]); @@ -789,7 +789,7 @@ TEST_F(SyncableDirectoryTest, TestGetUnsynced) { } dir_->SaveChanges(); { - WriteTransaction trans(dir_.get(), UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir_.get()); dir_->GetUnsyncedMetaHandles(&trans, &handles); ASSERT_TRUE(2 == handles.size()); if (handle1 == handles[0]) { @@ -807,7 +807,7 @@ TEST_F(SyncableDirectoryTest, TestGetUnsynced) { } dir_->SaveChanges(); { - WriteTransaction trans(dir_.get(), UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir_.get()); dir_->GetUnsyncedMetaHandles(&trans, &handles); ASSERT_TRUE(1 == handles.size()); ASSERT_TRUE(handle2 == handles[0]); @@ -818,7 +818,7 @@ TEST_F(SyncableDirectoryTest, TestGetUnappliedUpdates) { Directory::UnappliedUpdateMetaHandles handles; int64 handle1, handle2; { - WriteTransaction trans(dir_.get(), UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir_.get()); dir_->GetUnappliedUpdateMetaHandles(&trans, &handles); ASSERT_TRUE(0 == handles.size()); @@ -840,7 +840,7 @@ TEST_F(SyncableDirectoryTest, TestGetUnappliedUpdates) { } dir_->SaveChanges(); { - WriteTransaction trans(dir_.get(), UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir_.get()); dir_->GetUnappliedUpdateMetaHandles(&trans, &handles); ASSERT_TRUE(0 == handles.size()); @@ -851,7 +851,7 @@ TEST_F(SyncableDirectoryTest, TestGetUnappliedUpdates) { } dir_->SaveChanges(); { - WriteTransaction trans(dir_.get(), UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir_.get()); dir_->GetUnappliedUpdateMetaHandles(&trans, &handles); ASSERT_TRUE(1 == handles.size()); ASSERT_TRUE(handle1 == handles[0]); @@ -862,7 +862,7 @@ TEST_F(SyncableDirectoryTest, TestGetUnappliedUpdates) { } dir_->SaveChanges(); { - WriteTransaction trans(dir_.get(), UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir_.get()); dir_->GetUnappliedUpdateMetaHandles(&trans, &handles); ASSERT_TRUE(2 == handles.size()); if (handle1 == handles[0]) { @@ -878,7 +878,7 @@ TEST_F(SyncableDirectoryTest, TestGetUnappliedUpdates) { } dir_->SaveChanges(); { - WriteTransaction trans(dir_.get(), UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir_.get()); dir_->GetUnappliedUpdateMetaHandles(&trans, &handles); ASSERT_TRUE(1 == handles.size()); ASSERT_TRUE(handle2 == handles[0]); @@ -891,7 +891,7 @@ TEST_F(SyncableDirectoryTest, DeleteBug_531383) { TestIdFactory id_factory; int64 grandchild_handle, twin_handle; { - WriteTransaction wtrans(dir_.get(), UNITTEST, FROM_HERE); + WriteTransaction wtrans(FROM_HERE, UNITTEST, dir_.get()); MutableEntry parent(&wtrans, CREATE, id_factory.root(), "Bob"); ASSERT_TRUE(parent.good()); parent.Put(IS_DIR, true); @@ -917,7 +917,7 @@ TEST_F(SyncableDirectoryTest, DeleteBug_531383) { } dir_->SaveChanges(); { - WriteTransaction wtrans(dir_.get(), UNITTEST, FROM_HERE); + WriteTransaction wtrans(FROM_HERE, UNITTEST, dir_.get()); MutableEntry grandchild(&wtrans, GET_BY_HANDLE, grandchild_handle); grandchild.Put(IS_DEL, true); // Used to CHECK fail here. } @@ -929,7 +929,7 @@ static inline bool IsLegalNewParent(const Entry& a, const Entry& b) { TEST_F(SyncableDirectoryTest, TestIsLegalNewParent) { TestIdFactory id_factory; - WriteTransaction wtrans(dir_.get(), UNITTEST, FROM_HERE); + WriteTransaction wtrans(FROM_HERE, UNITTEST, dir_.get()); Entry root(&wtrans, GET_BY_ID, id_factory.root()); ASSERT_TRUE(root.good()); MutableEntry parent(&wtrans, CREATE, root.Get(ID), "Bob"); @@ -988,7 +988,7 @@ TEST_F(SyncableDirectoryTest, TestEntryIsInFolder) { std::string entry_name = "entry"; { - WriteTransaction trans(dir_.get(), UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir_.get()); MutableEntry folder(&trans, CREATE, trans.root_id(), "folder"); ASSERT_TRUE(folder.good()); EXPECT_TRUE(folder.Put(IS_DIR, true)); @@ -1004,7 +1004,7 @@ TEST_F(SyncableDirectoryTest, TestEntryIsInFolder) { // Make sure we can find the entry in the folder. { - ReadTransaction trans(dir_.get(), FROM_HERE); + ReadTransaction trans(FROM_HERE, dir_.get()); EXPECT_EQ(0, CountEntriesWithName(&trans, trans.root_id(), entry_name)); EXPECT_EQ(1, CountEntriesWithName(&trans, folder_id, entry_name)); @@ -1019,7 +1019,7 @@ TEST_F(SyncableDirectoryTest, TestEntryIsInFolder) { TEST_F(SyncableDirectoryTest, TestParentIdIndexUpdate) { std::string child_name = "child"; - WriteTransaction wt(dir_.get(), UNITTEST, FROM_HERE); + WriteTransaction wt(FROM_HERE, UNITTEST, dir_.get()); MutableEntry parent_folder(&wt, CREATE, wt.root_id(), "folder1"); parent_folder.Put(IS_UNSYNCED, true); EXPECT_TRUE(parent_folder.Put(IS_DIR, true)); @@ -1048,7 +1048,7 @@ TEST_F(SyncableDirectoryTest, TestNoReindexDeletedItems) { std::string folder_name = "folder"; std::string new_name = "new_name"; - WriteTransaction trans(dir_.get(), UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir_.get()); MutableEntry folder(&trans, CREATE, trans.root_id(), folder_name); ASSERT_TRUE(folder.good()); ASSERT_TRUE(folder.Put(IS_DIR, true)); @@ -1066,7 +1066,7 @@ TEST_F(SyncableDirectoryTest, TestNoReindexDeletedItems) { } TEST_F(SyncableDirectoryTest, TestCaseChangeRename) { - WriteTransaction trans(dir_.get(), UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir_.get()); MutableEntry folder(&trans, CREATE, trans.root_id(), "CaseChange"); ASSERT_TRUE(folder.good()); EXPECT_TRUE(folder.Put(PARENT_ID, trans.root_id())); @@ -1079,7 +1079,7 @@ TEST_F(SyncableDirectoryTest, TestShareInfo) { dir_->set_store_birthday("Jan 31st"); dir_->SetNotificationState("notification_state"); { - ReadTransaction trans(dir_.get(), FROM_HERE); + ReadTransaction trans(FROM_HERE, dir_.get()); EXPECT_TRUE(dir_->initial_sync_ended_for_type(AUTOFILL)); EXPECT_FALSE(dir_->initial_sync_ended_for_type(BOOKMARKS)); EXPECT_EQ("Jan 31st", dir_->store_birthday()); @@ -1090,7 +1090,7 @@ TEST_F(SyncableDirectoryTest, TestShareInfo) { dir_->SetNotificationState("notification_state2"); dir_->SaveChanges(); { - ReadTransaction trans(dir_.get(), FROM_HERE); + ReadTransaction trans(FROM_HERE, dir_.get()); EXPECT_TRUE(dir_->initial_sync_ended_for_type(AUTOFILL)); EXPECT_FALSE(dir_->initial_sync_ended_for_type(BOOKMARKS)); EXPECT_EQ("April 10th", dir_->store_birthday()); @@ -1101,7 +1101,7 @@ TEST_F(SyncableDirectoryTest, TestShareInfo) { // Restore the directory from disk. Make sure that nothing's changed. SaveAndReloadDir(); { - ReadTransaction trans(dir_.get(), FROM_HERE); + ReadTransaction trans(FROM_HERE, dir_.get()); EXPECT_TRUE(dir_->initial_sync_ended_for_type(AUTOFILL)); EXPECT_FALSE(dir_->initial_sync_ended_for_type(BOOKMARKS)); EXPECT_EQ("April 10th", dir_->store_birthday()); @@ -1118,7 +1118,7 @@ TEST_F(SyncableDirectoryTest, TestSimpleFieldsPreservedDuringSaveChanges) { std::string create_name = "Create"; { - WriteTransaction trans(dir_.get(), UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir_.get()); MutableEntry create(&trans, CREATE, trans.root_id(), create_name); MutableEntry update(&trans, CREATE_NEW_UPDATE_ITEM, update_id); create.Put(IS_UNSYNCED, true); @@ -1139,7 +1139,7 @@ TEST_F(SyncableDirectoryTest, TestSimpleFieldsPreservedDuringSaveChanges) { ASSERT_TRUE(dir_->good()); { - ReadTransaction trans(dir_.get(), FROM_HERE); + ReadTransaction trans(FROM_HERE, dir_.get()); Entry create(&trans, GET_BY_ID, create_id); EXPECT_EQ(1, CountEntriesWithName(&trans, trans.root_id(), create_name)); Entry update(&trans, GET_BY_ID, update_id); @@ -1193,7 +1193,7 @@ TEST_F(SyncableDirectoryTest, TestSaveChangesFailure) { int64 handle1 = 0; // Set up an item using a regular, saveable directory. { - WriteTransaction trans(dir_.get(), UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir_.get()); MutableEntry e1(&trans, CREATE, trans.root_id(), "aguilera"); ASSERT_TRUE(e1.good()); @@ -1210,7 +1210,7 @@ TEST_F(SyncableDirectoryTest, TestSaveChangesFailure) { // Make sure the item is no longer dirty after saving, // and make a modification. { - WriteTransaction trans(dir_.get(), UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir_.get()); MutableEntry aguilera(&trans, GET_BY_HANDLE, handle1); ASSERT_TRUE(aguilera.good()); @@ -1230,7 +1230,7 @@ TEST_F(SyncableDirectoryTest, TestSaveChangesFailure) { ASSERT_TRUE(dir_->good()); int64 handle2 = 0; { - WriteTransaction trans(dir_.get(), UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir_.get()); MutableEntry aguilera(&trans, GET_BY_HANDLE, handle1); ASSERT_TRUE(aguilera.good()); @@ -1259,7 +1259,7 @@ TEST_F(SyncableDirectoryTest, TestSaveChangesFailure) { // Make sure things were rolled back and the world is as it was before call. { - ReadTransaction trans(dir_.get(), FROM_HERE); + ReadTransaction trans(FROM_HERE, dir_.get()); Entry e1(&trans, GET_BY_HANDLE, handle1); ASSERT_TRUE(e1.good()); EntryKernel aguilera = e1.GetKernelCopy(); @@ -1276,7 +1276,7 @@ TEST_F(SyncableDirectoryTest, TestSaveChangesFailureWithPurge) { int64 handle1 = 0; // Set up an item using a regular, saveable directory. { - WriteTransaction trans(dir_.get(), UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir_.get()); MutableEntry e1(&trans, CREATE, trans.root_id(), "aguilera"); ASSERT_TRUE(e1.good()); @@ -1327,7 +1327,7 @@ TEST_F(SyncableDirectoryTest, GetModelType) { sync_pb::EntitySpecifics specifics; AddDefaultExtensionValue(datatype, &specifics); - WriteTransaction trans(dir_.get(), UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir_.get()); MutableEntry folder(&trans, CREATE, trans.root_id(), "Folder"); ASSERT_TRUE(folder.good()); @@ -1506,7 +1506,7 @@ class ThreadBugDelegate : public base::PlatformThread::Delegate { directory_manager_->Open(dirname, &delegate_); ScopedDirLookup dir(directory_manager_, dirname); CHECK(dir.good()); - WriteTransaction trans(dir, UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir); MutableEntry me(&trans, CREATE, trans.root_id(), "Jeff"); step_->metahandle = me.Get(META_HANDLE); me.Put(IS_UNSYNCED, true); @@ -1516,7 +1516,7 @@ class ThreadBugDelegate : public base::PlatformThread::Delegate { { ScopedDirLookup dir(directory_manager_, dirname); CHECK(dir.good()); - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); Entry e(&trans, GET_BY_HANDLE, step_->metahandle); CHECK(e.good()); // Failed due to ThreadBug1 } @@ -1580,7 +1580,7 @@ class DirectoryKernelStalenessBugDelegate : public ThreadBugDelegate { directory_manager_->Open(dirname, &delegate_); ScopedDirLookup dir(directory_manager_, dirname); CHECK(dir.good()); - WriteTransaction trans(dir, UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir); MutableEntry me(&trans, CREATE, trans.root_id(), "Jeff"); me.Put(BASE_VERSION, 1); me.Put(ID, jeff_id); @@ -1611,7 +1611,7 @@ class DirectoryKernelStalenessBugDelegate : public ThreadBugDelegate { { ScopedDirLookup dir(directory_manager_, dirname); CHECK(dir.good()); - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); Entry e(&trans, GET_BY_ID, jeff_id); ExpectDataFromBookmarkFaviconEquals(&trans, &e, test_bytes, sizeof(test_bytes)); @@ -1671,14 +1671,14 @@ class StressTransactionsDelegate : public base::PlatformThread::Delegate { for (int i = 0; i < 20; ++i) { const int rand_action = rand() % 10; if (rand_action < 4 && !path_name.empty()) { - ReadTransaction trans(dir, FROM_HERE); + ReadTransaction trans(FROM_HERE, dir); CHECK(1 == CountEntriesWithName(&trans, trans.root_id(), path_name)); base::PlatformThread::Sleep(rand() % 10); } else { std::string unique_name = base::StringPrintf("%d.%d", thread_number_, entry_count++); path_name.assign(unique_name.begin(), unique_name.end()); - WriteTransaction trans(dir, UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir); MutableEntry e(&trans, CREATE, trans.root_id(), path_name); CHECK(e.good()); base::PlatformThread::Sleep(rand() % 20); @@ -1736,7 +1736,7 @@ class SyncableClientTagTest : public SyncableDirectoryTest { // Attempt to create an entry with a default tag. bool CreateWithTag(const char* tag, Id id, bool deleted) { - WriteTransaction wtrans(dir_.get(), UNITTEST, FROM_HERE); + WriteTransaction wtrans(FROM_HERE, UNITTEST, dir_.get()); MutableEntry me(&wtrans, CREATE, wtrans.root_id(), test_name_); CHECK(me.good()); me.Put(ID, id); @@ -1752,7 +1752,7 @@ class SyncableClientTagTest : public SyncableDirectoryTest { // Verify an entry exists with the default tag. void VerifyTag(Id id, bool deleted) { // Should still be present and valid in the client tag index. - ReadTransaction trans(dir_.get(), FROM_HERE); + ReadTransaction trans(FROM_HERE, dir_.get()); Entry me(&trans, GET_BY_CLIENT_TAG, test_tag_); CHECK(me.good()); EXPECT_EQ(me.Get(ID), id); @@ -1769,13 +1769,13 @@ TEST_F(SyncableClientTagTest, TestClientTagClear) { Id server_id = factory_.NewServerId(); EXPECT_TRUE(CreateWithDefaultTag(server_id, false)); { - WriteTransaction trans(dir_.get(), UNITTEST, FROM_HERE); + WriteTransaction trans(FROM_HERE, UNITTEST, dir_.get()); MutableEntry me(&trans, GET_BY_CLIENT_TAG, test_tag_); EXPECT_TRUE(me.good()); me.Put(UNIQUE_CLIENT_TAG, ""); } { - ReadTransaction trans(dir_.get(), FROM_HERE); + ReadTransaction trans(FROM_HERE, dir_.get()); Entry by_tag(&trans, GET_BY_CLIENT_TAG, test_tag_); EXPECT_FALSE(by_tag.good()); |