// 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 ash.manage_mirrorsync.mojom;
import "mojo/public/mojom/base/file_path.mojom";
// Lives in the browser process. A renderer uses this to create a page handler
// that enables communication between a renderer and the browser process.
interface PageHandlerFactory {
// Create a page handler to enable communication with the browser process.
CreatePageHandler(pending_receiver<PageHandler> handler);
};
// Lives in the browser process. A renderer uses this to invoke methods that
// are implemented in the browser process.
interface PageHandler {
// Returns a list of paths that are children (i.e. direct descendants) of
// `path`. The supplied path must be relative to ~/MyFiles then made absolute,
// e.g. /foo/bar will return all child folders of ~/MyFiles/foo/bar
GetChildFolders(mojo_base.mojom.FilePath path) => (
array<mojo_base.mojom.FilePath> paths);
// A mapping exposed to the chrome://manage-mirrorsync webui to abstract away
// 3 classes of errors from their drive::FileError equivalents.
// - When the DriveFS service is unavailable.
// - Any other error has occurred.
// - The syncing paths retrieval was successful.
enum GetSyncPathError {
kServiceUnavailable,
kSuccess,
kFailed,
};
// Returns a list of paths that are currently syncing via MirrorSync. These
// paths follow the same conventions as `GetChildFolders` such that they
// appear as parented at root but represent are actually relative to
// ~/MyFiles. See `GetChildFolders` for an example.
GetSyncingPaths() => (
GetSyncPathError error,
array<mojo_base.mojom.FilePath> syncing_paths);
};