|
Defer ARC file system operations while ARC is booting.
An additional abstraction layer, ArcFileSystemOperationRunner, is inserted
above mojom::FileSystemInstance. Its production implementation is
ArcDeferredFileSystemOperationRunner, which defers file system operations
while ARC is booting.
This provides better UX when the user attempts to perform file operations
while ARC is booting. For example:
- Media views are mounted in Files app soon after the user logs into
the system. If the user attempts to open media views before ARC boots,
a spinner is shown until file system gets ready because ReadDirectory
operations are deferred.
- When an Android content URL is opened soon after the user logs into
the system (because the user opened the tab before they logged out for
instance), the tab keeps loading until ARC boot finishes, instead of
failing immediately.
This patch also changes following points for better media view UX:
- Mount/unmount media view volumes according to ARC opt-in status, not ARC
file system instance availability.
- Add a short circuit in ArcDocumentsProviderRoot to return a metadata for
root directories. Otherwise Files app fails to update the file system list
(the left pane of UI) until deferred operations finish.
BUG= chromium:682577
TEST=unit_tests
TEST=Media views are mounted immediately, and a spinner is shown if it is opened.
Review-Url: https://codereview.chromium.org/2637163002
Cr-Commit-Position: refs/heads/master@{#445657}
Committed: https://chromium.googlesource.com/chromium/src/+/d280ab1a052245d5bcacf63a4478fc3c0f085899
Total comments: 27
Total comments: 12
Total comments: 2
|
Unified diffs |
Side-by-side diffs |
Delta from patch set |
Stats (+787 lines, -365 lines) |
Patch |
 |
M |
chrome/browser/chromeos/BUILD.gn
|
View
|
1
2
|
3 chunks |
+5 lines, -2 lines |
0 comments
|
Download
|
 |
M |
chrome/browser/chromeos/arc/arc_service_launcher.cc
|
View
|
|
2 chunks |
+4 lines, -0 lines |
0 comments
|
Download
|
 |
M |
chrome/browser/chromeos/arc/fileapi/arc_content_file_system_async_file_util.cc
|
View
|
1
2
3
4
5
|
2 chunks |
+2 lines, -2 lines |
0 comments
|
Download
|
 |
M |
chrome/browser/chromeos/arc/fileapi/arc_content_file_system_async_file_util_unittest.cc
|
View
|
1
2
3
4
5
|
4 chunks |
+14 lines, -7 lines |
0 comments
|
Download
|
 |
M |
chrome/browser/chromeos/arc/fileapi/arc_content_file_system_file_stream_reader.cc
|
View
|
1
2
3
4
5
|
3 chunks |
+3 lines, -3 lines |
0 comments
|
Download
|
 |
M |
chrome/browser/chromeos/arc/fileapi/arc_content_file_system_file_stream_reader_unittest.cc
|
View
|
1
2
3
4
5
|
4 chunks |
+20 lines, -18 lines |
0 comments
|
Download
|
 |
A |
chrome/browser/chromeos/arc/fileapi/arc_deferred_file_system_operation_runner.h
|
View
|
1
2
3
4
5
6
|
1 chunk |
+99 lines, -0 lines |
0 comments
|
Download
|
 |
A |
chrome/browser/chromeos/arc/fileapi/arc_deferred_file_system_operation_runner.cc
|
View
|
1
2
3
4
5
6
|
1 chunk |
+172 lines, -0 lines |
0 comments
|
Download
|
 |
A |
chrome/browser/chromeos/arc/fileapi/arc_deferred_file_system_operation_runner_unittest.cc
|
View
|
1
2
3
4
5
6
7
8
|
1 chunk |
+182 lines, -0 lines |
0 comments
|
Download
|
 |
M |
chrome/browser/chromeos/arc/fileapi/arc_documents_provider_root.cc
|
View
|
1
2
3
4
5
6
7
8
|
3 chunks |
+17 lines, -3 lines |
0 comments
|
Download
|
 |
M |
chrome/browser/chromeos/arc/fileapi/arc_documents_provider_root_unittest.cc
|
View
|
1
2
3
4
5
|
4 chunks |
+15 lines, -7 lines |
0 comments
|
Download
|
 |
D |
chrome/browser/chromeos/arc/fileapi/arc_file_system_instance_util.h
|
View
|
1
2
|
1 chunk |
+0 lines, -40 lines |
0 comments
|
Download
|
 |
M |
chrome/browser/chromeos/arc/fileapi/arc_file_system_instance_util.cc
|
View
|
1
2
|
1 chunk |
+0 lines, -133 lines |
0 comments
|
Download
|
 |
A + |
chrome/browser/chromeos/arc/fileapi/arc_file_system_operation_runner_util.h
|
View
|
1
2
3
4
5
|
4 chunks |
+8 lines, -8 lines |
0 comments
|
Download
|
 |
A + |
chrome/browser/chromeos/arc/fileapi/arc_file_system_operation_runner_util.cc
|
View
|
1
2
3
4
5
|
3 chunks |
+26 lines, -37 lines |
0 comments
|
Download
|
 |
M |
chrome/browser/chromeos/arc/fileapi/arc_file_system_service.h
|
View
|
1
2
3
4
5
|
1 chunk |
+4 lines, -19 lines |
0 comments
|
Download
|
 |
M |
chrome/browser/chromeos/arc/fileapi/arc_file_system_service.cc
|
View
|
1
2
|
3 chunks |
+0 lines, -24 lines |
0 comments
|
Download
|
 |
M |
chrome/browser/chromeos/file_manager/volume_manager.h
|
View
|
|
4 chunks |
+5 lines, -5 lines |
0 comments
|
Download
|
 |
M |
chrome/browser/chromeos/file_manager/volume_manager.cc
|
View
|
1
2
3
4
5
6
|
5 chunks |
+26 lines, -28 lines |
0 comments
|
Download
|
 |
M |
components/arc/BUILD.gn
|
View
|
1
2
|
2 chunks |
+4 lines, -1 line |
0 comments
|
Download
|
 |
D |
components/arc/file_system/arc_file_system_observer.h
|
View
|
1
2
|
1 chunk |
+0 lines, -23 lines |
0 comments
|
Download
|
 |
A |
components/arc/file_system/arc_file_system_operation_runner.h
|
View
|
1
2
3
4
5
|
1 chunk |
+55 lines, -0 lines |
0 comments
|
Download
|
 |
A |
components/arc/file_system/arc_file_system_operation_runner.cc
|
View
|
1
2
|
1 chunk |
+19 lines, -0 lines |
0 comments
|
Download
|
 |
A |
components/arc/file_system/test/fake_arc_file_system_operation_runner.h
|
View
|
1
2
3
4
5
|
1 chunk |
+37 lines, -0 lines |
0 comments
|
Download
|
 |
A |
components/arc/file_system/test/fake_arc_file_system_operation_runner.cc
|
View
|
1
2
3
4
5
|
1 chunk |
+43 lines, -0 lines |
0 comments
|
Download
|
 |
M |
components/arc/test/fake_file_system_instance.h
|
View
|
1
2
3
4
5
|
1 chunk |
+2 lines, -0 lines |
0 comments
|
Download
|
 |
M |
components/arc/test/fake_file_system_instance.cc
|
View
|
1
2
3
4
5
6
|
2 chunks |
+25 lines, -5 lines |
0 comments
|
Download
|
Total messages: 50 (36 generated)
|