Chromium Code Reviews| 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 #ifndef CHROME_BROWSER_CHROMEOS_GDATA_GDATA_FILE_SYSTEM_H_ | 5 #ifndef CHROME_BROWSER_CHROMEOS_GDATA_GDATA_FILE_SYSTEM_H_ |
| 6 #define CHROME_BROWSER_CHROMEOS_GDATA_GDATA_FILE_SYSTEM_H_ | 6 #define CHROME_BROWSER_CHROMEOS_GDATA_GDATA_FILE_SYSTEM_H_ |
| 7 | 7 |
| 8 #include <map> | 8 #include <map> |
| 9 | 9 |
| 10 #include "base/gtest_prod_util.h" | 10 #include "base/gtest_prod_util.h" |
| (...skipping 19 matching lines...) Expand all Loading... | |
| 30 class GDataFileBase { | 30 class GDataFileBase { |
| 31 public: | 31 public: |
| 32 explicit GDataFileBase(GDataDirectory* parent); | 32 explicit GDataFileBase(GDataDirectory* parent); |
| 33 virtual ~GDataFileBase(); | 33 virtual ~GDataFileBase(); |
| 34 // Converts DocumentEntry into GDataFileBase. | 34 // Converts DocumentEntry into GDataFileBase. |
| 35 static GDataFileBase* FromDocumentEntry(GDataDirectory* parent, | 35 static GDataFileBase* FromDocumentEntry(GDataDirectory* parent, |
| 36 DocumentEntry* doc); | 36 DocumentEntry* doc); |
| 37 virtual GDataFile* AsGDataFile(); | 37 virtual GDataFile* AsGDataFile(); |
| 38 virtual GDataDirectory* AsGDataDirectory(); | 38 virtual GDataDirectory* AsGDataDirectory(); |
| 39 GDataDirectory* parent() { return parent_; } | 39 GDataDirectory* parent() { return parent_; } |
| 40 const GURL& content_url() const { return content_url_; } | |
| 41 const base::PlatformFileInfo& file_info() const { return file_info_; } | 40 const base::PlatformFileInfo& file_info() const { return file_info_; } |
| 42 const FilePath::StringType& file_name() const { return file_name_; } | 41 const FilePath::StringType& file_name() const { return file_name_; } |
| 43 const FilePath::StringType& original_file_name() const { | 42 const FilePath::StringType& original_file_name() const { |
| 44 return original_file_name_; | 43 return original_file_name_; |
| 45 } | 44 } |
| 46 void set_file_name(const FilePath::StringType& name) { file_name_ = name; } | 45 void set_file_name(const FilePath::StringType& name) { file_name_ = name; } |
| 46 | |
| 47 // The content URL is used for downloading regular files as is. | |
| 48 // TODO(zelidrag): Will give better description when reviewing code. | |
|
zel
2012/03/02 23:44:04
i am ok with this descirption
satorux1
2012/03/03 00:39:10
Done.
| |
| 49 const GURL& content_url() const { return content_url_; } | |
| 50 | |
| 51 // The self URL is used for removing files and hosted documents. | |
| 52 // TODO(zelidrag): Will give better description when reviewing code. | |
|
zel
2012/03/02 23:44:04
same here
satorux1
2012/03/03 00:39:10
Done.
| |
| 47 const GURL& self_url() const { return self_url_; } | 53 const GURL& self_url() const { return self_url_; } |
| 54 | |
| 48 // Returns virtual file path representing this file system entry. This path | 55 // Returns virtual file path representing this file system entry. This path |
| 49 // corresponds to file path expected by public methods of GDataFileSyste | 56 // corresponds to file path expected by public methods of GDataFileSyste |
| 50 // class. | 57 // class. |
| 51 FilePath GetFilePath(); | 58 FilePath GetFilePath(); |
| 52 | 59 |
| 53 protected: | 60 protected: |
| 54 base::PlatformFileInfo file_info_; | 61 base::PlatformFileInfo file_info_; |
| 55 FilePath::StringType file_name_; | 62 FilePath::StringType file_name_; |
| 56 FilePath::StringType original_file_name_; | 63 FilePath::StringType original_file_name_; |
| 57 // Files with the same original name will be uniquely identified with this | 64 // Files with the same original name will be uniquely identified with this |
| (...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 230 ~FindFileParams(); | 237 ~FindFileParams(); |
| 231 | 238 |
| 232 const FilePath file_path; | 239 const FilePath file_path; |
| 233 const bool require_content; | 240 const bool require_content; |
| 234 const FilePath directory_path; | 241 const FilePath directory_path; |
| 235 const GURL feed_url; | 242 const GURL feed_url; |
| 236 const bool initial_feed; | 243 const bool initial_feed; |
| 237 const scoped_refptr<FindFileDelegate> delegate; | 244 const scoped_refptr<FindFileDelegate> delegate; |
| 238 }; | 245 }; |
| 239 | 246 |
| 247 // Used for file operations like removing files. | |
| 240 typedef base::Callback<void(base::PlatformFileError error)> | 248 typedef base::Callback<void(base::PlatformFileError error)> |
| 241 FileOperationCallback; | 249 FileOperationCallback; |
| 242 | 250 |
| 251 // Used to get files from the file system. | |
| 252 typedef base::Callback<void(base::PlatformFileError error, | |
| 253 const FilePath& file_path)> | |
| 254 GetFileCallback; | |
| 255 | |
| 243 // ProfileKeyedService override: | 256 // ProfileKeyedService override: |
| 244 virtual void Shutdown() OVERRIDE; | 257 virtual void Shutdown() OVERRIDE; |
| 245 | 258 |
| 246 // Authenticates the user by fetching the auth token as | 259 // Authenticates the user by fetching the auth token as |
| 247 // needed. |callback| will be run with the error code and the auth | 260 // needed. |callback| will be run with the error code and the auth |
| 248 // token, on the thread this function is run. | 261 // token, on the thread this function is run. |
| 249 // | 262 // |
| 250 // Must be called on UI thread. | 263 // Must be called on UI thread. |
| 251 void Authenticate(const AuthStatusCallback& callback); | 264 void Authenticate(const AuthStatusCallback& callback); |
| 252 | 265 |
| (...skipping 24 matching lines...) Expand all Loading... | |
| 277 // an error is raised in case a directory is already present at the | 290 // an error is raised in case a directory is already present at the |
| 278 // |directory_path|. If |is_recursive| is true, the call creates parent | 291 // |directory_path|. If |is_recursive| is true, the call creates parent |
| 279 // directories as needed just like mkdir -p does. | 292 // directories as needed just like mkdir -p does. |
| 280 // | 293 // |
| 281 // Can be called from any thread. |callback| is run on the calling thread. | 294 // Can be called from any thread. |callback| is run on the calling thread. |
| 282 void CreateDirectory(const FilePath& directory_path, | 295 void CreateDirectory(const FilePath& directory_path, |
| 283 bool is_exclusive, | 296 bool is_exclusive, |
| 284 bool is_recursive, | 297 bool is_recursive, |
| 285 const FileOperationCallback& callback); | 298 const FileOperationCallback& callback); |
| 286 | 299 |
| 287 // Initiates directory feed fetching operation and continues previously | 300 // Gets |file_path| from the file system. The file entry represented by |
| 301 // |file_path| needs to be present in in-memory representation of the file | |
| 302 // system in order to be retrieved. If the file is not cached, the file | |
| 303 // will be downloaded through gdata api. | |
| 304 // | |
| 305 // Can be called from any thread. |callback| is run on the calling thread. | |
| 306 void GetFile(const FilePath& file_path, const GetFileCallback& callback); | |
| 307 | |
| 288 // initiated FindFileByPath() attempt upon its completion. Safe to be called | 308 // initiated FindFileByPath() attempt upon its completion. Safe to be called |
| 289 // from any thread. Internally, it will route content refresh request to | 309 // from any thread. Internally, it will route content refresh request to |
| 290 // DocumentsService::GetDocuments() which will initiated content | 310 // DocumentsService::GetDocuments() which will initiated content |
| 291 // fetching from UI thread as required by gdata library (UrlFetcher). | 311 // fetching from UI thread as required by gdata library (UrlFetcher). |
| 292 // | 312 // |
| 293 // Can be called from any thread. | 313 // Can be called from any thread. |
| 294 void StartDirectoryRefresh(const FindFileParams& params); | 314 void StartDirectoryRefresh(const FindFileParams& params); |
| 295 | 315 |
| 316 // Finds file object by |file_path| and returns the file info. | |
| 317 // Returns NULL if it does not find the file. | |
| 318 GDataFileBase* GetGDataFileInfoFromPath(const FilePath& file_path); | |
| 319 | |
| 296 private: | 320 private: |
| 297 friend class GDataFileSystemFactory; | 321 friend class GDataFileSystemFactory; |
| 298 friend class GDataFileSystemTest; | 322 friend class GDataFileSystemTest; |
| 299 FRIEND_TEST_ALL_PREFIXES(GDataFileSystemTest, | 323 FRIEND_TEST_ALL_PREFIXES(GDataFileSystemTest, |
| 300 FindFirstMissingParentDirectory); | 324 FindFirstMissingParentDirectory); |
| 301 | 325 |
| 302 // Defines possible search results of FindFirstMissingParentDirectory(). | 326 // Defines possible search results of FindFirstMissingParentDirectory(). |
| 303 enum FindMissingDirectoryResult { | 327 enum FindMissingDirectoryResult { |
| 304 // Target directory found, it's not a directory. | 328 // Target directory found, it's not a directory. |
| 305 FOUND_INVALID, | 329 FOUND_INVALID, |
| (...skipping 22 matching lines...) Expand all Loading... | |
| 328 scoped_refptr<base::MessageLoopProxy> proxy; | 352 scoped_refptr<base::MessageLoopProxy> proxy; |
| 329 }; | 353 }; |
| 330 | 354 |
| 331 explicit GDataFileSystem(Profile* profile); | 355 explicit GDataFileSystem(Profile* profile); |
| 332 virtual ~GDataFileSystem(); | 356 virtual ~GDataFileSystem(); |
| 333 | 357 |
| 334 // Unsafe (unlocked) version of the function above. | 358 // Unsafe (unlocked) version of the function above. |
| 335 void UnsafeFindFileByPath(const FilePath& file_path, | 359 void UnsafeFindFileByPath(const FilePath& file_path, |
| 336 scoped_refptr<FindFileDelegate> delegate); | 360 scoped_refptr<FindFileDelegate> delegate); |
| 337 | 361 |
| 338 // Finds file object by |file_path| and returns its gdata self-url. | |
| 339 // Returns empty GURL if it does not find the file. | |
| 340 GURL GetDocumentUrlFromPath(const FilePath& file_path); | |
| 341 | |
| 342 // Converts document feed from gdata service into DirectoryInfo. On failure, | 362 // Converts document feed from gdata service into DirectoryInfo. On failure, |
| 343 // returns NULL and fills in |error| with an appropriate value. | 363 // returns NULL and fills in |error| with an appropriate value. |
| 344 GDataDirectory* ParseGDataFeed(GDataErrorCode status, | 364 GDataDirectory* ParseGDataFeed(GDataErrorCode status, |
| 345 base::Value* data, | 365 base::Value* data, |
| 346 base::PlatformFileError *error); | 366 base::PlatformFileError *error); |
| 347 | 367 |
| 348 // Callback for handling feed content fetching while searching for file info. | 368 // Callback for handling feed content fetching while searching for file info. |
| 349 // This callback is invoked after async feed fetch operation that was | 369 // This callback is invoked after async feed fetch operation that was |
| 350 // invoked by StartDirectoryRefresh() completes. This callback will update | 370 // invoked by StartDirectoryRefresh() completes. This callback will update |
| 351 // the content of the refreshed directory object and continue initially | 371 // the content of the refreshed directory object and continue initially |
| (...skipping 10 matching lines...) Expand all Loading... | |
| 362 scoped_refptr<base::MessageLoopProxy> message_loop_proxy, | 382 scoped_refptr<base::MessageLoopProxy> message_loop_proxy, |
| 363 GDataErrorCode status, | 383 GDataErrorCode status, |
| 364 const GURL& document_url); | 384 const GURL& document_url); |
| 365 | 385 |
| 366 // Callback for handling directory create requests. | 386 // Callback for handling directory create requests. |
| 367 void OnCreateDirectoryCompleted( | 387 void OnCreateDirectoryCompleted( |
| 368 const CreateDirectoryParams& params, | 388 const CreateDirectoryParams& params, |
| 369 GDataErrorCode status, | 389 GDataErrorCode status, |
| 370 base::Value* created_entry); | 390 base::Value* created_entry); |
| 371 | 391 |
| 392 // Callback for handling file downloading requests. | |
| 393 void OnFileDownloaded( | |
| 394 const GetFileCallback& callback, | |
| 395 scoped_refptr<base::MessageLoopProxy> message_loop_proxy, | |
| 396 GDataErrorCode status, | |
| 397 const GURL& content_url, | |
| 398 const FilePath& temp_file); | |
| 399 | |
| 372 // Removes file under |file_path| from in-memory snapshot of the file system. | 400 // Removes file under |file_path| from in-memory snapshot of the file system. |
| 373 // Return PLATFORM_FILE_OK if successful. | 401 // Return PLATFORM_FILE_OK if successful. |
| 374 base::PlatformFileError RemoveFileFromFileSystem(const FilePath& file_path); | 402 base::PlatformFileError RemoveFileFromFileSystem(const FilePath& file_path); |
| 375 | 403 |
| 376 // Updates content of the directory identified with |directory_path|. If the | 404 // Updates content of the directory identified with |directory_path|. If the |
| 377 // feed was not complete, it will return URL for the remaining portion in | 405 // feed was not complete, it will return URL for the remaining portion in |
| 378 // |next_feed|. On success, returns PLATFORM_FILE_OK. | 406 // |next_feed|. On success, returns PLATFORM_FILE_OK. |
| 379 base::PlatformFileError UpdateDirectoryWithDocumentFeed( | 407 base::PlatformFileError UpdateDirectoryWithDocumentFeed( |
| 380 const FilePath& directory_path, | 408 const FilePath& directory_path, |
| 381 const GURL& feed_url, | 409 const GURL& feed_url, |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 436 virtual ~GDataFileSystemFactory(); | 464 virtual ~GDataFileSystemFactory(); |
| 437 | 465 |
| 438 // ProfileKeyedServiceFactory: | 466 // ProfileKeyedServiceFactory: |
| 439 virtual ProfileKeyedService* BuildServiceInstanceFor( | 467 virtual ProfileKeyedService* BuildServiceInstanceFor( |
| 440 Profile* profile) const OVERRIDE; | 468 Profile* profile) const OVERRIDE; |
| 441 }; | 469 }; |
| 442 | 470 |
| 443 } // namespace gdata | 471 } // namespace gdata |
| 444 | 472 |
| 445 #endif // CHROME_BROWSER_CHROMEOS_GDATA_GDATA_FILE_SYSTEM_H_ | 473 #endif // CHROME_BROWSER_CHROMEOS_GDATA_GDATA_FILE_SYSTEM_H_ |
| OLD | NEW |