// 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 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 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 syncing_paths); };