diff options
Diffstat (limited to 'dom/chrome-webidl/PathUtils.webidl')
-rw-r--r-- | dom/chrome-webidl/PathUtils.webidl | 175 |
1 files changed, 175 insertions, 0 deletions
diff --git a/dom/chrome-webidl/PathUtils.webidl b/dom/chrome-webidl/PathUtils.webidl new file mode 100644 index 0000000000..eb51a79819 --- /dev/null +++ b/dom/chrome-webidl/PathUtils.webidl @@ -0,0 +1,175 @@ +/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +/** + * PathUtils is a set of utilities for operating on absolute paths. + */ +[ChromeOnly, Exposed=(Window, Worker)] +namespace PathUtils { + /** + * Return the last path component. + * + * @param path An absolute path. + * + * @returns The last path component. + */ + [Throws] + DOMString filename(DOMString path); + + /** + * Return an ancestor directory of the given path. + * + * @param path An absolute path. + * @param depth The number of ancestors to remove, defaulting to 1 (i.e., the + * parent). + * + * @return The ancestor directory. + * + * If the path provided is a root path (e.g., `C:` on Windows or `/` + * on *NIX), then null is returned. + */ + [Throws] + DOMString? parent(DOMString path, optional long depth = 1); + + /** + * Join the given components into a full path. + * + * @param components The path components. The first component must be an + * absolute path. There must be at least one component. + */ + [Throws] + DOMString join(DOMString... components); + + /** + * Join the given relative path to the base path. + * + * @param base The base path. This must be an absolute path. + * @param relativePath A relative path to join to the base path. + */ + [Throws] + DOMString joinRelative(DOMString base, DOMString relativePath); + + /** + * Creates an adjusted path using a path whose length is already close + * to MAX_PATH. For windows only. + * + * @param path An absolute path. + */ + [Throws] + DOMString toExtendedWindowsPath(DOMString path); + + /** + * Normalize a path by removing multiple separators and `..` and `.` + * directories. + * + * On UNIX platforms, the path must exist as symbolic links will be resolved. + * + * @param path The absolute path to normalize. + * + */ + [Throws] + DOMString normalize(DOMString path); + + /** + * Split a path into its components. + * + * @param path An absolute path. + */ + [Throws] + sequence<DOMString> split(DOMString path); + + /** + * Split a relative path into its components. + * + * @param path A relative path. + */ + [Throws] + sequence<DOMString> splitRelative(DOMString path, optional SplitRelativeOptions options = {}); + + /** + * Transform a file path into a file: URI + * + * @param path An absolute path. + * + * @return The file: URI as a string. + */ + [Throws] + UTF8String toFileURI(DOMString path); + + /** + * Determine if the given path is an absolute or relative path. + * + * @param path A file path that is either relative or absolute. + * + * @return Whether or not the path is absolute. + */ + boolean isAbsolute(DOMString path); +}; + +[Exposed=Window] +partial namespace PathUtils { + /** + * The profile directory. + */ + [Throws, BinaryName="ProfileDirSync"] + readonly attribute DOMString profileDir; + + /** + * The local-specific profile directory. + */ + [Throws, BinaryName="LocalProfileDirSync"] + readonly attribute DOMString localProfileDir; + + /** + * The OS temporary directory. + */ + [Throws, BinaryName="TempDirSync"] + readonly attribute DOMString tempDir; + + /** + * The libxul path. + */ + [Throws, BinaryName="XulLibraryPathSync"] + readonly attribute DOMString xulLibraryPath; +}; + +[Exposed=Worker] +partial namespace PathUtils { + /** + * The profile directory. + */ + [NewObject, BinaryName="GetProfileDirAsync"] + Promise<DOMString> getProfileDir(); + + /** + * The local-specific profile directory. + */ + [NewObject, BinaryName="GetLocalProfileDirAsync"] + Promise<DOMString> getLocalProfileDir(); + + /** + * The OS temporary directory. + */ + [NewObject, BinaryName="GetTempDirAsync"] + Promise<DOMString> getTempDir(); + + /** + * The libxul path. + */ + [NewObject, BinaryName="GetXulLibraryPathAsync"] + Promise<DOMString> getXulLibraryPath(); +}; + +dictionary SplitRelativeOptions { + /** Allow for a path that contains empty components. */ + boolean allowEmpty = false; + + /** Allow for a path that contains ".." components. */ + boolean allowParentDir = false; + + /** Allow for a path that contains "." components. */ + boolean allowCurrentDir = false; +}; |