| Index: chrome/browser/bookmarks/bookmark_codec_unittest.cc
 | 
| diff --git a/chrome/browser/bookmarks/bookmark_codec_unittest.cc b/chrome/browser/bookmarks/bookmark_codec_unittest.cc
 | 
| index 01da75428f731967722ba78680e5bcf0e116deee..00c363e979e8498002696450ab3f4d5ad89dfc7c 100644
 | 
| --- a/chrome/browser/bookmarks/bookmark_codec_unittest.cc
 | 
| +++ b/chrome/browser/bookmarks/bookmark_codec_unittest.cc
 | 
| @@ -14,6 +14,7 @@
 | 
|  #include "base/strings/utf_string_conversions.h"
 | 
|  #include "base/values.h"
 | 
|  #include "chrome/browser/bookmarks/bookmark_model.h"
 | 
| +#include "chrome/browser/bookmarks/test_bookmark_client.h"
 | 
|  #include "chrome/common/chrome_paths.h"
 | 
|  #include "testing/gtest/include/gtest/gtest.h"
 | 
|  
 | 
| @@ -73,20 +74,20 @@ class BookmarkCodecTest : public testing::Test {
 | 
|   protected:
 | 
|    // Helpers to create bookmark models with different data.
 | 
|    BookmarkModel* CreateTestModel1() {
 | 
| -    scoped_ptr<BookmarkModel> model(new BookmarkModel(NULL, false));
 | 
| +    scoped_ptr<BookmarkModel> model(client_.CreateModel(false));
 | 
|      const BookmarkNode* bookmark_bar = model->bookmark_bar_node();
 | 
|      model->AddURL(bookmark_bar, 0, ASCIIToUTF16(kUrl1Title), GURL(kUrl1Url));
 | 
|      return model.release();
 | 
|    }
 | 
|    BookmarkModel* CreateTestModel2() {
 | 
| -    scoped_ptr<BookmarkModel> model(new BookmarkModel(NULL, false));
 | 
| +    scoped_ptr<BookmarkModel> model(client_.CreateModel(false));
 | 
|      const BookmarkNode* bookmark_bar = model->bookmark_bar_node();
 | 
|      model->AddURL(bookmark_bar, 0, ASCIIToUTF16(kUrl1Title), GURL(kUrl1Url));
 | 
|      model->AddURL(bookmark_bar, 1, ASCIIToUTF16(kUrl2Title), GURL(kUrl2Url));
 | 
|      return model.release();
 | 
|    }
 | 
|    BookmarkModel* CreateTestModel3() {
 | 
| -    scoped_ptr<BookmarkModel> model(new BookmarkModel(NULL, false));
 | 
| +    scoped_ptr<BookmarkModel> model(client_.CreateModel(false));
 | 
|      const BookmarkNode* bookmark_bar = model->bookmark_bar_node();
 | 
|      model->AddURL(bookmark_bar, 0, ASCIIToUTF16(kUrl1Title), GURL(kUrl1Url));
 | 
|      const BookmarkNode* folder1 = model->AddFolder(bookmark_bar, 1,
 | 
| @@ -173,7 +174,7 @@ class BookmarkCodecTest : public testing::Test {
 | 
|      EXPECT_EQ("", decoder.computed_checksum());
 | 
|      EXPECT_EQ("", decoder.stored_checksum());
 | 
|  
 | 
| -    scoped_ptr<BookmarkModel> model(new BookmarkModel(NULL, false));
 | 
| +    scoped_ptr<BookmarkModel> model(client_.CreateModel(false));
 | 
|      EXPECT_TRUE(Decode(&decoder, model.get(), value));
 | 
|  
 | 
|      *computed_checksum = decoder.computed_checksum();
 | 
| @@ -211,6 +212,8 @@ class BookmarkCodecTest : public testing::Test {
 | 
|      CheckIDs(model->other_node(), &assigned_ids);
 | 
|      CheckIDs(model->mobile_node(), &assigned_ids);
 | 
|    }
 | 
| +
 | 
| +  test::TestBookmarkClient client_;
 | 
|  };
 | 
|  
 | 
|  TEST_F(BookmarkCodecTest, ChecksumEncodeDecodeTest) {
 | 
| @@ -311,30 +314,32 @@ TEST_F(BookmarkCodecTest, PersistIDsTest) {
 | 
|    BookmarkCodec encoder;
 | 
|    scoped_ptr<base::Value> model_value(encoder.Encode(model_to_encode.get()));
 | 
|  
 | 
| -  BookmarkModel decoded_model(NULL, false);
 | 
| +  scoped_ptr<BookmarkModel> decoded_model(client_.CreateModel(false));
 | 
|    BookmarkCodec decoder;
 | 
| -  ASSERT_TRUE(Decode(&decoder, &decoded_model, *model_value.get()));
 | 
| +  ASSERT_TRUE(Decode(&decoder, decoded_model.get(), *model_value.get()));
 | 
|    ASSERT_NO_FATAL_FAILURE(
 | 
| -      AssertModelsEqual(model_to_encode.get(), &decoded_model));
 | 
| +      AssertModelsEqual(model_to_encode.get(), decoded_model.get()));
 | 
|  
 | 
|    // Add a couple of more items to the decoded bookmark model and make sure
 | 
|    // ID persistence is working properly.
 | 
| -  const BookmarkNode* bookmark_bar = decoded_model.bookmark_bar_node();
 | 
| -  decoded_model.AddURL(
 | 
| -      bookmark_bar, bookmark_bar->child_count(), ASCIIToUTF16(kUrl3Title),
 | 
| -      GURL(kUrl3Url));
 | 
| -  const BookmarkNode* folder2_node = decoded_model.AddFolder(
 | 
| +  const BookmarkNode* bookmark_bar = decoded_model->bookmark_bar_node();
 | 
| +  decoded_model->AddURL(bookmark_bar,
 | 
| +                        bookmark_bar->child_count(),
 | 
| +                        ASCIIToUTF16(kUrl3Title),
 | 
| +                        GURL(kUrl3Url));
 | 
| +  const BookmarkNode* folder2_node = decoded_model->AddFolder(
 | 
|        bookmark_bar, bookmark_bar->child_count(), ASCIIToUTF16(kFolder2Title));
 | 
| -  decoded_model.AddURL(folder2_node, 0, ASCIIToUTF16(kUrl4Title),
 | 
| -                       GURL(kUrl4Url));
 | 
| +  decoded_model->AddURL(
 | 
| +      folder2_node, 0, ASCIIToUTF16(kUrl4Title), GURL(kUrl4Url));
 | 
|  
 | 
|    BookmarkCodec encoder2;
 | 
| -  scoped_ptr<base::Value> model_value2(encoder2.Encode(&decoded_model));
 | 
| +  scoped_ptr<base::Value> model_value2(encoder2.Encode(decoded_model.get()));
 | 
|  
 | 
| -  BookmarkModel decoded_model2(NULL, false);
 | 
| +  scoped_ptr<BookmarkModel> decoded_model2(client_.CreateModel(false));
 | 
|    BookmarkCodec decoder2;
 | 
| -  ASSERT_TRUE(Decode(&decoder2, &decoded_model2, *model_value2.get()));
 | 
| -  ASSERT_NO_FATAL_FAILURE(AssertModelsEqual(&decoded_model, &decoded_model2));
 | 
| +  ASSERT_TRUE(Decode(&decoder2, decoded_model2.get(), *model_value2.get()));
 | 
| +  ASSERT_NO_FATAL_FAILURE(
 | 
| +      AssertModelsEqual(decoded_model.get(), decoded_model2.get()));
 | 
|  }
 | 
|  
 | 
|  TEST_F(BookmarkCodecTest, CanDecodeModelWithoutMobileBookmarks) {
 | 
| @@ -347,12 +352,12 @@ TEST_F(BookmarkCodecTest, CanDecodeModelWithoutMobileBookmarks) {
 | 
|    JSONFileValueSerializer serializer(test_file);
 | 
|    scoped_ptr<base::Value> root(serializer.Deserialize(NULL, NULL));
 | 
|  
 | 
| -  BookmarkModel decoded_model(NULL, false);
 | 
| +  scoped_ptr<BookmarkModel> decoded_model(client_.CreateModel(false));
 | 
|    BookmarkCodec decoder;
 | 
| -  ASSERT_TRUE(Decode(&decoder, &decoded_model, *root.get()));
 | 
| -  ExpectIDsUnique(&decoded_model);
 | 
| +  ASSERT_TRUE(Decode(&decoder, decoded_model.get(), *root.get()));
 | 
| +  ExpectIDsUnique(decoded_model.get());
 | 
|  
 | 
| -  const BookmarkNode* bbn = decoded_model.bookmark_bar_node();
 | 
| +  const BookmarkNode* bbn = decoded_model->bookmark_bar_node();
 | 
|    ASSERT_EQ(1, bbn->child_count());
 | 
|  
 | 
|    const BookmarkNode* child = bbn->GetChild(0);
 | 
| @@ -364,7 +369,7 @@ TEST_F(BookmarkCodecTest, CanDecodeModelWithoutMobileBookmarks) {
 | 
|    EXPECT_EQ(BookmarkNode::URL, child->type());
 | 
|    EXPECT_EQ(ASCIIToUTF16("Bookmark Manager"), child->GetTitle());
 | 
|  
 | 
| -  const BookmarkNode* other = decoded_model.other_node();
 | 
| +  const BookmarkNode* other = decoded_model->other_node();
 | 
|    ASSERT_EQ(1, other->child_count());
 | 
|  
 | 
|    child = other->GetChild(0);
 | 
| @@ -376,7 +381,7 @@ TEST_F(BookmarkCodecTest, CanDecodeModelWithoutMobileBookmarks) {
 | 
|    EXPECT_EQ(BookmarkNode::URL, child->type());
 | 
|    EXPECT_EQ(ASCIIToUTF16("Get started with Google Chrome"), child->GetTitle());
 | 
|  
 | 
| -  ASSERT_TRUE(decoded_model.mobile_node() != NULL);
 | 
| +  ASSERT_TRUE(decoded_model->mobile_node() != NULL);
 | 
|  }
 | 
|  
 | 
|  TEST_F(BookmarkCodecTest, EncodeAndDecodeMetaInfo) {
 | 
| @@ -435,12 +440,12 @@ TEST_F(BookmarkCodecTest, CanDecodeMetaInfoAsString) {
 | 
|    JSONFileValueSerializer serializer(test_file);
 | 
|    scoped_ptr<base::Value> root(serializer.Deserialize(NULL, NULL));
 | 
|  
 | 
| -  BookmarkModel model(NULL, false);
 | 
| +  scoped_ptr<BookmarkModel> model(client_.CreateModel(false));
 | 
|    BookmarkCodec decoder;
 | 
| -  ASSERT_TRUE(Decode(&decoder, &model, *root.get()));
 | 
| +  ASSERT_TRUE(Decode(&decoder, model.get(), *root.get()));
 | 
|  
 | 
| -  EXPECT_EQ(1, model.root_node()->sync_transaction_version());
 | 
| -  const BookmarkNode* bbn = model.bookmark_bar_node();
 | 
| +  EXPECT_EQ(1, model->root_node()->sync_transaction_version());
 | 
| +  const BookmarkNode* bbn = model->bookmark_bar_node();
 | 
|    EXPECT_EQ(BookmarkNode::kInvalidSyncTransactionVersion,
 | 
|              bbn->GetChild(0)->sync_transaction_version());
 | 
|    EXPECT_EQ(42, bbn->GetChild(1)->sync_transaction_version());
 | 
| @@ -449,8 +454,8 @@ TEST_F(BookmarkCodecTest, CanDecodeMetaInfoAsString) {
 | 
|    const char kNormalKey[] = "key";
 | 
|    const char kNestedKey[] = "nested.key";
 | 
|    std::string meta_value;
 | 
| -  EXPECT_FALSE(model.root_node()->GetMetaInfo(kSyncTransactionVersionKey,
 | 
| -                                               &meta_value));
 | 
| +  EXPECT_FALSE(
 | 
| +      model->root_node()->GetMetaInfo(kSyncTransactionVersionKey, &meta_value));
 | 
|    EXPECT_FALSE(bbn->GetChild(1)->GetMetaInfo(kSyncTransactionVersionKey,
 | 
|                                               &meta_value));
 | 
|    EXPECT_TRUE(bbn->GetChild(0)->GetMetaInfo(kNormalKey, &meta_value));
 | 
| 
 |