Project: chromium Issues People Development process History Sign in
New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.
Starred by 437 users

Comments by non-members will not trigger notification emails to users who starred this issue.
Extension API for adding third party file systems (chrome.fileSystemProvider)
Project Member Reported by satorux@chromium.org, Jun 11 2013 Back to list
After some discussion and investigation, Extension API seems to be a more promising approach than Pepper (issue 240629). I'm gong to get something to work, to see if this approach will fly, or not.
 
Status of the day: Getting the root directory entry of an "JS-backed file system" worked:

Here's some test code:
https://codereview.chromium.org/16439016/diff/12001/chrome/test/data/extensions/api_test/extfs/test.js

- chrome.extfs.addMountPoint() adds a mount point named 'extfs' (JS-backed file system)
- chrome.fileBrowserPrivate.requestFileSystem() returns |filesystem| which contains a mount point to 'extfs'
- filesystem.root.getDirectory('extfs', ...) gets the root directory entry of the 'extfs'
- ExtfsProxy::GetFileInfo() in C++ is called, which then sends a chrome.extfs.onGetInfo event to JS
- chrome.extfs.onGetInfo event is handled by an event listener in JS, which then returns the directory entry to C++ via callback asynchronously
- ExtfsProxy::DidGetFileInfo() in C++ is called, which then passes the result from JS to FileSystem API backend
- filesystem.root.getDirectory() receives the result!
- but reading the directory contents crashes as ExtfsProxy::ReadDirectory() is not implemented yet.
Status of the day: Reading directory entries from "JS-backed file system" worked.

In other words, RemoteFileSystemProxyInterface::GetFileInfo() and RemoteFileSystemProxyInterface::ReadDirectory() are now wired.
Comment 3 by kinuko@chromium.org, Jun 13 2013
Cc: vandebo@chromium.org
Status of the day: Reading files from "JS-backed file system" worked.

In other words, RemoteFileSystemProxyInterface::CreateSnapshotFile() is now wired. Also, implemented a pretty simple hierarchical in-memory file system for testing.
Status of the day: CreateSnapshotFile() now uses a Blob instead of a string to pass file contents from JS to C++. Code is getting less horrible. https://codereview.chromium.org/16439016/
Labels: Iteration-85
Blocking: chromium:224145
Blocking: chromium:254149
Labels: Iteration-86
Labels: Iteration-87
Labels: -M-30 M-31
Labels: Iteration-88
Blocking: chromium:250298
Labels: Iteration-89
Blockedon: chromium:264606
Labels: Iteration-90
Labels: -M-31 M-32
Labels: Iteration-91
Issue 226233 has been merged into this issue.
Summary: Extension API for adding third party file systems (chrome.fileSystemProvider) (was: Extension API for adding third party file systems)
Bulk edit: Adding these to Iteration-93 since they are marked M-32. We can decide to fix or punt at triage!
Labels: Iteration-93
Labels: -M-32 M-33
Status: Started
Labels: Iteration-94
[Bulk edit] - M-32 branch is nearly here. Punting these to M-33.
Project Member Comment 27 by bugdroid1@chromium.org, Nov 8 2013
------------------------------------------------------------------------
r233799 | satorux@chromium.org | 2013-11-08T06:15:08.933960Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/chrome_browser_chromeos.gypi?r1=233799&r2=233798&pathrev=233799
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/permissions/chrome_api_permissions.cc?r1=233799&r2=233798&pathrev=233799
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/api_test/file_system_provider/mount/test.js?r1=233799&r2=233798&pathrev=233799
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/permissions/permission_set_unittest.cc?r1=233799&r2=233798&pathrev=233799
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/renderer/resources/renderer_resources.grd?r1=233799&r2=233798&pathrev=233799
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/api_test/file_system_provider?r1=233799&r2=233798&pathrev=233799
   M http://src.chromium.org/viewvc/chrome/trunk/src/extensions/common/permissions/api_permission.h?r1=233799&r2=233798&pathrev=233799
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/api/_permission_features.json?r1=233799&r2=233798&pathrev=233799
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/api_test/file_system_provider/mount?r1=233799&r2=233798&pathrev=233799
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/renderer/resources/extensions/file_system_provider_custom_bindings.js?r1=233799&r2=233798&pathrev=233799
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/extensions/file_system_provider?r1=233799&r2=233798&pathrev=233799
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/extensions/extension_function_histogram_value.h?r1=233799&r2=233798&pathrev=233799
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/api/file_system_provider.idl?r1=233799&r2=233798&pathrev=233799
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/renderer/extensions/file_system_natives.cc?r1=233799&r2=233798&pathrev=233799
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/chrome_tests.gypi?r1=233799&r2=233798&pathrev=233799
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/api/api.gyp?r1=233799&r2=233798&pathrev=233799
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/renderer/extensions/file_system_natives.h?r1=233799&r2=233798&pathrev=233799
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/extensions/file_system_provider/file_system_provider_apitest.cc?r1=233799&r2=233798&pathrev=233799
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/extensions/file_system_provider/file_system_provider_api.cc?r1=233799&r2=233798&pathrev=233799
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/chrome_renderer.gypi?r1=233799&r2=233798&pathrev=233799
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/extensions/file_system_provider/file_system_provider_api.h?r1=233799&r2=233798&pathrev=233799
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/extensions/file_system_provider/OWNERS?r1=233799&r2=233798&pathrev=233799
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/api_test/file_system_provider/mount/manifest.json?r1=233799&r2=233798&pathrev=233799
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/api/_api_features.json?r1=233799&r2=233798&pathrev=233799
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/renderer/extensions/dispatcher.cc?r1=233799&r2=233798&pathrev=233799

fileSystemProvider: First cut at implementing fileSystemProvider API

Implement fileSystemProvider.mount() that does not do anything meaningful
yet. The purpose of this patch is to add boilerplate files so adding new
code is easier.

Design doc of the API: http://goo.gl/lLXJYQ

BUG=248427
TEST=none
R=benwells@chromium.org, kinuko@chromium.org
TBR=thestig@chromium.org
# TBR thestig@ for chrome/renderer/resources/renderer_resources.grd

Review URL: https://codereview.chromium.org/50703013
------------------------------------------------------------------------
Labels: Iteration-95
Bulk edit - Moving to next iteration.
Labels: -Cr-Platform-Apps-FileManager-Drive Cr-Platform-Apps-FileManager
Blockedon: chromium:322305
Cc: satorux@chromium.org
Owner: mtomasz@chromium.org
bulk owner change to mtomasz@
Labels: fsp
Labels: Iteration-96
Project Member Comment 34 by bugdroid1@chromium.org, Dec 17 2013
Labels: -M-33 MovedFrom-33 M-34
Moving all non essential bugs to the next Milestone.
Labels: Iteration-97
Labels: -MovedFrom-33 -M-34 M-35 Iteration-100
Blocking: chromium:331117
Blocking: chromium:341282
Cc: nhiroki@chromium.org
Blocking: chromium:160570
@joshwoodward: Do we need to restrict view for this bug entry? Users are complaining that they can't follow progress of this highly anticipated feature. Anything confidential?
Labels: -Restrict-View-Google
Seems like it should be open. Opening now...
Cc: smckay@chromium.org
Please! I love my chromebook but it will remain a toy not fit for business until you can do the most basic thing pc's have done for 30 years, read a network file share. Get this done!!!
Comment 45 by tar...@iceage.ca, Feb 25 2014
Google is not very interested to allow you to save the files locally or anywhere on your network drives, everything must be stored at Google, there is no straight forward half and a half option, and if anyone works on it, they will make sure it never completes or completes but not useful.

It has been like this for the last 5 years, and it will continue be like this for the next 5 to 10 years.
Labels: Iteration-101
Have my chromebook more than a year now. It is only used to browse while watching television. That could have been done with any os.... Google wants me to use the 200G offered free for first 2 years. Will never ever do that! but use synology private NAS cloud instead. When possible, would replace chromeos by android. This nice Samsung supports dual boot with Ubuntu, means this device is not a waiste after all. Chromeos remains a dead project, caused by commercial reasons. 
#45 is right, on every point.
@Bastingm: Please calm down. I'm working on this feature, and it is a high priority.
Labels: Iteration-102
Just to add one slightly different angle...my city is on the list for Google Fiber (Olathe, KS).  That service provides a 2TB Storage Box which backs the DVR, but also allows storage of the customer's own files.  This is accomplished via SMB/CIFS/callitwhatyouwill.  Anyone who has only Chromebooks in their house is unable to use this functionality.
Comment 52 by allse...@gmail.com, Mar 20 2014
I think some people have misread the URL. It is code.google.com, not whine-and-moan.google.com. If you are not a developer and don't have something relevant to contribute, don't post!
Not trying to whine-and-moan, but hadn't seen anyone else mention the Fiber use case, and thought it might be relevant.
kendric....@gmail.com makes a valid point and probably worth opening a ticket for -- if there isn't already one.
That should be theoretically doable with the upcoming API. Having an extension supporting Samba would be great, but it would be a very big project.
Project Member Comment 56 by bugdroid1@chromium.org, Mar 27 2014
------------------------------------------------------------------
r259820 | mtomasz@chromium.org | 2014-03-27T07:56:30.583016Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_manager/volume_manager.cc?r1=259820&r2=259819&pathrev=259820
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_manager/volume_manager.h?r1=259820&r2=259819&pathrev=259820
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/provided_file_system.cc?r1=259820&r2=259819&pathrev=259820
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/provided_file_system.h?r1=259820&r2=259819&pathrev=259820
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/chrome_tests_unit.gypi?r1=259820&r2=259819&pathrev=259820
   M http://src.chromium.org/viewvc/chrome/trunk/src/webkit/common/fileapi/file_system_types.h?r1=259820&r2=259819&pathrev=259820
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/extensions/file_system_provider/file_system_provider_api.cc?r1=259820&r2=259819&pathrev=259820
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/extensions/file_system_provider/file_system_provider_apitest.cc?r1=259820&r2=259819&pathrev=259820
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/service_factory.cc?r1=259820&r2=259819&pathrev=259820
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/extensions/file_system_provider/OWNERS?r1=259820&r2=259819&pathrev=259820
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/OWNERS?r1=259820&r2=259819&pathrev=259820
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/service_factory.h?r1=259820&r2=259819&pathrev=259820
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/observer.h?r1=259820&r2=259819&pathrev=259820
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/api_test/file_system_provider/mount/manifest.json?r1=259820&r2=259819&pathrev=259820
   M http://src.chromium.org/viewvc/chrome/trunk/src/webkit/common/fileapi/file_system_util.cc?r1=259820&r2=259819&pathrev=259820
   M http://src.chromium.org/viewvc/chrome/trunk/src/webkit/browser/fileapi/file_system_context.cc?r1=259820&r2=259819&pathrev=259820
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/service_unittest.cc?r1=259820&r2=259819&pathrev=259820
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/service.cc?r1=259820&r2=259819&pathrev=259820
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/api/file_browser_private.idl?r1=259820&r2=259819&pathrev=259820
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/service.h?r1=259820&r2=259819&pathrev=259820
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/chrome_browser_chromeos.gypi?r1=259820&r2=259819&pathrev=259820
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_manager/volume_manager_factory.cc?r1=259820&r2=259819&pathrev=259820
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/api_test/file_system_provider/mount/test.js?r1=259820&r2=259819&pathrev=259820
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/extensions/file_manager/private_api_util.cc?r1=259820&r2=259819&pathrev=259820
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_manager/volume_manager_unittest.cc?r1=259820&r2=259819&pathrev=259820
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider?r1=259820&r2=259819&pathrev=259820

[fsp] Introduce file_system_provider::Service class for the FileSystemProvider API.

This patch introduces a service which manages file systems provided by third party extensions.

The class has two methods: registerFileSystem() and unregisterFileSystem() which are supposed to be called from
chrome.fileSystemProvider.* api methods. The service stores a map of the registered file systems, mounts them, and
notifies observers (VolumeManager) about the fact.

The file system backend does not handle the new file system type yet, this will be done separately.

TEST=browser_test, unit_tests: *FileSystemProvider*
BUG=248427

Review URL: https://codereview.chromium.org/192573002
-----------------------------------------------------------------
Project Member Comment 57 by bugdroid1@chromium.org, Mar 27 2014
------------------------------------------------------------------
r259842 | mtomasz@chromium.org | 2014-03-27T12:04:10.263489Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/provided_file_system.cc?r1=259842&r2=259841&pathrev=259842
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/service_unittest.cc?r1=259842&r2=259841&pathrev=259842
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/service.cc?r1=259842&r2=259841&pathrev=259842
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/provided_file_system.h?r1=259842&r2=259841&pathrev=259842
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/api/file_system_provider.idl?r1=259842&r2=259841&pathrev=259842
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/service.h?r1=259842&r2=259841&pathrev=259842
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/extensions/file_system_provider/file_system_provider_api.cc?r1=259842&r2=259841&pathrev=259842
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/api_test/file_system_provider/mount/test.js?r1=259842&r2=259841&pathrev=259842

[fsp] Simplify ID of provided file systems.

Previously, the ID was very lenghty, being same as the mount point name. Also,
it contained the extension id, which was too much.

To makes things simple, the ID has been changed to an int only, which is
consistent with setTimeout/setInterval as well as upcoming request's id,
which are just positive numbers.

TEST=unit_tests, browser_tests
BUG=248427

Review URL: https://codereview.chromium.org/209663006
-----------------------------------------------------------------
Labels: Iteration-103
Labels: -M-35 M-36
Project Member Comment 60 by bugdroid1@chromium.org, Apr 9 2014
------------------------------------------------------------------
r262840 | mtomasz@chromium.org | 2014-04-09T22:25:31.360567Z

Changed paths:
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/api/file_system_provider_internal.idl?r1=262840&r2=262839&pathrev=262840
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_manager/volume_manager.cc?r1=262840&r2=262839&pathrev=262840
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/api_test/file_system_provider/unmount?r1=262840&r2=262839&pathrev=262840
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_manager/volume_manager.h?r1=262840&r2=262839&pathrev=262840
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/api/file_system_provider.idl?r1=262840&r2=262839&pathrev=262840
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/request_manager_unittest.cc?r1=262840&r2=262839&pathrev=262840
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/chrome_tests_unit.gypi?r1=262840&r2=262839&pathrev=262840
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/request_manager.cc?r1=262840&r2=262839&pathrev=262840
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/api/api.gyp?r1=262840&r2=262839&pathrev=262840
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/request_manager.h?r1=262840&r2=262839&pathrev=262840
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/extensions/file_system_provider/file_system_provider_api.cc?r1=262840&r2=262839&pathrev=262840
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/extensions/file_system_provider/file_system_provider_apitest.cc?r1=262840&r2=262839&pathrev=262840
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/extensions/file_system_provider/file_system_provider_api.h?r1=262840&r2=262839&pathrev=262840
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/observer.h?r1=262840&r2=262839&pathrev=262840
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/api/_api_features.json?r1=262840&r2=262839&pathrev=262840
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/api_test/file_system_provider/unmount/manifest.json?r1=262840&r2=262839&pathrev=262840
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/service_unittest.cc?r1=262840&r2=262839&pathrev=262840
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/service.cc?r1=262840&r2=262839&pathrev=262840
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/extensions/file_manager/private_api_mount.cc?r1=262840&r2=262839&pathrev=262840
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/service.h?r1=262840&r2=262839&pathrev=262840
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/extensions/file_manager/private_api_mount.h?r1=262840&r2=262839&pathrev=262840
   M http://src.chromium.org/viewvc/chrome/trunk/src/extensions/browser/extension_function_histogram_value.h?r1=262840&r2=262839&pathrev=262840
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/chrome_browser_chromeos.gypi?r1=262840&r2=262839&pathrev=262840
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/api_test/file_system_provider/mount/test.js?r1=262840&r2=262839&pathrev=262840
   M http://src.chromium.org/viewvc/chrome/trunk/src/tools/metrics/histograms/histograms.xml?r1=262840&r2=262839&pathrev=262840
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/api_test/file_system_provider/unmount/test.js?r1=262840&r2=262839&pathrev=262840
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/extensions/file_manager/private_api_util.cc?r1=262840&r2=262839&pathrev=262840
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/renderer/resources/extensions/file_system_provider_custom_bindings.js?r1=262840&r2=262839&pathrev=262840

[fsp] Add requestUnmount() method together with the request manager.

This patch introduces a requestUnmount() method, which is invoked by Files app's private api, and then emits an onUnmountRequested event. When the providing extension receives it, it should handle unmounting, and call the success or failure callback.

Unmounting is the first implemented request in the file system provider implementation. Other requests will be: listing directories, fetching files, etc. These requests are invoked by Files app and are routed to the providing extension, then the response goes back to Files app.

To make the code clean, a RequestManager class has been introduced. It acts as a glue between requests as responses.

TEST=unit_tests: *FileSystemProviderServiceTest.Unmount*, *FileSystemProviderRequestManagerTest*; browser_tests: *FileSystemProviderApiTest.Unmount*
BUG=248427

Review URL: https://codereview.chromium.org/194693002
-----------------------------------------------------------------
Project Member Comment 61 by bugdroid1@chromium.org, Apr 11 2014
------------------------------------------------------------------
r263174 | mtomasz@chromium.org | 2014-04-11T07:36:26.951323Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/extensions/file_system_provider/file_system_provider_api.cc?r1=263174&r2=263173&pathrev=263174
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/api/file_system_provider_internal.idl?r1=263174&r2=263173&pathrev=263174

[fsp] Use types from another namespaces in IDL.

Before, it wasn't possible to refer to types defined in another namespace/file. However CL 197873009 enables it, so there is no need to use string as a workaround for enum.

TEST=unit_tests and browser_tests.
BUG=248427, 158654

Review URL: https://codereview.chromium.org/216583002
-----------------------------------------------------------------
I've been following this tread for months in the hope something can be done to allow network / cloud (other than Drive) storage to be accessed through GOS file manager. Now, i'm no programmer by any means and don't really understand all these recent posts but I'm assuming they mean a new extension to allow this is well under way?
And if it is... Top work guys! :)
Labels: Iteration-104
Project Member Comment 64 by bugdroid1@chromium.org, Apr 16 2014
------------------------------------------------------------------
r264106 | mtomasz@chromium.org | 2014-04-16T04:03:32.089464Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/request_manager_unittest.cc?r1=264106&r2=264105&pathrev=264106
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/provided_file_system.h?r1=264106&r2=264105&pathrev=264106
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/chrome_tests_unit.gypi?r1=264106&r2=264105&pathrev=264106
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/request_manager.cc?r1=264106&r2=264105&pathrev=264106
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/request_manager.h?r1=264106&r2=264105&pathrev=264106
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/extensions/file_system_provider/file_system_provider_api.cc?r1=264106&r2=264105&pathrev=264106
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/extensions/file_system_provider/file_system_provider_api.h?r1=264106&r2=264105&pathrev=264106
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/observer.h?r1=264106&r2=264105&pathrev=264106
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/provided_file_system_info.cc?r1=264106&r2=264105&pathrev=264106
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/provided_file_system_info.h?r1=264106&r2=264105&pathrev=264106
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/service_unittest.cc?r1=264106&r2=264105&pathrev=264106
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/service.cc?r1=264106&r2=264105&pathrev=264106
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/provided_file_system_interface.h?r1=264106&r2=264105&pathrev=264106
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/service.h?r1=264106&r2=264105&pathrev=264106
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/chrome_browser_chromeos.gypi?r1=264106&r2=264105&pathrev=264106
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/fake_provided_file_system.cc?r1=264106&r2=264105&pathrev=264106
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/fake_provided_file_system.h?r1=264106&r2=264105&pathrev=264106
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/mount_path_util_unittest.cc?r1=264106&r2=264105&pathrev=264106
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/mount_path_util.cc?r1=264106&r2=264105&pathrev=264106
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_manager/volume_manager_unittest.cc?r1=264106&r2=264105&pathrev=264106
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_manager/volume_manager.cc?r1=264106&r2=264105&pathrev=264106
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/mount_path_util.h?r1=264106&r2=264105&pathrev=264106
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/provided_file_system_unittest.cc?r1=264106&r2=264105&pathrev=264106
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_manager/volume_manager.h?r1=264106&r2=264105&pathrev=264106
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/provided_file_system.cc?r1=264106&r2=264105&pathrev=264106

