chromium/services/device/public/mojom/mtp_manager.mojom

// Copyright 2018 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

module device.mojom;

import "services/device/public/mojom/mtp_file_entry.mojom";
import "services/device/public/mojom/mtp_storage_info.mojom";

interface MtpManagerClient {
  // Notifies the client that a storage is attached.
  StorageAttached(MtpStorageInfo storage_info);

  // Notifies the client that a storage is detached.
  StorageDetached(string storage_name);
};

interface MtpManager {
  // This is a combined interface to get existing storages and set a
  // client for incoming storage change events. It is designed to reduce
  // async calls and eliminate a potential race condition between
  // the client being set and storage updates being made.
  EnumerateStoragesAndSetClient(
      pending_associated_remote<MtpManagerClient> client) =>
          (array<MtpStorageInfo> storages);

  // Gets storage metadata for |storage_name|.
  GetStorageInfo(string storage_name) =>
    (MtpStorageInfo storage_info);

  // Reads the metadata of |storage_name| from device.
  GetStorageInfoFromDevice(string storage_name) =>
    (MtpStorageInfo storage_info, bool error);

  // Opens |storage_name| in |mode|.
  OpenStorage(string storage_name, string mode) =>
    (string storage_handle, bool error);

  // Closes |storage_handle|.
  CloseStorage(string storage_handle) => (bool error);

  // Creates |directory_name| in |parent_id|.
  CreateDirectory(string storage_handle, uint32 parent_id,
      string directory_name) => (bool error);

  // Reads the directory listing for |file_id| and returns the list of file ids.
  ReadDirectoryEntryIds(string storage_handle,
      uint32 file_id) => (array<uint32> file_ids, bool error);

  // Reads file data from |file_id| on |storage_handle|.
  // Reads |count| bytes of data starting at |offset|.
  ReadFileChunk(string storage_handle,
      uint32 file_id,
      uint32 offset,
      uint32 count) => (string data, bool error);

  // Gets the file metadata for entries in |file_ids| on |storage_handle|.
  GetFileInfo(string storage_handle,
      array<uint32> file_ids) =>
    (array<MtpFileEntry> file_entries, bool error);

  // Renames |object_id| to |new_name|.
  RenameObject(string storage_handle,
      uint32 object_id,
      string new_name) => (bool error);

  // Copies the file from |source_file_descriptor| to |file_name| on
  // |parent_id|.
  CopyFileFromLocal(string storage_handle,
      int64 source_file_descriptor,
      uint32 parent_id,
      string file_name) => (bool error);

  // Deletes |object_id|.
  DeleteObject(string storage_handle, uint32 object_id) => (bool error);
};