Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(126)

Side by Side Diff: chrome/browser/chromeos/gdata/drive_file_system_unittest.cc

Issue 10832241: Drive: Removes unused cache files after the initial feed fetch. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix the build error. Created 8 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 <string> 5 #include <string>
6 #include <vector> 6 #include <vector>
7 7
8 #include "base/bind.h" 8 #include "base/bind.h"
9 #include "base/file_path.h" 9 #include "base/file_path.h"
10 #include "base/file_util.h" 10 #include "base/file_util.h"
11 #include "base/json/json_file_value_serializer.h" 11 #include "base/json/json_file_value_serializer.h"
12 #include "base/memory/scoped_ptr.h" 12 #include "base/memory/scoped_ptr.h"
13 #include "base/message_loop.h" 13 #include "base/message_loop.h"
14 #include "base/path_service.h" 14 #include "base/path_service.h"
15 #include "base/scoped_temp_dir.h" 15 #include "base/scoped_temp_dir.h"
16 #include "base/stringprintf.h" 16 #include "base/stringprintf.h"
17 #include "base/threading/sequenced_worker_pool.h" 17 #include "base/threading/sequenced_worker_pool.h"
18 #include "base/values.h" 18 #include "base/values.h"
19 #include "chrome/browser/chromeos/cros/cros_library.h" 19 #include "chrome/browser/chromeos/cros/cros_library.h"
20 #include "chrome/browser/chromeos/gdata/drive.pb.h" 20 #include "chrome/browser/chromeos/gdata/drive.pb.h"
21 #include "chrome/browser/chromeos/gdata/drive_api_parser.h" 21 #include "chrome/browser/chromeos/gdata/drive_api_parser.h"
22 #include "chrome/browser/chromeos/gdata/drive_file_system.h" 22 #include "chrome/browser/chromeos/gdata/drive_file_system.h"
23 #include "chrome/browser/chromeos/gdata/drive_webapps_registry.h" 23 #include "chrome/browser/chromeos/gdata/drive_webapps_registry.h"
24 #include "chrome/browser/chromeos/gdata/gdata_test_util.h" 24 #include "chrome/browser/chromeos/gdata/gdata_test_util.h"
25 #include "chrome/browser/chromeos/gdata/gdata_uploader.h" 25 #include "chrome/browser/chromeos/gdata/gdata_uploader.h"
26 #include "chrome/browser/chromeos/gdata/gdata_util.h" 26 #include "chrome/browser/chromeos/gdata/gdata_util.h"
27 #include "chrome/browser/chromeos/gdata/mock_directory_change_observer.h" 27 #include "chrome/browser/chromeos/gdata/mock_directory_change_observer.h"
28 #include "chrome/browser/chromeos/gdata/mock_drive_cache_observer.h" 28 #include "chrome/browser/chromeos/gdata/mock_drive_cache_observer.h"
29 #include "chrome/browser/chromeos/gdata/mock_drive_service.h" 29 #include "chrome/browser/chromeos/gdata/mock_drive_service.h"
30 #include "chrome/browser/chromeos/gdata/mock_drive_web_apps_registry.h"
31 #include "chrome/browser/chromeos/gdata/mock_free_disk_space_getter.h"
30 #include "chrome/common/chrome_paths.h" 32 #include "chrome/common/chrome_paths.h"
31 #include "chrome/test/base/testing_profile.h" 33 #include "chrome/test/base/testing_profile.h"
32 #include "content/public/browser/browser_thread.h" 34 #include "content/public/browser/browser_thread.h"
33 #include "content/public/test/test_browser_thread.h" 35 #include "content/public/test/test_browser_thread.h"
34 #include "testing/gmock/include/gmock/gmock.h" 36 #include "testing/gmock/include/gmock/gmock.h"
35 #include "testing/gtest/include/gtest/gtest.h" 37 #include "testing/gtest/include/gtest/gtest.h"
36 38
37 using ::testing::AtLeast; 39 using ::testing::AtLeast;
38 using ::testing::Eq; 40 using ::testing::Eq;
39 using ::testing::NotNull; 41 using ::testing::NotNull;
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
98 } 100 }
99 101
100 // Action used to set mock expectations for 102 // Action used to set mock expectations for
101 // DriveFileSystem::CopyDocument(). 103 // DriveFileSystem::CopyDocument().
102 ACTION_P2(MockCopyDocument, status, value) { 104 ACTION_P2(MockCopyDocument, status, value) {
103 base::MessageLoopProxy::current()->PostTask( 105 base::MessageLoopProxy::current()->PostTask(
104 FROM_HERE, 106 FROM_HERE,
105 base::Bind(arg2, status, base::Passed(value))); 107 base::Bind(arg2, status, base::Passed(value)));
106 } 108 }
107 109
108 // Returns the absolute path for a test file stored under
109 // chrome/test/data/chromeos/gdata.
110 FilePath GetTestFilePath(const FilePath::StringType& base_name) {
111 FilePath path;
112 std::string error;
113 PathService::Get(chrome::DIR_TEST_DATA, &path);
114 path = path.AppendASCII("chromeos")
115 .AppendASCII("gdata")
116 .AppendASCII(base_name.c_str());
117 EXPECT_TRUE(file_util::PathExists(path)) <<
118 "Couldn't find " << path.value();
119 return path;
120 }
121
122 // Loads a test JSON file as a base::Value.
123 base::Value* LoadJSONFile(const std::string& base_name) {
124 FilePath path = GetTestFilePath(base_name);
125
126 std::string error;
127 JSONFileValueSerializer serializer(path);
128 base::Value* value = serializer.Deserialize(NULL, &error);
129 EXPECT_TRUE(value) <<
130 "Parse error " << path.value() << ": " << error;
131 return value;
132 }
133
134 // Counts the number of files (not directories) in |entries|. 110 // Counts the number of files (not directories) in |entries|.
135 int CountFiles(const DriveEntryProtoVector& entries) { 111 int CountFiles(const DriveEntryProtoVector& entries) {
136 int num_files = 0; 112 int num_files = 0;
137 for (size_t i = 0; i < entries.size(); ++i) { 113 for (size_t i = 0; i < entries.size(); ++i) {
138 if (!entries[i].file_info().is_directory()) 114 if (!entries[i].file_info().is_directory())
139 ++num_files; 115 ++num_files;
140 } 116 }
141 return num_files; 117 return num_files;
142 } 118 }
143 119
144 } // namespace 120 } // namespace
145 121
146 class MockFreeDiskSpaceGetter : public FreeDiskSpaceGetterInterface {
147 public:
148 virtual ~MockFreeDiskSpaceGetter() {}
149 MOCK_CONST_METHOD0(AmountOfFreeDiskSpace, int64());
150 };
151
152 class MockGDataUploader : public GDataUploaderInterface { 122 class MockGDataUploader : public GDataUploaderInterface {
153 public: 123 public:
154 virtual ~MockGDataUploader() {} 124 virtual ~MockGDataUploader() {}
155 // This function is not mockable by gmock. 125 // This function is not mockable by gmock.
156 virtual int UploadNewFile( 126 virtual int UploadNewFile(
157 scoped_ptr<UploadFileInfo> upload_file_info) OVERRIDE { 127 scoped_ptr<UploadFileInfo> upload_file_info) OVERRIDE {
158 // Set a document entry for an uploaded file. 128 // Set a document entry for an uploaded file.
159 // Used for TransferFileFromLocalToRemote_RegularFile test. 129 // Used for TransferFileFromLocalToRemote_RegularFile test.
160 scoped_ptr<base::Value> value(LoadJSONFile("uploaded_file.json")); 130 scoped_ptr<base::Value> value(
131 test_util::LoadJSONFile("uploaded_file.json"));
161 scoped_ptr<DocumentEntry> document_entry( 132 scoped_ptr<DocumentEntry> document_entry(
162 DocumentEntry::ExtractAndParse(*value)); 133 DocumentEntry::ExtractAndParse(*value));
163 upload_file_info->entry = document_entry.Pass(); 134 upload_file_info->entry = document_entry.Pass();
164 135
165 // Run the completion callback. 136 // Run the completion callback.
166 const UploadFileInfo::UploadCompletionCallback callback = 137 const UploadFileInfo::UploadCompletionCallback callback =
167 upload_file_info->completion_callback; 138 upload_file_info->completion_callback;
168 if (!callback.is_null()) 139 if (!callback.is_null())
169 callback.Run(DRIVE_FILE_OK, upload_file_info.Pass()); 140 callback.Run(DRIVE_FILE_OK, upload_file_info.Pass());
170 141
(...skipping 11 matching lines...) Expand all
182 const FilePath& local_file_path, 153 const FilePath& local_file_path,
183 int64 file_size, 154 int64 file_size,
184 const std::string& content_type, 155 const std::string& content_type,
185 const UploadFileInfo::UploadCompletionCallback& callback)); 156 const UploadFileInfo::UploadCompletionCallback& callback));
186 157
187 MOCK_METHOD2(UpdateUpload, void(int upload_id, 158 MOCK_METHOD2(UpdateUpload, void(int upload_id,
188 content::DownloadItem* download)); 159 content::DownloadItem* download));
189 MOCK_CONST_METHOD1(GetUploadedBytes, int64(int upload_id)); 160 MOCK_CONST_METHOD1(GetUploadedBytes, int64(int upload_id));
190 }; 161 };
191 162
192 class MockDriveWebAppsRegistry : public DriveWebAppsRegistryInterface {
193 public:
194 virtual ~MockDriveWebAppsRegistry() {}
195
196 MOCK_METHOD3(GetWebAppsForFile, void(const FilePath& file,
197 const std::string& mime_type,
198 ScopedVector<DriveWebAppInfo>* apps));
199 MOCK_METHOD1(GetExtensionsForWebStoreApp,
200 std::set<std::string>(const std::string& web_store_id));
201 MOCK_METHOD1(UpdateFromFeed, void(const AccountMetadataFeed& metadata));
202 MOCK_METHOD1(UpdateFromApplicationList, void(const AppList& applist));
203 };
204
205 class DriveFileSystemTest : public testing::Test { 163 class DriveFileSystemTest : public testing::Test {
206 protected: 164 protected:
207 DriveFileSystemTest() 165 DriveFileSystemTest()
208 : ui_thread_(content::BrowserThread::UI, &message_loop_), 166 : ui_thread_(content::BrowserThread::UI, &message_loop_),
209 io_thread_(content::BrowserThread::IO), 167 io_thread_(content::BrowserThread::IO),
210 cache_(NULL), 168 cache_(NULL),
211 file_system_(NULL), 169 file_system_(NULL),
212 mock_drive_service_(NULL), 170 mock_drive_service_(NULL),
213 mock_webapps_registry_(NULL), 171 mock_webapps_registry_(NULL),
214 num_callback_invocations_(0), 172 num_callback_invocations_(0),
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
284 chromeos::CrosLibrary::Shutdown(); 242 chromeos::CrosLibrary::Shutdown();
285 } 243 }
286 244
287 // Loads test json file as root ("/drive") element. 245 // Loads test json file as root ("/drive") element.
288 void LoadRootFeedDocument(const std::string& filename) { 246 void LoadRootFeedDocument(const std::string& filename) {
289 LoadChangeFeed(filename, 0); 247 LoadChangeFeed(filename, 0);
290 } 248 }
291 249
292 void LoadChangeFeed(const std::string& filename, 250 void LoadChangeFeed(const std::string& filename,
293 int largest_changestamp) { 251 int largest_changestamp) {
294 std::string error; 252 test_util::LoadChangeFeed(filename,
295 scoped_ptr<Value> document(LoadJSONFile(filename)); 253 file_system_,
296 ASSERT_TRUE(document.get()); 254 largest_changestamp,
297 ASSERT_TRUE(document->GetType() == Value::TYPE_DICTIONARY); 255 root_feed_changestamp_++);
satorux1 2012/08/30 04:38:15 looks tricky. please increment outside the functio
yoshiki 2012/08/30 15:23:45 Done. https://chromiumcodereview.appspot.com/10905
298 scoped_ptr<DocumentFeed> document_feed(
299 DocumentFeed::ExtractAndParse(*document));
300 ASSERT_TRUE(document_feed.get());
301 std::vector<DocumentFeed*> feed_list;
302 feed_list.push_back(document_feed.get());
303 ASSERT_TRUE(UpdateContent(feed_list, largest_changestamp));
304 } 256 }
305 257
306 void AddDirectoryFromFile(const FilePath& directory_path, 258 void AddDirectoryFromFile(const FilePath& directory_path,
307 const std::string& filename) { 259 const std::string& filename) {
308 scoped_ptr<Value> atom(LoadJSONFile(filename)); 260 scoped_ptr<Value> atom(test_util::LoadJSONFile(filename));
309 ASSERT_TRUE(atom.get()); 261 ASSERT_TRUE(atom.get());
310 ASSERT_TRUE(atom->GetType() == Value::TYPE_DICTIONARY); 262 ASSERT_TRUE(atom->GetType() == Value::TYPE_DICTIONARY);
311 263
312 DictionaryValue* dict_value = NULL; 264 DictionaryValue* dict_value = NULL;
313 Value* entry_value = NULL; 265 Value* entry_value = NULL;
314 ASSERT_TRUE(atom->GetAsDictionary(&dict_value)); 266 ASSERT_TRUE(atom->GetAsDictionary(&dict_value));
315 ASSERT_TRUE(dict_value->Get("entry", &entry_value)); 267 ASSERT_TRUE(dict_value->Get("entry", &entry_value));
316 268
317 DictionaryValue* entry_dict = NULL; 269 DictionaryValue* entry_dict = NULL;
318 ASSERT_TRUE(entry_value->GetAsDictionary(&entry_dict)); 270 ASSERT_TRUE(entry_value->GetAsDictionary(&entry_dict));
319 271
320 // Tweak entry title to match the last segment of the directory path 272 // Tweak entry title to match the last segment of the directory path
321 // (new directory name). 273 // (new directory name).
322 std::vector<FilePath::StringType> dir_parts; 274 std::vector<FilePath::StringType> dir_parts;
323 directory_path.GetComponents(&dir_parts); 275 directory_path.GetComponents(&dir_parts);
324 entry_dict->SetString("title.$t", dir_parts[dir_parts.size() - 1]); 276 entry_dict->SetString("title.$t", dir_parts[dir_parts.size() - 1]);
325 277
326 DriveFileError error; 278 DriveFileError error;
327 DriveFileSystem::CreateDirectoryParams params(directory_path, 279 DriveFileSystem::CreateDirectoryParams params(directory_path,
328 directory_path, 280 directory_path,
329 false, // is_exclusive 281 false, // is_exclusive
330 false, // is_recursive 282 false, // is_recursive
331 base::Bind(&test_util::CopyErrorCodeFromFileOperationCallback, &error)); 283 base::Bind(&test_util::CopyErrorCodeFromFileOperationCallback, &error));
332 file_system_->AddNewDirectory(params, HTTP_SUCCESS, atom.Pass()); 284 file_system_->AddNewDirectory(params, HTTP_SUCCESS, atom.Pass());
333 test_util::RunBlockingPoolTask(); 285 test_util::RunBlockingPoolTask();
334 EXPECT_EQ(DRIVE_FILE_OK, error); 286 EXPECT_EQ(DRIVE_FILE_OK, error);
335 } 287 }
336 288
337 // Updates the content of directory under |directory_path| with parsed feed
338 // |value|.
339 bool UpdateContent(const std::vector<DocumentFeed*>& list,
340 int largest_changestamp) {
341 GURL unused;
342 return file_system_->UpdateFromFeedForTesting(
343 list,
344 largest_changestamp,
345 root_feed_changestamp_++) == DRIVE_FILE_OK;
346 }
347
348 bool RemoveEntry(const FilePath& file_path) { 289 bool RemoveEntry(const FilePath& file_path) {
349 file_system_->GetEntryInfoByPath( 290 file_system_->GetEntryInfoByPath(
350 file_path, 291 file_path,
351 base::Bind(&CallbackHelper::GetEntryInfoCallback, 292 base::Bind(&CallbackHelper::GetEntryInfoCallback,
352 callback_helper_.get())); 293 callback_helper_.get()));
353 test_util::RunBlockingPoolTask(); 294 test_util::RunBlockingPoolTask();
354 295
355 if (callback_helper_->last_error_ != DRIVE_FILE_OK) 296 if (callback_helper_->last_error_ != DRIVE_FILE_OK)
356 return false; 297 return false;
357 298
(...skipping 886 matching lines...) Expand 10 before | Expand all | Expand 10 after
1244 EXPECT_TRUE(EntryExists( 1185 EXPECT_TRUE(EntryExists(
1245 FilePath(FILE_PATH_LITERAL("drive/Dir1/SubDir2/File3")))); 1186 FilePath(FILE_PATH_LITERAL("drive/Dir1/SubDir2/File3"))));
1246 } 1187 }
1247 1188
1248 TEST_F(DriveFileSystemTest, CachedFeadLoadingThenServerFeedLoading) { 1189 TEST_F(DriveFileSystemTest, CachedFeadLoadingThenServerFeedLoading) {
1249 SaveTestFileSystem(); 1190 SaveTestFileSystem();
1250 1191
1251 // SaveTestFileSystem and "account_metadata.json" have the same changestamp, 1192 // SaveTestFileSystem and "account_metadata.json" have the same changestamp,
1252 // so no request for new feeds (i.e., call to GetDocuments) should happen. 1193 // so no request for new feeds (i.e., call to GetDocuments) should happen.
1253 mock_drive_service_->set_account_metadata( 1194 mock_drive_service_->set_account_metadata(
1254 LoadJSONFile("account_metadata.json")); 1195 test_util::LoadJSONFile("account_metadata.json"));
1255 EXPECT_CALL(*mock_drive_service_, GetAccountMetadata(_)).Times(1); 1196 EXPECT_CALL(*mock_drive_service_, GetAccountMetadata(_)).Times(1);
1256 EXPECT_CALL(*mock_webapps_registry_, UpdateFromFeed(_)).Times(1); 1197 EXPECT_CALL(*mock_webapps_registry_, UpdateFromFeed(_)).Times(1);
1257 EXPECT_CALL(*mock_drive_service_, GetDocuments(_, _, _, _, _)).Times(0); 1198 EXPECT_CALL(*mock_drive_service_, GetDocuments(_, _, _, _, _)).Times(0);
1258 1199
1259 // Kicks loading of cached file system and query for server update. 1200 // Kicks loading of cached file system and query for server update.
1260 EXPECT_TRUE(EntryExists(FilePath(FILE_PATH_LITERAL("drive/File1")))); 1201 EXPECT_TRUE(EntryExists(FilePath(FILE_PATH_LITERAL("drive/File1"))));
1261 1202
1262 // Since the file system has verified that it holds the latest snapshot, 1203 // Since the file system has verified that it holds the latest snapshot,
1263 // it should change its state to FROM_SERVER, which admits periodic refresh. 1204 // it should change its state to FROM_SERVER, which admits periodic refresh.
1264 // To test it, call CheckForUpdates and verify it does try to check updates. 1205 // To test it, call CheckForUpdates and verify it does try to check updates.
1265 mock_drive_service_->set_account_metadata( 1206 mock_drive_service_->set_account_metadata(
1266 LoadJSONFile("account_metadata.json")); 1207 test_util::LoadJSONFile("account_metadata.json"));
1267 EXPECT_CALL(*mock_drive_service_, GetAccountMetadata(_)).Times(1); 1208 EXPECT_CALL(*mock_drive_service_, GetAccountMetadata(_)).Times(1);
1268 EXPECT_CALL(*mock_webapps_registry_, UpdateFromFeed(_)).Times(1); 1209 EXPECT_CALL(*mock_webapps_registry_, UpdateFromFeed(_)).Times(1);
1269 1210
1270 file_system_->CheckForUpdates(); 1211 file_system_->CheckForUpdates();
1271 test_util::RunBlockingPoolTask(); 1212 test_util::RunBlockingPoolTask();
1272 } 1213 }
1273 1214
1274 TEST_F(DriveFileSystemTest, TransferFileFromLocalToRemote_RegularFile) { 1215 TEST_F(DriveFileSystemTest, TransferFileFromLocalToRemote_RegularFile) {
1275 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace()) 1216 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace())
1276 .Times(AtLeast(1)).WillRepeatedly(Return(kLotsOfSpace)); 1217 .Times(AtLeast(1)).WillRepeatedly(Return(kLotsOfSpace));
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
1327 const FilePath remote_dest_file_path( 1268 const FilePath remote_dest_file_path(
1328 FILE_PATH_LITERAL("drive/Directory 1/Document 1.gdoc")); 1269 FILE_PATH_LITERAL("drive/Directory 1/Document 1.gdoc"));
1329 EXPECT_FALSE(EntryExists(remote_dest_file_path)); 1270 EXPECT_FALSE(EntryExists(remote_dest_file_path));
1330 1271
1331 // We'll add a file to "Directory 1" directory on Drive. 1272 // We'll add a file to "Directory 1" directory on Drive.
1332 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( 1273 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged(
1333 Eq(FilePath(FILE_PATH_LITERAL("drive/Directory 1"))))).Times(1); 1274 Eq(FilePath(FILE_PATH_LITERAL("drive/Directory 1"))))).Times(1);
1334 1275
1335 // We'll copy a hosted document using CopyDocument. 1276 // We'll copy a hosted document using CopyDocument.
1336 // ".gdoc" suffix should be stripped when copying. 1277 // ".gdoc" suffix should be stripped when copying.
1337 scoped_ptr<base::Value> document(LoadJSONFile("uploaded_document.json")); 1278 scoped_ptr<base::Value> document(
1279 test_util::LoadJSONFile("uploaded_document.json"));
1338 EXPECT_CALL(*mock_drive_service_, 1280 EXPECT_CALL(*mock_drive_service_,
1339 CopyDocument(kResourceId, 1281 CopyDocument(kResourceId,
1340 FILE_PATH_LITERAL("Document 1"), 1282 FILE_PATH_LITERAL("Document 1"),
1341 _)) 1283 _))
1342 .WillOnce(MockCopyDocument(gdata::HTTP_SUCCESS, &document)); 1284 .WillOnce(MockCopyDocument(gdata::HTTP_SUCCESS, &document));
1343 // We'll then add the hosted document to the destination directory. 1285 // We'll then add the hosted document to the destination directory.
1344 EXPECT_CALL(*mock_drive_service_, 1286 EXPECT_CALL(*mock_drive_service_,
1345 AddResourceToDirectory(_, _, _)).Times(1); 1287 AddResourceToDirectory(_, _, _)).Times(1);
1346 1288
1347 FileOperationCallback callback = 1289 FileOperationCallback callback =
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
1380 1322
1381 // Pretend we have enough space. 1323 // Pretend we have enough space.
1382 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace()) 1324 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace())
1383 .Times(2).WillRepeatedly(Return(file_size + kMinFreeSpace)); 1325 .Times(2).WillRepeatedly(Return(file_size + kMinFreeSpace));
1384 1326
1385 const std::string remote_src_file_data = "Test file data"; 1327 const std::string remote_src_file_data = "Test file data";
1386 mock_drive_service_->set_file_data(new std::string(remote_src_file_data)); 1328 mock_drive_service_->set_file_data(new std::string(remote_src_file_data));
1387 1329
1388 // Before Download starts metadata from server will be fetched. 1330 // Before Download starts metadata from server will be fetched.
1389 // We will read content url from the result. 1331 // We will read content url from the result.
1390 scoped_ptr<base::Value> document(LoadJSONFile("document_to_download.json")); 1332 scoped_ptr<base::Value> document(
1333 test_util::LoadJSONFile("document_to_download.json"));
1391 SetExpectationsForGetDocumentEntry(&document, "file:2_file_resource_id"); 1334 SetExpectationsForGetDocumentEntry(&document, "file:2_file_resource_id");
1392 1335
1393 // The file is obtained with the mock DriveService. 1336 // The file is obtained with the mock DriveService.
1394 EXPECT_CALL(*mock_drive_service_, 1337 EXPECT_CALL(*mock_drive_service_,
1395 DownloadFile(remote_src_file_path, 1338 DownloadFile(remote_src_file_path,
1396 cache_file, 1339 cache_file,
1397 GURL("https://file_content_url_changed/"), 1340 GURL("https://file_content_url_changed/"),
1398 _, _)) 1341 _, _))
1399 .Times(1); 1342 .Times(1);
1400 1343
(...skipping 593 matching lines...) Expand 10 before | Expand all | Expand 10 after
1994 entry_proto->resource_id(), 1937 entry_proto->resource_id(),
1995 entry_proto->file_specific_info().file_md5()); 1938 entry_proto->file_specific_info().file_md5());
1996 const int64 file_size = entry_proto->file_info().size(); 1939 const int64 file_size = entry_proto->file_info().size();
1997 1940
1998 // Pretend we have enough space. 1941 // Pretend we have enough space.
1999 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace()) 1942 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace())
2000 .Times(2).WillRepeatedly(Return(file_size + kMinFreeSpace)); 1943 .Times(2).WillRepeatedly(Return(file_size + kMinFreeSpace));
2001 1944
2002 // Before Download starts metadata from server will be fetched. 1945 // Before Download starts metadata from server will be fetched.
2003 // We will read content url from the result. 1946 // We will read content url from the result.
2004 scoped_ptr<base::Value> document(LoadJSONFile("document_to_download.json")); 1947 scoped_ptr<base::Value> document(
1948 test_util::LoadJSONFile("document_to_download.json"));
2005 SetExpectationsForGetDocumentEntry(&document, "file:2_file_resource_id"); 1949 SetExpectationsForGetDocumentEntry(&document, "file:2_file_resource_id");
2006 1950
2007 // The file is obtained with the mock DriveService. 1951 // The file is obtained with the mock DriveService.
2008 EXPECT_CALL(*mock_drive_service_, 1952 EXPECT_CALL(*mock_drive_service_,
2009 DownloadFile(file_in_root, 1953 DownloadFile(file_in_root,
2010 downloaded_file, 1954 downloaded_file,
2011 GURL("https://file_content_url_changed/"), 1955 GURL("https://file_content_url_changed/"),
2012 _, _)) 1956 _, _))
2013 .Times(1); 1957 .Times(1);
2014 1958
(...skipping 19 matching lines...) Expand all
2034 FilePath downloaded_file = GetCachePathForFile( 1978 FilePath downloaded_file = GetCachePathForFile(
2035 entry_proto->resource_id(), 1979 entry_proto->resource_id(),
2036 entry_proto->file_specific_info().file_md5()); 1980 entry_proto->file_specific_info().file_md5());
2037 1981
2038 // Pretend we have no space at all. 1982 // Pretend we have no space at all.
2039 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace()) 1983 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace())
2040 .Times(2).WillRepeatedly(Return(0)); 1984 .Times(2).WillRepeatedly(Return(0));
2041 1985
2042 // Before Download starts metadata from server will be fetched. 1986 // Before Download starts metadata from server will be fetched.
2043 // We will read content url from the result. 1987 // We will read content url from the result.
2044 scoped_ptr<base::Value> document(LoadJSONFile("document_to_download.json")); 1988 scoped_ptr<base::Value> document(
1989 test_util::LoadJSONFile("document_to_download.json"));
2045 SetExpectationsForGetDocumentEntry(&document, "file:2_file_resource_id"); 1990 SetExpectationsForGetDocumentEntry(&document, "file:2_file_resource_id");
2046 1991
2047 // The file is not obtained with the mock DriveService, because of no space. 1992 // The file is not obtained with the mock DriveService, because of no space.
2048 EXPECT_CALL(*mock_drive_service_, 1993 EXPECT_CALL(*mock_drive_service_,
2049 DownloadFile(file_in_root, 1994 DownloadFile(file_in_root,
2050 downloaded_file, 1995 downloaded_file,
2051 GURL("https://file_content_url_changed/"), 1996 GURL("https://file_content_url_changed/"),
2052 _, _)) 1997 _, _))
2053 .Times(0); 1998 .Times(0);
2054 1999
(...skipping 24 matching lines...) Expand all
2079 // the disk space was freed up by removing temporary files. 2024 // the disk space was freed up by removing temporary files.
2080 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace()) 2025 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace())
2081 .WillOnce(Return(file_size + kMinFreeSpace)) 2026 .WillOnce(Return(file_size + kMinFreeSpace))
2082 .WillOnce(Return(0)) 2027 .WillOnce(Return(0))
2083 .WillOnce(Return(file_size + kMinFreeSpace)) 2028 .WillOnce(Return(file_size + kMinFreeSpace))
2084 .WillOnce(Return(file_size + kMinFreeSpace)); 2029 .WillOnce(Return(file_size + kMinFreeSpace));
2085 2030
2086 // Store something in the temporary cache directory. 2031 // Store something in the temporary cache directory.
2087 TestStoreToCache("<resource_id>", 2032 TestStoreToCache("<resource_id>",
2088 "<md5>", 2033 "<md5>",
2089 GetTestFilePath("root_feed.json"), 2034 test_util::GetTestFilePath("root_feed.json"),
2090 DRIVE_FILE_OK, 2035 DRIVE_FILE_OK,
2091 test_util::TEST_CACHE_STATE_PRESENT, 2036 test_util::TEST_CACHE_STATE_PRESENT,
2092 DriveCache::CACHE_TYPE_TMP); 2037 DriveCache::CACHE_TYPE_TMP);
2093 ASSERT_TRUE(CacheEntryExists("<resource_id>", "<md5>")); 2038 ASSERT_TRUE(CacheEntryExists("<resource_id>", "<md5>"));
2094 ASSERT_TRUE(CacheFileExists("<resource_id>", "<md5>")); 2039 ASSERT_TRUE(CacheFileExists("<resource_id>", "<md5>"));
2095 2040
2096 // Before Download starts metadata from server will be fetched. 2041 // Before Download starts metadata from server will be fetched.
2097 // We will read content url from the result. 2042 // We will read content url from the result.
2098 scoped_ptr<base::Value> document(LoadJSONFile("document_to_download.json")); 2043 scoped_ptr<base::Value> document(
2044 test_util::LoadJSONFile("document_to_download.json"));
2099 SetExpectationsForGetDocumentEntry(&document, "file:2_file_resource_id"); 2045 SetExpectationsForGetDocumentEntry(&document, "file:2_file_resource_id");
2100 2046
2101 // The file is obtained with the mock DriveService, because of we freed up the 2047 // The file is obtained with the mock DriveService, because of we freed up the
2102 // space. 2048 // space.
2103 EXPECT_CALL(*mock_drive_service_, 2049 EXPECT_CALL(*mock_drive_service_,
2104 DownloadFile(file_in_root, 2050 DownloadFile(file_in_root,
2105 downloaded_file, 2051 downloaded_file,
2106 GURL("https://file_content_url_changed/"), 2052 GURL("https://file_content_url_changed/"),
2107 _, _)) 2053 _, _))
2108 .Times(1); 2054 .Times(1);
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
2140 // but then start reporting we have not enough space. This is to emulate that 2086 // but then start reporting we have not enough space. This is to emulate that
2141 // the disk space becomes full after the file is downloaded for some reason 2087 // the disk space becomes full after the file is downloaded for some reason
2142 // (ex. the actual file was larger than the expected size). 2088 // (ex. the actual file was larger than the expected size).
2143 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace()) 2089 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace())
2144 .WillOnce(Return(file_size + kMinFreeSpace)) 2090 .WillOnce(Return(file_size + kMinFreeSpace))
2145 .WillOnce(Return(kMinFreeSpace - 1)) 2091 .WillOnce(Return(kMinFreeSpace - 1))
2146 .WillOnce(Return(kMinFreeSpace - 1)); 2092 .WillOnce(Return(kMinFreeSpace - 1));
2147 2093
2148 // Before Download starts metadata from server will be fetched. 2094 // Before Download starts metadata from server will be fetched.
2149 // We will read content url from the result. 2095 // We will read content url from the result.
2150 scoped_ptr<base::Value> document(LoadJSONFile("document_to_download.json")); 2096 scoped_ptr<base::Value> document(
2097 test_util::LoadJSONFile("document_to_download.json"));
2151 SetExpectationsForGetDocumentEntry(&document, "file:2_file_resource_id"); 2098 SetExpectationsForGetDocumentEntry(&document, "file:2_file_resource_id");
2152 2099
2153 // The file is obtained with the mock DriveService. 2100 // The file is obtained with the mock DriveService.
2154 EXPECT_CALL(*mock_drive_service_, 2101 EXPECT_CALL(*mock_drive_service_,
2155 DownloadFile(file_in_root, 2102 DownloadFile(file_in_root,
2156 downloaded_file, 2103 downloaded_file,
2157 GURL("https://file_content_url_changed/"), 2104 GURL("https://file_content_url_changed/"),
2158 _, _)) 2105 _, _))
2159 .Times(1); 2106 .Times(1);
2160 2107
(...skipping 17 matching lines...) Expand all
2178 2125
2179 FilePath file_in_root(FILE_PATH_LITERAL("drive/File 1.txt")); 2126 FilePath file_in_root(FILE_PATH_LITERAL("drive/File 1.txt"));
2180 scoped_ptr<DriveEntryProto> entry_proto(GetEntryInfoByPathSync(file_in_root)); 2127 scoped_ptr<DriveEntryProto> entry_proto(GetEntryInfoByPathSync(file_in_root));
2181 FilePath downloaded_file = GetCachePathForFile( 2128 FilePath downloaded_file = GetCachePathForFile(
2182 entry_proto->resource_id(), 2129 entry_proto->resource_id(),
2183 entry_proto->file_specific_info().file_md5()); 2130 entry_proto->file_specific_info().file_md5());
2184 2131
2185 // Store something as cached version of this file. 2132 // Store something as cached version of this file.
2186 TestStoreToCache(entry_proto->resource_id(), 2133 TestStoreToCache(entry_proto->resource_id(),
2187 entry_proto->file_specific_info().file_md5(), 2134 entry_proto->file_specific_info().file_md5(),
2188 GetTestFilePath("root_feed.json"), 2135 test_util::GetTestFilePath("root_feed.json"),
2189 DRIVE_FILE_OK, 2136 DRIVE_FILE_OK,
2190 test_util::TEST_CACHE_STATE_PRESENT, 2137 test_util::TEST_CACHE_STATE_PRESENT,
2191 DriveCache::CACHE_TYPE_TMP); 2138 DriveCache::CACHE_TYPE_TMP);
2192 2139
2193 // Make sure we don't fetch metadata for downloading file. 2140 // Make sure we don't fetch metadata for downloading file.
2194 EXPECT_CALL(*mock_drive_service_, GetDocumentEntry(_, _)).Times(0); 2141 EXPECT_CALL(*mock_drive_service_, GetDocumentEntry(_, _)).Times(0);
2195 2142
2196 // Make sure we don't call downloads at all. 2143 // Make sure we don't call downloads at all.
2197 EXPECT_CALL(*mock_drive_service_, 2144 EXPECT_CALL(*mock_drive_service_,
2198 DownloadFile(file_in_root, 2145 DownloadFile(file_in_root,
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
2245 callback_helper_.get()); 2192 callback_helper_.get());
2246 2193
2247 FilePath file_in_root(FILE_PATH_LITERAL("drive/File 1.txt")); 2194 FilePath file_in_root(FILE_PATH_LITERAL("drive/File 1.txt"));
2248 scoped_ptr<DriveEntryProto> entry_proto(GetEntryInfoByPathSync(file_in_root)); 2195 scoped_ptr<DriveEntryProto> entry_proto(GetEntryInfoByPathSync(file_in_root));
2249 FilePath downloaded_file = GetCachePathForFile( 2196 FilePath downloaded_file = GetCachePathForFile(
2250 entry_proto->resource_id(), 2197 entry_proto->resource_id(),
2251 entry_proto->file_specific_info().file_md5()); 2198 entry_proto->file_specific_info().file_md5());
2252 2199
2253 // Before Download starts metadata from server will be fetched. 2200 // Before Download starts metadata from server will be fetched.
2254 // We will read content url from the result. 2201 // We will read content url from the result.
2255 scoped_ptr<base::Value> document(LoadJSONFile("document_to_download.json")); 2202 scoped_ptr<base::Value> document(
2203 test_util::LoadJSONFile("document_to_download.json"));
2256 SetExpectationsForGetDocumentEntry(&document, "file:2_file_resource_id"); 2204 SetExpectationsForGetDocumentEntry(&document, "file:2_file_resource_id");
2257 2205
2258 // The file is obtained with the mock DriveService, because it's not stored in 2206 // The file is obtained with the mock DriveService, because it's not stored in
2259 // the cache. 2207 // the cache.
2260 EXPECT_CALL(*mock_drive_service_, 2208 EXPECT_CALL(*mock_drive_service_,
2261 DownloadFile(file_in_root, 2209 DownloadFile(file_in_root,
2262 downloaded_file, 2210 downloaded_file,
2263 GURL("https://file_content_url_changed/"), 2211 GURL("https://file_content_url_changed/"),
2264 _, _)) 2212 _, _))
2265 .Times(1); 2213 .Times(1);
(...skipping 20 matching lines...) Expand all
2286 2234
2287 FilePath file_in_root(FILE_PATH_LITERAL("drive/File 1.txt")); 2235 FilePath file_in_root(FILE_PATH_LITERAL("drive/File 1.txt"));
2288 scoped_ptr<DriveEntryProto> entry_proto(GetEntryInfoByPathSync(file_in_root)); 2236 scoped_ptr<DriveEntryProto> entry_proto(GetEntryInfoByPathSync(file_in_root));
2289 FilePath downloaded_file = GetCachePathForFile( 2237 FilePath downloaded_file = GetCachePathForFile(
2290 entry_proto->resource_id(), 2238 entry_proto->resource_id(),
2291 entry_proto->file_specific_info().file_md5()); 2239 entry_proto->file_specific_info().file_md5());
2292 2240
2293 // Store something as cached version of this file. 2241 // Store something as cached version of this file.
2294 TestStoreToCache(entry_proto->resource_id(), 2242 TestStoreToCache(entry_proto->resource_id(),
2295 entry_proto->file_specific_info().file_md5(), 2243 entry_proto->file_specific_info().file_md5(),
2296 GetTestFilePath("root_feed.json"), 2244 test_util::GetTestFilePath("root_feed.json"),
2297 DRIVE_FILE_OK, 2245 DRIVE_FILE_OK,
2298 test_util::TEST_CACHE_STATE_PRESENT, 2246 test_util::TEST_CACHE_STATE_PRESENT,
2299 DriveCache::CACHE_TYPE_TMP); 2247 DriveCache::CACHE_TYPE_TMP);
2300 2248
2301 // The file is obtained from the cache. 2249 // The file is obtained from the cache.
2302 // Make sure we don't call downloads at all. 2250 // Make sure we don't call downloads at all.
2303 EXPECT_CALL(*mock_drive_service_, DownloadFile(_, _, _, _, _)) 2251 EXPECT_CALL(*mock_drive_service_, DownloadFile(_, _, _, _, _))
2304 .Times(0); 2252 .Times(0);
2305 2253
2306 file_system_->GetFileByResourceId(entry_proto->resource_id(), 2254 file_system_->GetFileByResourceId(entry_proto->resource_id(),
(...skipping 26 matching lines...) Expand all
2333 DriveCache::CACHE_TYPE_TMP); 2281 DriveCache::CACHE_TYPE_TMP);
2334 2282
2335 // First store a file to cache. A cache file will be created at: 2283 // First store a file to cache. A cache file will be created at:
2336 // GCache/v1/persistent/<kResourceId>.<kMd5> 2284 // GCache/v1/persistent/<kResourceId>.<kMd5>
2337 const FilePath original_cache_file_path = 2285 const FilePath original_cache_file_path =
2338 DriveCache::GetCacheRootPath(profile_.get()) 2286 DriveCache::GetCacheRootPath(profile_.get())
2339 .AppendASCII("persistent") 2287 .AppendASCII("persistent")
2340 .AppendASCII(kResourceId + "." + kMd5); 2288 .AppendASCII(kResourceId + "." + kMd5);
2341 TestStoreToCache(kResourceId, 2289 TestStoreToCache(kResourceId,
2342 kMd5, 2290 kMd5,
2343 GetTestFilePath("root_feed.json"), // Anything works. 2291 // Anything works.
2292 test_util::GetTestFilePath("root_feed.json"),
2344 DRIVE_FILE_OK, 2293 DRIVE_FILE_OK,
2345 test_util::TEST_CACHE_STATE_PRESENT | 2294 test_util::TEST_CACHE_STATE_PRESENT |
2346 test_util::TEST_CACHE_STATE_PINNED | 2295 test_util::TEST_CACHE_STATE_PINNED |
2347 test_util::TEST_CACHE_STATE_PERSISTENT, 2296 test_util::TEST_CACHE_STATE_PERSISTENT,
2348 DriveCache::CACHE_TYPE_PERSISTENT); 2297 DriveCache::CACHE_TYPE_PERSISTENT);
2349 ASSERT_TRUE(file_util::PathExists(original_cache_file_path)); 2298 ASSERT_TRUE(file_util::PathExists(original_cache_file_path));
2350 2299
2351 // Add the dirty bit. The cache file will be renamed to 2300 // Add the dirty bit. The cache file will be renamed to
2352 // GCache/v1/persistent/<kResourceId>.local 2301 // GCache/v1/persistent/<kResourceId>.local
2353 TestMarkDirty(kResourceId, 2302 TestMarkDirty(kResourceId,
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
2387 DriveCache::GetCacheRootPath(profile_.get()) 2336 DriveCache::GetCacheRootPath(profile_.get())
2388 .AppendASCII("outgoing") 2337 .AppendASCII("outgoing")
2389 .AppendASCII(kResourceId); 2338 .AppendASCII(kResourceId);
2390 ASSERT_TRUE(file_util::PathExists(dirty_cache_file_path)); 2339 ASSERT_TRUE(file_util::PathExists(dirty_cache_file_path));
2391 ASSERT_TRUE(file_util::PathExists(outgoing_symlink_path)); 2340 ASSERT_TRUE(file_util::PathExists(outgoing_symlink_path));
2392 2341
2393 // Create a DocumentEntry, which is needed to mock 2342 // Create a DocumentEntry, which is needed to mock
2394 // GDataUploaderInterface::UploadExistingFile(). 2343 // GDataUploaderInterface::UploadExistingFile().
2395 // TODO(satorux): This should be cleaned up. crbug.com/134240. 2344 // TODO(satorux): This should be cleaned up. crbug.com/134240.
2396 DocumentEntry* document_entry = NULL; 2345 DocumentEntry* document_entry = NULL;
2397 scoped_ptr<base::Value> value(LoadJSONFile("root_feed.json")); 2346 scoped_ptr<base::Value> value(test_util::LoadJSONFile("root_feed.json"));
2398 ASSERT_TRUE(value.get()); 2347 ASSERT_TRUE(value.get());
2399 base::DictionaryValue* as_dict = NULL; 2348 base::DictionaryValue* as_dict = NULL;
2400 base::ListValue* entry_list = NULL; 2349 base::ListValue* entry_list = NULL;
2401 if (value->GetAsDictionary(&as_dict) && 2350 if (value->GetAsDictionary(&as_dict) &&
2402 as_dict->GetList("feed.entry", &entry_list)) { 2351 as_dict->GetList("feed.entry", &entry_list)) {
2403 for (size_t i = 0; i < entry_list->GetSize(); ++i) { 2352 for (size_t i = 0; i < entry_list->GetSize(); ++i) {
2404 base::DictionaryValue* entry = NULL; 2353 base::DictionaryValue* entry = NULL;
2405 std::string resource_id; 2354 std::string resource_id;
2406 if (entry_list->GetDictionary(i, &entry) && 2355 if (entry_list->GetDictionary(i, &entry) &&
2407 entry->GetString("gd$resourceId.$t", &resource_id) && 2356 entry->GetString("gd$resourceId.$t", &resource_id) &&
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after
2600 2549
2601 // Pretend we have enough space. 2550 // Pretend we have enough space.
2602 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace()) 2551 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace())
2603 .Times(2).WillRepeatedly(Return(file_size + kMinFreeSpace)); 2552 .Times(2).WillRepeatedly(Return(file_size + kMinFreeSpace));
2604 2553
2605 const std::string kExpectedFileData = "test file data"; 2554 const std::string kExpectedFileData = "test file data";
2606 mock_drive_service_->set_file_data(new std::string(kExpectedFileData)); 2555 mock_drive_service_->set_file_data(new std::string(kExpectedFileData));
2607 2556
2608 // Before Download starts metadata from server will be fetched. 2557 // Before Download starts metadata from server will be fetched.
2609 // We will read content url from the result. 2558 // We will read content url from the result.
2610 scoped_ptr<base::Value> document(LoadJSONFile("document_to_download.json")); 2559 scoped_ptr<base::Value> document(
2560 test_util::LoadJSONFile("document_to_download.json"));
2611 SetExpectationsForGetDocumentEntry(&document, "file:2_file_resource_id"); 2561 SetExpectationsForGetDocumentEntry(&document, "file:2_file_resource_id");
2612 2562
2613 // The file is obtained with the mock DriveService. 2563 // The file is obtained with the mock DriveService.
2614 EXPECT_CALL(*mock_drive_service_, 2564 EXPECT_CALL(*mock_drive_service_,
2615 DownloadFile(kFileInRoot, 2565 DownloadFile(kFileInRoot,
2616 downloaded_file, 2566 downloaded_file,
2617 GURL("https://file_content_url_changed/"), 2567 GURL("https://file_content_url_changed/"),
2618 _, _)) 2568 _, _))
2619 .Times(1); 2569 .Times(1);
2620 2570
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
2658 2608
2659 // Try to close the same file twice. 2609 // Try to close the same file twice.
2660 file_system_->CloseFile(kFileInRoot, close_file_callback); 2610 file_system_->CloseFile(kFileInRoot, close_file_callback);
2661 message_loop_.Run(); 2611 message_loop_.Run();
2662 2612
2663 // It must fail. 2613 // It must fail.
2664 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, callback_helper_->last_error_); 2614 EXPECT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, callback_helper_->last_error_);
2665 } 2615 }
2666 2616
2667 } // namespace gdata 2617 } // namespace gdata
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698