blob: d0479ec7ced057f4a088a38193eb0dcb8b809f81 [file] [log] [blame]
// Copyright 2021 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import {AllowedPaths} from './allowed_paths.js';
import {DialogType} from './dialog_type.js';
// TODO(b/199452030): Fix duplication with files_app_state.js
/**
* FilesAppState is used in 2 ways:
*
* 1. Persist in the localStorage the some state, like current directory,
* sorting column options, etc.
*
* 2. To open a new window:
* 2.1, Requests to open a new window set part of these options to configure the
* how the new window should behave.
* 2.2 When the Files app extension is restarted, the background page retrieves
* the last state from localStorage for each opened window and re-spawn the
* windows with their state.
*
* @record
*/
export class FilesAppState {
constructor() {
/**
* The desired target directory when opening a new window.
* @public {string|null|undefined}
*/
this.currentDirectoryURL;
/**
* The URL for a file or directory to be selected once a new window is
* spawned.
* @public {string|undefined}
*/
this.selectionURL;
/**
* For SaveAs dialog it prefills the <input> for the file name with this
* value.
* For FilePicker it pre-selects the file in the file list.
* @public {string|undefined}
*/
this.targetName;
/**
* Search term to initialize the Files app directly in a search results.
* @public {string|undefined}
*/
this.searchQuery;
/**
* The type of the window being opened, when it's undefined it defaults to
* the normal Files app window (non-dialog version).
* @public {!DialogType|undefined}
*/
this.type;
/**
* List of file extensions (.txt, .zip, etc) that will be used by
* AndroidAppListModel, when displaying Files app as FilePicker for ARC++.
* Files app displays Android apps that can handle such extensions in the
* DirectoryTree.
* TODO(lucmult): Add type for the Object below:
* @public {!Array<!Object>|undefined}
*/
this.typeList;
/**
* For FilePicker indicates that the "All files" should be displayed in the
* file type dropdown in the footer.
* @public {boolean|undefined}
*/
this.includeAllFiles;
/**
* Defines what volumes are available in the Files app, when NATIVE_PATH is
* used, any virtual volume (FSPs) is hidden.
*
* Defaults to `ANY_PATH_OR_URL` when undefined.
* @public {!AllowedPaths|undefined}
*/
this.allowedPaths;
/**
* If the Android apps should be shown in the DirectoryTree for FilePicker.
* @public {boolean|undefined}
*/
this.showAndroidPickerApps;
/**
* Array of Files app mode dependent volume filter names. Defaults to an
* empty Array when undefined, and is the normal case (no filters).
*
* See filtered_volume_manager.js for details about the available volume
* filter names and their volume filter effects.
*
* @public {!Array<string>|undefined}
*/
this.volumeFilter;
}
}