[fsp] Decouple file_service_provider::Service.

This patch splits Service into thinner Service and ProvidedFileSystem. Also
now, provided file system information instances are renamed to
ProvidedFileSystemInfo.

Such separation makes it easy to test provided file systems independently, from
the service. Also, after the introduced interface will allow to create a
FakeProvidedFileSystem, which will be used to test upcoming AsyncFileUtil
without need of using an extension.

TEST=New unit_tests:*FileSystemProviderProvidedFileSystemTest* and previous:
     *FileSystemProvider* (unit_tests + browser_tests).
BUG=248427
R=hashimoto@chromium.org

Review URL: https://codereview.chromium.org/210803003
-----------------------------------------------------------------
Project Member Comment 65 by bugdroid1@chromium.org, Apr 16 2014
------------------------------------------------------------------
r264191 | mtomasz@chromium.org | 2014-04-16T13:03:36.701872Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/fake_provided_file_system.h?r1=264191&r2=264190&pathrev=264191
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/provided_file_system_unittest.cc?r1=264191&r2=264190&pathrev=264191
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/provided_file_system.cc?r1=264191&r2=264190&pathrev=264191
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/service.cc?r1=264191&r2=264190&pathrev=264191
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/provided_file_system.h?r1=264191&r2=264190&pathrev=264191
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/provided_file_system_interface.h?r1=264191&r2=264190&pathrev=264191
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/request_manager_unittest.cc?r1=264191&r2=264190&pathrev=264191
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/request_manager.cc?r1=264191&r2=264190&pathrev=264191
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/service.h?r1=264191&r2=264190&pathrev=264191
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/request_manager.h?r1=264191&r2=264190&pathrev=264191
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/extensions/file_system_provider/file_system_provider_api.cc?r1=264191&r2=264190&pathrev=264191
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/fake_provided_file_system.cc?r1=264191&r2=264190&pathrev=264191

[fsp] Create a RequestManager per a ProvidedFileSystem instance.

Before, there was only one single request manager per profile, and all of the
file systems were sharing it. However, it is better to create it per file
system for several reasons.

First of all, there is no need to share it, since it is lightweight, and no
data is shared between different file systems.

Secondly, it is a part of implementation of the ProvidedFileSystem. The testing
FakeProvidedFileSystem does not use a request manager at all, so there is no
need to create it for unit tests.

Also, it greatly simplifies the request manager, since there is no need to
verify the extension id and file system id every time the request manager is
used.

TEST=unit_tests: *FileSystemProvider*
BUG=248427

Review URL: https://codereview.chromium.org/239993002
-----------------------------------------------------------------
Project Member Comment 66 by bugdroid1@chromium.org, Apr 17 2014
------------------------------------------------------------------
r264462 | mtomasz@chromium.org | 2014-04-17T07:48:35.205755Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/fileapi/file_system_backend.h?r1=264462&r2=264461&pathrev=264462
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/fileapi/backend_delegate.cc?r1=264462&r2=264461&pathrev=264462
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/fileapi/provider_async_file_util_unittest.cc?r1=264462&r2=264461&pathrev=264462
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chrome_content_browser_client.cc?r1=264462&r2=264461&pathrev=264462
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/fileapi/backend_delegate.h?r1=264462&r2=264461&pathrev=264462
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/fileapi/provider_async_file_util.cc?r1=264462&r2=264461&pathrev=264462
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/fileapi/provider_async_file_util.h?r1=264462&r2=264461&pathrev=264462
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/chrome_tests_unit.gypi?r1=264462&r2=264461&pathrev=264462
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/chrome_browser_chromeos.gypi?r1=264462&r2=264461&pathrev=264462
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/fileapi?r1=264462&r2=264461&pathrev=264462
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/fileapi/file_system_backend_unittest.cc?r1=264462&r2=264461&pathrev=264462
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/fileapi/file_system_backend.cc?r1=264462&r2=264461&pathrev=264462

[fsp] Add an initial AsyncFileUtil.

This patch adds the AsyncFileUtil implementation for the file system provider.
It does not communicate with the file system provider service yet.

Currently, for not supported operations SECURITY error is returned. For
allowed, but not implemented operations, it is NOT_FOUND error.

Unit tests are quite trivial at this stage, but they will grow once more
operations are implemented.

TEST=unit_test: FileSystemProviderAsyncFileUtilTest*
BUG=248427

Review URL: https://codereview.chromium.org/236303017
-----------------------------------------------------------------
Project Member Comment 67 by bugdroid1@chromium.org, Apr 17 2014
------------------------------------------------------------------
r264475 | dconnelly@chromium.org | 2014-04-17T12:12:25.745930Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/fileapi/file_system_backend_unittest.cc?r1=264475&r2=264474&pathrev=264475
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/fileapi/file_system_backend.cc?r1=264475&r2=264474&pathrev=264475
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/fileapi/file_system_backend.h?r1=264475&r2=264474&pathrev=264475
   D http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/fileapi/backend_delegate.cc?r1=264475&r2=264474&pathrev=264475
   D http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/fileapi/provider_async_file_util_unittest.cc?r1=264475&r2=264474&pathrev=264475
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chrome_content_browser_client.cc?r1=264475&r2=264474&pathrev=264475
   D http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/fileapi/backend_delegate.h?r1=264475&r2=264474&pathrev=264475
   D http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/fileapi/provider_async_file_util.cc?r1=264475&r2=264474&pathrev=264475
   D http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/fileapi/provider_async_file_util.h?r1=264475&r2=264474&pathrev=264475
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/chrome_tests_unit.gypi?r1=264475&r2=264474&pathrev=264475
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/chrome_browser_chromeos.gypi?r1=264475&r2=264474&pathrev=264475

