/**
* Configure the amount of time that a particular type of operation can execute
* for before they are aborted and a |Timeout| error is returned to the client.
*
* If no parameter are given it returns the current timeout settings (only supported
* by drivers which have the W3C Webdriver protocol implemented)
*
* @param {String=} type The type of operation to set the timeout for. Valid values are:
- **script** Determines when to interrupt a script that is being [evaluated](https://www.w3.org/TR/webdriver/#executing-script).
- **implicit** Gives the timeout of when to abort [locating an element](https://www.w3.org/TR/webdriver/#element-retrieval).
- **pageLoad** Provides the timeout limit used to interrupt [navigation](https://html.spec.whatwg.org/#navigate) of the [browsing context](https://html.spec.whatwg.org/#browsing-context).
The `pageLoad` keyword is a part of the official WebDriver [specification](https://www.w3.org/TR/webdriver/#set-timeouts), but might not be [supported](https://github.com/seleniumhq/selenium-google-code-issue-archive/issues/687) for your browser (the previous name is `page load`).
* @param {Number=} ms The amount of time, in milliseconds, that time-limited commands are permitted to run.
*
* @see https://www.w3.org/TR/webdriver/#get-timeouts
* @type protocol
*
*/
export default function timeouts (type, ms) {
/*!
* get timeouts (W3C Webdriver protocol only)
*/
if (typeof type !== 'string' || typeof ms !== 'number') {
return this.requestHandler.create('/session/:sessionId/timeouts')
}
return this.requestHandler.create('/session/:sessionId/timeouts', {
type: type,
ms: ms
})
}