Security update for permissions_by_term
[yaffs-website] / vendor / instaclick / php-webdriver / lib / WebDriver / Exception.php
1 <?php
2 /**
3  * Copyright 2004-2017 Facebook. All Rights Reserved.
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  *     http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  * @package WebDriver
18  *
19  * @author Justin Bishop <jubishop@gmail.com>
20  * @author Anthon Pang <apang@softwaredevelopment.ca>
21  */
22
23 namespace WebDriver;
24
25 /**
26  * WebDriver\Exception class
27  *
28  * @package WebDriver
29  */
30 abstract class Exception extends \Exception
31 {
32     /**
33      * Response status codes
34      *
35      * @link http://code.google.com/p/selenium/wiki/JsonWireProtocol#Response_Status_Codes
36      */
37     const SUCCESS = 0;
38     const NO_SUCH_DRIVER = 6;
39     const NO_SUCH_ELEMENT = 7;
40     const NO_SUCH_FRAME = 8;
41     const UNKNOWN_COMMAND = 9;
42     const STALE_ELEMENT_REFERENCE = 10;
43     const ELEMENT_NOT_VISIBLE = 11;
44     const INVALID_ELEMENT_STATE = 12;
45     const UNKNOWN_ERROR = 13;
46     const ELEMENT_IS_NOT_SELECTABLE = 15;
47     const JAVASCRIPT_ERROR = 17;
48     const XPATH_LOOKUP_ERROR = 19;
49     const TIMEOUT = 21;
50     const NO_SUCH_WINDOW = 23;
51     const INVALID_COOKIE_DOMAIN = 24;
52     const UNABLE_TO_SET_COOKIE = 25;
53     const UNEXPECTED_ALERT_OPEN = 26;
54     const NO_ALERT_OPEN_ERROR = 27;
55     const SCRIPT_TIMEOUT = 28;
56     const INVALID_ELEMENT_COORDINATES = 29;
57     const IME_NOT_AVAILABLE = 30;
58     const IME_ENGINE_ACTIVATION_FAILED = 31;
59     const INVALID_SELECTOR = 32;
60     const SESSION_NOT_CREATED = 33;
61     const MOVE_TARGET_OUT_OF_BOUNDS = 34;
62
63     // obsolete
64     const INDEX_OUT_OF_BOUNDS = 1;
65     const NO_COLLECTION = 2;
66     const NO_STRING = 3;
67     const NO_STRING_LENGTH = 4;
68     const NO_STRING_WRAPPER = 5;
69     const OBSOLETE_ELEMENT = 10;
70     const ELEMENT_NOT_DISPLAYED = 11;
71     const UNHANDLED = 13;
72     const EXPECTED = 14;
73     const ELEMENT_NOT_SELECTABLE = 15;
74     const NO_SUCH_DOCUMENT = 16;
75     const UNEXPECTED_JAVASCRIPT = 17;
76     const NO_SCRIPT_RESULT = 18;
77     const NO_SUCH_COLLECTION = 20;
78     const NULL_POINTER = 22;
79     const NO_MODAL_DIALOG_OPEN_ERROR = 27;
80
81     // user-defined
82     const CURL_EXEC = -1;
83     const OBSOLETE_COMMAND = -2;
84     const NO_PARAMETERS_EXPECTED = -3;
85     const JSON_PARAMETERS_EXPECTED = -4;
86     const UNEXPECTED_PARAMETERS = -5;
87     const INVALID_REQUEST = -6;
88     const UNKNOWN_LOCATOR_STRATEGY = -7;
89
90     private static $errs = array(
91 //      self::SUCCESS => array('Success', 'This should never be thrown!'),
92
93         self::NO_SUCH_DRIVER => array('NoSuchDriver', 'A session is either terminated or not started'),
94         self::NO_SUCH_ELEMENT => array('NoSuchElement', 'An element could not be located on the page using the given search parameters.'),
95         self::NO_SUCH_FRAME => array('NoSuchFrame', 'A request to switch to a frame could not be satisfied because the frame could not be found.'),
96         self::UNKNOWN_COMMAND => array('UnknownCommand', 'The requested resource could not be found, or a request was received using an HTTP method that is not supported by the mapped resource.'),
97         self::STALE_ELEMENT_REFERENCE => array('StaleElementReference', 'An element command failed because the referenced element is no longer attached to the DOM.'),
98         self::ELEMENT_NOT_VISIBLE => array('ElementNotVisible', 'An element command could not be completed because the element is not visible on the page.'),
99         self::INVALID_ELEMENT_STATE => array('InvalidElementState', 'An element command could not be completed because the element is in an invalid state (e.g., attempting to click a disabled element).'),
100         self::UNKNOWN_ERROR => array('UnknownError', 'An unknown server-side error occurred while processing the command.'),
101         self::ELEMENT_IS_NOT_SELECTABLE => array('ElementIsNotSelectable', 'An attempt was made to select an element that cannot be selected.'),
102         self::JAVASCRIPT_ERROR => array('JavaScriptError', 'An error occurred while executing user supplied JavaScript.'),
103         self::XPATH_LOOKUP_ERROR => array('XPathLookupError', 'An error occurred while searching for an element by XPath.'),
104         self::TIMEOUT => array('Timeout', 'An operation did not complete before its timeout expired.'),
105         self::NO_SUCH_WINDOW => array('NoSuchWindow', 'A request to switch to a different window could not be satisfied because the window could not be found.'),
106         self::INVALID_COOKIE_DOMAIN => array('InvalidCookieDomain', 'An illegal attempt was made to set a cookie under a different domain than the current page.'),
107         self::UNABLE_TO_SET_COOKIE => array('UnableToSetCookie', 'A request to set a cookie\'s value could not be satisfied.'),
108         self::UNEXPECTED_ALERT_OPEN => array('UnexpectedAlertOpen', 'A modal dialog was open, blocking this operation'),
109         self::NO_ALERT_OPEN_ERROR => array('NoAlertOpenError', 'An attempt was made to operate on a modal dialog when one was not open.'),
110         self::SCRIPT_TIMEOUT => array('ScriptTimeout', 'A script did not complete before its timeout expired.'),
111         self::INVALID_ELEMENT_COORDINATES => array('InvalidElementCoordinates', 'The coordinates provided to an interactions operation are invalid.'),
112         self::IME_NOT_AVAILABLE => array('IMENotAvailable', 'IME was not available.'),
113         self::IME_ENGINE_ACTIVATION_FAILED => array('IMEEngineActivationFailed', 'An IME engine could not be started.'),
114         self::INVALID_SELECTOR => array('InvalidSelector', 'Argument was an invalid selector (e.g., XPath/CSS).'),
115         self::SESSION_NOT_CREATED => array('SessionNotCreated', 'A new session could not be created (e.g., a required capability could not be set).'),
116         self::MOVE_TARGET_OUT_OF_BOUNDS => array('MoveTargetOutOfBounds', 'Target provided for a move action is out of bounds.'),
117
118         self::CURL_EXEC => array('CurlExec', 'curl_exec() error.'),
119         self::OBSOLETE_COMMAND => array('ObsoleteCommand', 'This WebDriver command is obsolete.'),
120         self::NO_PARAMETERS_EXPECTED => array('NoParametersExpected', 'This HTTP request method expects no parameters.'),
121         self::JSON_PARAMETERS_EXPECTED => array('JsonParameterExpected', 'This POST request expects a JSON parameter (array).'),
122         self::UNEXPECTED_PARAMETERS => array('UnexpectedParameters', 'This command does not expect this number of parameters.'),
123         self::INVALID_REQUEST => array('InvalidRequest', 'This command does not support this HTTP request method.'),
124         self::UNKNOWN_LOCATOR_STRATEGY => array('UnknownLocatorStrategy', 'This locator strategy is not supported.'),
125     );
126
127     /**
128      * Factory method to create WebDriver\Exception objects
129      *
130      * @param integer    $code              Code
131      * @param string     $message           Message
132      * @param \Exception $previousException Previous exception
133      *
134      * @return \Exception
135      */
136     public static function factory($code, $message = null, $previousException = null)
137     {
138         // unknown error
139         if (!isset(self::$errs[$code])) {
140             if (trim($message) === '') {
141                 $message = 'Unknown Error';
142             }
143
144             return new \Exception($message, $code, $previousException);
145         }
146
147         $errorDefinition = self::$errs[$code];
148
149         if (trim($message) === '') {
150             $message = $errorDefinition[1];
151         }
152
153         $className = __CLASS__ . '\\' . $errorDefinition[0];
154
155         return new $className($message, $code, $previousException);
156     }
157 }