Revert of [fsp] Add an initial AsyncFileUtil. (https://codereview.chromium.org/236303017/)

Reason for revert:
Broke Linux Chromium OS Tests -- looks like the new tests aren't working properly there.

Failing build: http://build.chromium.org/p/chromium.chromiumos/builders/Linux%20ChromiumOS%20Tests%20%28dbg%29%281%29/builds/30018

Original issue's description:
> [fsp] Add an initial AsyncFileUtil.
> 
> This patch adds the AsyncFileUtil implementation for the file system provider.
> It does not communicate with the file system provider service yet.
> 
> Currently, for not supported operations SECURITY error is returned. For
> allowed, but not implemented operations, it is NOT_FOUND error.
> 
> Unit tests are quite trivial at this stage, but they will grow once more
> operations are implemented.
> 
> TEST=unit_test: FileSystemProviderAsyncFileUtilTest*
> BUG=248427
> 
> Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=264462

TBR=kinaba@chromium.org,mtomasz@chromium.org
NOTREECHECKS=true
NOTRY=true
BUG=248427

Review URL: https://codereview.chromium.org/240483008
-----------------------------------------------------------------
Project Member Comment 68 by bugdroid1@chromium.org, Apr 18 2014
------------------------------------------------------------------
r264773 | mtomasz@chromium.org | 2014-04-18T11:45:43.009927Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/request_manager_unittest.cc?r1=264773&r2=264772&pathrev=264773
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/request_manager.cc?r1=264773&r2=264772&pathrev=264773
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/request_manager.h?r1=264773&r2=264772&pathrev=264773

[fsp] Initial implementation of timeout logic for requests.

This patch introduces a basic mechanism for timing out stale requests.
If none of callbacks are called within a fixed amount of time, then the request
is considered as stale, and aborted with an FILE_ERROR_ABORT error code.

TEST=unit_test: FileSystemProviderRequestManagerTest.AbortOnTimeout
BUG=248427

Review URL: https://codereview.chromium.org/241673005
-----------------------------------------------------------------
Project Member Comment 69 by bugdroid1@chromium.org, Apr 18 2014
------------------------------------------------------------------
r264778 | mtomasz@chromium.org | 2014-04-18T12:29:44.247598Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/chrome_browser_chromeos.gypi?r1=264778&r2=264777&pathrev=264778
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/fileapi/file_system_backend_unittest.cc?r1=264778&r2=264777&pathrev=264778
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/fileapi/file_system_backend.cc?r1=264778&r2=264777&pathrev=264778
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/fileapi/file_system_backend.h?r1=264778&r2=264777&pathrev=264778
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/fileapi/backend_delegate.cc?r1=264778&r2=264777&pathrev=264778
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/fileapi/provider_async_file_util_unittest.cc?r1=264778&r2=264777&pathrev=264778
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chrome_content_browser_client.cc?r1=264778&r2=264777&pathrev=264778
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/fileapi/backend_delegate.h?r1=264778&r2=264777&pathrev=264778
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/fileapi/provider_async_file_util.cc?r1=264778&r2=264777&pathrev=264778
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/fileapi/provider_async_file_util.h?r1=264778&r2=264777&pathrev=264778
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/chrome_tests_unit.gypi?r1=264778&r2=264777&pathrev=264778

[fsp] [recommit] Add an initial AsyncFileUtil.

This patch adds the AsyncFileUtil implementation for the file system provider.
It does not communicate with the file system provider service yet.

Currently, for not supported operations SECURITY error is returned. For
allowed, but not implemented operations, it is NOT_FOUND error.

Unit tests are quite trivial at this stage, but they will grow once more
operations are implemented.

This patch has been previously committed and reverted due to test failures.
See: https://codereview.chromium.org/236303017/

TEST=unit_test: FileSystemProviderAsyncFileUtilTest*
BUG=248427

Review URL: https://codereview.chromium.org/242493002
-----------------------------------------------------------------
Project Member Comment 70 by bugdroid1@chromium.org, Apr 18 2014
------------------------------------------------------------------
r264780 | mtomasz@chromium.org | 2014-04-18T13:01:53.035206Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/mount_path_util_unittest.cc?r1=264780&r2=264779&pathrev=264780
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/mount_path_util.cc?r1=264780&r2=264779&pathrev=264780
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/mount_path_util.h?r1=264780&r2=264779&pathrev=264780
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/provided_file_system_unittest.cc?r1=264780&r2=264779&pathrev=264780
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/service_unittest.cc?r1=264780&r2=264779&pathrev=264780
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/service.cc?r1=264780&r2=264779&pathrev=264780
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/service.h?r1=264780&r2=264779&pathrev=264780

[fsp] Add FileSystemURLParser to the file system provider.

The FileSystemURLParser is a class which parses a cracked FileSystemURL to
associate it with the proper ProvidedFileSystem class handling this URL.

This will be necessary to route operations from AsyncFileUtil to a proper
providing extension.

Along the way, the Service class has been fixed. Now, the provided file systems
are gracefully unmounted in destructor. As a result, the external mount points
are cleared neatly.

TEST=unit_tests: FileSystemProviderMountPathUtilTest*
BUG=248427

Review URL: https://codereview.chromium.org/237583015
-----------------------------------------------------------------
Project Member Comment 71 by bugdroid1@chromium.org, Apr 18 2014
------------------------------------------------------------------
r264800 | rockot@chromium.org | 2014-04-18T15:59:54.562308Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/mount_path_util_unittest.cc?r1=264800&r2=264799&pathrev=264800
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/mount_path_util.cc?r1=264800&r2=264799&pathrev=264800
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/mount_path_util.h?r1=264800&r2=264799&pathrev=264800
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/provided_file_system_unittest.cc?r1=264800&r2=264799&pathrev=264800
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/service_unittest.cc?r1=264800&r2=264799&pathrev=264800
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/service.cc?r1=264800&r2=264799&pathrev=264800
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/service.h?r1=264800&r2=264799&pathrev=264800

Revert 264780 "[fsp] Add FileSystemURLParser to the file system ..."

Dependent on 264778 which broke Linux ChromeOS ASan.

> [fsp] Add FileSystemURLParser to the file system provider.
> 
> The FileSystemURLParser is a class which parses a cracked FileSystemURL to
> associate it with the proper ProvidedFileSystem class handling this URL.
> 
> This will be necessary to route operations from AsyncFileUtil to a proper
> providing extension.
> 
> Along the way, the Service class has been fixed. Now, the provided file systems
> are gracefully unmounted in destructor. As a result, the external mount points
> are cleared neatly.
> 
> TEST=unit_tests: FileSystemProviderMountPathUtilTest*
> BUG=248427
> 
> Review URL: https://codereview.chromium.org/237583015

TBR=mtomasz@chromium.org

Review URL: https://codereview.chromium.org/242113007
-----------------------------------------------------------------
Project Member Comment 72 by bugdroid1@chromium.org, Apr 18 2014
------------------------------------------------------------------
r264801 | rockot@chromium.org | 2014-04-18T16:01:28.161665Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/chrome_tests_unit.gypi?r1=264801&r2=264800&pathrev=264801
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/chrome_browser_chromeos.gypi?r1=264801&r2=264800&pathrev=264801
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/fileapi/file_system_backend_unittest.cc?r1=264801&r2=264800&pathrev=264801
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/fileapi/file_system_backend.cc?r1=264801&r2=264800&pathrev=264801
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/fileapi/file_system_backend.h?r1=264801&r2=264800&pathrev=264801
   D http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/fileapi/backend_delegate.cc?r1=264801&r2=264800&pathrev=264801
   D http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/fileapi/provider_async_file_util_unittest.cc?r1=264801&r2=264800&pathrev=264801
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chrome_content_browser_client.cc?r1=264801&r2=264800&pathrev=264801
   D http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/fileapi/backend_delegate.h?r1=264801&r2=264800&pathrev=264801
   D http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/fileapi/provider_async_file_util.cc?r1=264801&r2=264800&pathrev=264801
   D http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/fileapi/provider_async_file_util.h?r1=264801&r2=264800&pathrev=264801

Revert 264778 "[fsp] [recommit] Add an initial AsyncFileUtil."

Broke Linux ChromeOS ASan:

http://build.chromium.org/p/chromium.memory/buildstatus?builder=Linux%20Chromium%20OS%20ASan%20LSan%20Tests%20%283%29&number=938

> [fsp] [recommit] Add an initial AsyncFileUtil.
> 
> This patch adds the AsyncFileUtil implementation for the file system provider.
> It does not communicate with the file system provider service yet.
> 
> Currently, for not supported operations SECURITY error is returned. For
> allowed, but not implemented operations, it is NOT_FOUND error.
> 
> Unit tests are quite trivial at this stage, but they will grow once more
> operations are implemented.
> 
> This patch has been previously committed and reverted due to test failures.
> See: https://codereview.chromium.org/236303017/
> 
> TEST=unit_test: FileSystemProviderAsyncFileUtilTest*
> BUG=248427
> 
> Review URL: https://codereview.chromium.org/242493002

TBR=mtomasz@chromium.org

Review URL: https://codereview.chromium.org/243153004
-----------------------------------------------------------------
Project Member Comment 73 by bugdroid1@chromium.org, Apr 21 2014
------------------------------------------------------------------
r264962 | mtomasz@chromium.org | 2014-04-21T03:20:48.327731Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chrome_content_browser_client.cc?r1=264962&r2=264961&pathrev=264962
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/fileapi/backend_delegate.h?r1=264962&r2=264961&pathrev=264962
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/fileapi/provider_async_file_util.cc?r1=264962&r2=264961&pathrev=264962
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/fileapi/provider_async_file_util.h?r1=264962&r2=264961&pathrev=264962
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/chrome_tests_unit.gypi?r1=264962&r2=264961&pathrev=264962
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/chrome_browser_chromeos.gypi?r1=264962&r2=264961&pathrev=264962
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/fileapi/file_system_backend_unittest.cc?r1=264962&r2=264961&pathrev=264962
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/fileapi/file_system_backend.cc?r1=264962&r2=264961&pathrev=264962
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/fileapi/file_system_backend.h?r1=264962&r2=264961&pathrev=264962
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/fileapi/backend_delegate.cc?r1=264962&r2=264961&pathrev=264962
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/fileapi/provider_async_file_util_unittest.cc?r1=264962&r2=264961&pathrev=264962

[fsp] [recommit #2] Add an initial AsyncFileUtil.

This patch adds the AsyncFileUtil implementation for the file system provider.
It does not communicate with the file system provider service yet.

Currently, for not supported operations SECURITY error is returned. For
allowed, but not implemented operations, it is NOT_FOUND error.

Unit tests are quite trivial at this stage, but they will grow once more
operations are implemented.

This patch has been previously committed and reverted due to test failures.
See: https://codereview.chromium.org/236303017/

Later, this patch got again reverted because of ASAN failures.
See: https://codereview.chromium.org/242493002/

TEST=unit_test: FileSystemProviderAsyncFileUtilTest*
BUG=248427

Review URL: https://codereview.chromium.org/243703005
-----------------------------------------------------------------
Project Member Comment 74 by bugdroid1@chromium.org, Apr 21 2014
------------------------------------------------------------------
r264967 | mtomasz@chromium.org | 2014-04-21T06:06:05.078688Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/service_unittest.cc?r1=264967&r2=264966&pathrev=264967
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/service.cc?r1=264967&r2=264966&pathrev=264967
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/service.h?r1=264967&r2=264966&pathrev=264967
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/service_factory.cc?r1=264967&r2=264966&pathrev=264967
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_manager/volume_manager_unittest.cc?r1=264967&r2=264966&pathrev=264967

[fsp] Unmount file systems when the providing extension gets unloaded.

Previously, if the extension got unloaded, provided the file system would still
be active, but not responsive. This CL listens for unload events, and removes
all of the provided file systems associated with the unloaded extension.

TEST=unit_tests:*FileSystemProviderService/UnmountFileSystem_OnExtensionUnload*
BUG=248427

Review URL: https://codereview.chromium.org/213123008
-----------------------------------------------------------------
Project Member Comment 75 by bugdroid1@chromium.org, Apr 21 2014
------------------------------------------------------------------
r264975 | mtomasz@chromium.org | 2014-04-21T10:37:00.852673Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/mount_path_util_unittest.cc?r1=264975&r2=264974&pathrev=264975
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/fileapi/provider_async_file_util_unittest.cc?r1=264975&r2=264974&pathrev=264975
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/mount_path_util.cc?r1=264975&r2=264974&pathrev=264975
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/mount_path_util.h?r1=264975&r2=264974&pathrev=264975
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/provided_file_system_unittest.cc?r1=264975&r2=264974&pathrev=264975
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/service_unittest.cc?r1=264975&r2=264974&pathrev=264975
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/service.cc?r1=264975&r2=264974&pathrev=264975
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/service.h?r1=264975&r2=264974&pathrev=264975

[fsp] [recommit] Add FileSystemURLParser to the file system provider.

The FileSystemURLParser is a class which parses a cracked FileSystemURL to
associate it with the proper ProvidedFileSystem class handling this URL.

This will be necessary to route operations from AsyncFileUtil to a proper
providing extension.

Along the way, the Service class has been fixed. Now, the provided file systems
are gracefully unmounted in destructor. As a result, the external mount points
are cleared neatly.

Previously reverted, because depending on a CL to be reverted.
See: https://codereview.chromium.org/237583015

TBR=kinaba@chromium.org
TEST=unit_tests: FileSystemProviderMountPathUtilTest*
BUG=248427

Review URL: https://codereview.chromium.org/244623003
-----------------------------------------------------------------
Project Member Comment 76 by bugdroid1@chromium.org, Apr 28 2014
Labels: merge-merged-git-svn
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/243c2111f4feaa6d4acf092d6562b6ef4b177624

commit 243c2111f4feaa6d4acf092d6562b6ef4b177624
Author: mtomasz@chromium.org <mtomasz@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>
Date: Mon Apr 28 12:12:31 2014 +0000

[fsp] Refactor handling operations.

This CL reorganizes code before adding the read directory implementation.

First of all, operations are now extracted to separate classes, to avoid huge
file_system_provider.cc. Such operation classes are now arguments for the
RequestManager which replaces the former pair of [success, error] callbacks.

Such operation classes are now easy to test, because of ability to cut out
the EventRouter by using Operation::SetDispatchEventImplForTests.

Finally, a RequestValue class has been introduced, which replaces former
base::DictionaryValue. The former solution was not good, since we already
parse the base::Value in api function implementations (using generated from
IDL parsers). So, passing a raw base::Value and later parsing is again is an
overkill.

The RequestValue class is a trivial wrapper for all kinds of IDL values, which
can be passed through the RequestManager to Operation classes.

TEST=unit_tests, browser_tests: *FileSystemProvider*
BUG=248427

Review URL: https://codereview.chromium.org/257493004

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


Project Member Comment 77 by bugdroid1@chromium.org, Apr 28 2014
------------------------------------------------------------------
r266516 | mtomasz@chromium.org | 2014-04-28T12:12:31.714792Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/provided_file_system_unittest.cc?r1=266516&r2=266515&pathrev=266516
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/provided_file_system.cc?r1=266516&r2=266515&pathrev=266516
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/provided_file_system.h?r1=266516&r2=266515&pathrev=266516
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/request_manager_unittest.cc?r1=266516&r2=266515&pathrev=266516
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/request_manager.cc?r1=266516&r2=266515&pathrev=266516
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/operations/operation.cc?r1=266516&r2=266515&pathrev=266516
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/request_manager.h?r1=266516&r2=266515&pathrev=266516
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/request_value.cc?r1=266516&r2=266515&pathrev=266516
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/extensions/file_system_provider/file_system_provider_api.cc?r1=266516&r2=266515&pathrev=266516
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/operations/operation.h?r1=266516&r2=266515&pathrev=266516
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/request_value.h?r1=266516&r2=266515&pathrev=266516
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/operations/unmount.cc?r1=266516&r2=266515&pathrev=266516
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/operations/unmount.h?r1=266516&r2=266515&pathrev=266516
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/operations?r1=266516&r2=266515&pathrev=266516
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/service.cc?r1=266516&r2=266515&pathrev=266516
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/provided_file_system_interface.h?r1=266516&r2=266515&pathrev=266516
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/chrome_browser_chromeos.gypi?r1=266516&r2=266515&pathrev=266516
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/fake_provided_file_system.cc?r1=266516&r2=266515&pathrev=266516
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/fake_provided_file_system.h?r1=266516&r2=266515&pathrev=266516

[fsp] Refactor handling operations.

This CL reorganizes code before adding the read directory implementation.

First of all, operations are now extracted to separate classes, to avoid huge
file_system_provider.cc. Such operation classes are now arguments for the
RequestManager which replaces the former pair of [success, error] callbacks.

Such operation classes are now easy to test, because of ability to cut out
the EventRouter by using Operation::SetDispatchEventImplForTests.

Finally, a RequestValue class has been introduced, which replaces former
base::DictionaryValue. The former solution was not good, since we already
parse the base::Value in api function implementations (using generated from
IDL parsers). So, passing a raw base::Value and later parsing is again is an
overkill.

The RequestValue class is a trivial wrapper for all kinds of IDL values, which
can be passed through the RequestManager to Operation classes.

TEST=unit_tests, browser_tests: *FileSystemProvider*
BUG=248427

Review URL: https://codereview.chromium.org/257493004
-----------------------------------------------------------------
Labels: Iteration-105
Project Member Comment 79 by bugdroid1@chromium.org, May 1 2014
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/ae317cfcfed2143186513db710a4e694934ac560

commit ae317cfcfed2143186513db710a4e694934ac560
Author: mtomasz@chromium.org <mtomasz@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>
Date: Thu May 01 10:41:23 2014 +0000

[fsp] Cleanup browser tests.

This patch adds jsdocs, and missing chrome.test.callbackPass invocations.

Moreover, it makes the api methods return true in case of error. It was wrong
to cause an immediate error together with returning DOMError. The immediate
error should be only returned in case of wrong argument, which is checked
by the EXTENSION_FUNCTION_VALIDATE macro.

TEST=browser_tests: *FileSystemProvider*
BUG=248427

Review URL: https://codereview.chromium.org/268573003

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


Project Member Comment 80 by bugdroid1@chromium.org, May 1 2014
------------------------------------------------------------------
r267508 | mtomasz@chromium.org | 2014-05-01T10:41:23.947894Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/extensions/file_system_provider/file_system_provider_api.cc?r1=267508&r2=267507&pathrev=267508
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/api_test/file_system_provider/mount/test.js?r1=267508&r2=267507&pathrev=267508
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/api_test/file_system_provider/unmount/test.js?r1=267508&r2=267507&pathrev=267508

[fsp] Cleanup browser tests.

This patch adds jsdocs, and missing chrome.test.callbackPass invocations.

Moreover, it makes the api methods return true in case of error. It was wrong
to cause an immediate error together with returning DOMError. The immediate
error should be only returned in case of wrong argument, which is checked
by the EXTENSION_FUNCTION_VALIDATE macro.

TEST=browser_tests: *FileSystemProvider*
BUG=248427

Review URL: https://codereview.chromium.org/268573003
-----------------------------------------------------------------
Project Member Comment 81 by bugdroid1@chromium.org, May 1 2014
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/95c7f114aa31a0de56223560812f4bb2c2c9459f

commit 95c7f114aa31a0de56223560812f4bb2c2c9459f
Author: mtomasz@chromium.org <mtomasz@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>
Date: Thu May 01 16:50:56 2014 +0000

[fsp] Add the getMetadata operation.

This patch adds the getMetadata() operation, which basically returns basic
metadata of a file or a directory. It is tied to async file util's
getFileInfo() method.

TBR=isherman@chromium.org  # New histograms.
TEST=unit_tests, browser_test: *FileSystemProvider*GetMetadata
BUG=248427

Review URL: https://codereview.chromium.org/258783006

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


Project Member Comment 82 by bugdroid1@chromium.org, May 1 2014
------------------------------------------------------------------
r267538 | mtomasz@chromium.org | 2014-05-01T16:50:56.307156Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/provided_file_system_unittest.cc?r1=267538&r2=267537&pathrev=267538
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/provided_file_system.cc?r1=267538&r2=267537&pathrev=267538
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/provided_file_system.h?r1=267538&r2=267537&pathrev=267538
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/api/file_system_provider.idl?r1=267538&r2=267537&pathrev=267538
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/chrome_tests_unit.gypi?r1=267538&r2=267537&pathrev=267538
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/api_test/file_system_provider/get_metadata/test.js?r1=267538&r2=267537&pathrev=267538
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/request_value.cc?r1=267538&r2=267537&pathrev=267538
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/extensions/file_system_provider/file_system_provider_apitest.cc?r1=267538&r2=267537&pathrev=267538
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/extensions/file_system_provider/file_system_provider_api.cc?r1=267538&r2=267537&pathrev=267538
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/request_value.h?r1=267538&r2=267537&pathrev=267538
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/extensions/file_system_provider/file_system_provider_api.h?r1=267538&r2=267537&pathrev=267538
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/api_test/file_system_provider/get_metadata?r1=267538&r2=267537&pathrev=267538
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/fileapi/provider_async_file_util_unittest.cc?r1=267538&r2=267537&pathrev=267538
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/fileapi/provider_async_file_util.cc?r1=267538&r2=267537&pathrev=267538
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/operations/get_metadata_unittest.cc?r1=267538&r2=267537&pathrev=267538
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/provided_file_system_interface.h?r1=267538&r2=267537&pathrev=267538
   M http://src.chromium.org/viewvc/chrome/trunk/src/extensions/browser/extension_function_histogram_value.h?r1=267538&r2=267537&pathrev=267538
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/operations/get_metadata.cc?r1=267538&r2=267537&pathrev=267538
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/chrome_browser_chromeos.gypi?r1=267538&r2=267537&pathrev=267538
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/operations/get_metadata.h?r1=267538&r2=267537&pathrev=267538
   M http://src.chromium.org/viewvc/chrome/trunk/src/tools/metrics/histograms/histograms.xml?r1=267538&r2=267537&pathrev=267538
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/fake_provided_file_system.cc?r1=267538&r2=267537&pathrev=267538
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/api_test/file_system_provider/get_metadata/manifest.json?r1=267538&r2=267537&pathrev=267538
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/fileapi/file_system_backend.cc?r1=267538&r2=267537&pathrev=267538
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/fake_provided_file_system.h?r1=267538&r2=267537&pathrev=267538
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/mount_path_util_unittest.cc?r1=267538&r2=267537&pathrev=267538
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/renderer/resources/extensions/file_system_provider_custom_bindings.js?r1=267538&r2=267537&pathrev=267538
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/mount_path_util.cc?r1=267538&r2=267537&pathrev=267538
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/mount_path_util.h?r1=267538&r2=267537&pathrev=267538
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/api/file_system_provider_internal.idl?r1=267538&r2=267537&pathrev=267538

[fsp] Add the getMetadata operation.

This patch adds the getMetadata() operation, which basically returns basic
metadata of a file or a directory. It is tied to async file util's
getFileInfo() method.

TBR=isherman@chromium.org  # New histograms.
TEST=unit_tests, browser_test: *FileSystemProvider*GetMetadata
BUG=248427

Review URL: https://codereview.chromium.org/258783006
-----------------------------------------------------------------
REMOVE ME
Labels: -merge-merged-git-svn -Iteration-105
clblamires you have to remove yourself by unclicking the star in the top right corner of the bug report page.
Project Member Comment 85 by bugdroid1@chromium.org, May 2 2014
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/a09078643f87768bc45868161592f52f9cbb16d6

commit a09078643f87768bc45868161592f52f9cbb16d6
Author: mtomasz@chromium.org <mtomasz@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>
Date: Fri May 02 10:01:14 2014 +0000

[fsp] Make thread checks consistent.

This patch replaces the old-style check to the new DCHECK_CURRENTLY_ON macro
for consistency.

TEST=Refactoring only. Current tests.
BUG=248427

Review URL: https://codereview.chromium.org/263633003

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


Project Member Comment 86 by bugdroid1@chromium.org, May 2 2014
------------------------------------------------------------------
r267782 | mtomasz@chromium.org | 2014-05-02T10:01:14.300504Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/service.cc?r1=267782&r2=267781&pathrev=267782
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/fileapi/backend_delegate.cc?r1=267782&r2=267781&pathrev=267782
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/fileapi/provider_async_file_util.cc?r1=267782&r2=267781&pathrev=267782

[fsp] Make thread checks consistent.

This patch replaces the old-style check to the new DCHECK_CURRENTLY_ON macro
for consistency.

TEST=Refactoring only. Current tests.
BUG=248427

Review URL: https://codereview.chromium.org/263633003
-----------------------------------------------------------------
Project Member Comment 87 by bugdroid1@chromium.org, May 5 2014
------------------------------------------------------------------
r267896 | mtomasz@chromium.org | 2014-05-02T19:37:08.525710Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/chrome_browser_chromeos.gypi?r1=267896&r2=267895&pathrev=267896
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/extensions/file_system_provider/file_system_provider_api.cc?r1=267896&r2=267895&pathrev=267896
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/extensions/file_system_provider/file_system_provider_api.h?r1=267896&r2=267895&pathrev=267896
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/extensions/file_system_provider/provider_function.cc?r1=267896&r2=267895&pathrev=267896
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/extensions/file_system_provider/provider_function.h?r1=267896&r2=267895&pathrev=267896
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/api/file_system_provider.idl?r1=267896&r2=267895&pathrev=267896

[fsp] Extract common code to FileSystemProvidedInternalFunction.

Since more internal functions are coming soon, and they are mostly the same,
a base class has been extracted to reuse the code.

TBR=benwells@chromium.org
TEST=Refactoring only. Covered by current tests.
BUG=248427

Review URL: https://codereview.chromium.org/260943002
-----------------------------------------------------------------
Project Member Comment 88 by bugdroid1@chromium.org, May 9 2014
------------------------------------------------------------------
r269127 | mtomasz@chromium.org | 2014-05-09T01:14:32.844484Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/extensions/browser/extension_function_histogram_value.h?r1=269127&r2=269126&pathrev=269127
   M http://src.chromium.org/viewvc/chrome/trunk/src/tools/metrics/histograms/histograms.xml?r1=269127&r2=269126&pathrev=269127

[fsp] Add histograms for reading directories support.

This patch is a part of a bigger CL:
https://codereview.chromium.org/246913003/
in order to avoid reoccuring conflicts while committing via CQ.

NOTRY=True
R=isherman@chromium.org
TBR=isherman@chromium.org
TEST=None
BUG=248427

Review URL: https://codereview.chromium.org/273683004
-----------------------------------------------------------------
Project Member Comment 89 by bugdroid1@chromium.org, May 9 2014
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/d49dfb48451a08b1bf170b5e69516e95c950e309

commit d49dfb48451a08b1bf170b5e69516e95c950e309
Author: mtomasz@chromium.org <mtomasz@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>
Date: Fri May 09 01:14:32 2014

[fsp] Add histograms for reading directories support.

This patch is a part of a bigger CL:
https://codereview.chromium.org/246913003/
in order to avoid reoccuring conflicts while committing via CQ.

NOTRY=True
R=isherman@chromium.org
TBR=isherman@chromium.org
TEST=None
BUG=248427

Review URL: https://codereview.chromium.org/273683004

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


Project Member Comment 90 by bugdroid1@chromium.org, May 9 2014
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/c90fcaf6517ef913996510df9836bcfff7755d47

commit c90fcaf6517ef913996510df9836bcfff7755d47
Author: mtomasz@chromium.org <mtomasz@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>
Date: Fri May 09 09:40:33 2014

[fsp] Add support for reading directories.

This patch adds support to list contents of directories.

TBR=isherman@chromium.org
TEST=unit_tests, browser_test: *FileSystemProvider*ReadDirectory
BUG=248427

Review URL: https://codereview.chromium.org/246913003

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


Project Member Comment 91 by bugdroid1@chromium.org, May 9 2014
------------------------------------------------------------------
r269201 | mtomasz@chromium.org | 2014-05-09T09:40:33.788851Z

Changed paths:
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/operations/read_directory.h?r1=269201&r2=269200&pathrev=269201
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/request_value.cc?r1=269201&r2=269200&pathrev=269201
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/extensions/file_system_provider/file_system_provider_api.cc?r1=269201&r2=269200&pathrev=269201
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/extensions/file_system_provider/file_system_provider_apitest.cc?r1=269201&r2=269200&pathrev=269201
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/api_test/file_system_provider/read_directory/manifest.json?r1=269201&r2=269200&pathrev=269201
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/request_value.h?r1=269201&r2=269200&pathrev=269201
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/extensions/file_system_provider/file_system_provider_api.h?r1=269201&r2=269200&pathrev=269201
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/fileapi/provider_async_file_util_unittest.cc?r1=269201&r2=269200&pathrev=269201
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/fileapi/provider_async_file_util.cc?r1=269201&r2=269200&pathrev=269201
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/extensions/file_system_provider/provider_function.h?r1=269201&r2=269200&pathrev=269201
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/provided_file_system_interface.h?r1=269201&r2=269200&pathrev=269201
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/api_test/file_system_provider/read_directory/test.js?r1=269201&r2=269200&pathrev=269201
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/chrome_browser_chromeos.gypi?r1=269201&r2=269200&pathrev=269201
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/fake_provided_file_system.cc?r1=269201&r2=269200&pathrev=269201
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/fake_provided_file_system.h?r1=269201&r2=269200&pathrev=269201
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/api_test/file_system_provider/read_directory?r1=269201&r2=269200&pathrev=269201
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/renderer/resources/extensions/file_system_provider_custom_bindings.js?r1=269201&r2=269200&pathrev=269201
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/api/file_system_provider_internal.idl?r1=269201&r2=269200&pathrev=269201
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/provided_file_system.cc?r1=269201&r2=269200&pathrev=269201
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/provided_file_system.h?r1=269201&r2=269200&pathrev=269201
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/operations/read_directory_unittest.cc?r1=269201&r2=269200&pathrev=269201
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/api/file_system_provider.idl?r1=269201&r2=269200&pathrev=269201
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/operations/read_directory.cc?r1=269201&r2=269200&pathrev=269201
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/chrome_tests_unit.gypi?r1=269201&r2=269200&pathrev=269201
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/api_test/file_system_provider/get_metadata/test.js?r1=269201&r2=269200&pathrev=269201

[fsp] Add support for reading directories.

This patch adds support to list contents of directories.

TBR=isherman@chromium.org
TEST=unit_tests, browser_test: *FileSystemProvider*ReadDirectory
BUG=248427

Review URL: https://codereview.chromium.org/246913003
-----------------------------------------------------------------
Labels: -Iteration-84 Iteration-106
Project Member Comment 93 by bugdroid1@chromium.org, May 13 2014
------------------------------------------------------------------
r269968 | mtomasz@chromium.org | 2014-05-13T02:14:14.068511Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/extensions/browser/extension_function_histogram_value.h?r1=269968&r2=269967&pathrev=269968
   M http://src.chromium.org/viewvc/chrome/trunk/src/tools/metrics/histograms/histograms.xml?r1=269968&r2=269967&pathrev=269968

[fsp] Add histograms for opening files.

This is a split of https://codereview.chromium.org/284443002/, to avoid
merging issues.

It is almost impossible to land a CL adding histograms via CQ, without
a merging conflict.

TBR=isherman@chromium.org
TEST=Just histograms, no actual changes.
BUG=248427

Review URL: https://codereview.chromium.org/288483002
-----------------------------------------------------------------
Project Member Comment 94 by bugdroid1@chromium.org, May 13 2014
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/a7de9693f066e9e047b2ace506ae7dabc26e25f1

commit a7de9693f066e9e047b2ace506ae7dabc26e25f1
Author: mtomasz@chromium.org <mtomasz@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>
Date: Tue May 13 02:14:14 2014

[fsp] Add histograms for opening files.

This is a split of https://codereview.chromium.org/284443002/, to avoid
merging issues.

It is almost impossible to land a CL adding histograms via CQ, without
a merging conflict.

TBR=isherman@chromium.org
TEST=Just histograms, no actual changes.
BUG=248427

Review URL: https://codereview.chromium.org/288483002

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


Project Member Comment 95 by bugdroid1@chromium.org, May 13 2014
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/bfe4cb76dbffc05f3f84816fbfa99257d34b375a

commit bfe4cb76dbffc05f3f84816fbfa99257d34b375a
Author: mtomasz@chromium.org <mtomasz@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>
Date: Tue May 13 02:36:25 2014

[fsp] Add histograms for closing files.

This is a split of https://codereview.chromium.org/279213002/, to avoid
merging issues.

It is almost impossible to land a CL adding histograms via CQ, without
a merging conflict.

TBR=isherman@chromium.org
TEST=Just histograms, no actual changes.
BUG=248427

Review URL: https://codereview.chromium.org/280783002

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


Project Member Comment 96 by bugdroid1@chromium.org, May 13 2014
------------------------------------------------------------------
r269973 | mtomasz@chromium.org | 2014-05-13T02:36:25.272871Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/extensions/browser/extension_function_histogram_value.h?r1=269973&r2=269972&pathrev=269973
   M http://src.chromium.org/viewvc/chrome/trunk/src/tools/metrics/histograms/histograms.xml?r1=269973&r2=269972&pathrev=269973

[fsp] Add histograms for closing files.

This is a split of https://codereview.chromium.org/279213002/, to avoid
merging issues.

It is almost impossible to land a CL adding histograms via CQ, without
a merging conflict.

TBR=isherman@chromium.org
TEST=Just histograms, no actual changes.
BUG=248427

Review URL: https://codereview.chromium.org/280783002
-----------------------------------------------------------------
Project Member Comment 97 by bugdroid1@chromium.org, May 13 2014
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/470a87031af80b04b0f5346f279cc192d3b47b25

commit 470a87031af80b04b0f5346f279cc192d3b47b25
Author: mtomasz@chromium.org <mtomasz@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>
Date: Tue May 13 07:12:41 2014

[fsp] Add support for opening files.

This patch adds support to opening a file. It is currently no-op, and it is
not yet bound to fileapi.

In order to bound it to fileapi::AsyncFileUtil, we need to implement closing
operation, and reading operations first. Otherwise, creating a snapshot
(required by fileapi::AsyncFileUtil) is not possible.

TEST=unit_tests: *FileSystemProvider*OpenFile*
BUG=248427

Review URL: https://codereview.chromium.org/284443002

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


Project Member Comment 98 by bugdroid1@chromium.org, May 13 2014
------------------------------------------------------------------
r270040 | mtomasz@chromium.org | 2014-05-13T07:12:41.977318Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/extensions/file_system_provider/file_system_provider_api.h?r1=270040&r2=270039&pathrev=270040
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/fake_provided_file_system.h?r1=270040&r2=270039&pathrev=270040
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/renderer/resources/extensions/file_system_provider_custom_bindings.js?r1=270040&r2=270039&pathrev=270040
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/api/file_system_provider_internal.idl?r1=270040&r2=270039&pathrev=270040
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/provided_file_system.cc?r1=270040&r2=270039&pathrev=270040
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/provided_file_system.h?r1=270040&r2=270039&pathrev=270040
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/provided_file_system_interface.h?r1=270040&r2=270039&pathrev=270040
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/api/file_system_provider.idl?r1=270040&r2=270039&pathrev=270040
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/operations/open_file_unittest.cc?r1=270040&r2=270039&pathrev=270040
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/chrome_tests_unit.gypi?r1=270040&r2=270039&pathrev=270040
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/operations/open_file.cc?r1=270040&r2=270039&pathrev=270040
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/chrome_browser_chromeos.gypi?r1=270040&r2=270039&pathrev=270040
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/extensions/file_system_provider/file_system_provider_api.cc?r1=270040&r2=270039&pathrev=270040
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/fake_provided_file_system.cc?r1=270040&r2=270039&pathrev=270040
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/operations/open_file.h?r1=270040&r2=270039&pathrev=270040

[fsp] Add support for opening files.

This patch adds support to opening a file. It is currently no-op, and it is
not yet bound to fileapi.

In order to bound it to fileapi::AsyncFileUtil, we need to implement closing
operation, and reading operations first. Otherwise, creating a snapshot
(required by fileapi::AsyncFileUtil) is not possible.

TEST=unit_tests: *FileSystemProvider*OpenFile*
BUG=248427

Review URL: https://codereview.chromium.org/284443002
-----------------------------------------------------------------
Project Member Comment 99 by bugdroid1@chromium.org, May 13 2014
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/3be2f5d41e60f20a14adad062f6c13963c52c819

commit 3be2f5d41e60f20a14adad062f6c13963c52c819
Author: mtomasz@chromium.org <mtomasz@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>
Date: Tue May 13 16:13:44 2014

[fsp] Add support for closing files.

This patch adds support for closing files. It is currently a no-op, and it is
not yet bound to fileapi.

TEST=chromium: *FileSystemProvider*CloseFile*
BUG=248427

Review URL: https://codereview.chromium.org/279213002

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


Project Member Comment 100 by bugdroid1@chromium.org, May 13 2014
------------------------------------------------------------------
r270116 | mtomasz@chromium.org | 2014-05-13T16:13:44.434559Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/chrome_browser_chromeos.gypi?r1=270116&r2=270115&pathrev=270116
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/fake_provided_file_system.cc?r1=270116&r2=270115&pathrev=270116
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/fake_provided_file_system.h?r1=270116&r2=270115&pathrev=270116
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/api/file_system_provider_internal.idl?r1=270116&r2=270115&pathrev=270116
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/provided_file_system.cc?r1=270116&r2=270115&pathrev=270116
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/provided_file_system.h?r1=270116&r2=270115&pathrev=270116
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/api/file_system_provider.idl?r1=270116&r2=270115&pathrev=270116
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/operations/open_file_unittest.cc?r1=270116&r2=270115&pathrev=270116
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/chrome_tests_unit.gypi?r1=270116&r2=270115&pathrev=270116
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/operations/open_file.cc?r1=270116&r2=270115&pathrev=270116
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/extensions/file_system_provider/file_system_provider_api.cc?r1=270116&r2=270115&pathrev=270116
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/operations/open_file.h?r1=270116&r2=270115&pathrev=270116
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/operations/close_file_unittest.cc?r1=270116&r2=270115&pathrev=270116
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/extensions/file_system_provider/file_system_provider_api.h?r1=270116&r2=270115&pathrev=270116
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/operations/close_file.cc?r1=270116&r2=270115&pathrev=270116
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/operations/close_file.h?r1=270116&r2=270115&pathrev=270116
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/provided_file_system_interface.h?r1=270116&r2=270115&pathrev=270116

[fsp] Add support for closing files.

This patch adds support for closing files. It is currently a no-op, and it is
not yet bound to fileapi.

TEST=chromium: *FileSystemProvider*CloseFile*
BUG=248427

Review URL: https://codereview.chromium.org/279213002
-----------------------------------------------------------------
Blocking: chromium:370555
Project Member Comment 102 by bugdroid1@chromium.org, May 16 2014
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/b368b210ecb03f8e0952d2332001732a26f011ea

commit b368b210ecb03f8e0952d2332001732a26f011ea
Author: mtomasz@chromium.org <mtomasz@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>
Date: Fri May 16 05:40:43 2014

[fsp] Add histograms for reading files.

This is a split of https://codereview.chromium.org/287673004/, to avoid
merging issues.

It is almost impossible to land a CL adding histograms via CQ, without
a merging conflict.

TBR=isherman@chromium.org
TEST=Just histograms, no actual changes.
BUG=248427

Review URL: https://codereview.chromium.org/289063006

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


Project Member Comment 103 by bugdroid1@chromium.org, May 16 2014
------------------------------------------------------------------
r270942 | mtomasz@chromium.org | 2014-05-16T05:40:43.709816Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/extensions/browser/extension_function_histogram_value.h?r1=270942&r2=270941&pathrev=270942
   M http://src.chromium.org/viewvc/chrome/trunk/src/tools/metrics/histograms/histograms.xml?r1=270942&r2=270941&pathrev=270942

[fsp] Add histograms for reading files.

This is a split of https://codereview.chromium.org/287673004/, to avoid
merging issues.

It is almost impossible to land a CL adding histograms via CQ, without
a merging conflict.

TBR=isherman@chromium.org
TEST=Just histograms, no actual changes.
BUG=248427

Review URL: https://codereview.chromium.org/289063006
-----------------------------------------------------------------
Project Member Comment 104 by bugdroid1@chromium.org, May 16 2014
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/60dfffbd9285a14b932310697315a85589b1321f

commit 60dfffbd9285a14b932310697315a85589b1321f
Author: mtomasz@chromium.org <mtomasz@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>
Date: Fri May 16 11:17:24 2014

[fsp] First part of support for reading files.

This patch adds the read file operation, which is however not bound yet to
fileapi.

In the upcoming patch, support for FileStreamReader will be added. After that,
OpenFile, CloseFile and ReadFile will be bound to async file utils.

TEST=unit_tests: *FileSystemProvider*ReadFile*
BUG=248427

Review URL: https://codereview.chromium.org/287673004

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


Project Member Comment 105 by bugdroid1@chromium.org, May 16 2014
------------------------------------------------------------------
r270985 | mtomasz@chromium.org | 2014-05-16T11:17:24.954565Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/extensions/file_system_provider/file_system_provider_api.h?r1=270985&r2=270984&pathrev=270985
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/operations/read_file_unittest.cc?r1=270985&r2=270984&pathrev=270985
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/operations/read_file.cc?r1=270985&r2=270984&pathrev=270985
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/operations/read_file.h?r1=270985&r2=270984&pathrev=270985
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/provided_file_system_interface.h?r1=270985&r2=270984&pathrev=270985
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/chrome_browser_chromeos.gypi?r1=270985&r2=270984&pathrev=270985
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/fake_provided_file_system.cc?r1=270985&r2=270984&pathrev=270985
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/fake_provided_file_system.h?r1=270985&r2=270984&pathrev=270985
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/renderer/resources/extensions/file_system_provider_custom_bindings.js?r1=270985&r2=270984&pathrev=270985
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/api/file_system_provider_internal.idl?r1=270985&r2=270984&pathrev=270985
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/provided_file_system.cc?r1=270985&r2=270984&pathrev=270985
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/provided_file_system.h?r1=270985&r2=270984&pathrev=270985
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/api/file_system_provider.idl?r1=270985&r2=270984&pathrev=270985
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/chrome_tests_unit.gypi?r1=270985&r2=270984&pathrev=270985
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/request_value.cc?r1=270985&r2=270984&pathrev=270985
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/extensions/file_system_provider/file_system_provider_api.cc?r1=270985&r2=270984&pathrev=270985
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/request_value.h?r1=270985&r2=270984&pathrev=270985

[fsp] First part of support for reading files.

This patch adds the read file operation, which is however not bound yet to
fileapi.

In the upcoming patch, support for FileStreamReader will be added. After that,
OpenFile, CloseFile and ReadFile will be bound to async file utils.

TEST=unit_tests: *FileSystemProvider*ReadFile*
BUG=248427

Review URL: https://codereview.chromium.org/287673004
-----------------------------------------------------------------
Project Member Comment 106 by bugdroid1@chromium.org, May 21 2014
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/83efcca84ad02b82422daf9e534960ccbce88e4f

commit 83efcca84ad02b82422daf9e534960ccbce88e4f
Author: mtomasz@chromium.org <mtomasz@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>
Date: Wed May 21 20:17:40 2014

[fsp] Do not crash on an invalid modification time.

Before, if a modification time was InvalidDate, then it caused a crash on
a DCHECK converting a string date to base::Time.

Providers may return an incorrect date, and we shouldn't crash. This patch
resolves this issue by removing the DCHECK and passing the invalid date
to fileapi.

TEST=unit_test: *FileSystemProvider*GetMetadata*
BUG=248427

Review URL: https://codereview.chromium.org/295933002

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


Project Member Comment 107 by bugdroid1@chromium.org, May 21 2014
------------------------------------------------------------------
r271959 | mtomasz@chromium.org | 2014-05-21T20:17:40.307906Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/operations/get_metadata.cc?r1=271959&r2=271958&pathrev=271959
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/api_test/file_system_provider/get_metadata/test.js?r1=271959&r2=271958&pathrev=271959

[fsp] Do not crash on an invalid modification time.

Before, if a modification time was InvalidDate, then it caused a crash on
a DCHECK converting a string date to base::Time.

Providers may return an incorrect date, and we shouldn't crash. This patch
resolves this issue by removing the DCHECK and passing the invalid date
to fileapi.

TEST=unit_test: *FileSystemProvider*GetMetadata*
BUG=248427

Review URL: https://codereview.chromium.org/295933002
-----------------------------------------------------------------
Project Member Comment 108 by bugdroid1@chromium.org, May 22 2014
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/839b0795344532853f699161c44b69a454397366

commit 839b0795344532853f699161c44b69a454397366
Author: mtomasz@chromium.org <mtomasz@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>
Date: Thu May 22 01:26:31 2014

[fsp] Add FileStreamReader for the reading operation.

This patch adds a FileStreamReader implementation for provided file systeme.
Note, that this is an initial version, which doesn't validate modification time.
That will be added in a separate patch.

TEST=browser_tests: *FileSystemProvider*ReadFile*,
     unit_tests: *FileSystemProvider*FileStreamReader*
BUG=248427
R=benwells@chromium.org, hirono@chromium.org, kinaba@chromium.org

Review URL: https://codereview.chromium.org/288113004

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


Project Member Comment 109 by bugdroid1@chromium.org, May 22 2014
------------------------------------------------------------------
r272041 | mtomasz@chromium.org | 2014-05-22T01:26:31.009667Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/renderer/resources/extensions/file_system_provider_custom_bindings.js?r1=272041&r2=272040&pathrev=272041
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/api/file_system_provider_internal.idl?r1=272041&r2=272040&pathrev=272041
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/api_test/file_system_provider/read_file/test.js?r1=272041&r2=272040&pathrev=272041
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/provided_file_system.cc?r1=272041&r2=272040&pathrev=272041
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/api/file_system_provider.idl?r1=272041&r2=272040&pathrev=272041
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/provided_file_system.h?r1=272041&r2=272040&pathrev=272041
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/chrome_tests_unit.gypi?r1=272041&r2=272040&pathrev=272041
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/api_test/file_system_provider/read_file?r1=272041&r2=272040&pathrev=272041
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/fileapi/file_stream_reader_unittest.cc?r1=272041&r2=272040&pathrev=272041
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/extensions/file_system_provider/file_system_provider_apitest.cc?r1=272041&r2=272040&pathrev=272041
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/fileapi/file_stream_reader.cc?r1=272041&r2=272040&pathrev=272041
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/fileapi/file_stream_reader.h?r1=272041&r2=272040&pathrev=272041
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/provided_file_system_info.cc?r1=272041&r2=272040&pathrev=272041
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/fileapi/backend_delegate.cc?r1=272041&r2=272040&pathrev=272041
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/operations/read_file_unittest.cc?r1=272041&r2=272040&pathrev=272041
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/operations/read_file.cc?r1=272041&r2=272040&pathrev=272041
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/api_test/file_system_provider/read_file/manifest.json?r1=272041&r2=272040&pathrev=272041
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/provided_file_system_interface.h?r1=272041&r2=272040&pathrev=272041
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/chrome_browser_chromeos.gypi?r1=272041&r2=272040&pathrev=272041
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/fake_provided_file_system.cc?r1=272041&r2=272040&pathrev=272041
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/fileapi/file_system_backend.cc?r1=272041&r2=272040&pathrev=272041
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/fake_provided_file_system.h?r1=272041&r2=272040&pathrev=272041

[fsp] Add FileStreamReader for the reading operation.

This patch adds a FileStreamReader implementation for provided file systeme.
Note, that this is an initial version, which doesn't validate modification time.
That will be added in a separate patch.

TEST=browser_tests: *FileSystemProvider*ReadFile*,
     unit_tests: *FileSystemProvider*FileStreamReader*
BUG=248427
R=benwells@chromium.org, hirono@chromium.org, kinaba@chromium.org

Review URL: https://codereview.chromium.org/288113004
-----------------------------------------------------------------
Comment 110 by pucc...@gmail.com, May 22 2014
Unsubscribe
@puccaso: You need to unclick the yellow star in the top left corner to unsubscribe.
Project Member Comment 112 by bugdroid1@chromium.org, May 22 2014
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/f0dbab957011d8fd913bfee0b3d14e77f51b8b3a

commit f0dbab957011d8fd913bfee0b3d14e77f51b8b3a
Author: mtomasz@chromium.org <mtomasz@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>
Date: Thu May 22 18:06:37 2014

[fsp] Let extensions decide about the file system id.

Previously, providing extensions were mounting virtual file systems by passing
the display name only. As a result, there was no easy way to detect, if the
virtual file system is already mounted.

This is a big issue for event pages, and extensions providing a remote file
system (not archive via file handlers). In such situation, they have to mount
the virtual file system as soon as the providing extension is launched.
However, the extension may be suspended (event page), and then launched again
once a request is emited to it. In such situation, the providing extension
would mount the file system again, and cause duplicated entries in Files app.

To prevent that, providing extensions need to be able to detect if they already
mounted the virtual file system.

The current solution let's extensions mount after each startup, but it would
fail quietly if a file system with the same id is already mounted.

Alternative would be creating a method which would enumerate already registered
file systems by the extension, but that would be an overkill.

Note, that this strategy is same as for context menus api:
https://developer.chrome.com/extensions/contextMenus#method-create

TEST=unit_tests: *FileSystemProvider*, browser_tests: *FileSystemProvider*
BUG=248427

Review URL: https://codereview.chromium.org/294073007

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


Project Member Comment 113 by bugdroid1@chromium.org, May 22 2014
------------------------------------------------------------------
r272232 | mtomasz@chromium.org | 2014-05-22T18:06:37.450696Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/mount_path_util.cc?r1=272232&r2=272231&pathrev=272232
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/extensions/file_manager/private_api_util.cc?r1=272232&r2=272231&pathrev=272232
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/mount_path_util.h?r1=272232&r2=272231&pathrev=272232
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/api/file_system_provider.idl?r1=272232&r2=272231&pathrev=272232
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/operations/operation.cc?r1=272232&r2=272231&pathrev=272232
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/operations/close_file_unittest.cc?r1=272232&r2=272231&pathrev=272232
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/provided_file_system_info.cc?r1=272232&r2=272231&pathrev=272232
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/extensions/file_system_provider/provider_function.cc?r1=272232&r2=272231&pathrev=272232
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/service_unittest.cc?r1=272232&r2=272231&pathrev=272232
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/service.cc?r1=272232&r2=272231&pathrev=272232
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/api_test/file_system_provider/read_directory/test.js?r1=272232&r2=272231&pathrev=272232
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/api_test/file_system_provider/unmount/test.js?r1=272232&r2=272231&pathrev=272232
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/mount_path_util_unittest.cc?r1=272232&r2=272231&pathrev=272232
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/renderer/resources/extensions/file_system_provider_custom_bindings.js?r1=272232&r2=272231&pathrev=272232
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/api_test/file_system_provider/read_file/test.js?r1=272232&r2=272231&pathrev=272232
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_manager/volume_manager.cc?r1=272232&r2=272231&pathrev=272232
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/api/file_system_provider_internal.idl?r1=272232&r2=272231&pathrev=272232
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/provided_file_system_unittest.cc?r1=272232&r2=272231&pathrev=272232
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_manager/volume_manager.h?r1=272232&r2=272231&pathrev=272232
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/operations/read_directory_unittest.cc?r1=272232&r2=272231&pathrev=272232
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/api_test/file_system_provider/get_metadata/test.js?r1=272232&r2=272231&pathrev=272232
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/operations/open_file_unittest.cc?r1=272232&r2=272231&pathrev=272232
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/fileapi/file_stream_reader_unittest.cc?r1=272232&r2=272231&pathrev=272232
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/extensions/file_system_provider/file_system_provider_api.cc?r1=272232&r2=272231&pathrev=272232
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/fileapi/provider_async_file_util_unittest.cc?r1=272232&r2=272231&pathrev=272232
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/provided_file_system_info.h?r1=272232&r2=272231&pathrev=272232
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/operations/read_file_unittest.cc?r1=272232&r2=272231&pathrev=272232
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/extensions/file_manager/private_api_mount.cc?r1=272232&r2=272231&pathrev=272232
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/extensions/file_system_provider/provider_function.h?r1=272232&r2=272231&pathrev=272232
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/api/file_browser_private.idl?r1=272232&r2=272231&pathrev=272232
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/operations/get_metadata_unittest.cc?r1=272232&r2=272231&pathrev=272232
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/service.h?r1=272232&r2=272231&pathrev=272232
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/operations/get_metadata.cc?r1=272232&r2=272231&pathrev=272232
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/api_test/file_system_provider/mount/test.js?r1=272232&r2=272231&pathrev=272232

[fsp] Let extensions decide about the file system id.

Previously, providing extensions were mounting virtual file systems by passing
the display name only. As a result, there was no easy way to detect, if the
virtual file system is already mounted.

This is a big issue for event pages, and extensions providing a remote file
system (not archive via file handlers). In such situation, they have to mount
the virtual file system as soon as the providing extension is launched.
However, the extension may be suspended (event page), and then launched again
once a request is emited to it. In such situation, the providing extension
would mount the file system again, and cause duplicated entries in Files app.

To prevent that, providing extensions need to be able to detect if they already
mounted the virtual file system.

The current solution let's extensions mount after each startup, but it would
fail quietly if a file system with the same id is already mounted.

Alternative would be creating a method which would enumerate already registered
file systems by the extension, but that would be an overkill.

Note, that this strategy is same as for context menus api:
https://developer.chrome.com/extensions/contextMenus#method-create

TEST=unit_tests: *FileSystemProvider*, browser_tests: *FileSystemProvider*
BUG=248427

Review URL: https://codereview.chromium.org/294073007
-----------------------------------------------------------------
Labels: Iteration-107
moving to iteration-107
Labels: -M-36 -Iteration-107 M-37
Project Member Comment 116 by bugdroid1@chromium.org, Jun 2 2014
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/d32e64031e9d24ff1b1d9be499b25038e6c5936b

commit d32e64031e9d24ff1b1d9be499b25038e6c5936b
Author: mtomasz@chromium.org <mtomasz@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>
Date: Mon Jun 02 05:50:54 2014

[fsp] Fix crash when reading files.

Before, the net::IOBuffer was being passed as a pointer, from the
FileStreamReader::Read to operations::ReadFile. However, there are PostTask
invocations on the way. When FileStreamReader is deleted after a PostTask is
fired from FileStreamReader::Read, and the operation is not completed, then
the net::IOBuffer will become invalid. When the operation is completed,
operation::ReadFile would cause a segmentation fault.

Since net::IOBuffer is ref counted, we should pass it as ref counted object
to be sure, that the buffer is always valid.

This patch migrates from passing IOBuffer as a pointer, to scoped_refptr.

TEST=Tested manually, that crashing doesn't occur anymore.
BUG=248427

Review URL: https://codereview.chromium.org/301973007

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


Project Member Comment 117 by bugdroid1@chromium.org, Jun 2 2014
------------------------------------------------------------------
r274174 | mtomasz@chromium.org | 2014-06-02T05:50:54.926144Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/operations/read_file.cc?r1=274174&r2=274173&pathrev=274174
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/operations/read_file.h?r1=274174&r2=274173&pathrev=274174
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/fileapi/file_stream_reader.cc?r1=274174&r2=274173&pathrev=274174
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/fileapi/file_stream_reader.h?r1=274174&r2=274173&pathrev=274174

[fsp] Fix crash when reading files.

Before, the net::IOBuffer was being passed as a pointer, from the
FileStreamReader::Read to operations::ReadFile. However, there are PostTask
invocations on the way. When FileStreamReader is deleted after a PostTask is
fired from FileStreamReader::Read, and the operation is not completed, then
the net::IOBuffer will become invalid. When the operation is completed,
operation::ReadFile would cause a segmentation fault.

Since net::IOBuffer is ref counted, we should pass it as ref counted object
to be sure, that the buffer is always valid.

This patch migrates from passing IOBuffer as a pointer, to scoped_refptr.

TEST=Tested manually, that crashing doesn't occur anymore.
BUG=248427

Review URL: https://codereview.chromium.org/301973007
-----------------------------------------------------------------
Project Member Comment 118 by bugdroid1@chromium.org, Jun 2 2014
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/7de7aeed2c18d64bafc4a46250dee1abf1b69ee0

commit 7de7aeed2c18d64bafc4a46250dee1abf1b69ee0
Author: mtomasz@chromium.org <mtomasz@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>
Date: Mon Jun 02 12:37:52 2014

[fsp] Store mounted file systems in preferences.

Providing extensions will very often mount provided file systems on startup.
When an extension is installed, the background is executed, and hence the file
system registered.

Since providing extensions should be event pages, they will also register
all of the request events, so the extension is woken up once there is a request
sent to it.

However, the background page is not run after a reboot. All of the registered
events are remembered in preferences, but mounted file systems not. As a result
after a reboot, the file systems are lost.

To overcome this issue, this CL introduces storing mounted file systems to
preferences, so they are remounted automatically after a reboot, once the
extensions are loaded. This is consistent with remembering registered
event handlers in preferences.

Note, that if the extension is gone after a reboot, then remounting will not
be performed, since it is done after the extension is loaded.

All of the mounted file systems are written to preferences during shutdown.

TEST=TBD
BUG=248427

Review URL: https://codereview.chromium.org/295413002

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


Project Member Comment 119 by bugdroid1@chromium.org, Jun 2 2014
------------------------------------------------------------------
r274214 | mtomasz@chromium.org | 2014-06-02T12:37:52.123631Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/service.h?r1=274214&r2=274213&pathrev=274214
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/prefs/browser_prefs.cc?r1=274214&r2=274213&pathrev=274214
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/pref_names.cc?r1=274214&r2=274213&pathrev=274214
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/pref_names.h?r1=274214&r2=274213&pathrev=274214
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/service_unittest.cc?r1=274214&r2=274213&pathrev=274214
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/service.cc?r1=274214&r2=274213&pathrev=274214

[fsp] Store mounted file systems in preferences.

Providing extensions will very often mount provided file systems on startup.
When an extension is installed, the background is executed, and hence the file
system registered.

Since providing extensions should be event pages, they will also register
all of the request events, so the extension is woken up once there is a request
sent to it.

However, the background page is not run after a reboot. All of the registered
events are remembered in preferences, but mounted file systems not. As a result
after a reboot, the file systems are lost.

To overcome this issue, this CL introduces storing mounted file systems to
preferences, so they are remounted automatically after a reboot, once the
extensions are loaded. This is consistent with remembering registered
event handlers in preferences.

Note, that if the extension is gone after a reboot, then remounting will not
be performed, since it is done after the extension is loaded.

All of the mounted file systems are written to preferences during shutdown.

TEST=TBD
BUG=248427

Review URL: https://codereview.chromium.org/295413002
-----------------------------------------------------------------
Project Member Comment 120 by bugdroid1@chromium.org, Jun 10 2014
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/31c55bee2cf3edcea8b1a087f7a34f50abddfb1d

commit 31c55bee2cf3edcea8b1a087f7a34f50abddfb1d
Author: mtomasz@chromium.org <mtomasz@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>
Date: Tue Jun 10 12:51:46 2014

[fsp] Fix incorrect handling of file system URLs when containing a %.

Mount point names can (and in case of File System Provider API often do) the %
character, in order to create a safe mount point name from an arbitrary file
system id, which can be any string, and often is a file name path. Such path
may contain /, which have to be escaped, since the mount point name must not
contain that character.

However, GetExternalFileSystemRootURIString() wasn't properly escaping the %
character, what caused treating it later as an encoding sequence of an url.

TEST=Tested manually with a file systems containing % in the mount point name.
BUG=248427

Review URL: https://codereview.chromium.org/312283002

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


Project Member Comment 121 by bugdroid1@chromium.org, Jun 10 2014
------------------------------------------------------------------
r276002 | mtomasz@chromium.org | 2014-06-10T12:51:46.657079Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/common/fileapi/file_system_util_unittest.cc?r1=276002&r2=276001&pathrev=276002
   M http://src.chromium.org/viewvc/chrome/trunk/src/webkit/common/fileapi/file_system_util.cc?r1=276002&r2=276001&pathrev=276002

[fsp] Fix incorrect handling of file system URLs when containing a %.

Mount point names can (and in case of File System Provider API often do) the %
character, in order to create a safe mount point name from an arbitrary file
system id, which can be any string, and often is a file name path. Such path
may contain /, which have to be escaped, since the mount point name must not
contain that character.

However, GetExternalFileSystemRootURIString() wasn't properly escaping the %
character, what caused treating it later as an encoding sequence of an url.

TEST=Tested manually with a file systems containing % in the mount point name.
BUG=248427

Review URL: https://codereview.chromium.org/312283002
-----------------------------------------------------------------
Interesting update. A prototyped purely JavaScript ZIP providing file system is only 2.2x slower than the fuse based solution! I think this is a very good result.

I'm going to profile the entire pipeline to see what is taking the most time. If it is the decompression algorithm, then we could speed it up by writing a NaCL module. If it is IPC, then there is not much we can do.
Labels: -M-37 m-38
Project Member Comment 124 by bugdroid1@chromium.org, Jun 24 2014
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/7f9706c742ed8a70284811a3cd6adb4c966b1d7a

commit 7f9706c742ed8a70284811a3cd6adb4c966b1d7a
Author: mtomasz@chromium.org <mtomasz@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>
Date: Tue Jun 24 23:16:43 2014

[fsp] Add notifications in case of slow operations.

Previously, every request was aborted automatically if it took more than 10
seconds. However, for remote file systems using eg HTTP, on slow connection
operation can take longer.

Another situation is when a providing extension shows a dialog for eg.
password or credentials. We don't want to abort an operation in such case.

This CL introduces a notification which is shown when an operation takes
longer than expected. Users can abort the operation by clicking on the
'ABORT' button.

TEST=unit_tests: *FileSystemProvider*Timeout*
BUG=248427

Review URL: https://codereview.chromium.org/350683002

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


Project Member Comment 125 by bugdroid1@chromium.org, Jun 24 2014
------------------------------------------------------------------
r279541 | mtomasz@chromium.org | 2014-06-24T23:16:43.333642Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/provided_file_system.h?r1=279541&r2=279540&pathrev=279541
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/request_manager_unittest.cc?r1=279541&r2=279540&pathrev=279541
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/notification_manager.h?r1=279541&r2=279540&pathrev=279541
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/notification_manager_interface.h?r1=279541&r2=279540&pathrev=279541
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/request_manager.cc?r1=279541&r2=279540&pathrev=279541
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/service.h?r1=279541&r2=279540&pathrev=279541
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/chrome_browser_chromeos.gypi?r1=279541&r2=279540&pathrev=279541
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/request_manager.h?r1=279541&r2=279540&pathrev=279541
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/fake_provided_file_system.cc?r1=279541&r2=279540&pathrev=279541
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/fake_provided_file_system.h?r1=279541&r2=279540&pathrev=279541
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/provided_file_system.cc?r1=279541&r2=279540&pathrev=279541
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/app/chromeos_strings.grdp?r1=279541&r2=279540&pathrev=279541
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/notification_manager.cc?r1=279541&r2=279540&pathrev=279541
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/service.cc?r1=279541&r2=279540&pathrev=279541

[fsp] Add notifications in case of slow operations.

Previously, every request was aborted automatically if it took more than 10
seconds. However, for remote file systems using eg HTTP, on slow connection
operation can take longer.

Another situation is when a providing extension shows a dialog for eg.
password or credentials. We don't want to abort an operation in such case.

This CL introduces a notification which is shown when an operation takes
longer than expected. Users can abort the operation by clicking on the
'ABORT' button.

TEST=unit_tests: *FileSystemProvider*Timeout*
BUG=248427

Review URL: https://codereview.chromium.org/350683002
-----------------------------------------------------------------
Blockedon: chromium:367027
Project Member Comment 127 by bugdroid1@chromium.org, Jun 26 2014
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/fb40f0bd6fdfb7cf6408e205e23cd532eb8fde44

commit fb40f0bd6fdfb7cf6408e205e23cd532eb8fde44
Author: mtomasz@chromium.org <mtomasz@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>
Date: Thu Jun 26 08:14:10 2014

[fsp] Add documentation for the File System Provider API.

This patch adds basic documentation, which is mostly auto generated.

TEST=Tested manually with a testing server.
BUG=248427

Review URL: https://codereview.chromium.org/356463002

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


Project Member Comment 128 by bugdroid1@chromium.org, Jun 26 2014
------------------------------------------------------------------
r279959 | mtomasz@chromium.org | 2014-06-26T08:14:10.813606Z

Changed paths:
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/templates/intros/fileSystemProvider.html?r1=279959&r2=279958&pathrev=279959
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/templates/public/apps/fileSystemProvider.html?r1=279959&r2=279958&pathrev=279959
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/api/file_system_provider.idl?r1=279959&r2=279958&pathrev=279959

[fsp] Add documentation for the File System Provider API.

This patch adds basic documentation, which is mostly auto generated.

TEST=Tested manually with a testing server.
BUG=248427

Review URL: https://codereview.chromium.org/356463002
-----------------------------------------------------------------
Project Member Comment 129 by bugdroid1@chromium.org, Jul 2 2014
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/f5920b1b78b3adee59895ac93afc90a39570bdf1

commit f5920b1b78b3adee59895ac93afc90a39570bdf1
Author: mtomasz@chromium.org <mtomasz@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>
Date: Wed Jul 02 12:51:56 2014

[fsp] Remove weak pointers from loggers wherever possible.

Crashing is better than ignoring an unexpected callback call.
This patch removes weak pointers from loggers, which used to prevent catching
such bugs.

TEST=unit_test: *FileSystemProvider*
BUG=248427

Review URL: https://codereview.chromium.org/365583003

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


Project Member Comment 130 by bugdroid1@chromium.org, Jul 2 2014
------------------------------------------------------------------
r281009 | mtomasz@chromium.org | 2014-07-02T12:51:56.756169Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/operations/close_file_unittest.cc?r1=281009&r2=281008&pathrev=281009
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/operations/unmount_unittest.cc?r1=281009&r2=281008&pathrev=281009
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/operations/read_file_unittest.cc?r1=281009&r2=281008&pathrev=281009
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/provided_file_system_unittest.cc?r1=281009&r2=281008&pathrev=281009
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/operations/get_metadata_unittest.cc?r1=281009&r2=281008&pathrev=281009
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/operations/read_directory_unittest.cc?r1=281009&r2=281008&pathrev=281009
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/operations/open_file_unittest.cc?r1=281009&r2=281008&pathrev=281009

[fsp] Remove weak pointers from loggers wherever possible.

Crashing is better than ignoring an unexpected callback call.
This patch removes weak pointers from loggers, which used to prevent catching
such bugs.

TEST=unit_test: *FileSystemProvider*
BUG=248427

Review URL: https://codereview.chromium.org/365583003
-----------------------------------------------------------------
Project Member Comment 131 by bugdroid1@chromium.org, Jul 3 2014
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/8ea59aa4e3bddac3a4b8abce2460986bbb0a1752

commit 8ea59aa4e3bddac3a4b8abce2460986bbb0a1752
Author: mtomasz@chromium.org <mtomasz@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>
Date: Thu Jul 03 12:27:41 2014

[fsp] Check for modification time in the file stream reader.

According to the FileStreamReader interface, we have to check the modification
time if it is the same as the expected one.

Note, that we can provide a better file integration mechanisms within providing
extensions.

TEST=unit_tests: *FileSystemProviderFileStreamReader*Modif*
BUG=248427

Review URL: https://codereview.chromium.org/366073002

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


Project Member Comment 132 by bugdroid1@chromium.org, Jul 3 2014
------------------------------------------------------------------
r281247 | mtomasz@chromium.org | 2014-07-03T12:27:41.349238Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/fileapi/file_stream_reader_unittest.cc?r1=281247&r2=281246&pathrev=281247
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/fake_provided_file_system.cc?r1=281247&r2=281246&pathrev=281247
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/fileapi/file_stream_reader.cc?r1=281247&r2=281246&pathrev=281247
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/fake_provided_file_system.h?r1=281247&r2=281246&pathrev=281247
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/fileapi/file_stream_reader.h?r1=281247&r2=281246&pathrev=281247

[fsp] Check for modification time in the file stream reader.

According to the FileStreamReader interface, we have to check the modification
time if it is the same as the expected one.

Note, that we can provide a better file integration mechanisms within providing
extensions.

TEST=unit_tests: *FileSystemProviderFileStreamReader*Modif*
BUG=248427

Review URL: https://codereview.chromium.org/366073002
-----------------------------------------------------------------
Project Member Comment 133 by bugdroid1@chromium.org, Jul 4 2014
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/013db65cccb657d7fea7f2f08709c8cb961222b6

commit 013db65cccb657d7fea7f2f08709c8cb961222b6
Author: mtomasz@chromium.org <mtomasz@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>
Date: Fri Jul 04 11:18:29 2014

[fsp] Cleanup operations' unit tests.

Repeated code has been extracted to a separate file. Moreover, the logger
for the StatusCallback has been replaced with a simpler solution.

TEST=unit_tests: *FileSystemProviderOperation*
BUG=248427

Review URL: https://codereview.chromium.org/363383007

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


Project Member Comment 134 by bugdroid1@chromium.org, Jul 4 2014
------------------------------------------------------------------
r281390 | mtomasz@chromium.org | 2014-07-04T11:18:29.322126Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/operations/read_file_unittest.cc?r1=281390&r2=281389&pathrev=281390
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/operations/test_util.cc?r1=281390&r2=281389&pathrev=281390
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/operations/get_metadata_unittest.cc?r1=281390&r2=281389&pathrev=281390
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/operations/read_directory_unittest.cc?r1=281390&r2=281389&pathrev=281390
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/operations/test_util.h?r1=281390&r2=281389&pathrev=281390
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/operations/open_file_unittest.cc?r1=281390&r2=281389&pathrev=281390
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/chrome_tests_unit.gypi?r1=281390&r2=281389&pathrev=281390
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/operations/close_file_unittest.cc?r1=281390&r2=281389&pathrev=281390
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/operations/unmount_unittest.cc?r1=281390&r2=281389&pathrev=281390

[fsp] Cleanup operations' unit tests.

Repeated code has been extracted to a separate file. Moreover, the logger
for the StatusCallback has been replaced with a simpler solution.

TEST=unit_tests: *FileSystemProviderOperation*
BUG=248427

Review URL: https://codereview.chromium.org/363383007
-----------------------------------------------------------------
Project Member Comment 135 by bugdroid1@chromium.org, Jul 7 2014
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/2278c2c256ac816041b036212e98477c72f2a0ae

commit 2278c2c256ac816041b036212e98477c72f2a0ae
Author: mtomasz@chromium.org <mtomasz@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>
Date: Mon Jul 07 16:02:23 2014

[fsp] Simplify browser tests by extracting the common code.

This patch extracts the common code used by most of File System Provider API
browser tests to a helper extension.

Note, that this is the first cleanup step. The next one would be creating
a utility function for creating fake metadata (since it takes too much of each
test).

TEST=browser_tests: *FileSystemProvider*
BUG=248427

Review URL: https://codereview.chromium.org/374543002

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


Project Member Comment 136 by bugdroid1@chromium.org, Jul 7 2014
------------------------------------------------------------------
r281547 | mtomasz@chromium.org | 2014-07-07T16:02:23.929738Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/api_test/file_system_provider/read_file/manifest.json?r1=281547&r2=281546&pathrev=281547
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/api_test/file_system_provider/evil/test.js?r1=281547&r2=281546&pathrev=281547
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/api_test/file_system_provider/read_directory/test.js?r1=281547&r2=281546&pathrev=281547
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/api_test/file_system_provider/big_file/test.js?r1=281547&r2=281546&pathrev=281547
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/api_test/file_system_provider/test_util/manifest.json?r1=281547&r2=281546&pathrev=281547
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/api_test/file_system_provider/get_metadata/manifest.json?r1=281547&r2=281546&pathrev=281547
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/api_test/file_system_provider/unmount/test.js?r1=281547&r2=281546&pathrev=281547
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/api_test/file_system_provider/test_util/test_util.js?r1=281547&r2=281546&pathrev=281547
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/api_test/file_system_provider/read_file/test.js?r1=281547&r2=281546&pathrev=281547
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/api_test/file_system_provider/mime_type/manifest.json?r1=281547&r2=281546&pathrev=281547
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/api_test/file_system_provider/get_metadata/test.js?r1=281547&r2=281546&pathrev=281547
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/extensions/file_system_provider/file_system_provider_apitest.cc?r1=281547&r2=281546&pathrev=281547
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/api_test/file_system_provider/test_util?r1=281547&r2=281546&pathrev=281547
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/api_test/file_system_provider/evil/manifest.json?r1=281547&r2=281546&pathrev=281547
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/api_test/file_system_provider/read_directory/manifest.json?r1=281547&r2=281546&pathrev=281547
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/api_test/file_system_provider/big_file/manifest.json?r1=281547&r2=281546&pathrev=281547
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/api_test/file_system_provider/mount/manifest.json?r1=281547&r2=281546&pathrev=281547
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/api_test/file_system_provider/mime_type/test.js?r1=281547&r2=281546&pathrev=281547
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/api_test/file_system_provider/unmount/manifest.json?r1=281547&r2=281546&pathrev=281547

[fsp] Simplify browser tests by extracting the common code.

This patch extracts the common code used by most of File System Provider API
browser tests to a helper extension.

Note, that this is the first cleanup step. The next one would be creating
a utility function for creating fake metadata (since it takes too much of each
test).

TEST=browser_tests: *FileSystemProvider*
BUG=248427

Review URL: https://codereview.chromium.org/374543002
-----------------------------------------------------------------
Project Member Comment 137 by bugdroid1@chromium.org, Jul 8 2014
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/006e3843cd7b61a09b73b1efa337ad6b1158112d

commit 006e3843cd7b61a09b73b1efa337ad6b1158112d
Author: mtomasz@chromium.org <mtomasz@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>
Date: Tue Jul 08 02:51:15 2014

[fsp] Extract common code for metadata handling in browser tests.

Because most of the browser tests of the File System Provider API need some
testing files to work on, there was a lot of duplicated code.

This patch extracts the metadata handling code as a default implementation
of the onMetadataRequested event.

TEST=browser_tests: *FileSystemProvider*
BUG=248427

Review URL: https://codereview.chromium.org/373743002

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


Project Member Comment 138 by bugdroid1@chromium.org, Jul 8 2014
------------------------------------------------------------------
r281644 | mtomasz@chromium.org | 2014-07-08T02:51:15.196851Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/api_test/file_system_provider/mime_type/test.js?r1=281644&r2=281643&pathrev=281644
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/api_test/file_system_provider/test_util/test_util.js?r1=281644&r2=281643&pathrev=281644
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/api_test/file_system_provider/read_file/test.js?r1=281644&r2=281643&pathrev=281644
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/api_test/file_system_provider/evil/test.js?r1=281644&r2=281643&pathrev=281644
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/api_test/file_system_provider/read_directory/test.js?r1=281644&r2=281643&pathrev=281644
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/api_test/file_system_provider/big_file/test.js?r1=281644&r2=281643&pathrev=281644

[fsp] Extract common code for metadata handling in browser tests.

Because most of the browser tests of the File System Provider API need some
testing files to work on, there was a lot of duplicated code.

This patch extracts the metadata handling code as a default implementation
of the onMetadataRequested event.

TEST=browser_tests: *FileSystemProvider*
BUG=248427

Review URL: https://codereview.chromium.org/373743002
-----------------------------------------------------------------
Comment 139 Deleted
@lshatokhin: We're working hard on an API allowing developers to extend Files app with support for any type of virtual file system, including SAMBA.
Project Member Comment 141 by bugdroid1@chromium.org, Jul 8 2014
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/981028610a9154093e101a743864abb6962ccc3c

commit 981028610a9154093e101a743864abb6962ccc3c
Author: mtomasz@chromium.org <mtomasz@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>
Date: Tue Jul 08 07:20:50 2014

[fsp] Fix includes order in tests.

According to our style guide, in unit tests, the tested file's header should
be first.

TEST=Not related. Refactoring only.
BUG=248427

Review URL: https://codereview.chromium.org/372963002

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


Project Member Comment 142 by bugdroid1@chromium.org, Jul 8 2014
------------------------------------------------------------------
r281684 | mtomasz@chromium.org | 2014-07-08T07:20:50.028565Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/operations/read_file_unittest.cc?r1=281684&r2=281683&pathrev=281684
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/provided_file_system_unittest.cc?r1=281684&r2=281683&pathrev=281684
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/service_unittest.cc?r1=281684&r2=281683&pathrev=281684
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/operations/get_metadata_unittest.cc?r1=281684&r2=281683&pathrev=281684
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/operations/read_directory_unittest.cc?r1=281684&r2=281683&pathrev=281684
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/request_manager_unittest.cc?r1=281684&r2=281683&pathrev=281684
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/operations/open_file_unittest.cc?r1=281684&r2=281683&pathrev=281684
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/fileapi/file_stream_reader_unittest.cc?r1=281684&r2=281683&pathrev=281684
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/operations/close_file_unittest.cc?r1=281684&r2=281683&pathrev=281684
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/operations/unmount_unittest.cc?r1=281684&r2=281683&pathrev=281684
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/mount_path_util_unittest.cc?r1=281684&r2=281683&pathrev=281684
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/fileapi/provider_async_file_util_unittest.cc?r1=281684&r2=281683&pathrev=281684

[fsp] Fix includes order in tests.

According to our style guide, in unit tests, the tested file's header should
be first.

TEST=Not related. Refactoring only.
BUG=248427

Review URL: https://codereview.chromium.org/372963002
-----------------------------------------------------------------
Project Member Comment 143 by bugdroid1@chromium.org, Jul 8 2014
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/100313e8793e4ae6c3b0a7cd7055a5d789fbaa43

commit 100313e8793e4ae6c3b0a7cd7055a5d789fbaa43
Author: mtomasz@chromium.org <mtomasz@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>
Date: Tue Jul 08 11:05:21 2014

[fsp] Rename file_system_name to display_name for consistency.

On the JS side, the argument is called displayName, so on C++ side it should
be display_name for consistency.

TBR=nkostylev@chromium.org
TEST=Not related. Refactoring only.
BUG=248427

Review URL: https://codereview.chromium.org/375793003

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


Project Member Comment 144 by bugdroid1@chromium.org, Jul 8 2014
------------------------------------------------------------------
r281717 | mtomasz@chromium.org | 2014-07-08T11:05:21.074184Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/operations/close_file_unittest.cc?r1=281717&r2=281716&pathrev=281717
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/operations/unmount_unittest.cc?r1=281717&r2=281716&pathrev=281717
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/provided_file_system_info.cc?r1=281717&r2=281716&pathrev=281717
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/ui/webui/chromeos/provided_file_systems_ui.cc?r1=281717&r2=281716&pathrev=281717
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/operations/read_file_unittest.cc?r1=281717&r2=281716&pathrev=281717
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/provided_file_system_info.h?r1=281717&r2=281716&pathrev=281717
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/service_unittest.cc?r1=281717&r2=281716&pathrev=281717
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/service.cc?r1=281717&r2=281716&pathrev=281717
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/operations/get_metadata_unittest.cc?r1=281717&r2=281716&pathrev=281717
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/service.h?r1=281717&r2=281716&pathrev=281717
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/mount_path_util_unittest.cc?r1=281717&r2=281716&pathrev=281717
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_manager/volume_manager.cc?r1=281717&r2=281716&pathrev=281717
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/provided_file_system_unittest.cc?r1=281717&r2=281716&pathrev=281717
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/notification_manager.cc?r1=281717&r2=281716&pathrev=281717
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/operations/read_directory_unittest.cc?r1=281717&r2=281716&pathrev=281717
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/operations/open_file_unittest.cc?r1=281717&r2=281716&pathrev=281717

[fsp] Rename file_system_name to display_name for consistency.

On the JS side, the argument is called displayName, so on C++ side it should
be display_name for consistency.

TBR=nkostylev@chromium.org
TEST=Not related. Refactoring only.
BUG=248427

Review URL: https://codereview.chromium.org/375793003
-----------------------------------------------------------------
Project Member Comment 145 by bugdroid1@chromium.org, Jul 10 2014
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/21ee39172e03386b6b1747b3cc41697b28e69cc3

commit 21ee39172e03386b6b1747b3cc41697b28e69cc3
Author: mtomasz@chromium.org <mtomasz@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>
Date: Thu Jul 10 08:23:54 2014

[fsp] Introduce BufferingFileStreamReader to read files in bigger chunks.

Default chunk size is 32KB and it is too small for provided file systems, which
require IPC calls for each chunk. Such small chunks cause the IPC overhead to
slow down the reading process drastically.

Moreover, since there is no streaming support in XMLHttpRequest, returning
data in chunks in providing extensions, requires making separate HTTP requests
with appriopriate Range header. That introduces another overhead.

This patch introduces a wrapper on a FileStreamReader, which converts 32KB
chunk requests to 512KB chunk requests to the underlying file stream  reader.

As a result, the overhead of IPC and HTTP is decreased significantly.

TEST=unit_tests: *FileSystemProvider*BufferingFileStreamReader*
BUG=248427

Review URL: https://codereview.chromium.org/318563002

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


Project Member Comment 146 by bugdroid1@chromium.org, Jul 10 2014
------------------------------------------------------------------
r282290 | mtomasz@chromium.org | 2014-07-10T08:23:54.642814Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/fileapi/backend_delegate.cc?r1=282290&r2=282289&pathrev=282290
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/fileapi/buffering_file_stream_reader_unittest.cc?r1=282290&r2=282289&pathrev=282290
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/fileapi/buffering_file_stream_reader.cc?r1=282290&r2=282289&pathrev=282290
   A http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/fileapi/buffering_file_stream_reader.h?r1=282290&r2=282289&pathrev=282290
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/chrome_tests_unit.gypi?r1=282290&r2=282289&pathrev=282290
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/chrome_browser_chromeos.gypi?r1=282290&r2=282289&pathrev=282290
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/api_test/file_system_provider/big_file/test.js?r1=282290&r2=282289&pathrev=282290
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/chromeos/file_system_provider/fileapi/file_stream_reader.h?r1=282290&r2=282289&pathrev=282290

[fsp] Introduce BufferingFileStreamReader to read files in bigger chunks.

Default chunk size is 32KB and it is too small for provided file systems, which
require IPC calls for each chunk. Such small chunks cause the IPC overhead to
slow down the reading process drastically.

Moreover, since there is no streaming support in XMLHttpRequest, returning
data in chunks in providing extensions, requires making separate HTTP requests
with appriopriate Range header. That introduces another overhead.

This patch introduces a wrapper on a FileStreamReader, which converts 32KB
chunk requests to 512KB chunk requests to the underlying file stream  reader.

As a result, the overhead of IPC and HTTP is decreased significantly.

TEST=unit_tests: *FileSystemProvider*BufferingFileStreamReader*
BUG=248427

Review URL: https://codereview.chromium.org/318563002
-----------------------------------------------------------------
Blocking: chromium:392894
Might be a good idea to make sure this is fully implemented before OS X Yosemite's public release, since Apple used its Finder to rip off Google's iCloud integration...
Comment 149 by ise...@gmail.com, Jul 29 2014
Will this API also include methods for invoking the native syncing UI (https://imgur.com/a/kyGKV)? If not, I feel like the syncing UI should not be limited to Google Drive only and should be exposed through chrome.fileSystemProvider.
The native syncing UI is removed even for Drive (bug 379979), preferring the public chrome.notifications (https://developer.chrome.com/extensions/notifications) API. Other filesystem providers should be able to use it as well.
Comment 151 by ise...@gmail.com, Jul 30 2014
Ah, ok. I'll use that instead.
Labels: -m-38 m-39
Blocking: chromium:402367
Project Member Comment 154 by bugdroid1@chromium.org, Sep 3 2014
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/cda0fd0081a30ddae388d95c297e3902a6c250bf

commit cda0fd0081a30ddae388d95c297e3902a6c250bf
Author: mtomasz <mtomasz@chromium.org>
Date: Wed Sep 03 04:33:16 2014

[fsp] Enable the File System Provider API on the dev channel.

The read-only version is pretty much done, so we should let developers use it
on the dev channel for initial feedback.

TEST=browser_tests: *FileSystemProvider*
BUG=248427

Review URL: https://codereview.chromium.org/531463002

Cr-Commit-Position: refs/heads/master@{#293063}

[modify] https://chromium.googlesource.com/chromium/src.git/+/cda0fd0081a30ddae388d95c297e3902a6c250bf/chrome/browser/chromeos/extensions/file_system_provider/file_system_provider_apitest.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/cda0fd0081a30ddae388d95c297e3902a6c250bf/chrome/common/extensions/api/_permission_features.json

Project Member Comment 155 by bugdroid1@chromium.org, Sep 3 2014
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/3485d1a05e0cc3ad01d363cdfea6786d2368080b

commit 3485d1a05e0cc3ad01d363cdfea6786d2368080b
Author: mtomasz <mtomasz@chromium.org>
Date: Wed Sep 03 07:34:20 2014

[fsp] Remove length from the OnWriteFileOperation().

The length is already available as data.byteLength, where data is of
the ArrayBuffer type.

TBR=benwells@chromium.org
TEST=browser_tests, unit_tests: *FileSystemProvider*Write*
BUG=248427

Review URL: https://codereview.chromium.org/530373002

Cr-Commit-Position: refs/heads/master@{#293093}

[modify] https://chromium.googlesource.com/chromium/src.git/+/3485d1a05e0cc3ad01d363cdfea6786d2368080b/chrome/browser/chromeos/file_system_provider/operations/write_file.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/3485d1a05e0cc3ad01d363cdfea6786d2368080b/chrome/browser/chromeos/file_system_provider/operations/write_file_unittest.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/3485d1a05e0cc3ad01d363cdfea6786d2368080b/chrome/common/extensions/api/file_system_provider.idl

Project Member Comment 156 by bugdroid1@chromium.org, Sep 3 2014
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/5e5d8cab910cf1f3e4b4101a4c8fe279b9db823a

commit 5e5d8cab910cf1f3e4b4101a4c8fe279b9db823a
Author: mtomasz <mtomasz@chromium.org>
Date: Wed Sep 03 11:33:31 2014

[fsp] Cleanup IDL.

This CL adds descriptions to dictionaries.

TEST=Tested manually with a test server.
BUG=248427

Review URL: https://codereview.chromium.org/527723002

Cr-Commit-Position: refs/heads/master@{#293121}

[modify] https://chromium.googlesource.com/chromium/src.git/+/5e5d8cab910cf1f3e4b4101a4c8fe279b9db823a/chrome/common/extensions/api/file_system_provider.idl

Project Member Comment 157 by bugdroid1@chromium.org, Sep 20 2014
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/d548fc9e1f113a2d58623a160e08fc21d415a84c

commit d548fc9e1f113a2d58623a160e08fc21d415a84c
Author: mtomasz <mtomasz@chromium.org>
Date: Sat Sep 20 01:06:06 2014

[fsp] Publish documentation for writable operations.

Writable operations are completed and pretty stable, so it's time to let
developers know about them and start using them!

TEST=Confirmed on a testing doc server.
BUG=248427

Review URL: https://codereview.chromium.org/583893002

Cr-Commit-Position: refs/heads/master@{#295838}

[modify] https://chromium.googlesource.com/chromium/src.git/+/d548fc9e1f113a2d58623a160e08fc21d415a84c/chrome/common/extensions/api/file_system_provider.idl

Project Member Comment 158 by bugdroid1@chromium.org, Sep 22 2014
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/bbe7526503cbf1fc019d4e2c5eea8bf661588f52

commit bbe7526503cbf1fc019d4e2c5eea8bf661588f52
Author: mtomasz <mtomasz@chromium.org>
Date: Mon Sep 22 03:50:06 2014

Restrict the File System Provier API permission to Chrome OS only.

This API implementation is compiled on Chrome OS only, so the permission should
be available on Chrome OS only.

TEST=Tested manually that still works on Chrome OS.
BUG=248427

Review URL: https://codereview.chromium.org/581303002

Cr-Commit-Position: refs/heads/master@{#295918}

[modify] https://chromium.googlesource.com/chromium/src.git/+/bbe7526503cbf1fc019d4e2c5eea8bf661588f52/chrome/common/extensions/api/_permission_features.json
[modify] https://chromium.googlesource.com/chromium/src.git/+/bbe7526503cbf1fc019d4e2c5eea8bf661588f52/chrome/common/extensions/docs/templates/intros/fileSystemProvider.html

Labels: -m-39 M-40
Project Member Comment 160 by bugdroid1@chromium.org, Oct 10 2014
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/9b1e24c73938eb4d7e1c631758d213e0f05525b7

commit 9b1e24c73938eb4d7e1c631758d213e0f05525b7
Author: mtomasz <mtomasz@chromium.org>
Date: Fri Oct 10 04:39:02 2014

[fsp] Add support for observing entries and notifying about changes.

This patch adds:
1. Flag supports_notify_tag to chrome.fsp.mount().
2. Method chrome.fsp.Notify() to notify about changes of observed entries.
3. Events chrome.fsp.OnObserveDirectory and OnUnobserveEntry.

Missing things, to be added in a separate patch:
1. Glueing chrome.fsp.Notify to the C++ layer properly, not with fake data.
2. Saving and restoring observed entries together with tags from preferences.

TEST=unit_test: *FileSystemProviderProvidedFileSystem*,
     *FileSystemProvider*Observe*, *FileSystemProvider*Unobserve*
BUG=248427

Review URL: https://codereview.chromium.org/625463002

Cr-Commit-Position: refs/heads/master@{#299058}

[modify] https://chromium.googlesource.com/chromium/src.git/+/9b1e24c73938eb4d7e1c631758d213e0f05525b7/chrome/browser/chromeos/extensions/file_system_provider/file_system_provider_api.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/9b1e24c73938eb4d7e1c631758d213e0f05525b7/chrome/browser/chromeos/extensions/file_system_provider/file_system_provider_api.h
[modify] https://chromium.googlesource.com/chromium/src.git/+/9b1e24c73938eb4d7e1c631758d213e0f05525b7/chrome/browser/chromeos/file_manager/filesystem_api_util.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/9b1e24c73938eb4d7e1c631758d213e0f05525b7/chrome/browser/chromeos/file_system_provider/fake_provided_file_system.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/9b1e24c73938eb4d7e1c631758d213e0f05525b7/chrome/browser/chromeos/file_system_provider/fake_provided_file_system.h
[modify] https://chromium.googlesource.com/chromium/src.git/+/9b1e24c73938eb4d7e1c631758d213e0f05525b7/chrome/browser/chromeos/file_system_provider/fileapi/file_stream_reader_unittest.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/9b1e24c73938eb4d7e1c631758d213e0f05525b7/chrome/browser/chromeos/file_system_provider/fileapi/file_stream_writer_unittest.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/9b1e24c73938eb4d7e1c631758d213e0f05525b7/chrome/browser/chromeos/file_system_provider/fileapi/provider_async_file_util_unittest.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/9b1e24c73938eb4d7e1c631758d213e0f05525b7/chrome/browser/chromeos/file_system_provider/mount_path_util_unittest.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/9b1e24c73938eb4d7e1c631758d213e0f05525b7/chrome/browser/chromeos/file_system_provider/operations/abort_unittest.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/9b1e24c73938eb4d7e1c631758d213e0f05525b7/chrome/browser/chromeos/file_system_provider/operations/close_file_unittest.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/9b1e24c73938eb4d7e1c631758d213e0f05525b7/chrome/browser/chromeos/file_system_provider/operations/copy_entry_unittest.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/9b1e24c73938eb4d7e1c631758d213e0f05525b7/chrome/browser/chromeos/file_system_provider/operations/create_directory_unittest.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/9b1e24c73938eb4d7e1c631758d213e0f05525b7/chrome/browser/chromeos/file_system_provider/operations/create_file_unittest.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/9b1e24c73938eb4d7e1c631758d213e0f05525b7/chrome/browser/chromeos/file_system_provider/operations/delete_entry_unittest.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/9b1e24c73938eb4d7e1c631758d213e0f05525b7/chrome/browser/chromeos/file_system_provider/operations/get_metadata_unittest.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/9b1e24c73938eb4d7e1c631758d213e0f05525b7/chrome/browser/chromeos/file_system_provider/operations/move_entry_unittest.cc
[add] https://chromium.googlesource.com/chromium/src.git/+/9b1e24c73938eb4d7e1c631758d213e0f05525b7/chrome/browser/chromeos/file_system_provider/operations/observe_directory.cc
[add] https://chromium.googlesource.com/chromium/src.git/+/9b1e24c73938eb4d7e1c631758d213e0f05525b7/chrome/browser/chromeos/file_system_provider/operations/observe_directory.h
[add] https://chromium.googlesource.com/chromium/src.git/+/9b1e24c73938eb4d7e1c631758d213e0f05525b7/chrome/browser/chromeos/file_system_provider/operations/observe_directory_unittest.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/9b1e24c73938eb4d7e1c631758d213e0f05525b7/chrome/browser/chromeos/file_system_provider/operations/open_file_unittest.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/9b1e24c73938eb4d7e1c631758d213e0f05525b7/chrome/browser/chromeos/file_system_provider/operations/read_directory_unittest.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/9b1e24c73938eb4d7e1c631758d213e0f05525b7/chrome/browser/chromeos/file_system_provider/operations/read_file_unittest.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/9b1e24c73938eb4d7e1c631758d213e0f05525b7/chrome/browser/chromeos/file_system_provider/operations/truncate_unittest.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/9b1e24c73938eb4d7e1c631758d213e0f05525b7/chrome/browser/chromeos/file_system_provider/operations/unmount_unittest.cc
[add] https://chromium.googlesource.com/chromium/src.git/+/9b1e24c73938eb4d7e1c631758d213e0f05525b7/chrome/browser/chromeos/file_system_provider/operations/unobserve_entry.cc
[add] https://chromium.googlesource.com/chromium/src.git/+/9b1e24c73938eb4d7e1c631758d213e0f05525b7/chrome/browser/chromeos/file_system_provider/operations/unobserve_entry.h
[add] https://chromium.googlesource.com/chromium/src.git/+/9b1e24c73938eb4d7e1c631758d213e0f05525b7/chrome/browser/chromeos/file_system_provider/operations/unobserve_entry_unittest.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/9b1e24c73938eb4d7e1c631758d213e0f05525b7/chrome/browser/chromeos/file_system_provider/operations/write_file_unittest.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/9b1e24c73938eb4d7e1c631758d213e0f05525b7/chrome/browser/chromeos/file_system_provider/provided_file_system.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/9b1e24c73938eb4d7e1c631758d213e0f05525b7/chrome/browser/chromeos/file_system_provider/provided_file_system.h
[modify] https://chromium.googlesource.com/chromium/src.git/+/9b1e24c73938eb4d7e1c631758d213e0f05525b7/chrome/browser/chromeos/file_system_provider/provided_file_system_info.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/9b1e24c73938eb4d7e1c631758d213e0f05525b7/chrome/browser/chromeos/file_system_provider/provided_file_system_info.h
[modify] https://chromium.googlesource.com/chromium/src.git/+/9b1e24c73938eb4d7e1c631758d213e0f05525b7/chrome/browser/chromeos/file_system_provider/provided_file_system_interface.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/9b1e24c73938eb4d7e1c631758d213e0f05525b7/chrome/browser/chromeos/file_system_provider/provided_file_system_interface.h
[add] https://chromium.googlesource.com/chromium/src.git/+/9b1e24c73938eb4d7e1c631758d213e0f05525b7/chrome/browser/chromeos/file_system_provider/provided_file_system_observer.cc
[add] https://chromium.googlesource.com/chromium/src.git/+/9b1e24c73938eb4d7e1c631758d213e0f05525b7/chrome/browser/chromeos/file_system_provider/provided_file_system_observer.h
[add] https://chromium.googlesource.com/chromium/src.git/+/9b1e24c73938eb4d7e1c631758d213e0f05525b7/chrome/browser/chromeos/file_system_provider/provided_file_system_unittest.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/9b1e24c73938eb4d7e1c631758d213e0f05525b7/chrome/browser/chromeos/file_system_provider/request_manager.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/9b1e24c73938eb4d7e1c631758d213e0f05525b7/chrome/browser/chromeos/file_system_provider/request_manager.h
[modify] https://chromium.googlesource.com/chromium/src.git/+/9b1e24c73938eb4d7e1c631758d213e0f05525b7/chrome/browser/chromeos/file_system_provider/service.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/9b1e24c73938eb4d7e1c631758d213e0f05525b7/chrome/browser/chromeos/file_system_provider/service.h
[modify] https://chromium.googlesource.com/chromium/src.git/+/9b1e24c73938eb4d7e1c631758d213e0f05525b7/chrome/browser/chromeos/file_system_provider/service_unittest.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/9b1e24c73938eb4d7e1c631758d213e0f05525b7/chrome/chrome_browser_chromeos.gypi
[modify] https://chromium.googlesource.com/chromium/src.git/+/9b1e24c73938eb4d7e1c631758d213e0f05525b7/chrome/chrome_tests_unit.gypi
[modify] https://chromium.googlesource.com/chromium/src.git/+/9b1e24c73938eb4d7e1c631758d213e0f05525b7/chrome/common/extensions/api/file_system_provider.idl
[modify] https://chromium.googlesource.com/chromium/src.git/+/9b1e24c73938eb4d7e1c631758d213e0f05525b7/chrome/renderer/resources/extensions/file_system_provider_custom_bindings.js
[modify] https://chromium.googlesource.com/chromium/src.git/+/9b1e24c73938eb4d7e1c631758d213e0f05525b7/extensions/browser/extension_function_histogram_value.h
[modify] https://chromium.googlesource.com/chromium/src.git/+/9b1e24c73938eb4d7e1c631758d213e0f05525b7/tools/metrics/histograms/histograms.xml

Blocking: chromium:421489
Blocking: chromium:422764
Project Member Comment 163 by bugdroid1@chromium.org, Oct 14 2014
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/00336db6f7bcdd0b540aeec83e07befed40dc15d

commit 00336db6f7bcdd0b540aeec83e07befed40dc15d
Author: mtomasz <mtomasz@chromium.org>
Date: Tue Oct 14 05:57:37 2014

[fsp] Group arguments for mounting into a struct.

The list of optional arguments is growing. Each new added one, required changes
in tens of places.

To resolve this problem, this CL creates a MountOptions struct. As a result
adding a new optional argument to mounting will not require updating all
callers.

TEST=unit_tests: *FileSystemProvider*
BUG=248427

Review URL: https://codereview.chromium.org/624903002

Cr-Commit-Position: refs/heads/master@{#299434}

[modify] https://chromium.googlesource.com/chromium/src.git/+/00336db6f7bcdd0b540aeec83e07befed40dc15d/chrome/browser/chromeos/extensions/file_system_provider/file_system_provider_api.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/00336db6f7bcdd0b540aeec83e07befed40dc15d/chrome/browser/chromeos/file_system_provider/fileapi/file_stream_reader_unittest.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/00336db6f7bcdd0b540aeec83e07befed40dc15d/chrome/browser/chromeos/file_system_provider/fileapi/file_stream_writer_unittest.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/00336db6f7bcdd0b540aeec83e07befed40dc15d/chrome/browser/chromeos/file_system_provider/fileapi/provider_async_file_util_unittest.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/00336db6f7bcdd0b540aeec83e07befed40dc15d/chrome/browser/chromeos/file_system_provider/mount_path_util_unittest.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/00336db6f7bcdd0b540aeec83e07befed40dc15d/chrome/browser/chromeos/file_system_provider/operations/abort_unittest.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/00336db6f7bcdd0b540aeec83e07befed40dc15d/chrome/browser/chromeos/file_system_provider/operations/close_file_unittest.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/00336db6f7bcdd0b540aeec83e07befed40dc15d/chrome/browser/chromeos/file_system_provider/operations/copy_entry_unittest.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/00336db6f7bcdd0b540aeec83e07befed40dc15d/chrome/browser/chromeos/file_system_provider/operations/create_directory_unittest.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/00336db6f7bcdd0b540aeec83e07befed40dc15d/chrome/browser/chromeos/file_system_provider/operations/create_file_unittest.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/00336db6f7bcdd0b540aeec83e07befed40dc15d/chrome/browser/chromeos/file_system_provider/operations/delete_entry_unittest.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/00336db6f7bcdd0b540aeec83e07befed40dc15d/chrome/browser/chromeos/file_system_provider/operations/get_metadata_unittest.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/00336db6f7bcdd0b540aeec83e07befed40dc15d/chrome/browser/chromeos/file_system_provider/operations/move_entry_unittest.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/00336db6f7bcdd0b540aeec83e07befed40dc15d/chrome/browser/chromeos/file_system_provider/operations/observe_directory_unittest.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/00336db6f7bcdd0b540aeec83e07befed40dc15d/chrome/browser/chromeos/file_system_provider/operations/open_file_unittest.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/00336db6f7bcdd0b540aeec83e07befed40dc15d/chrome/browser/chromeos/file_system_provider/operations/read_directory_unittest.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/00336db6f7bcdd0b540aeec83e07befed40dc15d/chrome/browser/chromeos/file_system_provider/operations/read_file_unittest.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/00336db6f7bcdd0b540aeec83e07befed40dc15d/chrome/browser/chromeos/file_system_provider/operations/truncate_unittest.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/00336db6f7bcdd0b540aeec83e07befed40dc15d/chrome/browser/chromeos/file_system_provider/operations/unmount_unittest.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/00336db6f7bcdd0b540aeec83e07befed40dc15d/chrome/browser/chromeos/file_system_provider/operations/unobserve_entry_unittest.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/00336db6f7bcdd0b540aeec83e07befed40dc15d/chrome/browser/chromeos/file_system_provider/operations/write_file_unittest.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/00336db6f7bcdd0b540aeec83e07befed40dc15d/chrome/browser/chromeos/file_system_provider/provided_file_system_info.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/00336db6f7bcdd0b540aeec83e07befed40dc15d/chrome/browser/chromeos/file_system_provider/provided_file_system_info.h
[modify] https://chromium.googlesource.com/chromium/src.git/+/00336db6f7bcdd0b540aeec83e07befed40dc15d/chrome/browser/chromeos/file_system_provider/provided_file_system_unittest.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/00336db6f7bcdd0b540aeec83e07befed40dc15d/chrome/browser/chromeos/file_system_provider/service.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/00336db6f7bcdd0b540aeec83e07befed40dc15d/chrome/browser/chromeos/file_system_provider/service.h
[modify] https://chromium.googlesource.com/chromium/src.git/+/00336db6f7bcdd0b540aeec83e07befed40dc15d/chrome/browser/chromeos/file_system_provider/service_unittest.cc

Project Member Comment 164 by bugdroid1@chromium.org, Oct 17 2014
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/a15683665c360d910e2204198993d060163b8058

commit a15683665c360d910e2204198993d060163b8058
Author: mtomasz <mtomasz@chromium.org>
Date: Fri Oct 17 04:21:54 2014

[fsp] Pass proper data to Notify().

This patch passes proper data instead of fake one to Notify(). Also, child
changes are now passed as a scoped_ptr and a reference to avoid unnecessary
copies.

Note, that end to end browser tests will come once notifications are wired to
chrome.fileManagerPrivate.

TEST=Tested manually.
BUG=248427

Review URL: https://codereview.chromium.org/656393002

Cr-Commit-Position: refs/heads/master@{#300062}

[modify] https://chromium.googlesource.com/chromium/src.git/+/a15683665c360d910e2204198993d060163b8058/chrome/browser/chromeos/extensions/file_system_provider/file_system_provider_api.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/a15683665c360d910e2204198993d060163b8058/chrome/browser/chromeos/extensions/file_system_provider/file_system_provider_apitest.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/a15683665c360d910e2204198993d060163b8058/chrome/browser/chromeos/file_system_provider/fake_provided_file_system.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/a15683665c360d910e2204198993d060163b8058/chrome/browser/chromeos/file_system_provider/fake_provided_file_system.h
[modify] https://chromium.googlesource.com/chromium/src.git/+/a15683665c360d910e2204198993d060163b8058/chrome/browser/chromeos/file_system_provider/provided_file_system.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/a15683665c360d910e2204198993d060163b8058/chrome/browser/chromeos/file_system_provider/provided_file_system.h
[modify] https://chromium.googlesource.com/chromium/src.git/+/a15683665c360d910e2204198993d060163b8058/chrome/browser/chromeos/file_system_provider/provided_file_system_interface.h
[modify] https://chromium.googlesource.com/chromium/src.git/+/a15683665c360d910e2204198993d060163b8058/chrome/browser/chromeos/file_system_provider/provided_file_system_observer.h
[modify] https://chromium.googlesource.com/chromium/src.git/+/a15683665c360d910e2204198993d060163b8058/chrome/browser/chromeos/file_system_provider/provided_file_system_unittest.cc

Project Member Comment 165 by bugdroid1@chromium.org, Oct 17 2014
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/b9bac4b512b768e2d17e9199cc1a66997c55aaf3

commit b9bac4b512b768e2d17e9199cc1a66997c55aaf3
Author: mtomasz <mtomasz@chromium.org>
Date: Fri Oct 17 06:22:32 2014

[fsp] Extract ObservedEntry and ObservedEntries to a separate file.

Before they were part of the interface, which should be clean and simple.
Moreover, this CL lets pass the list of changes via ProvidedFileSystemObserver
which will be required soon in the Service class.

TEST=unit_tests, browser_tests: *FileSystemProvider*
BUG=248427

Review URL: https://codereview.chromium.org/663713002

Cr-Commit-Position: refs/heads/master@{#300071}

[modify] https://chromium.googlesource.com/chromium/src.git/+/b9bac4b512b768e2d17e9199cc1a66997c55aaf3/chrome/browser/chromeos/file_system_provider/fake_provided_file_system.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/b9bac4b512b768e2d17e9199cc1a66997c55aaf3/chrome/browser/chromeos/file_system_provider/fake_provided_file_system.h
[add] https://chromium.googlesource.com/chromium/src.git/+/b9bac4b512b768e2d17e9199cc1a66997c55aaf3/chrome/browser/chromeos/file_system_provider/observed_entry.cc
[add] https://chromium.googlesource.com/chromium/src.git/+/b9bac4b512b768e2d17e9199cc1a66997c55aaf3/chrome/browser/chromeos/file_system_provider/observed_entry.h
[modify] https://chromium.googlesource.com/chromium/src.git/+/b9bac4b512b768e2d17e9199cc1a66997c55aaf3/chrome/browser/chromeos/file_system_provider/provided_file_system.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/b9bac4b512b768e2d17e9199cc1a66997c55aaf3/chrome/browser/chromeos/file_system_provider/provided_file_system_interface.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/b9bac4b512b768e2d17e9199cc1a66997c55aaf3/chrome/browser/chromeos/file_system_provider/provided_file_system_interface.h
[modify] https://chromium.googlesource.com/chromium/src.git/+/b9bac4b512b768e2d17e9199cc1a66997c55aaf3/chrome/browser/chromeos/file_system_provider/provided_file_system_observer.h
[modify] https://chromium.googlesource.com/chromium/src.git/+/b9bac4b512b768e2d17e9199cc1a66997c55aaf3/chrome/browser/chromeos/file_system_provider/provided_file_system_unittest.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/b9bac4b512b768e2d17e9199cc1a66997c55aaf3/chrome/browser/chromeos/file_system_provider/service.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/b9bac4b512b768e2d17e9199cc1a66997c55aaf3/chrome/browser/chromeos/file_system_provider/service.h
[modify] https://chromium.googlesource.com/chromium/src.git/+/b9bac4b512b768e2d17e9199cc1a66997c55aaf3/chrome/chrome_browser_chromeos.gypi

Project Member Comment 166 by bugdroid1@chromium.org, Oct 20 2014
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/739f3d107f09386a8e21b5cf51563df2759f8ab7

commit 739f3d107f09386a8e21b5cf51563df2759f8ab7
Author: mtomasz <mtomasz@chromium.org>
Date: Mon Oct 20 09:32:06 2014

[fsp] Store observed entries in preferences.

This patch remembers the observed entries in preferences, so they are restored
after a reboot.

Note, that more tests will come after a refactoring out writing to preferences
from Service, which is coming soon/

TEST=unit_tests, browser_tests: *FileSystemProvider*RememberFileSystem*, *FileSystemProvider*RestoreFileSystem*
BUG=248427

Review URL: https://codereview.chromium.org/658313002

Cr-Commit-Position: refs/heads/master@{#300231}

[modify] https://chromium.googlesource.com/chromium/src.git/+/739f3d107f09386a8e21b5cf51563df2759f8ab7/chrome/browser/chromeos/file_system_provider/fake_provided_file_system.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/739f3d107f09386a8e21b5cf51563df2759f8ab7/chrome/browser/chromeos/file_system_provider/fake_provided_file_system.h
[modify] https://chromium.googlesource.com/chromium/src.git/+/739f3d107f09386a8e21b5cf51563df2759f8ab7/chrome/browser/chromeos/file_system_provider/provided_file_system_interface.h
[modify] https://chromium.googlesource.com/chromium/src.git/+/739f3d107f09386a8e21b5cf51563df2759f8ab7/chrome/browser/chromeos/file_system_provider/provided_file_system_observer.h
[modify] https://chromium.googlesource.com/chromium/src.git/+/739f3d107f09386a8e21b5cf51563df2759f8ab7/chrome/browser/chromeos/file_system_provider/service.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/739f3d107f09386a8e21b5cf51563df2759f8ab7/chrome/browser/chromeos/file_system_provider/service.h
[modify] https://chromium.googlesource.com/chromium/src.git/+/739f3d107f09386a8e21b5cf51563df2759f8ab7/chrome/browser/chromeos/file_system_provider/service_unittest.cc

Labels: Iteration-116
Project Member Comment 168 by bugdroid1@chromium.org, Oct 21 2014
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/bd1170f84cdcc4b1601a414ee68702d8e9361849

commit bd1170f84cdcc4b1601a414ee68702d8e9361849
Author: mtomasz <mtomasz@chromium.org>
Date: Tue Oct 21 05:34:18 2014

[fsp] Separate logic for saving/restoring state to a separate class.

Previously, the Service class was responsible for saving and restoring state,
as well as managing file systems. Testing it became problematic.

This patch separates it into two classes Service and Registry, which can
be both tested separately.

TBR=pam@chromium.org
TEST=unit_tests: *FileSystemProvider*Registry*
BUG=248427

Review URL: https://codereview.chromium.org/661393002

Cr-Commit-Position: refs/heads/master@{#300422}

[modify] https://chromium.googlesource.com/chromium/src.git/+/bd1170f84cdcc4b1601a414ee68702d8e9361849/chrome/browser/chromeos/file_system_provider/provided_file_system.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/bd1170f84cdcc4b1601a414ee68702d8e9361849/chrome/browser/chromeos/file_system_provider/provided_file_system_info.h
[modify] https://chromium.googlesource.com/chromium/src.git/+/bd1170f84cdcc4b1601a414ee68702d8e9361849/chrome/browser/chromeos/file_system_provider/provided_file_system_observer.h
[modify] https://chromium.googlesource.com/chromium/src.git/+/bd1170f84cdcc4b1601a414ee68702d8e9361849/chrome/browser/chromeos/file_system_provider/provided_file_system_unittest.cc
[add] https://chromium.googlesource.com/chromium/src.git/+/bd1170f84cdcc4b1601a414ee68702d8e9361849/chrome/browser/chromeos/file_system_provider/registry.cc
[add] https://chromium.googlesource.com/chromium/src.git/+/bd1170f84cdcc4b1601a414ee68702d8e9361849/chrome/browser/chromeos/file_system_provider/registry.h
[add] https://chromium.googlesource.com/chromium/src.git/+/bd1170f84cdcc4b1601a414ee68702d8e9361849/chrome/browser/chromeos/file_system_provider/registry_interface.cc
[add] https://chromium.googlesource.com/chromium/src.git/+/bd1170f84cdcc4b1601a414ee68702d8e9361849/chrome/browser/chromeos/file_system_provider/registry_interface.h
[add] https://chromium.googlesource.com/chromium/src.git/+/bd1170f84cdcc4b1601a414ee68702d8e9361849/chrome/browser/chromeos/file_system_provider/registry_unittest.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/bd1170f84cdcc4b1601a414ee68702d8e9361849/chrome/browser/chromeos/file_system_provider/service.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/bd1170f84cdcc4b1601a414ee68702d8e9361849/chrome/browser/chromeos/file_system_provider/service.h
[modify] https://chromium.googlesource.com/chromium/src.git/+/bd1170f84cdcc4b1601a414ee68702d8e9361849/chrome/browser/chromeos/file_system_provider/service_unittest.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/bd1170f84cdcc4b1601a414ee68702d8e9361849/chrome/browser/prefs/browser_prefs.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/bd1170f84cdcc4b1601a414ee68702d8e9361849/chrome/chrome_browser_chromeos.gypi
[modify] https://chromium.googlesource.com/chromium/src.git/+/bd1170f84cdcc4b1601a414ee68702d8e9361849/chrome/chrome_tests_unit.gypi

Labels: Iteration-117
Project Member Comment 170 by bugdroid1@chromium.org, Oct 28 2014
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/60c10816ed1c9cbabdd4ef1a1b640b8009912f81

commit 60c10816ed1c9cbabdd4ef1a1b640b8009912f81
Author: mtomasz <mtomasz@chromium.org>
Date: Tue Oct 28 01:10:16 2014

[fsp] Separate recursive and non-recursive watchers.

With this patch, if one extension has a recursive watcher, and another non-
recursive one, then the providing extension will know about both of them.

In an upcoming patch ObservedEntry will be renamed to Watcher, since now
we can have two observed entries for the same path, which doesn't sound the
best.

TEST=unit_tests, browser_tests: *FileSystemProvider*
BUG=248427

Review URL: https://codereview.chromium.org/679573002

Cr-Commit-Position: refs/heads/master@{#301532}

[modify] https://chromium.googlesource.com/chromium/src.git/+/60c10816ed1c9cbabdd4ef1a1b640b8009912f81/chrome/browser/chromeos/extensions/file_system_provider/file_system_provider_api.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/60c10816ed1c9cbabdd4ef1a1b640b8009912f81/chrome/browser/chromeos/file_system_provider/fake_provided_file_system.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/60c10816ed1c9cbabdd4ef1a1b640b8009912f81/chrome/browser/chromeos/file_system_provider/fake_provided_file_system.h
[modify] https://chromium.googlesource.com/chromium/src.git/+/60c10816ed1c9cbabdd4ef1a1b640b8009912f81/chrome/browser/chromeos/file_system_provider/observed_entry.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/60c10816ed1c9cbabdd4ef1a1b640b8009912f81/chrome/browser/chromeos/file_system_provider/observed_entry.h
[modify] https://chromium.googlesource.com/chromium/src.git/+/60c10816ed1c9cbabdd4ef1a1b640b8009912f81/chrome/browser/chromeos/file_system_provider/operations/unobserve_entry.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/60c10816ed1c9cbabdd4ef1a1b640b8009912f81/chrome/browser/chromeos/file_system_provider/operations/unobserve_entry.h
[modify] https://chromium.googlesource.com/chromium/src.git/+/60c10816ed1c9cbabdd4ef1a1b640b8009912f81/chrome/browser/chromeos/file_system_provider/operations/unobserve_entry_unittest.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/60c10816ed1c9cbabdd4ef1a1b640b8009912f81/chrome/browser/chromeos/file_system_provider/provided_file_system.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/60c10816ed1c9cbabdd4ef1a1b640b8009912f81/chrome/browser/chromeos/file_system_provider/provided_file_system.h
[modify] https://chromium.googlesource.com/chromium/src.git/+/60c10816ed1c9cbabdd4ef1a1b640b8009912f81/chrome/browser/chromeos/file_system_provider/provided_file_system_interface.h
[modify] https://chromium.googlesource.com/chromium/src.git/+/60c10816ed1c9cbabdd4ef1a1b640b8009912f81/chrome/browser/chromeos/file_system_provider/provided_file_system_observer.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/60c10816ed1c9cbabdd4ef1a1b640b8009912f81/chrome/browser/chromeos/file_system_provider/provided_file_system_observer.h
[modify] https://chromium.googlesource.com/chromium/src.git/+/60c10816ed1c9cbabdd4ef1a1b640b8009912f81/chrome/browser/chromeos/file_system_provider/provided_file_system_unittest.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/60c10816ed1c9cbabdd4ef1a1b640b8009912f81/chrome/browser/chromeos/file_system_provider/registry.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/60c10816ed1c9cbabdd4ef1a1b640b8009912f81/chrome/browser/chromeos/file_system_provider/registry_unittest.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/60c10816ed1c9cbabdd4ef1a1b640b8009912f81/chrome/browser/chromeos/file_system_provider/service.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/60c10816ed1c9cbabdd4ef1a1b640b8009912f81/chrome/browser/chromeos/file_system_provider/service.h
[modify] https://chromium.googlesource.com/chromium/src.git/+/60c10816ed1c9cbabdd4ef1a1b640b8009912f81/chrome/browser/chromeos/file_system_provider/service_unittest.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/60c10816ed1c9cbabdd4ef1a1b640b8009912f81/chrome/common/extensions/api/file_system_provider.idl

Project Member Comment 171 by bugdroid1@chromium.org, Oct 28 2014
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/70fb5591df0082b01e07f77b62da97de1fa4d416

commit 70fb5591df0082b01e07f77b62da97de1fa4d416
Author: mtomasz <mtomasz@chromium.org>
Date: Tue Oct 28 07:23:43 2014

[fsp] Allow to create multiple observers for a directory, up to one per origin.

This patch allows to create multiple subscribers for observed entry change
notifications, up to one per origin for the same entry. Eg. multiple extensions
may want to observe the same directory.

Also, the persistent argument is introduced. Persistent subscriber mean, that the
origin is watching the entry persistently, despite reboots. It will be used by
cache only.

Extensions should never use persistent origins. Such subscribers will be removed
on reboot.

TEST=unit_tests: *FileSystemProvider*Registry*,
     *FileSystemProvider*ProvidedFileSystem*
BUG=248427

Review URL: https://codereview.chromium.org/642023003

Cr-Commit-Position: refs/heads/master@{#301586}

[modify] https://chromium.googlesource.com/chromium/src.git/+/70fb5591df0082b01e07f77b62da97de1fa4d416/chrome/browser/chromeos/file_system_provider/fake_provided_file_system.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/70fb5591df0082b01e07f77b62da97de1fa4d416/chrome/browser/chromeos/file_system_provider/fake_provided_file_system.h
[modify] https://chromium.googlesource.com/chromium/src.git/+/70fb5591df0082b01e07f77b62da97de1fa4d416/chrome/browser/chromeos/file_system_provider/observed_entry.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/70fb5591df0082b01e07f77b62da97de1fa4d416/chrome/browser/chromeos/file_system_provider/observed_entry.h
[modify] https://chromium.googlesource.com/chromium/src.git/+/70fb5591df0082b01e07f77b62da97de1fa4d416/chrome/browser/chromeos/file_system_provider/provided_file_system.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/70fb5591df0082b01e07f77b62da97de1fa4d416/chrome/browser/chromeos/file_system_provider/provided_file_system.h
[modify] https://chromium.googlesource.com/chromium/src.git/+/70fb5591df0082b01e07f77b62da97de1fa4d416/chrome/browser/chromeos/file_system_provider/provided_file_system_interface.h
[modify] https://chromium.googlesource.com/chromium/src.git/+/70fb5591df0082b01e07f77b62da97de1fa4d416/chrome/browser/chromeos/file_system_provider/provided_file_system_unittest.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/70fb5591df0082b01e07f77b62da97de1fa4d416/chrome/browser/chromeos/file_system_provider/registry.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/70fb5591df0082b01e07f77b62da97de1fa4d416/chrome/browser/chromeos/file_system_provider/registry.h
[modify] https://chromium.googlesource.com/chromium/src.git/+/70fb5591df0082b01e07f77b62da97de1fa4d416/chrome/browser/chromeos/file_system_provider/registry_unittest.cc

Project Member Comment 172 by bugdroid1@chromium.org, Oct 31 2014
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/340ba2068e2171d80b347fc2ca340446b6c265ec

commit 340ba2068e2171d80b347fc2ca340446b6c265ec
Author: mtomasz <mtomasz@chromium.org>
Date: Fri Oct 31 05:53:49 2014

[fsp] Implement storage::WatcherManager for FSP.

This patch implements the storage::WatcherManager interface, which simply calls
the Add/RemoveWatcher methods on ProvidedFileSystemInterface implementations.

An additional callback has been added to AddWatcher, so it's easy to notify
WatcherManager about changes. Without that, we would have to observe provided
file system objects and store callbacks passed to WatcherManager::AddWatcher,
which would make the code complex.

Along the way the storage::WatcherManager interface has been refactored to have
consistent naming with FSP watching methods.

TEST=unit_tests: *ProvidedFileSystem*
BUG=248427

Review URL: https://codereview.chromium.org/689603002

Cr-Commit-Position: refs/heads/master@{#302229}

[modify] https://chromium.googlesource.com/chromium/src.git/+/340ba2068e2171d80b347fc2ca340446b6c265ec/chrome/browser/chromeos/extensions/file_system_provider/file_system_provider_api.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/340ba2068e2171d80b347fc2ca340446b6c265ec/chrome/browser/chromeos/file_system_provider/fake_provided_file_system.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/340ba2068e2171d80b347fc2ca340446b6c265ec/chrome/browser/chromeos/file_system_provider/fake_provided_file_system.h
[modify] https://chromium.googlesource.com/chromium/src.git/+/340ba2068e2171d80b347fc2ca340446b6c265ec/chrome/browser/chromeos/file_system_provider/fileapi/backend_delegate.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/340ba2068e2171d80b347fc2ca340446b6c265ec/chrome/browser/chromeos/file_system_provider/fileapi/backend_delegate.h
[modify] https://chromium.googlesource.com/chromium/src.git/+/340ba2068e2171d80b347fc2ca340446b6c265ec/chrome/browser/chromeos/file_system_provider/fileapi/provider_async_file_util.h
[add] https://chromium.googlesource.com/chromium/src.git/+/340ba2068e2171d80b347fc2ca340446b6c265ec/chrome/browser/chromeos/file_system_provider/fileapi/watcher_manager.cc
[add] https://chromium.googlesource.com/chromium/src.git/+/340ba2068e2171d80b347fc2ca340446b6c265ec/chrome/browser/chromeos/file_system_provider/fileapi/watcher_manager.h
[modify] https://chromium.googlesource.com/chromium/src.git/+/340ba2068e2171d80b347fc2ca340446b6c265ec/chrome/browser/chromeos/file_system_provider/provided_file_system.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/340ba2068e2171d80b347fc2ca340446b6c265ec/chrome/browser/chromeos/file_system_provider/provided_file_system.h
[modify] https://chromium.googlesource.com/chromium/src.git/+/340ba2068e2171d80b347fc2ca340446b6c265ec/chrome/browser/chromeos/file_system_provider/provided_file_system_interface.h
[modify] https://chromium.googlesource.com/chromium/src.git/+/340ba2068e2171d80b347fc2ca340446b6c265ec/chrome/browser/chromeos/file_system_provider/provided_file_system_observer.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/340ba2068e2171d80b347fc2ca340446b6c265ec/chrome/browser/chromeos/file_system_provider/provided_file_system_observer.h
[modify] https://chromium.googlesource.com/chromium/src.git/+/340ba2068e2171d80b347fc2ca340446b6c265ec/chrome/browser/chromeos/file_system_provider/provided_file_system_unittest.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/340ba2068e2171d80b347fc2ca340446b6c265ec/chrome/browser/chromeos/file_system_provider/service.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/340ba2068e2171d80b347fc2ca340446b6c265ec/chrome/browser/chromeos/file_system_provider/service.h
[modify] https://chromium.googlesource.com/chromium/src.git/+/340ba2068e2171d80b347fc2ca340446b6c265ec/chrome/browser/chromeos/file_system_provider/watcher.h
[modify] https://chromium.googlesource.com/chromium/src.git/+/340ba2068e2171d80b347fc2ca340446b6c265ec/chrome/chrome_browser_chromeos.gypi
[modify] https://chromium.googlesource.com/chromium/src.git/+/340ba2068e2171d80b347fc2ca340446b6c265ec/storage/browser/fileapi/watcher_manager.h

Project Member Comment 173 by bugdroid1@chromium.org, Nov 10 2014
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/4c9bba032dd4eb99cec715caae9225a9c93dde00

commit 4c9bba032dd4eb99cec715caae9225a9c93dde00
Author: mtomasz <mtomasz@chromium.org>
Date: Mon Nov 10 02:02:04 2014

[fsp] Pass more detailed errors to the providing extension.

Before, many methods were returning a simple bool, which was later converted
to a generic SECURITY error code (if false).

This patch converts such bools to base::File::Error, so we can convey the
specific error code.

Note, that base::File::Error is used to pass all error codes within the File
System API implementation, even if it's not really related to files. We may
want to introduce our own type in the future.

TEST=unit_tests, browser_tests: *FileSystemProvider*
BUG=248427

Review URL: https://codereview.chromium.org/703123003

Cr-Commit-Position: refs/heads/master@{#303413}

[modify] https://chromium.googlesource.com/chromium/src.git/+/4c9bba032dd4eb99cec715caae9225a9c93dde00/chrome/browser/chromeos/extensions/file_system_provider/file_system_provider_api.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/4c9bba032dd4eb99cec715caae9225a9c93dde00/chrome/browser/chromeos/extensions/file_system_provider/file_system_provider_api.h
[modify] https://chromium.googlesource.com/chromium/src.git/+/4c9bba032dd4eb99cec715caae9225a9c93dde00/chrome/browser/chromeos/extensions/file_system_provider/provider_function.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/4c9bba032dd4eb99cec715caae9225a9c93dde00/chrome/browser/chromeos/file_system_provider/fake_provided_file_system.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/4c9bba032dd4eb99cec715caae9225a9c93dde00/chrome/browser/chromeos/file_system_provider/fake_provided_file_system.h
[modify] https://chromium.googlesource.com/chromium/src.git/+/4c9bba032dd4eb99cec715caae9225a9c93dde00/chrome/browser/chromeos/file_system_provider/fileapi/file_stream_reader_unittest.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/4c9bba032dd4eb99cec715caae9225a9c93dde00/chrome/browser/chromeos/file_system_provider/fileapi/file_stream_writer_unittest.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/4c9bba032dd4eb99cec715caae9225a9c93dde00/chrome/browser/chromeos/file_system_provider/fileapi/provider_async_file_util_unittest.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/4c9bba032dd4eb99cec715caae9225a9c93dde00/chrome/browser/chromeos/file_system_provider/mount_path_util_unittest.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/4c9bba032dd4eb99cec715caae9225a9c93dde00/chrome/browser/chromeos/file_system_provider/provided_file_system.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/4c9bba032dd4eb99cec715caae9225a9c93dde00/chrome/browser/chromeos/file_system_provider/provided_file_system.h
[modify] https://chromium.googlesource.com/chromium/src.git/+/4c9bba032dd4eb99cec715caae9225a9c93dde00/chrome/browser/chromeos/file_system_provider/provided_file_system_interface.h
[modify] https://chromium.googlesource.com/chromium/src.git/+/4c9bba032dd4eb99cec715caae9225a9c93dde00/chrome/browser/chromeos/file_system_provider/provided_file_system_unittest.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/4c9bba032dd4eb99cec715caae9225a9c93dde00/chrome/browser/chromeos/file_system_provider/request_manager.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/4c9bba032dd4eb99cec715caae9225a9c93dde00/chrome/browser/chromeos/file_system_provider/request_manager.h
[modify] https://chromium.googlesource.com/chromium/src.git/+/4c9bba032dd4eb99cec715caae9225a9c93dde00/chrome/browser/chromeos/file_system_provider/request_manager_unittest.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/4c9bba032dd4eb99cec715caae9225a9c93dde00/chrome/browser/chromeos/file_system_provider/service.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/4c9bba032dd4eb99cec715caae9225a9c93dde00/chrome/browser/chromeos/file_system_provider/service.h
[modify] https://chromium.googlesource.com/chromium/src.git/+/4c9bba032dd4eb99cec715caae9225a9c93dde00/chrome/browser/chromeos/file_system_provider/service_unittest.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/4c9bba032dd4eb99cec715caae9225a9c93dde00/chrome/test/data/extensions/api_test/file_system_provider/get_all/test.js
[modify] https://chromium.googlesource.com/chromium/src.git/+/4c9bba032dd4eb99cec715caae9225a9c93dde00/chrome/test/data/extensions/api_test/file_system_provider/mount/test.js
[modify] https://chromium.googlesource.com/chromium/src.git/+/4c9bba032dd4eb99cec715caae9225a9c93dde00/chrome/test/data/extensions/api_test/file_system_provider/notify/test.js
[modify] https://chromium.googlesource.com/chromium/src.git/+/4c9bba032dd4eb99cec715caae9225a9c93dde00/chrome/test/data/extensions/api_test/file_system_provider/unmount/test.js

Labels: iteration-118
Project Member Comment 175 by bugdroid1@chromium.org, Nov 13 2014
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/4d752f9dc097c5f1f08e610aabbe2abf475d4072

commit 4d752f9dc097c5f1f08e610aabbe2abf475d4072
Author: mtomasz <mtomasz@chromium.org>
Date: Thu Nov 13 03:26:33 2014

[fsp] Promote file system provider to stable.

This patch cleans up the IDL and promotes the API to stable.

TEST=browser_tests: *FileSystemProvider*
BUG=248427

Review URL: https://codereview.chromium.org/706153002

Cr-Commit-Position: refs/heads/master@{#303975}

[modify] https://chromium.googlesource.com/chromium/src.git/+/4d752f9dc097c5f1f08e610aabbe2abf475d4072/chrome/browser/chromeos/extensions/file_system_provider/file_system_provider_apitest.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/4d752f9dc097c5f1f08e610aabbe2abf475d4072/chrome/common/extensions/api/_permission_features.json
[modify] https://chromium.googlesource.com/chromium/src.git/+/4d752f9dc097c5f1f08e610aabbe2abf475d4072/chrome/common/extensions/api/file_system_provider.idl
[modify] https://chromium.googlesource.com/chromium/src.git/+/4d752f9dc097c5f1f08e610aabbe2abf475d4072/chrome/common/extensions/api/file_system_provider_internal.idl
[modify] https://chromium.googlesource.com/chromium/src.git/+/4d752f9dc097c5f1f08e610aabbe2abf475d4072/chrome/common/extensions/api/schemas.gypi

Labels: -M-40 M-41 MovedFrom-40
Moving all non essential bugs to the next Milestone.
Labels: -Iteration-116 -Iteration-117 -iteration-118 -M-41 -MovedFrom-40 M-40
The initial set of APIs will be released in M40. Let's close it.
Status: Fixed
closing for sure...
Labels: -Iteration-86 Merge-Requested
Status: Started
https://codereview.chromium.org/706153002 missed the M40 branch point! As a result, the API is not enabled on beta. Sorry, for not catching that earlier. This causes the problems with opening ZIP archives.

Filing a merge request.
Merge request for https://codereview.chromium.org/706153002 only, in #175 comment.
Labels: -Merge-Requested Merge-Review Hotlist-Merge-Review
[Automated comment] Reverts referenced in bugdroid comments, needs manual review.
Blocking: chromium:435384
Comment 183 by p...@semlab.nl, Dec 16 2014
Probably the wrong place to ask this (but I don't know where else to ask it), but will there be a new icon / filter / category in the webstore for apps that provide a filesystem?
Labels: -Hotlist-Merge-Review
Is this a must have for 40?  Can this wait until 41?
@matthewyuan - Unable to open zip files  see https://code.google.com/p/chromium/issues/detail?id=435384
@matthewyuan - Unable to open zip files  see https://code.google.com/p/chromium/issues/detail?id=435384
@matthewyuan: We would really like it to be in M40. We tested it well, and it baked for long on dev channel before. Also, not merging it, would force us to revert the new ZIP unpacker on beta channel and punt it's release to M41 which we'd really like to avoid.
Labels: -Merge-Review Merge-Approved
Project Member Comment 189 by bugdroid1@chromium.org, Dec 18 2014
Labels: -Merge-Approved merge-merged-2214
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/53ac65eff0220473c20ef5759cfe857b4feefb48

commit 53ac65eff0220473c20ef5759cfe857b4feefb48
Author: Tomasz Mikolajewski <mtomasz@chromium.org>
Date: Thu Dec 18 00:21:14 2014

Merge: [fsp] Promote file system provider to stable.

This patch cleans up the IDL and promotes the API to stable.

TBR=fukino@chromium.org
TEST=browser_tests: *FileSystemProvider*
BUG=248427

Review URL: https://codereview.chromium.org/706153002

Cr-Commit-Position: refs/heads/master@{#303975}
(cherry picked from commit 4d752f9dc097c5f1f08e610aabbe2abf475d4072)

Review URL: https://codereview.chromium.org/810213002

Cr-Commit-Position: refs/branch-heads/2214@{#324}
Cr-Branched-From: 03655fd3f6d72165dc3c9bd2c89807305316fe6c-refs/heads/master@{#303346}

[modify] http://crrev.com/53ac65eff0220473c20ef5759cfe857b4feefb48/chrome/browser/chromeos/extensions/file_system_provider/file_system_provider_apitest.cc
[modify] http://crrev.com/53ac65eff0220473c20ef5759cfe857b4feefb48/chrome/common/extensions/api/_permission_features.json
[modify] http://crrev.com/53ac65eff0220473c20ef5759cfe857b4feefb48/chrome/common/extensions/api/file_system_provider.idl
[modify] http://crrev.com/53ac65eff0220473c20ef5759cfe857b4feefb48/chrome/common/extensions/api/file_system_provider_internal.idl
[modify] http://crrev.com/53ac65eff0220473c20ef5759cfe857b4feefb48/chrome/common/extensions/api/schemas.gypi

Status: Fixed
Status: Verified
Google Chrome	40.0.2214.72 (Official Build) beta
Revision	e341d1bb43aa1da077fe03b93ea469e833a1430c
Platform	6457.59.0 (Official Build) beta-channel 
Sign in to add a comment