| // Copyright 2022 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| module crosapi.mojom; |
| |
| import "mojo/public/mojom/base/file_path.mojom"; |
| |
| // Volume info for chrome.fileSystem API usage, serving as intermediary from |
| // file_manager::Volume to file_system::Volume, with additional fields. |
| [Stable] |
| struct Volume { |
| string volume_id@0; |
| string volume_label@1; |
| // Equivalent to !is_read_only. |
| bool writable@2; |
| mojo_base.mojom.FilePath mount_path@3; |
| // Whether the volume can be used by lacros-chrome. This is needed because |
| // virtual file system support in lacros-chrome is WIP. |
| // TODO(crbug.com/1296438): Deprecate once VFS works fully. |
| bool is_available_to_lacros@4; |
| }; |
| |
| // Interface for volume list observers. Implemented by lacros-chrome. Used by |
| // ash-chrome to send Volume list info and updates. |
| [Stable, Uuid="ed85b34f-5ccc-41cd-b688-c0601dd629c3"] |
| interface VolumeListObserver { |
| // Called when the volume list changes. |
| OnVolumeListChanged@0(array<Volume> volume_list); |
| }; |
| |
| // Interface with Ash volume manager. Implemented in ash-chrome. |
| [Stable, Uuid="a5f21bb6-e2f9-4ddf-a01a-f73c09915936"] |
| interface VolumeManager { |
| // Adds an observer for volume list changes. |
| AddVolumeListObserver@0(pending_remote<VolumeListObserver> observer); |
| |
| // Returns an unfiltered list of volumes. |
| GetFullVolumeList@1() => (array<Volume> result); |
| |
| // Returns data needed to mount a volume identified by |volume_id|, or empty |
| // on error. |
| GetVolumeMountInfo@2(string volume_id) => (Volume? result); |
| }; |