| Index: sync/internal_api/shared_model_type_processor_unittest.cc
 | 
| diff --git a/sync/engine/model_type_processor_impl_unittest.cc b/sync/internal_api/shared_model_type_processor_unittest.cc
 | 
| similarity index 85%
 | 
| rename from sync/engine/model_type_processor_impl_unittest.cc
 | 
| rename to sync/internal_api/shared_model_type_processor_unittest.cc
 | 
| index 31fd29f3fe7fff6ea06703e3883801770ead71e2..34daa6f05956dad913adf7d5a602b6365e708f6f 100644
 | 
| --- a/sync/engine/model_type_processor_impl_unittest.cc
 | 
| +++ b/sync/internal_api/shared_model_type_processor_unittest.cc
 | 
| @@ -2,7 +2,7 @@
 | 
|  // Use of this source code is governed by a BSD-style license that can be
 | 
|  // found in the LICENSE file.
 | 
|  
 | 
| -#include "sync/engine/model_type_processor_impl.h"
 | 
| +#include "sync/internal_api/public/shared_model_type_processor.h"
 | 
|  
 | 
|  #include "base/bind.h"
 | 
|  #include "base/message_loop/message_loop.h"
 | 
| @@ -19,9 +19,9 @@ namespace syncer_v2 {
 | 
|  
 | 
|  static const syncer::ModelType kModelType = syncer::PREFERENCES;
 | 
|  
 | 
| -// Tests the sync engine parts of ModelTypeProcessorImpl.
 | 
| +// Tests the sync engine parts of SharedModelTypeProcessor.
 | 
|  //
 | 
| -// The ModelTypeProcessorImpl contains a non-trivial amount of code dedicated
 | 
| +// The SharedModelTypeProcessor contains a non-trivial amount of code dedicated
 | 
|  // to turning the sync engine on and off again.  That code is fairly well
 | 
|  // tested in the NonBlockingDataTypeController unit tests and it doesn't need
 | 
|  // to be re-tested here.
 | 
| @@ -40,22 +40,22 @@ static const syncer::ModelType kModelType = syncer::PREFERENCES;
 | 
|  // - Writes to permanent storage. (TODO)
 | 
|  // - Callbacks into the model. (TODO)
 | 
|  // - Requests to the sync thread.  Tested with MockCommitQueue.
 | 
| -class ModelTypeProcessorImplTest : public ::testing::Test {
 | 
| +class SharedModelTypeProcessorTest : public ::testing::Test {
 | 
|   public:
 | 
| -  ModelTypeProcessorImplTest();
 | 
| -  ~ModelTypeProcessorImplTest() override;
 | 
| +  SharedModelTypeProcessorTest();
 | 
| +  ~SharedModelTypeProcessorTest() override;
 | 
|  
 | 
|    // Initialize to a "ready-to-commit" state.
 | 
|    void InitializeToReadyState();
 | 
|  
 | 
| -  // Start our ModelTypeProcessorImpl, which will be unable to commit until it
 | 
| +  // Start our SharedModelTypeProcessor, which will be unable to commit until it
 | 
|    // receives notification that initial sync has completed.
 | 
|    void Start();
 | 
|  
 | 
| -  // Stop and disconnect the CommitQueue from our ModelTypeProcessorImpl.
 | 
| +  // Stop and disconnect the CommitQueue from our SharedModelTypeProcessor.
 | 
|    void Stop();
 | 
|  
 | 
| -  // Disable sync for this ModelTypeProcessorImpl.  Should cause sync state to
 | 
| +  // Disable sync for this SharedModelTypeProcessor.  Should cause sync state to
 | 
|    // be discarded.
 | 
|    void Disable();
 | 
|  
 | 
| @@ -131,24 +131,23 @@ class ModelTypeProcessorImplTest : public ::testing::Test {
 | 
|    // |type_processor_|.
 | 
|    MockCommitQueue* mock_queue_;
 | 
|    scoped_ptr<MockCommitQueue> mock_queue_ptr_;
 | 
| -  scoped_ptr<ModelTypeProcessorImpl> type_processor_;
 | 
| +  scoped_ptr<SharedModelTypeProcessor> type_processor_;
 | 
|  
 | 
|    DataTypeState data_type_state_;
 | 
|    // This sets ThreadTaskRunnerHandle on the current thread.
 | 
|    base::MessageLoop message_loop_;
 | 
|  };
 | 
|  
 | 
| -ModelTypeProcessorImplTest::ModelTypeProcessorImplTest()
 | 
| +SharedModelTypeProcessorTest::SharedModelTypeProcessorTest()
 | 
|      : mock_queue_(new MockCommitQueue()),
 | 
|        mock_queue_ptr_(mock_queue_),
 | 
|        type_processor_(
 | 
| -          new ModelTypeProcessorImpl(kModelType,
 | 
| -                                     base::WeakPtr<ModelTypeStore>())) {}
 | 
| +          new SharedModelTypeProcessor(kModelType,
 | 
| +                                       base::WeakPtr<ModelTypeStore>())) {}
 | 
|  
 | 
| -ModelTypeProcessorImplTest::~ModelTypeProcessorImplTest() {
 | 
| -}
 | 
| +SharedModelTypeProcessorTest::~SharedModelTypeProcessorTest() {}
 | 
|  
 | 
| -void ModelTypeProcessorImplTest::InitializeToReadyState() {
 | 
| +void SharedModelTypeProcessorTest::InitializeToReadyState() {
 | 
|    // TODO(rlarocque): This should be updated to inject on-disk state.
 | 
|    // At the time this code was written, there was no support for on-disk
 | 
|    // state so this was the only way to inject a data_type_state into
 | 
| @@ -157,24 +156,24 @@ void ModelTypeProcessorImplTest::InitializeToReadyState() {
 | 
|    OnInitialSyncDone();
 | 
|  }
 | 
|  
 | 
| -void ModelTypeProcessorImplTest::Start() {
 | 
| -  type_processor_->Start(base::Bind(&ModelTypeProcessorImplTest::StartDone,
 | 
| +void SharedModelTypeProcessorTest::Start() {
 | 
| +  type_processor_->Start(base::Bind(&SharedModelTypeProcessorTest::StartDone,
 | 
|                                      base::Unretained(this)));
 | 
|  }
 | 
|  
 | 
| -void ModelTypeProcessorImplTest::Stop() {
 | 
| +void SharedModelTypeProcessorTest::Stop() {
 | 
|    type_processor_->Stop();
 | 
|    mock_queue_ = NULL;
 | 
|    mock_queue_ptr_.reset();
 | 
|  }
 | 
|  
 | 
| -void ModelTypeProcessorImplTest::Disable() {
 | 
| +void SharedModelTypeProcessorTest::Disable() {
 | 
|    type_processor_->Disable();
 | 
|    mock_queue_ = NULL;
 | 
|    mock_queue_ptr_.reset();
 | 
|  }
 | 
|  
 | 
| -void ModelTypeProcessorImplTest::Restart() {
 | 
| +void SharedModelTypeProcessorTest::Restart() {
 | 
|    DCHECK(!type_processor_->IsConnected());
 | 
|  
 | 
|    // Prepare a new MockCommitQueue instance, just as we would
 | 
| @@ -185,7 +184,7 @@ void ModelTypeProcessorImplTest::Restart() {
 | 
|    Start();
 | 
|  }
 | 
|  
 | 
| -void ModelTypeProcessorImplTest::StartDone(
 | 
| +void SharedModelTypeProcessorTest::StartDone(
 | 
|      /*syncer::SyncError,*/ scoped_ptr<ActivationContext> context) {
 | 
|    // Hand off ownership of |mock_queue_ptr_|, while keeping
 | 
|    // an unsafe pointer to it.  This is why we can only connect once.
 | 
| @@ -193,17 +192,17 @@ void ModelTypeProcessorImplTest::StartDone(
 | 
|    context->type_processor->OnConnect(mock_queue_ptr_.Pass());
 | 
|  }
 | 
|  
 | 
| -void ModelTypeProcessorImplTest::WriteItem(const std::string& tag,
 | 
| -                                           const std::string& value) {
 | 
| +void SharedModelTypeProcessorTest::WriteItem(const std::string& tag,
 | 
| +                                             const std::string& value) {
 | 
|    const std::string tag_hash = GenerateTagHash(tag);
 | 
|    type_processor_->Put(tag, GenerateSpecifics(tag, value));
 | 
|  }
 | 
|  
 | 
| -void ModelTypeProcessorImplTest::DeleteItem(const std::string& tag) {
 | 
| +void SharedModelTypeProcessorTest::DeleteItem(const std::string& tag) {
 | 
|    type_processor_->Delete(tag);
 | 
|  }
 | 
|  
 | 
| -void ModelTypeProcessorImplTest::OnInitialSyncDone() {
 | 
| +void SharedModelTypeProcessorTest::OnInitialSyncDone() {
 | 
|    data_type_state_.initial_sync_done = true;
 | 
|    UpdateResponseDataList empty_update_list;
 | 
|  
 | 
| @@ -211,9 +210,9 @@ void ModelTypeProcessorImplTest::OnInitialSyncDone() {
 | 
|                                      empty_update_list);
 | 
|  }
 | 
|  
 | 
| -void ModelTypeProcessorImplTest::UpdateFromServer(int64 version_offset,
 | 
| -                                                  const std::string& tag,
 | 
| -                                                  const std::string& value) {
 | 
| +void SharedModelTypeProcessorTest::UpdateFromServer(int64 version_offset,
 | 
| +                                                    const std::string& tag,
 | 
| +                                                    const std::string& value) {
 | 
|    const std::string tag_hash = GenerateTagHash(tag);
 | 
|    UpdateResponseData data = mock_queue_->UpdateFromServer(
 | 
|        version_offset, tag_hash, GenerateSpecifics(tag, value));
 | 
| @@ -224,7 +223,7 @@ void ModelTypeProcessorImplTest::UpdateFromServer(int64 version_offset,
 | 
|                                      UpdateResponseDataList());
 | 
|  }
 | 
|  
 | 
| -void ModelTypeProcessorImplTest::PendingUpdateFromServer(
 | 
| +void SharedModelTypeProcessorTest::PendingUpdateFromServer(
 | 
|      int64 version_offset,
 | 
|      const std::string& tag,
 | 
|      const std::string& value,
 | 
| @@ -240,8 +239,8 @@ void ModelTypeProcessorImplTest::PendingUpdateFromServer(
 | 
|                                      list);
 | 
|  }
 | 
|  
 | 
| -void ModelTypeProcessorImplTest::TombstoneFromServer(int64 version_offset,
 | 
| -                                                     const std::string& tag) {
 | 
| +void SharedModelTypeProcessorTest::TombstoneFromServer(int64 version_offset,
 | 
| +                                                       const std::string& tag) {
 | 
|    // Overwrite the existing server version if this is the new highest version.
 | 
|    std::string tag_hash = GenerateTagHash(tag);
 | 
|  
 | 
| @@ -254,7 +253,7 @@ void ModelTypeProcessorImplTest::TombstoneFromServer(int64 version_offset,
 | 
|                                      UpdateResponseDataList());
 | 
|  }
 | 
|  
 | 
| -bool ModelTypeProcessorImplTest::HasPendingUpdate(
 | 
| +bool SharedModelTypeProcessorTest::HasPendingUpdate(
 | 
|      const std::string& tag) const {
 | 
|    const std::string client_tag_hash = GenerateTagHash(tag);
 | 
|    const UpdateResponseDataList list = type_processor_->GetPendingUpdates();
 | 
| @@ -266,7 +265,7 @@ bool ModelTypeProcessorImplTest::HasPendingUpdate(
 | 
|    return false;
 | 
|  }
 | 
|  
 | 
| -UpdateResponseData ModelTypeProcessorImplTest::GetPendingUpdate(
 | 
| +UpdateResponseData SharedModelTypeProcessorTest::GetPendingUpdate(
 | 
|      const std::string& tag) const {
 | 
|    DCHECK(HasPendingUpdate(tag));
 | 
|    const std::string client_tag_hash = GenerateTagHash(tag);
 | 
| @@ -280,35 +279,35 @@ UpdateResponseData ModelTypeProcessorImplTest::GetPendingUpdate(
 | 
|    return UpdateResponseData();
 | 
|  }
 | 
|  
 | 
| -size_t ModelTypeProcessorImplTest::GetNumPendingUpdates() const {
 | 
| +size_t SharedModelTypeProcessorTest::GetNumPendingUpdates() const {
 | 
|    return type_processor_->GetPendingUpdates().size();
 | 
|  }
 | 
|  
 | 
| -void ModelTypeProcessorImplTest::SuccessfulCommitResponse(
 | 
| +void SharedModelTypeProcessorTest::SuccessfulCommitResponse(
 | 
|      const CommitRequestData& request_data) {
 | 
|    CommitResponseDataList list;
 | 
|    list.push_back(mock_queue_->SuccessfulCommitResponse(request_data));
 | 
|    type_processor_->OnCommitCompleted(data_type_state_, list);
 | 
|  }
 | 
|  
 | 
| -void ModelTypeProcessorImplTest::UpdateDesiredEncryptionKey(
 | 
| +void SharedModelTypeProcessorTest::UpdateDesiredEncryptionKey(
 | 
|      const std::string& key_name) {
 | 
|    data_type_state_.encryption_key_name = key_name;
 | 
|    type_processor_->OnUpdateReceived(data_type_state_, UpdateResponseDataList(),
 | 
|                                      UpdateResponseDataList());
 | 
|  }
 | 
|  
 | 
| -void ModelTypeProcessorImplTest::SetServerEncryptionKey(
 | 
| +void SharedModelTypeProcessorTest::SetServerEncryptionKey(
 | 
|      const std::string& key_name) {
 | 
|    mock_queue_->SetServerEncryptionKey(key_name);
 | 
|  }
 | 
|  
 | 
| -std::string ModelTypeProcessorImplTest::GenerateTagHash(
 | 
| +std::string SharedModelTypeProcessorTest::GenerateTagHash(
 | 
|      const std::string& tag) {
 | 
|    return syncer::syncable::GenerateSyncableHash(kModelType, tag);
 | 
|  }
 | 
|  
 | 
| -sync_pb::EntitySpecifics ModelTypeProcessorImplTest::GenerateSpecifics(
 | 
| +sync_pb::EntitySpecifics SharedModelTypeProcessorTest::GenerateSpecifics(
 | 
|      const std::string& tag,
 | 
|      const std::string& value) {
 | 
|    sync_pb::EntitySpecifics specifics;
 | 
| @@ -319,7 +318,8 @@ sync_pb::EntitySpecifics ModelTypeProcessorImplTest::GenerateSpecifics(
 | 
|  
 | 
|  // These tests never decrypt anything, so we can get away with faking the
 | 
|  // encryption for now.
 | 
| -sync_pb::EntitySpecifics ModelTypeProcessorImplTest::GenerateEncryptedSpecifics(
 | 
| +sync_pb::EntitySpecifics
 | 
| +SharedModelTypeProcessorTest::GenerateEncryptedSpecifics(
 | 
|      const std::string& tag,
 | 
|      const std::string& value,
 | 
|      const std::string& key_name) {
 | 
| @@ -330,22 +330,22 @@ sync_pb::EntitySpecifics ModelTypeProcessorImplTest::GenerateEncryptedSpecifics(
 | 
|    return specifics;
 | 
|  }
 | 
|  
 | 
| -size_t ModelTypeProcessorImplTest::GetNumCommitRequestLists() {
 | 
| +size_t SharedModelTypeProcessorTest::GetNumCommitRequestLists() {
 | 
|    return mock_queue_->GetNumCommitRequestLists();
 | 
|  }
 | 
|  
 | 
| -CommitRequestDataList ModelTypeProcessorImplTest::GetNthCommitRequestList(
 | 
| +CommitRequestDataList SharedModelTypeProcessorTest::GetNthCommitRequestList(
 | 
|      size_t n) {
 | 
|    return mock_queue_->GetNthCommitRequestList(n);
 | 
|  }
 | 
|  
 | 
| -bool ModelTypeProcessorImplTest::HasCommitRequestForTag(
 | 
| +bool SharedModelTypeProcessorTest::HasCommitRequestForTag(
 | 
|      const std::string& tag) {
 | 
|    const std::string tag_hash = GenerateTagHash(tag);
 | 
|    return mock_queue_->HasCommitRequestForTagHash(tag_hash);
 | 
|  }
 | 
|  
 | 
| -CommitRequestData ModelTypeProcessorImplTest::GetLatestCommitRequestForTag(
 | 
| +CommitRequestData SharedModelTypeProcessorTest::GetLatestCommitRequestForTag(
 | 
|      const std::string& tag) {
 | 
|    const std::string tag_hash = GenerateTagHash(tag);
 | 
|    return mock_queue_->GetLatestCommitRequestForTagHash(tag_hash);
 | 
| @@ -353,7 +353,7 @@ CommitRequestData ModelTypeProcessorImplTest::GetLatestCommitRequestForTag(
 | 
|  
 | 
|  // Creates a new item locally.
 | 
|  // Thoroughly tests the data generated by a local item creation.
 | 
| -TEST_F(ModelTypeProcessorImplTest, CreateLocalItem) {
 | 
| +TEST_F(SharedModelTypeProcessorTest, CreateLocalItem) {
 | 
|    InitializeToReadyState();
 | 
|    EXPECT_EQ(0U, GetNumCommitRequestLists());
 | 
|  
 | 
| @@ -376,7 +376,7 @@ TEST_F(ModelTypeProcessorImplTest, CreateLocalItem) {
 | 
|  
 | 
|  // Creates a new local item then modifies it.
 | 
|  // Thoroughly tests data generated by modification of server-unknown item.
 | 
| -TEST_F(ModelTypeProcessorImplTest, CreateAndModifyLocalItem) {
 | 
| +TEST_F(SharedModelTypeProcessorTest, CreateAndModifyLocalItem) {
 | 
|    InitializeToReadyState();
 | 
|    EXPECT_EQ(0U, GetNumCommitRequestLists());
 | 
|  
 | 
| @@ -408,7 +408,7 @@ TEST_F(ModelTypeProcessorImplTest, CreateAndModifyLocalItem) {
 | 
|  
 | 
|  // Deletes an item we've never seen before.
 | 
|  // Should have no effect and not crash.
 | 
| -TEST_F(ModelTypeProcessorImplTest, DeleteUnknown) {
 | 
| +TEST_F(SharedModelTypeProcessorTest, DeleteUnknown) {
 | 
|    InitializeToReadyState();
 | 
|  
 | 
|    DeleteItem("tag1");
 | 
| @@ -420,7 +420,7 @@ TEST_F(ModelTypeProcessorImplTest, DeleteUnknown) {
 | 
|  // In this test, no commit responses are received, so the deleted item is
 | 
|  // server-unknown as far as the model thread is concerned.  That behavior
 | 
|  // is race-dependent; other tests are used to test other races.
 | 
| -TEST_F(ModelTypeProcessorImplTest, DeleteServerUnknown) {
 | 
| +TEST_F(SharedModelTypeProcessorTest, DeleteServerUnknown) {
 | 
|    InitializeToReadyState();
 | 
|  
 | 
|    WriteItem("tag1", "value1");
 | 
| @@ -445,7 +445,7 @@ TEST_F(ModelTypeProcessorImplTest, DeleteServerUnknown) {
 | 
|  // The item is created locally then enqueued for commit.  The sync thread
 | 
|  // successfully commits it, but, before the commit response is picked up
 | 
|  // by the model thread, the item is deleted by the model thread.
 | 
| -TEST_F(ModelTypeProcessorImplTest, DeleteServerUnknown_RacyCommitResponse) {
 | 
| +TEST_F(SharedModelTypeProcessorTest, DeleteServerUnknown_RacyCommitResponse) {
 | 
|    InitializeToReadyState();
 | 
|  
 | 
|    WriteItem("tag1", "value1");
 | 
| @@ -469,7 +469,7 @@ TEST_F(ModelTypeProcessorImplTest, DeleteServerUnknown_RacyCommitResponse) {
 | 
|  
 | 
|  // Creates two different sync items.
 | 
|  // Verifies that the second has no effect on the first.
 | 
| -TEST_F(ModelTypeProcessorImplTest, TwoIndependentItems) {
 | 
| +TEST_F(SharedModelTypeProcessorTest, TwoIndependentItems) {
 | 
|    InitializeToReadyState();
 | 
|    EXPECT_EQ(0U, GetNumCommitRequestLists());
 | 
|  
 | 
| @@ -491,7 +491,7 @@ TEST_F(ModelTypeProcessorImplTest, TwoIndependentItems) {
 | 
|  // Starts the type sync proxy with no local state.
 | 
|  // Verify that it waits until initial sync is complete before requesting
 | 
|  // commits.
 | 
| -TEST_F(ModelTypeProcessorImplTest, NoCommitsUntilInitialSyncDone) {
 | 
| +TEST_F(SharedModelTypeProcessorTest, NoCommitsUntilInitialSyncDone) {
 | 
|    Start();
 | 
|  
 | 
|    WriteItem("tag1", "value1");
 | 
| @@ -506,7 +506,7 @@ TEST_F(ModelTypeProcessorImplTest, NoCommitsUntilInitialSyncDone) {
 | 
|  //
 | 
|  // Creates items in various states of commit and verifies they re-attempt to
 | 
|  // commit on reconnect.
 | 
| -TEST_F(ModelTypeProcessorImplTest, Stop) {
 | 
| +TEST_F(SharedModelTypeProcessorTest, Stop) {
 | 
|    InitializeToReadyState();
 | 
|  
 | 
|    // The first item is fully committed.
 | 
| @@ -542,7 +542,7 @@ TEST_F(ModelTypeProcessorImplTest, Stop) {
 | 
|  //
 | 
|  // Creates items in various states of commit and verifies they re-attempt to
 | 
|  // commit on re-enable.
 | 
| -TEST_F(ModelTypeProcessorImplTest, Disable) {
 | 
| +TEST_F(SharedModelTypeProcessorTest, Disable) {
 | 
|    InitializeToReadyState();
 | 
|  
 | 
|    // The first item is fully committed.
 | 
| @@ -577,7 +577,7 @@ TEST_F(ModelTypeProcessorImplTest, Disable) {
 | 
|  }
 | 
|  
 | 
|  // Test receipt of pending updates.
 | 
| -TEST_F(ModelTypeProcessorImplTest, ReceivePendingUpdates) {
 | 
| +TEST_F(SharedModelTypeProcessorTest, ReceivePendingUpdates) {
 | 
|    InitializeToReadyState();
 | 
|  
 | 
|    EXPECT_FALSE(HasPendingUpdate("tag1"));
 | 
| @@ -608,7 +608,7 @@ TEST_F(ModelTypeProcessorImplTest, ReceivePendingUpdates) {
 | 
|  }
 | 
|  
 | 
|  // Test that Disable clears pending update state.
 | 
| -TEST_F(ModelTypeProcessorImplTest, DisableWithPendingUpdates) {
 | 
| +TEST_F(SharedModelTypeProcessorTest, DisableWithPendingUpdates) {
 | 
|    InitializeToReadyState();
 | 
|  
 | 
|    PendingUpdateFromServer(5, "tag1", "value1", "key1");
 | 
| @@ -623,7 +623,7 @@ TEST_F(ModelTypeProcessorImplTest, DisableWithPendingUpdates) {
 | 
|  }
 | 
|  
 | 
|  // Test that Stop does not clear pending update state.
 | 
| -TEST_F(ModelTypeProcessorImplTest, StopWithPendingUpdates) {
 | 
| +TEST_F(SharedModelTypeProcessorTest, StopWithPendingUpdates) {
 | 
|    InitializeToReadyState();
 | 
|  
 | 
|    PendingUpdateFromServer(5, "tag1", "value1", "key1");
 | 
| @@ -638,7 +638,7 @@ TEST_F(ModelTypeProcessorImplTest, StopWithPendingUpdates) {
 | 
|  }
 | 
|  
 | 
|  // Test re-encrypt everything when desired encryption key changes.
 | 
| -TEST_F(ModelTypeProcessorImplTest, ReEncryptCommitsWithNewKey) {
 | 
| +TEST_F(SharedModelTypeProcessorTest, ReEncryptCommitsWithNewKey) {
 | 
|    InitializeToReadyState();
 | 
|  
 | 
|    // Commit an item.
 | 
| @@ -670,7 +670,7 @@ TEST_F(ModelTypeProcessorImplTest, ReEncryptCommitsWithNewKey) {
 | 
|  }
 | 
|  
 | 
|  // Test receipt of updates with new and old keys.
 | 
| -TEST_F(ModelTypeProcessorImplTest, ReEncryptUpdatesWithNewKey) {
 | 
| +TEST_F(SharedModelTypeProcessorTest, ReEncryptUpdatesWithNewKey) {
 | 
|    InitializeToReadyState();
 | 
|  
 | 
|    // Receive an unencrpted update.
 | 
| 
 |