165dafa8344c8c018e346dd331a7782081a896239Sean Callanan// Copyright 2013 The Chromium Authors. All rights reserved. 265dafa8344c8c018e346dd331a7782081a896239Sean Callanan// Use of this source code is governed by a BSD-style license that can be 365dafa8344c8c018e346dd331a7782081a896239Sean Callanan// found in the LICENSE file. 465dafa8344c8c018e346dd331a7782081a896239Sean Callanan 565dafa8344c8c018e346dd331a7782081a896239Sean Callanan#include "chrome/browser/sync_file_system/drive_backend/list_changes_task.h" 665dafa8344c8c018e346dd331a7782081a896239Sean Callanan 765dafa8344c8c018e346dd331a7782081a896239Sean Callanan#include <string> 865dafa8344c8c018e346dd331a7782081a896239Sean Callanan 965dafa8344c8c018e346dd331a7782081a896239Sean Callanan#include "base/files/scoped_temp_dir.h" 1065dafa8344c8c018e346dd331a7782081a896239Sean Callanan#include "base/format_macros.h" 1165dafa8344c8c018e346dd331a7782081a896239Sean Callanan#include "base/run_loop.h" 1265dafa8344c8c018e346dd331a7782081a896239Sean Callanan#include "base/thread_task_runner_handle.h" 1365dafa8344c8c018e346dd331a7782081a896239Sean Callanan#include "chrome/browser/sync_file_system/drive_backend/drive_backend_constants.h" 1465dafa8344c8c018e346dd331a7782081a896239Sean Callanan#include "chrome/browser/sync_file_system/drive_backend/fake_drive_service_helper.h" 1565dafa8344c8c018e346dd331a7782081a896239Sean Callanan#include "chrome/browser/sync_file_system/drive_backend/metadata_database.h" 1665dafa8344c8c018e346dd331a7782081a896239Sean Callanan#include "chrome/browser/sync_file_system/drive_backend/register_app_task.h" 1765dafa8344c8c018e346dd331a7782081a896239Sean Callanan#include "chrome/browser/sync_file_system/drive_backend/sync_engine_context.h" 1865dafa8344c8c018e346dd331a7782081a896239Sean Callanan#include "chrome/browser/sync_file_system/drive_backend/sync_engine_initializer.h" 1965dafa8344c8c018e346dd331a7782081a896239Sean Callanan#include "chrome/browser/sync_file_system/drive_backend/sync_task_manager.h" 2065dafa8344c8c018e346dd331a7782081a896239Sean Callanan#include "chrome/browser/sync_file_system/sync_file_system_test_util.h" 2165dafa8344c8c018e346dd331a7782081a896239Sean Callanan#include "content/public/test/test_browser_thread_bundle.h" 2265dafa8344c8c018e346dd331a7782081a896239Sean Callanan#include "google_apis/drive/drive_api_parser.h" 2365dafa8344c8c018e346dd331a7782081a896239Sean Callanan#include "testing/gtest/include/gtest/gtest.h" 2428195f9e55173cd06c3c5f9e69cefeb1d03cc129Sean Callanan#include "third_party/leveldatabase/src/helpers/memenv/memenv.h" 2565dafa8344c8c018e346dd331a7782081a896239Sean Callanan#include "third_party/leveldatabase/src/include/leveldb/env.h" 2665dafa8344c8c018e346dd331a7782081a896239Sean Callanan 27d168690e51f9020b926d3d0d57dc9a2cfb2095a8Jim Inghamnamespace sync_file_system { 28c0492741dc594cd02736521048fe0d8f4c9a0a61Sean Callanannamespace drive_backend { 290f0551e67d8ea8d63ace5456f7d42d951827b017Sean Callanan 30a91dd997b1e809c67901b7ac481942cacae19150Sean Callanannamespace { 31dd1dcfdbad297562951169ad621f895daf32b382Sean Callanan 3265dafa8344c8c018e346dd331a7782081a896239Sean Callananconst char kAppID[] = "app_id"; 3365dafa8344c8c018e346dd331a7782081a896239Sean Callananconst char kUnregisteredAppID[] = "app_id unregistered"; 3465dafa8344c8c018e346dd331a7782081a896239Sean Callanan 3565dafa8344c8c018e346dd331a7782081a896239Sean Callanan} // namespace 3665dafa8344c8c018e346dd331a7782081a896239Sean Callanan 3765dafa8344c8c018e346dd331a7782081a896239Sean Callananclass ListChangesTaskTest : public testing::Test { 3865dafa8344c8c018e346dd331a7782081a896239Sean Callanan public: 3965dafa8344c8c018e346dd331a7782081a896239Sean Callanan ListChangesTaskTest() {} 4065dafa8344c8c018e346dd331a7782081a896239Sean Callanan virtual ~ListChangesTaskTest() {} 4165dafa8344c8c018e346dd331a7782081a896239Sean Callanan 4265dafa8344c8c018e346dd331a7782081a896239Sean Callanan virtual void SetUp() OVERRIDE { 4365dafa8344c8c018e346dd331a7782081a896239Sean Callanan ASSERT_TRUE(database_dir_.CreateUniqueTempDir()); 4465dafa8344c8c018e346dd331a7782081a896239Sean Callanan in_memory_env_.reset(leveldb::NewMemEnv(leveldb::Env::Default())); 4565dafa8344c8c018e346dd331a7782081a896239Sean Callanan 4665dafa8344c8c018e346dd331a7782081a896239Sean Callanan scoped_ptr<drive::FakeDriveService> 4765dafa8344c8c018e346dd331a7782081a896239Sean Callanan fake_drive_service(new drive::FakeDriveService); 4865dafa8344c8c018e346dd331a7782081a896239Sean Callanan 4965dafa8344c8c018e346dd331a7782081a896239Sean Callanan scoped_ptr<drive::DriveUploaderInterface> 50102b2c2681c9a830afe25bfea35557421905e42cGreg Clayton drive_uploader(new drive::DriveUploader( 51daa6efe771f5f068e29328a774fa5bf2358ce14aSean Callanan fake_drive_service.get(), 5234507e41794909465d168af4048ebd07ee7819e8Greg Clayton base::ThreadTaskRunnerHandle::Get())); 5365dafa8344c8c018e346dd331a7782081a896239Sean Callanan 5465dafa8344c8c018e346dd331a7782081a896239Sean Callanan fake_drive_service_helper_.reset( 5577e9394f0af653ac0842066a9c7766a28d6c6b94Sean Callanan new FakeDriveServiceHelper(fake_drive_service.get(), 5677e9394f0af653ac0842066a9c7766a28d6c6b94Sean Callanan drive_uploader.get(), 5777e9394f0af653ac0842066a9c7766a28d6c6b94Sean Callanan kSyncRootFolderTitle)); 5877e9394f0af653ac0842066a9c7766a28d6c6b94Sean Callanan 5977e9394f0af653ac0842066a9c7766a28d6c6b94Sean Callanan sync_task_manager_.reset(new SyncTaskManager( 6077e9394f0af653ac0842066a9c7766a28d6c6b94Sean Callanan base::WeakPtr<SyncTaskManager::Client>(), 6177e9394f0af653ac0842066a9c7766a28d6c6b94Sean Callanan 10 /* maximum_background_task */, 625b658cc411e8810073f7f633f3c5d6f177cb3dcdSean Callanan base::ThreadTaskRunnerHandle::Get())); 635b658cc411e8810073f7f633f3c5d6f177cb3dcdSean Callanan sync_task_manager_->Initialize(SYNC_STATUS_OK); 645b658cc411e8810073f7f633f3c5d6f177cb3dcdSean Callanan 655b658cc411e8810073f7f633f3c5d6f177cb3dcdSean Callanan context_.reset(new SyncEngineContext( 665b658cc411e8810073f7f633f3c5d6f177cb3dcdSean Callanan fake_drive_service.PassAs<drive::DriveServiceInterface>(), 67daa6efe771f5f068e29328a774fa5bf2358ce14aSean Callanan drive_uploader.Pass(), 68daa6efe771f5f068e29328a774fa5bf2358ce14aSean Callanan NULL, 69daa6efe771f5f068e29328a774fa5bf2358ce14aSean Callanan base::ThreadTaskRunnerHandle::Get(), 70daa6efe771f5f068e29328a774fa5bf2358ce14aSean Callanan base::ThreadTaskRunnerHandle::Get())); 7165dafa8344c8c018e346dd331a7782081a896239Sean Callanan 7277e9394f0af653ac0842066a9c7766a28d6c6b94Sean Callanan SetUpRemoteFolders(); 735b658cc411e8810073f7f633f3c5d6f177cb3dcdSean Callanan 74daa6efe771f5f068e29328a774fa5bf2358ce14aSean Callanan InitializeMetadataDatabase(); 75daa6efe771f5f068e29328a774fa5bf2358ce14aSean Callanan RegisterApp(kAppID); 7665dafa8344c8c018e346dd331a7782081a896239Sean Callanan } 7765dafa8344c8c018e346dd331a7782081a896239Sean Callanan 78830a903fd7cd4595cf52e1630b6491930ada0400Sean Callanan virtual void TearDown() OVERRIDE { 79830a903fd7cd4595cf52e1630b6491930ada0400Sean Callanan sync_task_manager_.reset(); 806a5aa8ab240a13f397e3e09f2ca1ea3f16b451c2Greg Clayton context_.reset(); 816a5aa8ab240a13f397e3e09f2ca1ea3f16b451c2Greg Clayton base::RunLoop().RunUntilIdle(); 82830a903fd7cd4595cf52e1630b6491930ada0400Sean Callanan } 83830a903fd7cd4595cf52e1630b6491930ada0400Sean Callanan 8465dafa8344c8c018e346dd331a7782081a896239Sean Callanan protected: 8565dafa8344c8c018e346dd331a7782081a896239Sean Callanan SyncStatusCode RunTask(scoped_ptr<SyncTask> sync_task) { 8665dafa8344c8c018e346dd331a7782081a896239Sean Callanan SyncStatusCode status = SYNC_STATUS_UNKNOWN; 8765dafa8344c8c018e346dd331a7782081a896239Sean Callanan sync_task_manager_->ScheduleSyncTask( 8865dafa8344c8c018e346dd331a7782081a896239Sean Callanan FROM_HERE, sync_task.Pass(), 8965dafa8344c8c018e346dd331a7782081a896239Sean Callanan SyncTaskManager::PRIORITY_MED, 9065dafa8344c8c018e346dd331a7782081a896239Sean Callanan CreateResultReceiver(&status)); 9165dafa8344c8c018e346dd331a7782081a896239Sean Callanan base::RunLoop().RunUntilIdle(); 9265dafa8344c8c018e346dd331a7782081a896239Sean Callanan return status; 9365dafa8344c8c018e346dd331a7782081a896239Sean Callanan } 9447dc457387b690c5e4df1c0c7dd8c4337b92e630Sean Callanan 9547dc457387b690c5e4df1c0c7dd8c4337b92e630Sean Callanan size_t CountDirtyTracker() { 9647dc457387b690c5e4df1c0c7dd8c4337b92e630Sean Callanan return context_->GetMetadataDatabase()->CountDirtyTracker(); 976a92553d2cc2b7a3b853fcb6da101583435c2dc0Sean Callanan } 986a92553d2cc2b7a3b853fcb6da101583435c2dc0Sean Callanan 996a92553d2cc2b7a3b853fcb6da101583435c2dc0Sean Callanan FakeDriveServiceHelper* fake_drive_service_helper() { 1006a92553d2cc2b7a3b853fcb6da101583435c2dc0Sean Callanan return fake_drive_service_helper_.get(); 10165dafa8344c8c018e346dd331a7782081a896239Sean Callanan } 10265dafa8344c8c018e346dd331a7782081a896239Sean Callanan 10365dafa8344c8c018e346dd331a7782081a896239Sean Callanan void SetUpChangesInFolder(const std::string& folder_id) { 10465dafa8344c8c018e346dd331a7782081a896239Sean Callanan std::string new_file_id; 105a91dd997b1e809c67901b7ac481942cacae19150Sean Callanan ASSERT_EQ(google_apis::HTTP_SUCCESS, 106a91dd997b1e809c67901b7ac481942cacae19150Sean Callanan fake_drive_service_helper()->AddFile( 10747dc457387b690c5e4df1c0c7dd8c4337b92e630Sean Callanan folder_id, "new file", "file contents", &new_file_id)); 108696cf5f6f2a77b87a4b06cdf0f697749b494665fSean Callanan std::string same_name_file_id; 10965dafa8344c8c018e346dd331a7782081a896239Sean Callanan ASSERT_EQ(google_apis::HTTP_SUCCESS, 1100f0551e67d8ea8d63ace5456f7d42d951827b017Sean Callanan fake_drive_service_helper()->AddFile( 1110f0551e67d8ea8d63ace5456f7d42d951827b017Sean Callanan folder_id, "new file", "file contents", 1120f0551e67d8ea8d63ace5456f7d42d951827b017Sean Callanan &same_name_file_id)); 1130f0551e67d8ea8d63ace5456f7d42d951827b017Sean Callanan 1140f0551e67d8ea8d63ace5456f7d42d951827b017Sean Callanan std::string new_folder_id; 1150f0551e67d8ea8d63ace5456f7d42d951827b017Sean Callanan ASSERT_EQ(google_apis::HTTP_CREATED, 11628195f9e55173cd06c3c5f9e69cefeb1d03cc129Sean Callanan fake_drive_service_helper()->AddFolder( 11728195f9e55173cd06c3c5f9e69cefeb1d03cc129Sean Callanan folder_id, "new folder", &new_folder_id)); 11828195f9e55173cd06c3c5f9e69cefeb1d03cc129Sean Callanan 11965dafa8344c8c018e346dd331a7782081a896239Sean Callanan std::string modified_file_id; 12065dafa8344c8c018e346dd331a7782081a896239Sean Callanan ASSERT_EQ(google_apis::HTTP_SUCCESS, 12165dafa8344c8c018e346dd331a7782081a896239Sean Callanan fake_drive_service_helper()->AddFile( 12265dafa8344c8c018e346dd331a7782081a896239Sean Callanan folder_id, "modified file", "file content", 12365dafa8344c8c018e346dd331a7782081a896239Sean Callanan &modified_file_id)); 12465dafa8344c8c018e346dd331a7782081a896239Sean Callanan ASSERT_EQ(google_apis::HTTP_SUCCESS, 12565dafa8344c8c018e346dd331a7782081a896239Sean Callanan fake_drive_service_helper()->UpdateFile( 12665dafa8344c8c018e346dd331a7782081a896239Sean Callanan modified_file_id, "modified file content")); 12765dafa8344c8c018e346dd331a7782081a896239Sean Callanan 12865dafa8344c8c018e346dd331a7782081a896239Sean Callanan 129b794020ffbd6473c59a6e98be044df50abf7fc30Jim Ingham std::string deleted_file_id; 130ea9d4267a629a1c732eb0400fa0288cee31ad49dJim Ingham ASSERT_EQ(google_apis::HTTP_SUCCESS, 131ea9d4267a629a1c732eb0400fa0288cee31ad49dJim Ingham fake_drive_service_helper()->AddFile( 132ea9d4267a629a1c732eb0400fa0288cee31ad49dJim Ingham folder_id, "trashed file", "file content", 1336a92553d2cc2b7a3b853fcb6da101583435c2dc0Sean Callanan &deleted_file_id)); 134b794020ffbd6473c59a6e98be044df50abf7fc30Jim Ingham ASSERT_EQ(google_apis::HTTP_NO_CONTENT, 135b794020ffbd6473c59a6e98be044df50abf7fc30Jim Ingham fake_drive_service_helper()->DeleteResource(deleted_file_id)); 136b794020ffbd6473c59a6e98be044df50abf7fc30Jim Ingham } 137360f53f3c216ee4fb433da0a367168785328a856Jim Ingham 138360f53f3c216ee4fb433da0a367168785328a856Jim Ingham std::string root_resource_id() { 139360f53f3c216ee4fb433da0a367168785328a856Jim Ingham return context_->GetDriveService()->GetRootResourceId(); 140360f53f3c216ee4fb433da0a367168785328a856Jim Ingham } 141360f53f3c216ee4fb433da0a367168785328a856Jim Ingham 142360f53f3c216ee4fb433da0a367168785328a856Jim Ingham std::string app_root_folder_id() { 143ea9d4267a629a1c732eb0400fa0288cee31ad49dJim Ingham return app_root_folder_id_; 14465dafa8344c8c018e346dd331a7782081a896239Sean Callanan } 14565dafa8344c8c018e346dd331a7782081a896239Sean Callanan 14665dafa8344c8c018e346dd331a7782081a896239Sean Callanan std::string unregistered_app_root_folder_id() { 14765dafa8344c8c018e346dd331a7782081a896239Sean Callanan return unregistered_app_root_folder_id_; 14847beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham } 14947beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham 15047beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham SyncEngineContext* GetSyncEngineContext() { 15147beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham return context_.get(); 15247beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham } 15347beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham 15447beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham private: 15547beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham void SetUpRemoteFolders() { 15647beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham ASSERT_EQ(google_apis::HTTP_CREATED, 15747beabb1386be44e3f90dbc30a0b22c23b93a4dcJim Ingham fake_drive_service_helper_->AddOrphanedFolder( 1586cca9695637b27bd583eaae310d5c09dede7cc49Enrico Granata kSyncRootFolderTitle, &sync_root_folder_id_)); 15965dafa8344c8c018e346dd331a7782081a896239Sean Callanan ASSERT_EQ(google_apis::HTTP_CREATED, 160360f53f3c216ee4fb433da0a367168785328a856Jim Ingham fake_drive_service_helper_->AddFolder( 16165dafa8344c8c018e346dd331a7782081a896239Sean Callanan sync_root_folder_id_, kAppID, &app_root_folder_id_)); 162b344843f75ef893762c93fd0a22d2d45712ce74dGreg Clayton ASSERT_EQ(google_apis::HTTP_CREATED, 16365dafa8344c8c018e346dd331a7782081a896239Sean Callanan fake_drive_service_helper_->AddFolder( 16465dafa8344c8c018e346dd331a7782081a896239Sean Callanan sync_root_folder_id_, kUnregisteredAppID, 165b794020ffbd6473c59a6e98be044df50abf7fc30Jim Ingham &unregistered_app_root_folder_id_)); 166b794020ffbd6473c59a6e98be044df50abf7fc30Jim Ingham } 167360f53f3c216ee4fb433da0a367168785328a856Jim Ingham 1686cca9695637b27bd583eaae310d5c09dede7cc49Enrico Granata void InitializeMetadataDatabase() { 16934507e41794909465d168af4048ebd07ee7819e8Greg Clayton SyncStatusCode status = SYNC_STATUS_UNKNOWN; 17034507e41794909465d168af4048ebd07ee7819e8Greg Clayton SyncEngineInitializer* initializer = 171d168690e51f9020b926d3d0d57dc9a2cfb2095a8Jim Ingham new SyncEngineInitializer(context_.get(), 172d168690e51f9020b926d3d0d57dc9a2cfb2095a8Jim Ingham database_dir_.path(), 173d168690e51f9020b926d3d0d57dc9a2cfb2095a8Jim Ingham in_memory_env_.get()); 174ab06af92020fd4a21eaa5daac3853596b9c45398Sean Callanan 1756a92553d2cc2b7a3b853fcb6da101583435c2dc0Sean Callanan sync_task_manager_->ScheduleSyncTask( 1760ddf806dd9e71637846bf0ad46e1b2df7d02cbceSean Callanan FROM_HERE, scoped_ptr<SyncTask>(initializer), 1770ddf806dd9e71637846bf0ad46e1b2df7d02cbceSean Callanan SyncTaskManager::PRIORITY_MED, 1780ddf806dd9e71637846bf0ad46e1b2df7d02cbceSean Callanan base::Bind(&ListChangesTaskTest::DidInitializeMetadataDatabase, 1790ddf806dd9e71637846bf0ad46e1b2df7d02cbceSean Callanan base::Unretained(this), initializer, &status)); 1800ddf806dd9e71637846bf0ad46e1b2df7d02cbceSean Callanan 1810ddf806dd9e71637846bf0ad46e1b2df7d02cbceSean Callanan base::RunLoop().RunUntilIdle(); 1820ddf806dd9e71637846bf0ad46e1b2df7d02cbceSean Callanan 1830ddf806dd9e71637846bf0ad46e1b2df7d02cbceSean Callanan EXPECT_EQ(SYNC_STATUS_OK, status); 1840ddf806dd9e71637846bf0ad46e1b2df7d02cbceSean Callanan } 1850ddf806dd9e71637846bf0ad46e1b2df7d02cbceSean Callanan 1860ddf806dd9e71637846bf0ad46e1b2df7d02cbceSean Callanan void DidInitializeMetadataDatabase(SyncEngineInitializer* initializer, 1870ddf806dd9e71637846bf0ad46e1b2df7d02cbceSean Callanan SyncStatusCode* status_out, 1880ddf806dd9e71637846bf0ad46e1b2df7d02cbceSean Callanan SyncStatusCode status) { 1890ddf806dd9e71637846bf0ad46e1b2df7d02cbceSean Callanan context_->SetMetadataDatabase(initializer->PassMetadataDatabase()); 1900ddf806dd9e71637846bf0ad46e1b2df7d02cbceSean Callanan *status_out = status; 1910ddf806dd9e71637846bf0ad46e1b2df7d02cbceSean Callanan } 1920ddf806dd9e71637846bf0ad46e1b2df7d02cbceSean Callanan 1930ddf806dd9e71637846bf0ad46e1b2df7d02cbceSean Callanan void RegisterApp(const std::string& app_id) { 1940ddf806dd9e71637846bf0ad46e1b2df7d02cbceSean Callanan EXPECT_EQ(SYNC_STATUS_OK, RunTask(scoped_ptr<SyncTask>( 1950ddf806dd9e71637846bf0ad46e1b2df7d02cbceSean Callanan new RegisterAppTask(context_.get(), app_id)))); 1960ddf806dd9e71637846bf0ad46e1b2df7d02cbceSean Callanan } 1970ddf806dd9e71637846bf0ad46e1b2df7d02cbceSean Callanan 1980ddf806dd9e71637846bf0ad46e1b2df7d02cbceSean Callanan scoped_ptr<leveldb::Env> in_memory_env_; 199d168690e51f9020b926d3d0d57dc9a2cfb2095a8Jim Ingham 200d168690e51f9020b926d3d0d57dc9a2cfb2095a8Jim Ingham std::string sync_root_folder_id_; 201ab06af92020fd4a21eaa5daac3853596b9c45398Sean Callanan std::string app_root_folder_id_; 2020ddf806dd9e71637846bf0ad46e1b2df7d02cbceSean Callanan std::string unregistered_app_root_folder_id_; 203cdc3ea5398f251d3eca482595f103b1874e51538Sean Callanan 204cdc3ea5398f251d3eca482595f103b1874e51538Sean Callanan content::TestBrowserThreadBundle browser_threads_; 20565dafa8344c8c018e346dd331a7782081a896239Sean Callanan base::ScopedTempDir database_dir_; 20665dafa8344c8c018e346dd331a7782081a896239Sean Callanan 20765dafa8344c8c018e346dd331a7782081a896239Sean Callanan scoped_ptr<SyncEngineContext> context_; 20865dafa8344c8c018e346dd331a7782081a896239Sean Callanan scoped_ptr<FakeDriveServiceHelper> fake_drive_service_helper_; 20965dafa8344c8c018e346dd331a7782081a896239Sean Callanan 21065dafa8344c8c018e346dd331a7782081a896239Sean Callanan scoped_ptr<SyncTaskManager> sync_task_manager_; 21165dafa8344c8c018e346dd331a7782081a896239Sean Callanan 21265dafa8344c8c018e346dd331a7782081a896239Sean Callanan DISALLOW_COPY_AND_ASSIGN(ListChangesTaskTest); 21365dafa8344c8c018e346dd331a7782081a896239Sean Callanan}; 21465dafa8344c8c018e346dd331a7782081a896239Sean Callanan 21565dafa8344c8c018e346dd331a7782081a896239Sean CallananTEST_F(ListChangesTaskTest, NoChange) { 21665dafa8344c8c018e346dd331a7782081a896239Sean Callanan size_t num_dirty_trackers = CountDirtyTracker(); 217d168690e51f9020b926d3d0d57dc9a2cfb2095a8Jim Ingham 218d168690e51f9020b926d3d0d57dc9a2cfb2095a8Jim Ingham EXPECT_EQ(SYNC_STATUS_NO_CHANGE_TO_SYNC, RunTask( 219d168690e51f9020b926d3d0d57dc9a2cfb2095a8Jim Ingham scoped_ptr<SyncTask>(new ListChangesTask(GetSyncEngineContext())))); 220d168690e51f9020b926d3d0d57dc9a2cfb2095a8Jim Ingham 221d168690e51f9020b926d3d0d57dc9a2cfb2095a8Jim Ingham EXPECT_EQ(num_dirty_trackers, CountDirtyTracker()); 222d168690e51f9020b926d3d0d57dc9a2cfb2095a8Jim Ingham} 223d168690e51f9020b926d3d0d57dc9a2cfb2095a8Jim Ingham 224d168690e51f9020b926d3d0d57dc9a2cfb2095a8Jim InghamTEST_F(ListChangesTaskTest, UnrelatedChange) { 225d168690e51f9020b926d3d0d57dc9a2cfb2095a8Jim Ingham size_t num_dirty_trackers = CountDirtyTracker(); 22665dafa8344c8c018e346dd331a7782081a896239Sean Callanan 22765dafa8344c8c018e346dd331a7782081a896239Sean Callanan SetUpChangesInFolder(root_resource_id()); 22865dafa8344c8c018e346dd331a7782081a896239Sean Callanan SetUpChangesInFolder(unregistered_app_root_folder_id()); 22965dafa8344c8c018e346dd331a7782081a896239Sean Callanan 23065dafa8344c8c018e346dd331a7782081a896239Sean Callanan EXPECT_EQ(SYNC_STATUS_OK, RunTask( 23165dafa8344c8c018e346dd331a7782081a896239Sean Callanan scoped_ptr<SyncTask>(new ListChangesTask(GetSyncEngineContext())))); 23265dafa8344c8c018e346dd331a7782081a896239Sean Callanan 2338de27c761a22187ef63fb60000894be163e7285fGreg Clayton EXPECT_EQ(num_dirty_trackers, CountDirtyTracker()); 23465dafa8344c8c018e346dd331a7782081a896239Sean Callanan} 23565dafa8344c8c018e346dd331a7782081a896239Sean Callanan 23665dafa8344c8c018e346dd331a7782081a896239Sean CallananTEST_F(ListChangesTaskTest, UnderTrackedFolder) { 2375b658cc411e8810073f7f633f3c5d6f177cb3dcdSean Callanan size_t num_dirty_trackers = CountDirtyTracker(); 2385b658cc411e8810073f7f633f3c5d6f177cb3dcdSean Callanan 2395b658cc411e8810073f7f633f3c5d6f177cb3dcdSean Callanan SetUpChangesInFolder(app_root_folder_id()); 2405b658cc411e8810073f7f633f3c5d6f177cb3dcdSean Callanan 2415b658cc411e8810073f7f633f3c5d6f177cb3dcdSean Callanan EXPECT_EQ(SYNC_STATUS_OK, RunTask( 2425b658cc411e8810073f7f633f3c5d6f177cb3dcdSean Callanan scoped_ptr<SyncTask>(new ListChangesTask(GetSyncEngineContext())))); 2435b658cc411e8810073f7f633f3c5d6f177cb3dcdSean Callanan 2445b658cc411e8810073f7f633f3c5d6f177cb3dcdSean Callanan EXPECT_EQ(num_dirty_trackers + 4, CountDirtyTracker()); 2455b658cc411e8810073f7f633f3c5d6f177cb3dcdSean Callanan} 2465b658cc411e8810073f7f633f3c5d6f177cb3dcdSean Callanan 24765dafa8344c8c018e346dd331a7782081a896239Sean Callanan} // namespace drive_backend 24865dafa8344c8c018e346dd331a7782081a896239Sean Callanan} // namespace sync_file_system 24965dafa8344c8c018e346dd331a7782081a896239Sean Callanan