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

Side by Side Diff: chrome/browser/chromeos/gdata/gdata_files.h

Issue 10829277: GDataFileSystem is no longer a friend of GDataDirectory. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: NotifyAndRunFileMoveCallback needs to accept null callback Created 8 years, 4 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 #ifndef CHROME_BROWSER_CHROMEOS_GDATA_GDATA_FILES_H_ 5 #ifndef CHROME_BROWSER_CHROMEOS_GDATA_GDATA_FILES_H_
6 #define CHROME_BROWSER_CHROMEOS_GDATA_GDATA_FILES_H_ 6 #define CHROME_BROWSER_CHROMEOS_GDATA_GDATA_FILES_H_
7 7
8 #include <map> 8 #include <map>
9 #include <string> 9 #include <string>
10 #include <vector>
10 11
11 #include "base/callback.h" 12 #include "base/callback.h"
12 #include "base/gtest_prod_util.h" 13 #include "base/gtest_prod_util.h"
13 #include "base/memory/scoped_ptr.h" 14 #include "base/memory/scoped_ptr.h"
14 #include "base/memory/singleton.h" 15 #include "base/memory/singleton.h"
15 #include "base/memory/weak_ptr.h" 16 #include "base/memory/weak_ptr.h"
16 #include "base/platform_file.h" 17 #include "base/platform_file.h"
17 #include "base/synchronization/lock.h" 18 #include "base/synchronization/lock.h"
18 #include "chrome/browser/chromeos/gdata/gdata_uploader.h" 19 #include "chrome/browser/chromeos/gdata/gdata_uploader.h"
19 #include "chrome/browser/chromeos/gdata/gdata_wapi_parser.h" 20 #include "chrome/browser/chromeos/gdata/gdata_wapi_parser.h"
(...skipping 302 matching lines...) Expand 10 before | Expand all | Expand 10 after
322 323
323 // Collection of children files/directories. 324 // Collection of children files/directories.
324 const GDataFileCollection& child_files() const { return child_files_; } 325 const GDataFileCollection& child_files() const { return child_files_; }
325 const GDataDirectoryCollection& child_directories() const { 326 const GDataDirectoryCollection& child_directories() const {
326 return child_directories_; 327 return child_directories_;
327 } 328 }
328 329
329 private: 330 private:
330 // TODO(satorux): Remove the friend statements. crbug.com/139649 331 // TODO(satorux): Remove the friend statements. crbug.com/139649
331 friend class GDataDirectoryService; 332 friend class GDataDirectoryService;
332 friend class GDataFileSystem;
333 friend class GDataWapiFeedProcessor; 333 friend class GDataWapiFeedProcessor;
334 334
335 explicit GDataDirectory(GDataDirectoryService* directory_service); 335 explicit GDataDirectory(GDataDirectoryService* directory_service);
336 336
337 // Initializes from DocumentEntry. 337 // Initializes from DocumentEntry.
338 virtual void InitFromDocumentEntry(DocumentEntry* doc) OVERRIDE; 338 virtual void InitFromDocumentEntry(DocumentEntry* doc) OVERRIDE;
339 339
340 virtual GDataDirectory* AsGDataDirectory() OVERRIDE; 340 virtual GDataDirectory* AsGDataDirectory() OVERRIDE;
341 341
342 // Adds child file to the directory and takes over the ownership of |file| 342 // Adds child file to the directory and takes over the ownership of |file|
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
380 // TODO(achuith,hashimoto,satorux): Move this to a separate file. 380 // TODO(achuith,hashimoto,satorux): Move this to a separate file.
381 // crbug.com/140317. 381 // crbug.com/140317.
382 // Class to handle GDataEntry* lookups, add/remove GDataEntry*. 382 // Class to handle GDataEntry* lookups, add/remove GDataEntry*.
383 class GDataDirectoryService { 383 class GDataDirectoryService {
384 public: 384 public:
385 // Callback for GetEntryByResourceIdAsync. 385 // Callback for GetEntryByResourceIdAsync.
386 typedef base::Callback<void(GDataEntry* entry)> GetEntryByResourceIdCallback; 386 typedef base::Callback<void(GDataEntry* entry)> GetEntryByResourceIdCallback;
387 387
388 // Map of resource id and serialized GDataEntry. 388 // Map of resource id and serialized GDataEntry.
389 typedef std::map<std::string, std::string> SerializedMap; 389 typedef std::map<std::string, std::string> SerializedMap;
390 // Map of resource id strings to GDataEntry*.
391 typedef std::map<std::string, GDataEntry*> ResourceMap;
390 392
391 GDataDirectoryService(); 393 GDataDirectoryService();
392 ~GDataDirectoryService(); 394 ~GDataDirectoryService();
393 395
394 GDataDirectory* root() { return root_.get(); } 396 GDataDirectory* root() { return root_.get(); }
395 397
396 // Last time when we dumped serialized file system to disk. 398 // Last time when we dumped serialized file system to disk.
397 const base::Time& last_serialized() const { return last_serialized_; } 399 const base::Time& last_serialized() const { return last_serialized_; }
398 void set_last_serialized(const base::Time& time) { last_serialized_ = time; } 400 void set_last_serialized(const base::Time& time) { last_serialized_ = time; }
399 // Size of serialized file system on disk in bytes. 401 // Size of serialized file system on disk in bytes.
(...skipping 14 matching lines...) Expand all
414 416
415 // Creates a GDataFile instance. 417 // Creates a GDataFile instance.
416 GDataFile* CreateGDataFile(); 418 GDataFile* CreateGDataFile();
417 419
418 // Creates a GDataDirectory instance. 420 // Creates a GDataDirectory instance.
419 GDataDirectory* CreateGDataDirectory(); 421 GDataDirectory* CreateGDataDirectory();
420 422
421 // Sets root directory resource id and initialize the root entry. 423 // Sets root directory resource id and initialize the root entry.
422 void InitializeRootEntry(const std::string& root_id); 424 void InitializeRootEntry(const std::string& root_id);
423 425
424 // Move |entry| to |directory_path| asynchronously. Removes entry from 426 // Add |new entry| to |directory| and invoke the callback asynchronously.
427 // |callback| may not be null.
428 // TODO(achuith,satorux): Use GDataEntryProto instead for new_entry.
429 // crbug.com/142048
430 void AddEntryToDirectory(GDataDirectory* directory,
431 GDataEntry* new_entry,
432 const FileMoveCallback& callback);
433
434 // Moves |entry| to |directory_path| asynchronously. Removes entry from
425 // previous parent. Must be called on UI thread. |callback| is called on the 435 // previous parent. Must be called on UI thread. |callback| is called on the
426 // UI thread. 436 // UI thread. |callback| may not be null.
427 void MoveEntryToDirectory(const FilePath& directory_path, 437 void MoveEntryToDirectory(const FilePath& directory_path,
428 GDataEntry* entry, 438 GDataEntry* entry,
429 const FileMoveCallback& callback); 439 const FileMoveCallback& callback);
430 440
441 // Removes |entry| from its parent. Calls |callback| with the path of the
442 // parent directory. |callback| may not be null.
443 void RemoveEntryFromParent(GDataEntry* entry,
444 const FileMoveCallback& callback);
445
431 // Adds the entry to resource map. 446 // Adds the entry to resource map.
432 void AddEntryToResourceMap(GDataEntry* entry); 447 void AddEntryToResourceMap(GDataEntry* entry);
433 448
434 // Removes the entry from resource map. 449 // Removes the entry from resource map.
435 void RemoveEntryFromResourceMap(GDataEntry* entry); 450 void RemoveEntryFromResourceMap(GDataEntry* entry);
436 451
437 // Searches for |file_path| synchronously. 452 // Searches for |file_path| synchronously.
438 // TODO(satorux): Replace this with an async version crbug.com/137160 453 // TODO(satorux): Replace this with an async version crbug.com/137160
439 GDataEntry* FindEntryByPathSync(const FilePath& file_path); 454 GDataEntry* FindEntryByPathSync(const FilePath& file_path);
440 455
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
472 // Must be called from UI thread. |callback| is run on UI thread. 487 // Must be called from UI thread. |callback| is run on UI thread.
473 void GetEntryInfoPairByPaths( 488 void GetEntryInfoPairByPaths(
474 const FilePath& first_path, 489 const FilePath& first_path,
475 const FilePath& second_path, 490 const FilePath& second_path,
476 const GetEntryInfoPairCallback& callback); 491 const GetEntryInfoPairCallback& callback);
477 492
478 // Replaces file entry with the same resource id as |fresh_file| with its 493 // Replaces file entry with the same resource id as |fresh_file| with its
479 // fresh value |fresh_file|. 494 // fresh value |fresh_file|.
480 void RefreshFile(scoped_ptr<GDataFile> fresh_file); 495 void RefreshFile(scoped_ptr<GDataFile> fresh_file);
481 496
482 // Replaces file entry |old_entry| with its fresh value |fresh_file|. 497 // Removes all child files of |directory| and replace with file_map.
483 static void RefreshFileInternal(scoped_ptr<GDataFile> fresh_file, 498 // |callback| is called with the directory path. |callback| may not be null.
484 GDataEntry* old_entry); 499 void RefreshDirectory(const std::string& directory_resource_id,
500 const ResourceMap& file_map,
501 const FileMoveCallback& callback);
485 502
486 // Serializes/Parses to/from string via proto classes. 503 // Serializes/Parses to/from string via proto classes.
487 void SerializeToString(std::string* serialized_proto) const; 504 void SerializeToString(std::string* serialized_proto) const;
488 bool ParseFromString(const std::string& serialized_proto); 505 bool ParseFromString(const std::string& serialized_proto);
489 506
490 // Restores from and saves to database. 507 // Restores from and saves to database.
491 void InitFromDB(const FilePath& db_path, 508 void InitFromDB(const FilePath& db_path,
492 base::SequencedTaskRunner* blocking_task_runner, 509 base::SequencedTaskRunner* blocking_task_runner,
493 const FileOperationCallback& callback); 510 const FileOperationCallback& callback);
494 void SaveToDB(); 511 void SaveToDB();
495 512
496 private: 513 private:
497 // A map table of file's resource string to its GDataFile* entry.
498 typedef std::map<std::string, GDataEntry*> ResourceMap;
499
500 // Initializes the resource map using serialized_resources fetched from the 514 // Initializes the resource map using serialized_resources fetched from the
501 // database. 515 // database.
502 void InitResourceMap(CreateDBParams* create_params, 516 void InitResourceMap(CreateDBParams* create_params,
503 const FileOperationCallback& callback); 517 const FileOperationCallback& callback);
504 518
505 // Clears root_ and the resource map. 519 // Clears root_ and the resource map.
506 void ClearRoot(); 520 void ClearRoot();
507 521
508 // Creates GDataEntry from serialized string. 522 // Creates GDataEntry from serialized string.
509 scoped_ptr<GDataEntry> FromProtoString( 523 scoped_ptr<GDataEntry> FromProtoString(
510 const std::string& serialized_proto); 524 const std::string& serialized_proto);
511 525
512 // ... 526 // Continues with GetEntryInfoPairByPaths after the first GDataEntry has been
527 // asynchronously fetched. This fetches the second GDataEntry only if the
528 // first was found.
513 void GetEntryInfoPairByPathsAfterGetFirst( 529 void GetEntryInfoPairByPathsAfterGetFirst(
514 const FilePath& first_path, 530 const FilePath& first_path,
515 const FilePath& second_path, 531 const FilePath& second_path,
516 const GetEntryInfoPairCallback& callback, 532 const GetEntryInfoPairCallback& callback,
517 GDataFileError error, 533 GDataFileError error,
518 scoped_ptr<GDataEntryProto> entry_proto); 534 scoped_ptr<GDataEntryProto> entry_proto);
519 535
520 // ... 536 // Continues with GetIntroInfoPairByPaths after the second GDataEntry has been
537 // asynchronously fetched.
521 void GetEntryInfoPairByPathsAfterGetSecond( 538 void GetEntryInfoPairByPathsAfterGetSecond(
522 const FilePath& second_path, 539 const FilePath& second_path,
523 const GetEntryInfoPairCallback& callback, 540 const GetEntryInfoPairCallback& callback,
524 scoped_ptr<EntryInfoPairResult> result, 541 scoped_ptr<EntryInfoPairResult> result,
525 GDataFileError error, 542 GDataFileError error,
526 scoped_ptr<GDataEntryProto> entry_proto); 543 scoped_ptr<GDataEntryProto> entry_proto);
527 544
545 // These internal functions need friend access to private GDataDirectory
546 // methods.
547 // Replaces file entry |old_entry| with its fresh value |fresh_file|.
548 static void RefreshFileInternal(scoped_ptr<GDataFile> fresh_file,
549 GDataEntry* old_entry);
550
551 // Removes all child files of |directory| and replace with file_map.
552 // |callback| may not be null.
553 static void RefreshDirectoryInternal(const ResourceMap& file_map,
554 const FileMoveCallback& callback,
555 GDataEntry* directory_entry);
556
557
528 // Private data members. 558 // Private data members.
529 scoped_refptr<base::SequencedTaskRunner> blocking_task_runner_; 559 scoped_refptr<base::SequencedTaskRunner> blocking_task_runner_;
530 scoped_ptr<ResourceMetadataDB> directory_service_db_; 560 scoped_ptr<ResourceMetadataDB> directory_service_db_;
531 561
532 ResourceMap resource_map_; 562 ResourceMap resource_map_;
533 563
534 scoped_ptr<GDataDirectory> root_; // Stored in the serialized proto. 564 scoped_ptr<GDataDirectory> root_; // Stored in the serialized proto.
535 565
536 base::Time last_serialized_; 566 base::Time last_serialized_;
537 size_t serialized_size_; 567 size_t serialized_size_;
538 int64 largest_changestamp_; // Stored in the serialized proto. 568 int64 largest_changestamp_; // Stored in the serialized proto.
539 ContentOrigin origin_; 569 ContentOrigin origin_;
540 570
541 // This should remain the last member so it'll be destroyed first and 571 // This should remain the last member so it'll be destroyed first and
542 // invalidate its weak pointers before other members are destroyed. 572 // invalidate its weak pointers before other members are destroyed.
543 base::WeakPtrFactory<GDataDirectoryService> weak_ptr_factory_; 573 base::WeakPtrFactory<GDataDirectoryService> weak_ptr_factory_;
544 574
545 DISALLOW_COPY_AND_ASSIGN(GDataDirectoryService); 575 DISALLOW_COPY_AND_ASSIGN(GDataDirectoryService);
546 }; 576 };
547 577
548 } // namespace gdata 578 } // namespace gdata
549 579
550 #endif // CHROME_BROWSER_CHROMEOS_GDATA_GDATA_FILES_H_ 580 #endif // CHROME_BROWSER_CHROMEOS_GDATA_GDATA_FILES_H_
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/gdata/gdata_file_system.cc ('k') | chrome/browser/chromeos/gdata/gdata_files.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698