| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/sync_file_system/drive_file_sync_service.h" | 5 #include "chrome/browser/sync_file_system/drive_file_sync_service.h" |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
| 10 #include "base/message_loop.h" | 10 #include "base/message_loop.h" |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 60 | 60 |
| 61 using extensions::Extension; | 61 using extensions::Extension; |
| 62 using extensions::DictionaryBuilder; | 62 using extensions::DictionaryBuilder; |
| 63 using extensions::ListBuilder; | 63 using extensions::ListBuilder; |
| 64 | 64 |
| 65 namespace sync_file_system { | 65 namespace sync_file_system { |
| 66 | 66 |
| 67 namespace { | 67 namespace { |
| 68 | 68 |
| 69 const char kRootResourceId[] = "folder:root"; | 69 const char kRootResourceId[] = "folder:root"; |
| 70 const char* kServiceName = DriveFileSyncService::kServiceName; | |
| 71 | 70 |
| 72 base::FilePath::StringType ASCIIToFilePathString(const std::string& path) { | 71 base::FilePath::StringType ASCIIToFilePathString(const std::string& path) { |
| 73 return base::FilePath().AppendASCII(path).value(); | 72 return base::FilePath().AppendASCII(path).value(); |
| 74 } | 73 } |
| 75 | 74 |
| 76 void DidInitialize(bool* done, SyncStatusCode status, bool created) { | 75 void DidInitialize(bool* done, SyncStatusCode status, bool created) { |
| 77 EXPECT_FALSE(*done); | 76 EXPECT_FALSE(*done); |
| 78 *done = true; | 77 *done = true; |
| 79 EXPECT_EQ(SYNC_STATUS_OK, status); | 78 EXPECT_EQ(SYNC_STATUS_OK, status); |
| 80 EXPECT_TRUE(created); | 79 EXPECT_TRUE(created); |
| (...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 170 ACTION_P2(InvokeGetResourceListCallback2, error, result) { | 169 ACTION_P2(InvokeGetResourceListCallback2, error, result) { |
| 171 scoped_ptr<google_apis::ResourceList> resource_list(result.Pass()); | 170 scoped_ptr<google_apis::ResourceList> resource_list(result.Pass()); |
| 172 base::MessageLoopProxy::current()->PostTask( | 171 base::MessageLoopProxy::current()->PostTask( |
| 173 FROM_HERE, | 172 FROM_HERE, |
| 174 base::Bind(arg2, error, base::Passed(&resource_list))); | 173 base::Bind(arg2, error, base::Passed(&resource_list))); |
| 175 } | 174 } |
| 176 | 175 |
| 177 ACTION(PrepareForRemoteChange_Busy) { | 176 ACTION(PrepareForRemoteChange_Busy) { |
| 178 base::MessageLoopProxy::current()->PostTask( | 177 base::MessageLoopProxy::current()->PostTask( |
| 179 FROM_HERE, | 178 FROM_HERE, |
| 180 base::Bind(arg2, | 179 base::Bind(arg1, |
| 181 SYNC_STATUS_FILE_BUSY, | 180 SYNC_STATUS_FILE_BUSY, |
| 182 SyncFileMetadata(), | 181 SyncFileMetadata(), |
| 183 FileChangeList())); | 182 FileChangeList())); |
| 184 } | 183 } |
| 185 | 184 |
| 186 ACTION(PrepareForRemoteChange_NotFound) { | 185 ACTION(PrepareForRemoteChange_NotFound) { |
| 187 base::MessageLoopProxy::current()->PostTask( | 186 base::MessageLoopProxy::current()->PostTask( |
| 188 FROM_HERE, | 187 FROM_HERE, |
| 189 base::Bind(arg2, | 188 base::Bind(arg1, |
| 190 SYNC_STATUS_OK, | 189 SYNC_STATUS_OK, |
| 191 SyncFileMetadata(SYNC_FILE_TYPE_UNKNOWN, 0, base::Time()), | 190 SyncFileMetadata(SYNC_FILE_TYPE_UNKNOWN, 0, base::Time()), |
| 192 FileChangeList())); | 191 FileChangeList())); |
| 193 } | 192 } |
| 194 | 193 |
| 195 ACTION(PrepareForRemoteChange_NotModified) { | 194 ACTION(PrepareForRemoteChange_NotModified) { |
| 196 base::MessageLoopProxy::current()->PostTask( | 195 base::MessageLoopProxy::current()->PostTask( |
| 197 FROM_HERE, | 196 FROM_HERE, |
| 198 base::Bind(arg2, | 197 base::Bind(arg1, |
| 199 SYNC_STATUS_OK, | 198 SYNC_STATUS_OK, |
| 200 SyncFileMetadata(SYNC_FILE_TYPE_FILE, 0, base::Time()), | 199 SyncFileMetadata(SYNC_FILE_TYPE_FILE, 0, base::Time()), |
| 201 FileChangeList())); | 200 FileChangeList())); |
| 202 } | 201 } |
| 203 | 202 |
| 204 ACTION(InvokeDidDownloadFile) { | 203 ACTION(InvokeDidDownloadFile) { |
| 205 base::MessageLoopProxy::current()->PostTask( | 204 base::MessageLoopProxy::current()->PostTask( |
| 206 FROM_HERE, base::Bind(arg3, google_apis::HTTP_SUCCESS, arg1)); | 205 FROM_HERE, base::Bind(arg3, google_apis::HTTP_SUCCESS, arg1)); |
| 207 } | 206 } |
| 208 | 207 |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 254 static_cast<extensions::TestExtensionSystem*>( | 253 static_cast<extensions::TestExtensionSystem*>( |
| 255 extensions::ExtensionSystem::Get(profile_.get()))); | 254 extensions::ExtensionSystem::Get(profile_.get()))); |
| 256 extension_system->CreateExtensionService( | 255 extension_system->CreateExtensionService( |
| 257 CommandLine::ForCurrentProcess(), base::FilePath(), false); | 256 CommandLine::ForCurrentProcess(), base::FilePath(), false); |
| 258 extension_service_ = extension_system->Get( | 257 extension_service_ = extension_system->Get( |
| 259 profile_.get())->extension_service(); | 258 profile_.get())->extension_service(); |
| 260 | 259 |
| 261 AddTestExtension(extension_service_, FPL("example1")); | 260 AddTestExtension(extension_service_, FPL("example1")); |
| 262 AddTestExtension(extension_service_, FPL("example2")); | 261 AddTestExtension(extension_service_, FPL("example2")); |
| 263 | 262 |
| 264 ASSERT_TRUE(RegisterSyncableFileSystem(kServiceName)); | 263 RegisterSyncableFileSystem(); |
| 265 | 264 |
| 266 mock_drive_service_ = new NiceMock<google_apis::MockDriveService>; | 265 mock_drive_service_ = new NiceMock<google_apis::MockDriveService>; |
| 267 | 266 |
| 268 EXPECT_CALL(*mock_drive_service(), Initialize(profile_.get())); | 267 EXPECT_CALL(*mock_drive_service(), Initialize(profile_.get())); |
| 269 EXPECT_CALL(*mock_drive_service(), AddObserver(_)); | 268 EXPECT_CALL(*mock_drive_service(), AddObserver(_)); |
| 270 | 269 |
| 271 // Expect to call GetRootResourceId and RemoveResourceFromDirectory to | 270 // Expect to call GetRootResourceId and RemoveResourceFromDirectory to |
| 272 // ensure the sync root directory is not in 'My Drive' directory. | 271 // ensure the sync root directory is not in 'My Drive' directory. |
| 273 EXPECT_CALL(*mock_drive_service(), GetRootResourceId()) | 272 EXPECT_CALL(*mock_drive_service(), GetRootResourceId()) |
| 274 .WillRepeatedly(Return(kRootResourceId)); | 273 .WillRepeatedly(Return(kRootResourceId)); |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 309 EXPECT_CALL(*mock_drive_service(), CancelAll()); | 308 EXPECT_CALL(*mock_drive_service(), CancelAll()); |
| 310 | 309 |
| 311 if (sync_service_) { | 310 if (sync_service_) { |
| 312 sync_service_.reset(); | 311 sync_service_.reset(); |
| 313 } | 312 } |
| 314 | 313 |
| 315 metadata_store_.reset(); | 314 metadata_store_.reset(); |
| 316 api_util_.reset(); | 315 api_util_.reset(); |
| 317 mock_drive_service_ = NULL; | 316 mock_drive_service_ = NULL; |
| 318 | 317 |
| 319 EXPECT_TRUE(RevokeSyncableFileSystem(kServiceName)); | 318 RevokeSyncableFileSystem(); |
| 320 | 319 |
| 321 extension_service_ = NULL; | 320 extension_service_ = NULL; |
| 322 profile_.reset(); | 321 profile_.reset(); |
| 323 message_loop_.RunUntilIdle(); | 322 message_loop_.RunUntilIdle(); |
| 324 } | 323 } |
| 325 | 324 |
| 326 void SetSyncEnabled(bool enabled) { | 325 void SetSyncEnabled(bool enabled) { |
| 327 sync_service_->SetSyncEnabled(enabled); | 326 sync_service_->SetSyncEnabled(enabled); |
| 328 } | 327 } |
| 329 | 328 |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 391 std::map<GURL, std::string>* pending_batch_sync_origins() { | 390 std::map<GURL, std::string>* pending_batch_sync_origins() { |
| 392 return &(sync_service()->pending_batch_sync_origins_); | 391 return &(sync_service()->pending_batch_sync_origins_); |
| 393 } | 392 } |
| 394 | 393 |
| 395 const RemoteChangeHandler& remote_change_handler() const { | 394 const RemoteChangeHandler& remote_change_handler() const { |
| 396 return sync_service_->remote_change_handler_; | 395 return sync_service_->remote_change_handler_; |
| 397 } | 396 } |
| 398 | 397 |
| 399 fileapi::FileSystemURL CreateURL(const GURL& origin, | 398 fileapi::FileSystemURL CreateURL(const GURL& origin, |
| 400 const base::FilePath::StringType& path) { | 399 const base::FilePath::StringType& path) { |
| 401 return CreateSyncableFileSystemURL( | 400 return CreateSyncableFileSystemURL(origin, base::FilePath(path)); |
| 402 origin, kServiceName, base::FilePath(path)); | |
| 403 } | 401 } |
| 404 | 402 |
| 405 void ProcessRemoteChange(SyncStatusCode expected_status, | 403 void ProcessRemoteChange(SyncStatusCode expected_status, |
| 406 const fileapi::FileSystemURL& expected_url, | 404 const fileapi::FileSystemURL& expected_url, |
| 407 SyncFileStatus expected_sync_file_status, | 405 SyncFileStatus expected_sync_file_status, |
| 408 SyncAction expected_sync_action, | 406 SyncAction expected_sync_action, |
| 409 SyncDirection expected_sync_direction) { | 407 SyncDirection expected_sync_direction) { |
| 410 SyncStatusCode actual_status = SYNC_STATUS_UNKNOWN; | 408 SyncStatusCode actual_status = SYNC_STATUS_UNKNOWN; |
| 411 fileapi::FileSystemURL actual_url; | 409 fileapi::FileSystemURL actual_url; |
| 412 | 410 |
| (...skipping 387 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 800 const std::string kSyncRootResourceId("folder:sync_root_resource_id"); | 798 const std::string kSyncRootResourceId("folder:sync_root_resource_id"); |
| 801 const base::FilePath::StringType kFileName(FPL("File 1.mp3")); | 799 const base::FilePath::StringType kFileName(FPL("File 1.mp3")); |
| 802 | 800 |
| 803 metadata_store()->SetSyncRootDirectory(kSyncRootResourceId); | 801 metadata_store()->SetSyncRootDirectory(kSyncRootResourceId); |
| 804 metadata_store()->AddIncrementalSyncOrigin(kOrigin, kDirectoryResourceId); | 802 metadata_store()->AddIncrementalSyncOrigin(kOrigin, kDirectoryResourceId); |
| 805 | 803 |
| 806 EXPECT_CALL(*mock_remote_observer(), OnRemoteChangeQueueUpdated(_)) | 804 EXPECT_CALL(*mock_remote_observer(), OnRemoteChangeQueueUpdated(_)) |
| 807 .Times(AnyNumber()); | 805 .Times(AnyNumber()); |
| 808 | 806 |
| 809 EXPECT_CALL(*mock_remote_processor(), | 807 EXPECT_CALL(*mock_remote_processor(), |
| 810 PrepareForProcessRemoteChange(CreateURL(kOrigin, kFileName), | 808 PrepareForProcessRemoteChange(CreateURL(kOrigin, kFileName), _)) |
| 811 kServiceName, _)) | |
| 812 .WillOnce(PrepareForRemoteChange_Busy()); | 809 .WillOnce(PrepareForRemoteChange_Busy()); |
| 813 EXPECT_CALL(*mock_remote_processor(), | 810 EXPECT_CALL(*mock_remote_processor(), |
| 814 ClearLocalChanges(CreateURL(kOrigin, kFileName), _)) | 811 ClearLocalChanges(CreateURL(kOrigin, kFileName), _)) |
| 815 .WillOnce(InvokeCompletionCallback()); | 812 .WillOnce(InvokeCompletionCallback()); |
| 816 | 813 |
| 817 SetUpDriveServiceExpectCallsForIncrementalSync(); | 814 SetUpDriveServiceExpectCallsForIncrementalSync(); |
| 818 | 815 |
| 819 SetUpDriveSyncService(true); | 816 SetUpDriveSyncService(true); |
| 820 | 817 |
| 821 scoped_ptr<ResourceEntry> entry(ResourceEntry::ExtractAndParse( | 818 scoped_ptr<ResourceEntry> entry(ResourceEntry::ExtractAndParse( |
| (...skipping 14 matching lines...) Expand all Loading... |
| 836 const base::FilePath::StringType kFileName(FPL("File 1.mp3")); | 833 const base::FilePath::StringType kFileName(FPL("File 1.mp3")); |
| 837 const std::string kFileResourceId("file:2_file_resource_id"); | 834 const std::string kFileResourceId("file:2_file_resource_id"); |
| 838 | 835 |
| 839 metadata_store()->SetSyncRootDirectory(kSyncRootResourceId); | 836 metadata_store()->SetSyncRootDirectory(kSyncRootResourceId); |
| 840 metadata_store()->AddIncrementalSyncOrigin(kOrigin, kDirectoryResourceId); | 837 metadata_store()->AddIncrementalSyncOrigin(kOrigin, kDirectoryResourceId); |
| 841 | 838 |
| 842 EXPECT_CALL(*mock_remote_observer(), OnRemoteChangeQueueUpdated(_)) | 839 EXPECT_CALL(*mock_remote_observer(), OnRemoteChangeQueueUpdated(_)) |
| 843 .Times(AnyNumber()); | 840 .Times(AnyNumber()); |
| 844 | 841 |
| 845 EXPECT_CALL(*mock_remote_processor(), | 842 EXPECT_CALL(*mock_remote_processor(), |
| 846 PrepareForProcessRemoteChange(CreateURL(kOrigin, kFileName), | 843 PrepareForProcessRemoteChange(CreateURL(kOrigin, kFileName), _)) |
| 847 kServiceName, _)) | |
| 848 .WillOnce(PrepareForRemoteChange_NotFound()); | 844 .WillOnce(PrepareForRemoteChange_NotFound()); |
| 849 EXPECT_CALL(*mock_remote_processor(), | 845 EXPECT_CALL(*mock_remote_processor(), |
| 850 ClearLocalChanges(CreateURL(kOrigin, kFileName), _)) | 846 ClearLocalChanges(CreateURL(kOrigin, kFileName), _)) |
| 851 .WillOnce(InvokeCompletionCallback()); | 847 .WillOnce(InvokeCompletionCallback()); |
| 852 | 848 |
| 853 SetUpDriveServiceExpectCallsForDownloadFile(kFileResourceId); | 849 SetUpDriveServiceExpectCallsForDownloadFile(kFileResourceId); |
| 854 | 850 |
| 855 EXPECT_CALL(*mock_remote_processor(), | 851 EXPECT_CALL(*mock_remote_processor(), |
| 856 ApplyRemoteChange(_, _, CreateURL(kOrigin, kFileName), _)) | 852 ApplyRemoteChange(_, _, CreateURL(kOrigin, kFileName), _)) |
| 857 .WillOnce(InvokeDidApplyRemoteChange()); | 853 .WillOnce(InvokeDidApplyRemoteChange()); |
| (...skipping 20 matching lines...) Expand all Loading... |
| 878 const base::FilePath::StringType kFileName(FPL("File 1.mp3")); | 874 const base::FilePath::StringType kFileName(FPL("File 1.mp3")); |
| 879 const std::string kFileResourceId("file:2_file_resource_id"); | 875 const std::string kFileResourceId("file:2_file_resource_id"); |
| 880 | 876 |
| 881 metadata_store()->SetSyncRootDirectory(kSyncRootResourceId); | 877 metadata_store()->SetSyncRootDirectory(kSyncRootResourceId); |
| 882 metadata_store()->AddIncrementalSyncOrigin(kOrigin, kDirectoryResourceId); | 878 metadata_store()->AddIncrementalSyncOrigin(kOrigin, kDirectoryResourceId); |
| 883 | 879 |
| 884 EXPECT_CALL(*mock_remote_observer(), OnRemoteChangeQueueUpdated(_)) | 880 EXPECT_CALL(*mock_remote_observer(), OnRemoteChangeQueueUpdated(_)) |
| 885 .Times(AnyNumber()); | 881 .Times(AnyNumber()); |
| 886 | 882 |
| 887 EXPECT_CALL(*mock_remote_processor(), | 883 EXPECT_CALL(*mock_remote_processor(), |
| 888 PrepareForProcessRemoteChange(CreateURL(kOrigin, kFileName), | 884 PrepareForProcessRemoteChange(CreateURL(kOrigin, kFileName), _)) |
| 889 kServiceName, _)) | |
| 890 .WillOnce(PrepareForRemoteChange_NotModified()); | 885 .WillOnce(PrepareForRemoteChange_NotModified()); |
| 891 EXPECT_CALL(*mock_remote_processor(), | 886 EXPECT_CALL(*mock_remote_processor(), |
| 892 ClearLocalChanges(CreateURL(kOrigin, kFileName), _)) | 887 ClearLocalChanges(CreateURL(kOrigin, kFileName), _)) |
| 893 .WillOnce(InvokeCompletionCallback()); | 888 .WillOnce(InvokeCompletionCallback()); |
| 894 | 889 |
| 895 SetUpDriveServiceExpectCallsForDownloadFile(kFileResourceId); | 890 SetUpDriveServiceExpectCallsForDownloadFile(kFileResourceId); |
| 896 | 891 |
| 897 EXPECT_CALL(*mock_remote_processor(), | 892 EXPECT_CALL(*mock_remote_processor(), |
| 898 ApplyRemoteChange(_, _, CreateURL(kOrigin, kFileName), _)) | 893 ApplyRemoteChange(_, _, CreateURL(kOrigin, kFileName), _)) |
| 899 .WillOnce(InvokeDidApplyRemoteChange()); | 894 .WillOnce(InvokeDidApplyRemoteChange()); |
| (...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1035 entry->set_kind(google_apis::ENTRY_KIND_FOLDER); | 1030 entry->set_kind(google_apis::ENTRY_KIND_FOLDER); |
| 1036 | 1031 |
| 1037 // Expect to drop this change for file. | 1032 // Expect to drop this change for file. |
| 1038 EXPECT_FALSE(AppendIncrementalRemoteChangeByEntry( | 1033 EXPECT_FALSE(AppendIncrementalRemoteChangeByEntry( |
| 1039 kOrigin, *entry, 1)); | 1034 kOrigin, *entry, 1)); |
| 1040 } | 1035 } |
| 1041 | 1036 |
| 1042 #endif // !defined(OS_ANDROID) | 1037 #endif // !defined(OS_ANDROID) |
| 1043 | 1038 |
| 1044 } // namespace sync_file_system | 1039 } // namespace sync_file_system |
| OLD | NEW |