| Index: chrome/browser/sync/syncable/syncable_unittest.cc
 | 
| diff --git a/chrome/browser/sync/syncable/syncable_unittest.cc b/chrome/browser/sync/syncable/syncable_unittest.cc
 | 
| index adb22de825c9ea008cec450f4ec8c00cc7a93252..ba801c4993fae58b9bcb099d73c4361467178c43 100644
 | 
| --- a/chrome/browser/sync/syncable/syncable_unittest.cc
 | 
| +++ b/chrome/browser/sync/syncable/syncable_unittest.cc
 | 
| @@ -20,6 +20,7 @@
 | 
|  #include <sys/times.h>
 | 
|  #endif  // !defined(OS_WIN)
 | 
|  
 | 
| +#include "base/compiler_specific.h"
 | 
|  #include "base/file_path.h"
 | 
|  #include "base/file_util.h"
 | 
|  #include "base/logging.h"
 | 
| @@ -27,14 +28,17 @@
 | 
|  #include "base/scoped_temp_dir.h"
 | 
|  #include "base/stringprintf.h"
 | 
|  #include "base/threading/platform_thread.h"
 | 
| +#include "base/tracked.h"
 | 
|  #include "base/values.h"
 | 
|  #include "chrome/browser/sync/engine/syncproto.h"
 | 
|  #include "chrome/browser/sync/protocol/bookmark_specifics.pb.h"
 | 
|  #include "chrome/browser/sync/syncable/directory_backing_store.h"
 | 
| +#include "chrome/browser/sync/syncable/directory_change_delegate.h"
 | 
|  #include "chrome/browser/sync/syncable/directory_manager.h"
 | 
|  #include "chrome/common/deprecated/event_sys-inl.h"
 | 
|  #include "chrome/test/sync/engine/test_id_factory.h"
 | 
|  #include "chrome/test/sync/engine/test_syncable_utils.h"
 | 
| +#include "chrome/test/sync/null_directory_change_delegate.h"
 | 
|  #include "chrome/test/values_test_util.h"
 | 
|  #include "testing/gtest/include/gtest/gtest.h"
 | 
|  #include "third_party/sqlite/sqlite3.h"
 | 
| @@ -100,16 +104,17 @@ class SyncableGeneralTest : public testing::Test {
 | 
|    }
 | 
|   protected:
 | 
|    ScopedTempDir temp_dir_;
 | 
| +  NullDirectoryChangeDelegate delegate_;
 | 
|    FilePath db_path_;
 | 
|  };
 | 
|  
 | 
