Make DriveFeedProcessor asynchronous.
DriveResourceMetadata:
* Add RefreshEntryProto, which will eventually replace RefreshFile. It handles update of metadata, change of parents, and both files and directories.
* Introduce AddEntryToParent which adds a DriveEntryProto to the tree. It calls AddEntryToDirectoryInternal which contains common code for AddEntryToParent and AddEntryToDirectory.
* Both AddEntryToParent and RefreshEntryProto use GetParent, a helper to determine the parent.
* GetChildDirectories recursively gets the list of all children directory paths.
* unit tests for these functions.
* update unit tests to remove dependence on drive_files.h
DriveFeedProcessor:
* ApplyEntryProto calls DriveResourceMetadata::GetEntryInfoByResourceId.
* ContinueApplyEntryProto calls RemoveEntryFromParent for deleted entries, RefreshEntryProto for existing entries, and AddEntryToParent for new entries.
* RefreshEntryProto calls DriveResourceMetadata::RefreshEntryProto.
* NotifyForRefreshEntryProto updates changed_dirs_ with the list of affected directories to be notified.
* AddEntryToParent calls DriveResourceMetadata::AddEntryToParent.
* NotifyForAddEntryToParent updates changed_dirs_ with affected directories to be notified.
* RemoveEntryFromParent first fetches all child directories that need to be notified.
* OnGetChildrenForRemove calls DriveResourceMetadata::RemoveEntryFromParent.
* NotifyForRemoveEntryFromParent updates changed_dirs_ with affected directories to be notified.
A number of functions are now unused. They have been marked with TODOs since this patch is rather large.
BUG=137374
TEST=unit tests.
Review URL: https://codereview.chromium.org/11293247
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@168653 0039d316-1c4b-4281-b951-d872f2087c98
5 files changed