Bug 1892041 - Part 1: Update test262 features. r=spidermonkey-reviewers,dminor
[gecko.git] / dom / chrome-webidl / PathUtils.webidl
blobeb51a798192fa3cc1055eb2cad9983e555883d5a
1 /* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* This Source Code Form is subject to the terms of the Mozilla Public
3  * License, v. 2.0. If a copy of the MPL was not distributed with this file,
4  * You can obtain one at http://mozilla.org/MPL/2.0/.
5  */
7 /**
8  * PathUtils is a set of utilities for operating on absolute paths.
9  */
10 [ChromeOnly, Exposed=(Window, Worker)]
11 namespace PathUtils {
12   /**
13    * Return the last path component.
14    *
15    * @param path An absolute path.
16    *
17    * @returns The last path component.
18    */
19   [Throws]
20   DOMString filename(DOMString path);
22   /**
23    * Return an ancestor directory of the given path.
24    *
25    * @param path An absolute path.
26    * @param depth The number of ancestors to remove, defaulting to 1 (i.e., the
27    *              parent).
28    *
29    * @return The ancestor directory.
30    *
31    *         If the path provided is a root path (e.g., `C:` on Windows or `/`
32    *         on *NIX), then null is returned.
33    */
34   [Throws]
35   DOMString? parent(DOMString path, optional long depth = 1);
37   /**
38    * Join the given components into a full path.
39    *
40    * @param components The path components. The first component must be an
41    *                   absolute path. There must be at least one component.
42    */
43   [Throws]
44   DOMString join(DOMString... components);
46   /**
47    * Join the given relative path to the base path.
48    *
49    * @param base The base path. This must be an absolute path.
50    * @param relativePath A relative path to join to the base path.
51    */
52   [Throws]
53   DOMString joinRelative(DOMString base, DOMString relativePath);
55   /**
56    * Creates an adjusted path using a path whose length is already close
57    * to MAX_PATH. For windows only.
58    *
59    * @param path An absolute path.
60    */
61   [Throws]
62   DOMString toExtendedWindowsPath(DOMString path);
64   /**
65    * Normalize a path by removing multiple separators and `..` and `.`
66    * directories.
67    *
68    * On UNIX platforms, the path must exist as symbolic links will be resolved.
69    *
70    * @param path The absolute path to normalize.
71    *
72    */
73   [Throws]
74   DOMString normalize(DOMString path);
76   /**
77    * Split a path into its components.
78    *
79    * @param path An absolute path.
80    */
81   [Throws]
82   sequence<DOMString> split(DOMString path);
84   /**
85    * Split a relative path into its components.
86    *
87    * @param path A relative path.
88    */
89   [Throws]
90   sequence<DOMString> splitRelative(DOMString path, optional SplitRelativeOptions options = {});
92   /**
93    * Transform a file path into a file: URI
94    *
95    * @param path An absolute path.
96    *
97    * @return The file: URI as a string.
98    */
99   [Throws]
100   UTF8String toFileURI(DOMString path);
102   /**
103    * Determine if the given path is an absolute or relative path.
104    *
105    * @param path A file path that is either relative or absolute.
106    *
107    * @return Whether or not the path is absolute.
108    */
109   boolean isAbsolute(DOMString path);
112 [Exposed=Window]
113 partial namespace PathUtils {
114   /**
115    * The profile directory.
116    */
117   [Throws, BinaryName="ProfileDirSync"]
118   readonly attribute DOMString profileDir;
120   /**
121    * The local-specific profile directory.
122    */
123   [Throws, BinaryName="LocalProfileDirSync"]
124   readonly attribute DOMString localProfileDir;
126   /**
127    * The OS temporary directory.
128    */
129   [Throws, BinaryName="TempDirSync"]
130   readonly attribute DOMString tempDir;
132   /**
133    * The libxul path.
134    */
135   [Throws, BinaryName="XulLibraryPathSync"]
136   readonly attribute DOMString xulLibraryPath;
139 [Exposed=Worker]
140 partial namespace PathUtils {
141   /**
142    * The profile directory.
143    */
144   [NewObject, BinaryName="GetProfileDirAsync"]
145   Promise<DOMString> getProfileDir();
147   /**
148    * The local-specific profile directory.
149    */
150   [NewObject, BinaryName="GetLocalProfileDirAsync"]
151   Promise<DOMString> getLocalProfileDir();
153   /**
154    * The OS temporary directory.
155    */
156   [NewObject, BinaryName="GetTempDirAsync"]
157   Promise<DOMString> getTempDir();
159   /**
160    * The libxul path.
161    */
162   [NewObject, BinaryName="GetXulLibraryPathAsync"]
163   Promise<DOMString> getXulLibraryPath();
166 dictionary SplitRelativeOptions {
167   /** Allow for a path that contains empty components. */
168   boolean allowEmpty = false;
170   /** Allow for a path that contains ".." components. */
171   boolean allowParentDir = false;
173   /** Allow for a path that contains "." components. */
174   boolean allowCurrentDir = false;