|  TEST_F(SyncableGeneralTest, General) {
 | 
|    Directory dir;
 | 
| -  dir.Open(db_path_, "SimpleTest");
 | 
| +  dir.Open(db_path_, "SimpleTest", &delegate_);
 | 
|  
 | 
|    int64 root_metahandle;
 | 
|    {
 | 
| -    ReadTransaction rtrans(&dir, __FILE__, __LINE__);
 | 
| +    ReadTransaction rtrans(&dir, FROM_HERE);
 | 
|      Entry e(&rtrans, GET_BY_ID, rtrans.root_id());
 | 
|      ASSERT_TRUE(e.good());
 | 
|      root_metahandle = e.Get(META_HANDLE);
 | 
| @@ -120,7 +125,7 @@ TEST_F(SyncableGeneralTest, General) {
 | 
|    std::string name = "Jeff";
 | 
|    // Test simple read operations on an empty DB.
 | 
|    {
 | 
| -    ReadTransaction rtrans(&dir, __FILE__, __LINE__);
 | 
| +    ReadTransaction rtrans(&dir, FROM_HERE);
 | 
|      Entry e(&rtrans, GET_BY_ID, id);
 | 
|      ASSERT_FALSE(e.good());  // Hasn't been written yet.
 | 
|  
 | 
| @@ -134,7 +139,7 @@ TEST_F(SyncableGeneralTest, General) {
 | 
|  
 | 
|    // Test creating a new meta entry.
 | 
|    {
 | 
| -    WriteTransaction wtrans(&dir, UNITTEST, __FILE__, __LINE__);
 | 
| +    WriteTransaction wtrans(&dir, UNITTEST, FROM_HERE);
 | 
|      MutableEntry me(&wtrans, CREATE, wtrans.root_id(), name);
 | 
|      ASSERT_TRUE(me.good());
 | 
|      me.Put(ID, id);
 | 
| @@ -145,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, __FILE__, __LINE__);
 | 
| +    ReadTransaction rtrans(&dir, FROM_HERE);
 | 
|      Entry e(&rtrans, GET_BY_ID, id);
 | 
|      ASSERT_TRUE(e.good());
 | 
|  
 | 
| @@ -170,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, __FILE__, __LINE__);
 | 
| +    WriteTransaction trans(&dir, UNITTEST, FROM_HERE);
 | 
|      MutableEntry e(&trans, GET_BY_HANDLE, written_metahandle);
 | 
|      ASSERT_TRUE(e.good());
 | 
|      PutDataAsBookmarkFavicon(&trans, &e, s, sizeof(s));
 | 
| @@ -178,7 +183,7 @@ TEST_F(SyncableGeneralTest, General) {
 | 
|  
 | 
|    // Test reading back the contents that we just wrote.
 | 
|    {
 | 
| -    WriteTransaction trans(&dir, UNITTEST, __FILE__, __LINE__);
 | 
| +    WriteTransaction trans(&dir, UNITTEST, FROM_HERE);
 | 
|      MutableEntry e(&trans, GET_BY_HANDLE, written_metahandle);
 | 
|      ASSERT_TRUE(e.good());
 | 
|      ExpectDataFromBookmarkFaviconEquals(&trans, &e, s, sizeof(s));
 | 
| @@ -186,13 +191,13 @@ TEST_F(SyncableGeneralTest, General) {
 | 
|  
 | 
|    // Verify it exists in the folder.
 | 
|    {
 | 
| -    ReadTransaction rtrans(&dir, __FILE__, __LINE__);
 | 
| +    ReadTransaction rtrans(&dir, FROM_HERE);
 | 
|      EXPECT_EQ(1, CountEntriesWithName(&rtrans, rtrans.root_id(), name));
 | 
|    }
 | 
|  
 | 
|    // Now delete it.
 | 
|    {
 | 
| -    WriteTransaction trans(&dir, UNITTEST, __FILE__, __LINE__);
 | 
| +    WriteTransaction trans(&dir, UNITTEST, FROM_HERE);
 | 
|      MutableEntry e(&trans, GET_BY_HANDLE, written_metahandle);
 | 
|      e.Put(IS_DEL, true);
 | 
|  
 | 
| @@ -212,9 +217,9 @@ TEST_F(SyncableGeneralTest, ClientIndexRebuildsProperly) {
 | 
|    // Test creating a new meta entry.
 | 
|    {
 | 
|      Directory dir;
 | 
| -    dir.Open(db_path_, "IndexTest");
 | 
| +    dir.Open(db_path_, "IndexTest", &delegate_);
 | 
|      {
 | 
| -      WriteTransaction wtrans(&dir, UNITTEST, __FILE__, __LINE__);
 | 
| +      WriteTransaction wtrans(&dir, UNITTEST, FROM_HERE);
 | 
|        MutableEntry me(&wtrans, CREATE, wtrans.root_id(), name);
 | 
|        ASSERT_TRUE(me.good());
 | 
|        me.Put(ID, id);
 | 
| @@ -228,9 +233,9 @@ TEST_F(SyncableGeneralTest, ClientIndexRebuildsProperly) {
 | 
|    // The DB was closed. Now reopen it. This will cause index regeneration.
 | 
|    {
 | 
|      Directory dir;
 | 
| -    dir.Open(db_path_, "IndexTest");
 | 
| +    dir.Open(db_path_, "IndexTest", &delegate_);
 | 
|  
 | 
| -    ReadTransaction trans(&dir, __FILE__, __LINE__);
 | 
| +    ReadTransaction trans(&dir, FROM_HERE);
 | 
|      Entry me(&trans, GET_BY_CLIENT_TAG, tag);
 | 
|      ASSERT_TRUE(me.good());
 | 
|      EXPECT_EQ(me.Get(ID), id);
 | 
| @@ -248,9 +253,9 @@ TEST_F(SyncableGeneralTest, ClientIndexRebuildsDeletedProperly) {
 | 
|    // Test creating a deleted, unsynced, server meta entry.
 | 
|    {
 | 
|      Directory dir;
 | 
| -    dir.Open(db_path_, "IndexTest");
 | 
| +    dir.Open(db_path_, "IndexTest", &delegate_);
 | 
|      {
 | 
| -      WriteTransaction wtrans(&dir, UNITTEST, __FILE__, __LINE__);
 | 
| +      WriteTransaction wtrans(&dir, UNITTEST, FROM_HERE);
 | 
|        MutableEntry me(&wtrans, CREATE, wtrans.root_id(), "deleted");
 | 
|        ASSERT_TRUE(me.good());
 | 
|        me.Put(ID, id);
 | 
| @@ -266,9 +271,9 @@ TEST_F(SyncableGeneralTest, ClientIndexRebuildsDeletedProperly) {
 | 
|    // Should still be present and valid in the client tag index.
 | 
|    {
 | 
|      Directory dir;
 | 
| -    dir.Open(db_path_, "IndexTest");
 | 
| +    dir.Open(db_path_, "IndexTest", &delegate_);
 | 
|  
 | 
| -    ReadTransaction trans(&dir, __FILE__, __LINE__);
 | 
| +    ReadTransaction trans(&dir, FROM_HERE);
 | 
|      Entry me(&trans, GET_BY_CLIENT_TAG, tag);
 | 
|      ASSERT_TRUE(me.good());
 | 
|      EXPECT_EQ(me.Get(ID), id);
 | 
| @@ -280,11 +285,11 @@ TEST_F(SyncableGeneralTest, ClientIndexRebuildsDeletedProperly) {
 | 
|  
 | 
|  TEST_F(SyncableGeneralTest, ToValue) {
 | 
|    Directory dir;
 | 
| -  dir.Open(db_path_, "SimpleTest");
 | 
| +  dir.Open(db_path_, "SimpleTest", &delegate_);
 | 
|  
 | 
|    const Id id = TestIdFactory::FromNumber(99);
 | 
|    {
 | 
| -    ReadTransaction rtrans(&dir, __FILE__, __LINE__);
 | 
| +    ReadTransaction rtrans(&dir, FROM_HERE);
 | 
|      Entry e(&rtrans, GET_BY_ID, id);
 | 
|      EXPECT_FALSE(e.good());  // Hasn't been written yet.
 | 
|  
 | 
| @@ -295,7 +300,7 @@ TEST_F(SyncableGeneralTest, ToValue) {
 | 
|  
 | 
|    // Test creating a new meta entry.
 | 
|    {
 | 
| -    WriteTransaction wtrans(&dir, UNITTEST, __FILE__, __LINE__);
 | 
| +    WriteTransaction wtrans(&dir, UNITTEST, FROM_HERE);
 | 
|      MutableEntry me(&wtrans, CREATE, wtrans.root_id(), "new");
 | 
|      ASSERT_TRUE(me.good());
 | 
|      me.Put(ID, id);
 | 
| @@ -349,7 +354,7 @@ class SyncableDirectoryTest : public testing::Test {
 | 
|      file_util::Delete(file_path_, true);
 | 
|      dir_.reset(new Directory());
 | 
|      ASSERT_TRUE(dir_.get());
 | 
| -    ASSERT_TRUE(OPENED == dir_->Open(file_path_, kName));
 | 
| +    ASSERT_TRUE(OPENED == dir_->Open(file_path_, kName, &delegate_));
 | 
|      ASSERT_TRUE(dir_->good());
 | 
|    }
 | 
|  
 | 
| @@ -363,7 +368,7 @@ class SyncableDirectoryTest : public testing::Test {
 | 
|    void ReloadDir() {
 | 
|      dir_.reset(new Directory());
 | 
|      ASSERT_TRUE(dir_.get());
 | 
| -    ASSERT_TRUE(OPENED == dir_->Open(file_path_, kName));
 | 
| +    ASSERT_TRUE(OPENED == dir_->Open(file_path_, kName, &delegate_));
 | 
|    }
 | 
|  
 | 
|    void SaveAndReloadDir() {
 | 
| @@ -383,7 +388,7 @@ class SyncableDirectoryTest : public testing::Test {
 | 
|                                              bool before_reload) {
 | 
|      SCOPED_TRACE(testing::Message("Before reload: ") << before_reload);
 | 
|      {
 | 
| -      ReadTransaction trans(dir_.get(), __FILE__, __LINE__);
 | 
| +      ReadTransaction trans(dir_.get(), FROM_HERE);
 | 
|        MetahandleSet all_set;
 | 
|        dir_->GetAllMetaHandles(&trans, &all_set);
 | 
|        EXPECT_EQ(3U, all_set.size());
 | 
| @@ -406,6 +411,7 @@ class SyncableDirectoryTest : public testing::Test {
 | 
|  
 | 
|    scoped_ptr<Directory> dir_;
 | 
|    FilePath file_path_;
 | 
| +  NullDirectoryChangeDelegate delegate_;
 | 
|  
 | 
|    // Creates an empty entry and sets the ID field to the default kId.
 | 
|    void CreateEntry(const std::string& entryname) {
 | 
| @@ -417,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, __FILE__, __LINE__);
 | 
| +    WriteTransaction wtrans(dir_.get(), UNITTEST, FROM_HERE);
 | 
|      MutableEntry me(&wtrans, CREATE, wtrans.root_id(), entryname);
 | 
|      ASSERT_TRUE(me.good());
 | 
|      me.Put(ID, id);
 | 
| @@ -438,7 +444,7 @@ TEST_F(SyncableDirectoryTest, TakeSnapshotGetsMetahandlesToPurge) {
 | 
|    MetahandleSet expected_purges;
 | 
|    MetahandleSet all_handles;
 | 
|    {
 | 
| -    WriteTransaction trans(dir_.get(), UNITTEST, __FILE__, __LINE__);
 | 
| +    WriteTransaction trans(dir_.get(), UNITTEST, FROM_HERE);
 | 
|      for (int i = 0; i < metas_to_create; i++) {
 | 
|        MutableEntry e(&trans, CREATE, trans.root_id(), "foo");
 | 
|        e.Put(IS_UNSYNCED, true);
 | 
| @@ -480,7 +486,7 @@ TEST_F(SyncableDirectoryTest, TakeSnapshotGetsAllDirtyHandlesTest) {
 | 
|    const int metahandles_to_create = 100;
 | 
|    std::vector<int64> expected_dirty_metahandles;
 | 
|    {
 | 
| -    WriteTransaction trans(dir_.get(), UNITTEST, __FILE__, __LINE__);
 | 
| +    WriteTransaction trans(dir_.get(), UNITTEST, FROM_HERE);
 | 
|      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));
 | 
| @@ -503,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, __FILE__, __LINE__);
 | 
| +    WriteTransaction trans(dir_.get(), UNITTEST, FROM_HERE);
 | 
|      std::vector<int64> new_dirty_metahandles;
 | 
|      for (std::vector<int64>::const_iterator i =
 | 
|          expected_dirty_metahandles.begin();
 | 
| @@ -554,7 +560,7 @@ TEST_F(SyncableDirectoryTest, TestPurgeEntriesWithTypeIn) {
 | 
|    TestIdFactory id_factory;
 | 
|    // Create some items for each type.
 | 
|    {
 | 
| -    WriteTransaction trans(dir_.get(), UNITTEST, __FILE__, __LINE__);
 | 
| +    WriteTransaction trans(dir_.get(), UNITTEST, FROM_HERE);
 | 
|      MutableEntry item1(&trans, CREATE, trans.root_id(), "Item");
 | 
|      ASSERT_TRUE(item1.good());
 | 
|      item1.Put(SPECIFICS, bookmark_specs);
 | 
| @@ -594,7 +600,7 @@ TEST_F(SyncableDirectoryTest, TestPurgeEntriesWithTypeIn) {
 | 
|  
 | 
|    dir_->SaveChanges();
 | 
|    {
 | 
| -    ReadTransaction trans(dir_.get(), __FILE__, __LINE__);
 | 
| +    ReadTransaction trans(dir_.get(), FROM_HERE);
 | 
|      MetahandleSet all_set;
 | 
|      dir_->GetAllMetaHandles(&trans, &all_set);
 | 
|      ASSERT_EQ(7U, all_set.size());
 | 
| @@ -616,7 +622,7 @@ TEST_F(SyncableDirectoryTest, TakeSnapshotGetsOnlyDirtyHandlesTest) {
 | 
|    const unsigned int number_changed = 100u;
 | 
|    std::vector<int64> expected_dirty_metahandles;
 | 
|    {
 | 
| -    WriteTransaction trans(dir_.get(), UNITTEST, __FILE__, __LINE__);
 | 
| +    WriteTransaction trans(dir_.get(), UNITTEST, FROM_HERE);
 | 
|      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));
 | 
| @@ -626,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, __FILE__, __LINE__);
 | 
| +    WriteTransaction trans(dir_.get(), UNITTEST, FROM_HERE);
 | 
|      std::vector<int64> new_dirty_metahandles;
 | 
|      for (std::vector<int64>::const_iterator i =
 | 
|          expected_dirty_metahandles.begin();
 | 
| @@ -647,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, __FILE__, __LINE__);
 | 
| +    WriteTransaction trans(dir_.get(), UNITTEST, FROM_HERE);
 | 
|      for (std::vector<int64>::const_iterator i =
 | 
|          expected_dirty_metahandles.begin();
 | 
|          i != expected_dirty_metahandles.end(); ++i) {
 | 
| @@ -666,7 +672,7 @@ TEST_F(SyncableDirectoryTest, TakeSnapshotGetsOnlyDirtyHandlesTest) {
 | 
|      dir_->VacuumAfterSaveChanges(snapshot);
 | 
|    }
 | 
|    {
 | 
| -    WriteTransaction trans(dir_.get(), UNITTEST, __FILE__, __LINE__);
 | 
| +    WriteTransaction trans(dir_.get(), UNITTEST, FROM_HERE);
 | 
|      bool should_change = false;
 | 
|      for (std::vector<int64>::const_iterator i =
 | 
|          expected_dirty_metahandles.begin();
 | 
| @@ -703,21 +709,21 @@ const Id SyncableDirectoryTest::kId(TestIdFactory::FromNumber(-99));
 | 
|  
 | 
|  namespace {
 | 
|  TEST_F(SyncableDirectoryTest, TestBasicLookupNonExistantID) {
 | 
| -  ReadTransaction rtrans(dir_.get(), __FILE__, __LINE__);
 | 
| +  ReadTransaction rtrans(dir_.get(), FROM_HERE);
 | 
|    Entry e(&rtrans, GET_BY_ID, kId);
 | 
|    ASSERT_FALSE(e.good());
 | 
|  }
 | 
|  
 | 
|  TEST_F(SyncableDirectoryTest, TestBasicLookupValidID) {
 | 
|    CreateEntry("rtc");
 | 
| -  ReadTransaction rtrans(dir_.get(), __FILE__, __LINE__);
 | 
| +  ReadTransaction rtrans(dir_.get(), FROM_HERE);
 | 
|    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, __FILE__, __LINE__);
 | 
| +  WriteTransaction trans(dir_.get(), UNITTEST, FROM_HERE);
 | 
|    MutableEntry e1(&trans, CREATE, trans.root_id(), name);
 | 
|    ASSERT_TRUE(e1.good());
 | 
|    ASSERT_TRUE(e1.Put(IS_DEL, true));
 | 
| @@ -741,7 +747,7 @@ TEST_F(SyncableDirectoryTest, TestGetUnsynced) {
 | 
|    Directory::UnsyncedMetaHandles handles;
 | 
|    int64 handle1, handle2;
 | 
|    {
 | 
| -    WriteTransaction trans(dir_.get(), UNITTEST, __FILE__, __LINE__);
 | 
| +    WriteTransaction trans(dir_.get(), UNITTEST, FROM_HERE);
 | 
|  
 | 
|      dir_->GetUnsyncedMetaHandles(&trans, &handles);
 | 
|      ASSERT_TRUE(0 == handles.size());
 | 
| @@ -761,7 +767,7 @@ TEST_F(SyncableDirectoryTest, TestGetUnsynced) {
 | 
|    }
 | 
|    dir_->SaveChanges();
 | 
|    {
 | 
| -    WriteTransaction trans(dir_.get(), UNITTEST, __FILE__, __LINE__);
 | 
| +    WriteTransaction trans(dir_.get(), UNITTEST, FROM_HERE);
 | 
|  
 | 
|      dir_->GetUnsyncedMetaHandles(&trans, &handles);
 | 
|      ASSERT_TRUE(0 == handles.size());
 | 
| @@ -772,7 +778,7 @@ TEST_F(SyncableDirectoryTest, TestGetUnsynced) {
 | 
|    }
 | 
|    dir_->SaveChanges();
 | 
|    {
 | 
| -    WriteTransaction trans(dir_.get(), UNITTEST, __FILE__, __LINE__);
 | 
| +    WriteTransaction trans(dir_.get(), UNITTEST, FROM_HERE);
 | 
|      dir_->GetUnsyncedMetaHandles(&trans, &handles);
 | 
|      ASSERT_TRUE(1 == handles.size());
 | 
|      ASSERT_TRUE(handle1 == handles[0]);
 | 
| @@ -783,7 +789,7 @@ TEST_F(SyncableDirectoryTest, TestGetUnsynced) {
 | 
|    }
 | 
|    dir_->SaveChanges();
 | 
|    {
 | 
| -    WriteTransaction trans(dir_.get(), UNITTEST, __FILE__, __LINE__);
 | 
| +    WriteTransaction trans(dir_.get(), UNITTEST, FROM_HERE);
 | 
|      dir_->GetUnsyncedMetaHandles(&trans, &handles);
 | 
|      ASSERT_TRUE(2 == handles.size());
 | 
|      if (handle1 == handles[0]) {
 | 
| @@ -801,7 +807,7 @@ TEST_F(SyncableDirectoryTest, TestGetUnsynced) {
 | 
|    }
 | 
|    dir_->SaveChanges();
 | 
|    {
 | 
| -    WriteTransaction trans(dir_.get(), UNITTEST, __FILE__, __LINE__);
 | 
| +    WriteTransaction trans(dir_.get(), UNITTEST, FROM_HERE);
 | 
|      dir_->GetUnsyncedMetaHandles(&trans, &handles);
 | 
|      ASSERT_TRUE(1 == handles.size());
 | 
|      ASSERT_TRUE(handle2 == handles[0]);
 | 
| @@ -812,7 +818,7 @@ TEST_F(SyncableDirectoryTest, TestGetUnappliedUpdates) {
 | 
|    Directory::UnappliedUpdateMetaHandles handles;
 | 
|    int64 handle1, handle2;
 | 
|    {
 | 
| -    WriteTransaction trans(dir_.get(), UNITTEST, __FILE__, __LINE__);
 | 
| +    WriteTransaction trans(dir_.get(), UNITTEST, FROM_HERE);
 | 
|  
 | 
|      dir_->GetUnappliedUpdateMetaHandles(&trans, &handles);
 | 
|      ASSERT_TRUE(0 == handles.size());
 | 
| @@ -834,7 +840,7 @@ TEST_F(SyncableDirectoryTest, TestGetUnappliedUpdates) {
 | 
|    }
 | 
|    dir_->SaveChanges();
 | 
|    {
 | 
| -    WriteTransaction trans(dir_.get(), UNITTEST, __FILE__, __LINE__);
 | 
| +    WriteTransaction trans(dir_.get(), UNITTEST, FROM_HERE);
 | 
|  
 | 
|      dir_->GetUnappliedUpdateMetaHandles(&trans, &handles);
 | 
|      ASSERT_TRUE(0 == handles.size());
 | 
| @@ -845,7 +851,7 @@ TEST_F(SyncableDirectoryTest, TestGetUnappliedUpdates) {
 | 
|    }
 | 
|    dir_->SaveChanges();
 | 
|    {
 | 
| -    WriteTransaction trans(dir_.get(), UNITTEST, __FILE__, __LINE__);
 | 
| +    WriteTransaction trans(dir_.get(), UNITTEST, FROM_HERE);
 | 
|      dir_->GetUnappliedUpdateMetaHandles(&trans, &handles);
 | 
|      ASSERT_TRUE(1 == handles.size());
 | 
|      ASSERT_TRUE(handle1 == handles[0]);
 | 
| @@ -856,7 +862,7 @@ TEST_F(SyncableDirectoryTest, TestGetUnappliedUpdates) {
 | 
|    }
 | 
|    dir_->SaveChanges();
 | 
|    {
 | 
| -    WriteTransaction trans(dir_.get(), UNITTEST, __FILE__, __LINE__);
 | 
| +    WriteTransaction trans(dir_.get(), UNITTEST, FROM_HERE);
 | 
|      dir_->GetUnappliedUpdateMetaHandles(&trans, &handles);
 | 
|      ASSERT_TRUE(2 == handles.size());
 | 
|      if (handle1 == handles[0]) {
 | 
| @@ -872,7 +878,7 @@ TEST_F(SyncableDirectoryTest, TestGetUnappliedUpdates) {
 | 
|    }
 | 
|    dir_->SaveChanges();
 | 
|    {
 | 
| -    WriteTransaction trans(dir_.get(), UNITTEST, __FILE__, __LINE__);
 | 
| +    WriteTransaction trans(dir_.get(), UNITTEST, FROM_HERE);
 | 
|      dir_->GetUnappliedUpdateMetaHandles(&trans, &handles);
 | 
|      ASSERT_TRUE(1 == handles.size());
 | 
|      ASSERT_TRUE(handle2 == handles[0]);
 | 
| @@ -885,7 +891,7 @@ TEST_F(SyncableDirectoryTest, DeleteBug_531383) {
 | 
|    TestIdFactory id_factory;
 | 
|    int64 grandchild_handle, twin_handle;
 | 
|    {
 | 
| -    WriteTransaction wtrans(dir_.get(), UNITTEST, __FILE__, __LINE__);
 | 
| +    WriteTransaction wtrans(dir_.get(), UNITTEST, FROM_HERE);
 | 
|      MutableEntry parent(&wtrans, CREATE, id_factory.root(), "Bob");
 | 
|      ASSERT_TRUE(parent.good());
 | 
|      parent.Put(IS_DIR, true);
 | 
| @@ -911,7 +917,7 @@ TEST_F(SyncableDirectoryTest, DeleteBug_531383) {
 | 
|    }
 | 
|    dir_->SaveChanges();
 | 
|    {
 | 
| -    WriteTransaction wtrans(dir_.get(), UNITTEST, __FILE__, __LINE__);
 | 
| +    WriteTransaction wtrans(dir_.get(), UNITTEST, FROM_HERE);
 | 
|      MutableEntry grandchild(&wtrans, GET_BY_HANDLE, grandchild_handle);
 | 
|      grandchild.Put(IS_DEL, true);  // Used to CHECK fail here.
 | 
|    }
 | 
| @@ -923,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, __FILE__, __LINE__);
 | 
| +  WriteTransaction wtrans(dir_.get(), UNITTEST, FROM_HERE);
 | 
|    Entry root(&wtrans, GET_BY_ID, id_factory.root());
 | 
|    ASSERT_TRUE(root.good());
 | 
|    MutableEntry parent(&wtrans, CREATE, root.Get(ID), "Bob");
 | 
| @@ -982,7 +988,7 @@ TEST_F(SyncableDirectoryTest, TestEntryIsInFolder) {
 | 
|    std::string entry_name = "entry";
 | 
|  
 | 
|    {
 | 
| -    WriteTransaction trans(dir_.get(), UNITTEST, __FILE__, __LINE__);
 | 
| +    WriteTransaction trans(dir_.get(), UNITTEST, FROM_HERE);
 | 
|      MutableEntry folder(&trans, CREATE, trans.root_id(), "folder");
 | 
|      ASSERT_TRUE(folder.good());
 | 
|      EXPECT_TRUE(folder.Put(IS_DIR, true));
 | 
| @@ -998,7 +1004,7 @@ TEST_F(SyncableDirectoryTest, TestEntryIsInFolder) {
 | 
|  
 | 
|    // Make sure we can find the entry in the folder.
 | 
|    {
 | 
| -    ReadTransaction trans(dir_.get(), __FILE__, __LINE__);
 | 
| +    ReadTransaction trans(dir_.get(), FROM_HERE);
 | 
|      EXPECT_EQ(0, CountEntriesWithName(&trans, trans.root_id(), entry_name));
 | 
|      EXPECT_EQ(1, CountEntriesWithName(&trans, folder_id, entry_name));
 | 
|  
 | 
| @@ -1013,7 +1019,7 @@ TEST_F(SyncableDirectoryTest, TestEntryIsInFolder) {
 | 
|  TEST_F(SyncableDirectoryTest, TestParentIdIndexUpdate) {
 | 
|    std::string child_name = "child";
 | 
|  
 | 
| -  WriteTransaction wt(dir_.get(), UNITTEST, __FILE__, __LINE__);
 | 
| +  WriteTransaction wt(dir_.get(), UNITTEST, FROM_HERE);
 | 
|    MutableEntry parent_folder(&wt, CREATE, wt.root_id(), "folder1");
 | 
|    parent_folder.Put(IS_UNSYNCED, true);
 | 
|    EXPECT_TRUE(parent_folder.Put(IS_DIR, true));
 | 
| @@ -1042,7 +1048,7 @@ TEST_F(SyncableDirectoryTest, TestNoReindexDeletedItems) {
 | 
|    std::string folder_name = "folder";
 | 
|    std::string new_name = "new_name";
 | 
|  
 | 
| -  WriteTransaction trans(dir_.get(), UNITTEST, __FILE__, __LINE__);
 | 
| +  WriteTransaction trans(dir_.get(), UNITTEST, FROM_HERE);
 | 
|    MutableEntry folder(&trans, CREATE, trans.root_id(), folder_name);
 | 
|    ASSERT_TRUE(folder.good());
 | 
|    ASSERT_TRUE(folder.Put(IS_DIR, true));
 | 
| @@ -1060,7 +1066,7 @@ TEST_F(SyncableDirectoryTest, TestNoReindexDeletedItems) {
 | 
|  }
 | 
|  
 | 
|  TEST_F(SyncableDirectoryTest, TestCaseChangeRename) {
 | 
| -  WriteTransaction trans(dir_.get(), UNITTEST, __FILE__, __LINE__);
 | 
| +  WriteTransaction trans(dir_.get(), UNITTEST, FROM_HERE);
 | 
|    MutableEntry folder(&trans, CREATE, trans.root_id(), "CaseChange");
 | 
|    ASSERT_TRUE(folder.good());
 | 
|    EXPECT_TRUE(folder.Put(PARENT_ID, trans.root_id()));
 | 
| @@ -1073,7 +1079,7 @@ TEST_F(SyncableDirectoryTest, TestShareInfo) {
 | 
|    dir_->set_store_birthday("Jan 31st");
 | 
|    dir_->SetNotificationState("notification_state");
 | 
|    {
 | 
| -    ReadTransaction trans(dir_.get(), __FILE__, __LINE__);
 | 
| +    ReadTransaction trans(dir_.get(), FROM_HERE);
 | 
|      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());
 | 
| @@ -1084,7 +1090,7 @@ TEST_F(SyncableDirectoryTest, TestShareInfo) {
 | 
|    dir_->SetNotificationState("notification_state2");
 | 
|    dir_->SaveChanges();
 | 
|    {
 | 
| -    ReadTransaction trans(dir_.get(), __FILE__, __LINE__);
 | 
| +    ReadTransaction trans(dir_.get(), FROM_HERE);
 | 
|      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());
 | 
| @@ -1095,7 +1101,7 @@ TEST_F(SyncableDirectoryTest, TestShareInfo) {
 | 
|    // Restore the directory from disk.  Make sure that nothing's changed.
 | 
|    SaveAndReloadDir();
 | 
|    {
 | 
| -    ReadTransaction trans(dir_.get(), __FILE__, __LINE__);
 | 
| +    ReadTransaction trans(dir_.get(), FROM_HERE);
 | 
|      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());
 | 
| @@ -1112,7 +1118,7 @@ TEST_F(SyncableDirectoryTest, TestSimpleFieldsPreservedDuringSaveChanges) {
 | 
|    std::string create_name =  "Create";
 | 
|  
 | 
|    {
 | 
| -    WriteTransaction trans(dir_.get(), UNITTEST, __FILE__, __LINE__);
 | 
| +    WriteTransaction trans(dir_.get(), UNITTEST, FROM_HERE);
 | 
|      MutableEntry create(&trans, CREATE, trans.root_id(), create_name);
 | 
|      MutableEntry update(&trans, CREATE_NEW_UPDATE_ITEM, update_id);
 | 
|      create.Put(IS_UNSYNCED, true);
 | 
| @@ -1129,11 +1135,11 @@ TEST_F(SyncableDirectoryTest, TestSimpleFieldsPreservedDuringSaveChanges) {
 | 
|    dir_->SaveChanges();
 | 
|    dir_.reset(new Directory());
 | 
|    ASSERT_TRUE(dir_.get());
 | 
| -  ASSERT_TRUE(OPENED == dir_->Open(file_path_, kName));
 | 
| +  ASSERT_TRUE(OPENED == dir_->Open(file_path_, kName, &delegate_));
 | 
|    ASSERT_TRUE(dir_->good());
 | 
|  
 | 
|    {
 | 
| -    ReadTransaction trans(dir_.get(), __FILE__, __LINE__);
 | 
| +    ReadTransaction trans(dir_.get(), FROM_HERE);
 | 
|      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);
 | 
| @@ -1187,7 +1193,7 @@ TEST_F(SyncableDirectoryTest, TestSaveChangesFailure) {
 | 
|    int64 handle1 = 0;
 | 
|    // Set up an item using a regular, saveable directory.
 | 
|    {
 | 
| -    WriteTransaction trans(dir_.get(), UNITTEST, __FILE__, __LINE__);
 | 
| +    WriteTransaction trans(dir_.get(), UNITTEST, FROM_HERE);
 | 
|  
 | 
|      MutableEntry e1(&trans, CREATE, trans.root_id(), "aguilera");
 | 
|      ASSERT_TRUE(e1.good());
 | 
| @@ -1204,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, __FILE__, __LINE__);
 | 
| +    WriteTransaction trans(dir_.get(), UNITTEST, FROM_HERE);
 | 
|  
 | 
|      MutableEntry aguilera(&trans, GET_BY_HANDLE, handle1);
 | 
|      ASSERT_TRUE(aguilera.good());
 | 
| @@ -1220,11 +1226,11 @@ TEST_F(SyncableDirectoryTest, TestSaveChangesFailure) {
 | 
|    // always fail.
 | 
|    dir_.reset(new TestUnsaveableDirectory());
 | 
|    ASSERT_TRUE(dir_.get());
 | 
| -  ASSERT_TRUE(OPENED == dir_->Open(file_path_, kName));
 | 
| +  ASSERT_TRUE(OPENED == dir_->Open(file_path_, kName, &delegate_));
 | 
|    ASSERT_TRUE(dir_->good());
 | 
|    int64 handle2 = 0;
 | 
|    {
 | 
| -    WriteTransaction trans(dir_.get(), UNITTEST, __FILE__, __LINE__);
 | 
| +    WriteTransaction trans(dir_.get(), UNITTEST, FROM_HERE);
 | 
|  
 | 
|      MutableEntry aguilera(&trans, GET_BY_HANDLE, handle1);
 | 
|      ASSERT_TRUE(aguilera.good());
 | 
| @@ -1253,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(), __FILE__, __LINE__);
 | 
| +     ReadTransaction trans(dir_.get(), FROM_HERE);
 | 
|       Entry e1(&trans, GET_BY_HANDLE, handle1);
 | 
|       ASSERT_TRUE(e1.good());
 | 
|       EntryKernel aguilera = e1.GetKernelCopy();
 | 
| @@ -1270,7 +1276,7 @@ TEST_F(SyncableDirectoryTest, TestSaveChangesFailureWithPurge) {
 | 
|    int64 handle1 = 0;
 | 
|    // Set up an item using a regular, saveable directory.
 | 
|    {
 | 
| -    WriteTransaction trans(dir_.get(), UNITTEST, __FILE__, __LINE__);
 | 
| +    WriteTransaction trans(dir_.get(), UNITTEST, FROM_HERE);
 | 
|  
 | 
|      MutableEntry e1(&trans, CREATE, trans.root_id(), "aguilera");
 | 
|      ASSERT_TRUE(e1.good());
 | 
| @@ -1293,7 +1299,7 @@ TEST_F(SyncableDirectoryTest, TestSaveChangesFailureWithPurge) {
 | 
|    // always fail.
 | 
|    dir_.reset(new TestUnsaveableDirectory());
 | 
|    ASSERT_TRUE(dir_.get());
 | 
| -  ASSERT_TRUE(OPENED == dir_->Open(file_path_, kName));
 | 
| +  ASSERT_TRUE(OPENED == dir_->Open(file_path_, kName, &delegate_));
 | 
|    ASSERT_TRUE(dir_->good());
 | 
|  
 | 
|    ModelTypeSet set;
 | 
| @@ -1321,7 +1327,7 @@ TEST_F(SyncableDirectoryTest, GetModelType) {
 | 
|      sync_pb::EntitySpecifics specifics;
 | 
|      AddDefaultExtensionValue(datatype, &specifics);
 | 
|  
 | 
| -    WriteTransaction trans(dir_.get(), UNITTEST, __FILE__, __LINE__);
 | 
| +    WriteTransaction trans(dir_.get(), UNITTEST, FROM_HERE);
 | 
|  
 | 
|      MutableEntry folder(&trans, CREATE, trans.root_id(), "Folder");
 | 
|      ASSERT_TRUE(folder.good());
 | 
| @@ -1416,11 +1422,12 @@ class SyncableDirectoryManager : public testing::Test {
 | 
|    }
 | 
|   protected:
 | 
|    ScopedTempDir temp_dir_;
 | 
| +  NullDirectoryChangeDelegate delegate_;
 | 
|  };
 | 
|  
 | 
|  TEST_F(SyncableDirectoryManager, TestFileRelease) {
 | 
|    DirectoryManager dm(FilePath(temp_dir_.path()));
 | 
| -  ASSERT_TRUE(dm.Open("ScopeTest"));
 | 
| +  ASSERT_TRUE(dm.Open("ScopeTest", &delegate_));
 | 
|    {
 | 
|      ScopedDirLookup(&dm, "ScopeTest");
 | 
|    }
 | 
| @@ -1433,11 +1440,12 @@ class ThreadOpenTestDelegate : public base::PlatformThread::Delegate {
 | 
|    explicit ThreadOpenTestDelegate(DirectoryManager* dm)
 | 
|        : directory_manager_(dm) {}
 | 
|    DirectoryManager* const directory_manager_;
 | 
| +  NullDirectoryChangeDelegate delegate_;
 | 
|  
 | 
|   private:
 | 
|    // PlatformThread::Delegate methods:
 | 
|    virtual void ThreadMain() {
 | 
| -    CHECK(directory_manager_->Open("Open"));
 | 
| +    CHECK(directory_manager_->Open("Open", &delegate_));
 | 
|    }
 | 
|  
 | 
|    DISALLOW_COPY_AND_ASSIGN(ThreadOpenTestDelegate);
 | 
| @@ -1476,6 +1484,7 @@ class ThreadBugDelegate : public base::PlatformThread::Delegate {
 | 
|   protected:
 | 
|    const int role_;
 | 
|    Step* const step_;
 | 
| +  NullDirectoryChangeDelegate delegate_;
 | 
|    DirectoryManager* const directory_manager_;
 | 
|  
 | 
|    // PlatformThread::Delegate methods:
 | 
| @@ -1489,15 +1498,15 @@ class ThreadBugDelegate : public base::PlatformThread::Delegate {
 | 
|        }
 | 
|        switch (step_->number) {
 | 
|        case 0:
 | 
| -        directory_manager_->Open(dirname);
 | 
| +        directory_manager_->Open(dirname, &delegate_);
 | 
|          break;
 | 
|        case 1:
 | 
|          {
 | 
|            directory_manager_->Close(dirname);
 | 
| -          directory_manager_->Open(dirname);
 | 
| +          directory_manager_->Open(dirname, &delegate_);
 | 
|            ScopedDirLookup dir(directory_manager_, dirname);
 | 
|            CHECK(dir.good());
 | 
| -          WriteTransaction trans(dir, UNITTEST, __FILE__, __LINE__);
 | 
| +          WriteTransaction trans(dir, UNITTEST, FROM_HERE);
 | 
|            MutableEntry me(&trans, CREATE, trans.root_id(), "Jeff");
 | 
|            step_->metahandle = me.Get(META_HANDLE);
 | 
|            me.Put(IS_UNSYNCED, true);
 | 
| @@ -1507,7 +1516,7 @@ class ThreadBugDelegate : public base::PlatformThread::Delegate {
 | 
|          {
 | 
|            ScopedDirLookup dir(directory_manager_, dirname);
 | 
|            CHECK(dir.good());
 | 
| -          ReadTransaction trans(dir, __FILE__, __LINE__);
 | 
| +          ReadTransaction trans(dir, FROM_HERE);
 | 
|            Entry e(&trans, GET_BY_HANDLE, step_->metahandle);
 | 
|            CHECK(e.good());  // Failed due to ThreadBug1
 | 
|          }
 | 
| @@ -1568,10 +1577,10 @@ class DirectoryKernelStalenessBugDelegate : public ThreadBugDelegate {
 | 
|            file_util::Delete(directory_manager_->GetSyncDataDatabasePath(),
 | 
|                              true);
 | 
|            // Test.
 | 
| -          directory_manager_->Open(dirname);
 | 
| +          directory_manager_->Open(dirname, &delegate_);
 | 
|            ScopedDirLookup dir(directory_manager_, dirname);
 | 
|            CHECK(dir.good());
 | 
| -          WriteTransaction trans(dir, UNITTEST, __FILE__, __LINE__);
 | 
| +          WriteTransaction trans(dir, UNITTEST, FROM_HERE);
 | 
|            MutableEntry me(&trans, CREATE, trans.root_id(), "Jeff");
 | 
|            me.Put(BASE_VERSION, 1);
 | 
|            me.Put(ID, jeff_id);
 | 
| @@ -1587,7 +1596,7 @@ class DirectoryKernelStalenessBugDelegate : public ThreadBugDelegate {
 | 
|          break;
 | 
|        case 1:
 | 
|          {
 | 
| -          directory_manager_->Open(dirname);
 | 
| +          directory_manager_->Open(dirname, &delegate_);
 | 
|            ScopedDirLookup dir(directory_manager_, dirname);
 | 
|            CHECK(dir.good());
 | 
|          }
 | 
| @@ -1602,7 +1611,7 @@ class DirectoryKernelStalenessBugDelegate : public ThreadBugDelegate {
 | 
|          {
 | 
|            ScopedDirLookup dir(directory_manager_, dirname);
 | 
|            CHECK(dir.good());
 | 
| -          ReadTransaction trans(dir, __FILE__, __LINE__);
 | 
| +          ReadTransaction trans(dir, FROM_HERE);
 | 
|            Entry e(&trans, GET_BY_ID, jeff_id);
 | 
|            ExpectDataFromBookmarkFaviconEquals(&trans, &e, test_bytes,
 | 
|                                                  sizeof(test_bytes));
 | 
| @@ -1662,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, __FILE__, __LINE__);
 | 
| +        ReadTransaction trans(dir, FROM_HERE);
 | 
|          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, __FILE__, __LINE__);
 | 
| +        WriteTransaction trans(dir, UNITTEST, FROM_HERE);
 | 
|          MutableEntry e(&trans, CREATE, trans.root_id(), path_name);
 | 
|          CHECK(e.good());
 | 
|          base::PlatformThread::Sleep(rand() % 20);
 | 
| @@ -1691,7 +1700,8 @@ TEST(SyncableDirectory, StressTransactions) {
 | 
|    DirectoryManager dirman(FilePath(temp_dir.path()));
 | 
|    std::string dirname = "stress";
 | 
|    file_util::Delete(dirman.GetSyncDataDatabasePath(), true);
 | 
| -  dirman.Open(dirname);
 | 
| +  NullDirectoryChangeDelegate delegate;
 | 
| +  dirman.Open(dirname, &delegate);
 | 
|  
 | 
|    const int kThreadCount = 7;
 | 
|    base::PlatformThreadHandle threads[kThreadCount];
 | 
| @@ -1726,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, __FILE__, __LINE__);
 | 
| +    WriteTransaction wtrans(dir_.get(), UNITTEST, FROM_HERE);
 | 
|      MutableEntry me(&wtrans, CREATE, wtrans.root_id(), test_name_);
 | 
|      CHECK(me.good());
 | 
|      me.Put(ID, id);
 | 
| @@ -1742,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(), __FILE__, __LINE__);
 | 
| +    ReadTransaction trans(dir_.get(), FROM_HERE);
 | 
|      Entry me(&trans, GET_BY_CLIENT_TAG, test_tag_);
 | 
|      CHECK(me.good());
 | 
|      EXPECT_EQ(me.Get(ID), id);
 | 
| @@ -1759,13 +1769,13 @@ TEST_F(SyncableClientTagTest, TestClientTagClear) {
 | 
|    Id server_id = factory_.NewServerId();
 | 
|    EXPECT_TRUE(CreateWithDefaultTag(server_id, false));
 | 
|    {
 | 
| -    WriteTransaction trans(dir_.get(), UNITTEST, __FILE__, __LINE__);
 | 
| +    WriteTransaction trans(dir_.get(), UNITTEST, FROM_HERE);
 | 
|      MutableEntry me(&trans, GET_BY_CLIENT_TAG, test_tag_);
 | 
|      EXPECT_TRUE(me.good());
 | 
|      me.Put(UNIQUE_CLIENT_TAG, "");
 | 
|    }
 | 
|    {
 | 
| -    ReadTransaction trans(dir_.get(), __FILE__, __LINE__);
 | 
| +    ReadTransaction trans(dir_.get(), FROM_HERE);
 | 
|      Entry by_tag(&trans, GET_BY_CLIENT_TAG, test_tag_);
 | 
|      EXPECT_FALSE(by_tag.good());
 | 
|  
 | 
| 
 |