2nd try: FileAPI: Split recursive remove into multiple tasks.

Original review page: https://codereview.chromium.org/12018017/

While this change makes each recursive delete run slower, concurrent jobs can run without waiting for the entire recursive job to finish.

Recursive remove end-to-end (200 files, 120 dirs, 4-level tree, total 100MB):
Before this change: Ave: 72.94 msec, Stddev: 3.571 msec
After this change: Ave:129.54 msec, Stddev: 25.368 msec

It takes 1.76 times slower than before by average (we can probably do more optimization as this implementation doesn't care much about it), while another concurrent file task called immediately after the delete could finish in 1-5 msec (while back then it needed to wait for 70-80 msec).

BUG=146215
TEST=content_unittests:.*File.*,content_browsertests:FileSystemLayoutTests.OpRemove


Review URL: https://chromiumcodereview.appspot.com/12051055

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@179102 0039d316-1c4b-4281-b951-d872f2087c98
11 files changed