1// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef CHROME_COMMON_AUTOMATION_CONSTANTS_H__ 6#define CHROME_COMMON_AUTOMATION_CONSTANTS_H__ 7 8#include <string> 9 10namespace automation { 11 12// JSON value labels for proxy settings that are passed in via 13// AutomationMsg_SetProxyConfig. These are here since they are used by both 14// AutomationProvider and AutomationProxy. 15extern const char kJSONProxyAutoconfig[]; 16extern const char kJSONProxyNoProxy[]; 17extern const char kJSONProxyPacUrl[]; 18extern const char kJSONProxyPacMandatory[]; 19extern const char kJSONProxyBypassList[]; 20extern const char kJSONProxyServer[]; 21 22// When passing the kTestingChannelID switch to the browser, prepend 23// this prefix to the channel id to enable the named testing interface. 24// Named testing interface is used when you want to connect an 25// AutomationProxy to an already-running browser instance. 26extern const char kNamedInterfacePrefix[]; 27 28// Amount of time to wait before querying the browser. 29static const int kSleepTime = 250; 30 31// Recognized by the AutomationProvider's SendWebKeyboardEventToSelectedTab 32// command. Specifies the type of the keyboard event. 33enum KeyEventTypes { 34 kRawKeyDownType = 0, 35 kKeyDownType, 36 kCharType, 37 kKeyUpType, 38}; 39 40// Recognized by the AutomationProvider's SendWebKeyboardEventToSelectedTab 41// command. Specifies masks to be used in constructing keyboard event modifiers. 42enum KeyModifierMasks { 43 kShiftKeyMask = 1 << 0, 44 kControlKeyMask = 1 << 1, 45 kAltKeyMask = 1 << 2, 46 kMetaKeyMask = 1 << 3, 47 kNumLockKeyMask = 1 << 4, 48}; 49 50// Recognized by the AutomationProvider's ProcessWebMouseEvent command. 51enum MouseEventType { 52 kMouseDown = 0, 53 kMouseUp, 54 kMouseMove, 55 kMouseEnter, 56 kMouseLeave, 57 kContextMenu, 58}; 59 60enum MouseButton { 61 kLeftButton = 0, 62 kMiddleButton, 63 kRightButton, 64 kNoButton, 65}; 66 67// The current version of ChromeDriver automation supported by Chrome. 68// This needs to be incremented for each change to ChromeDriver automation that 69// is not backwards compatible. Some examples of this would be: 70// - SendJSONRequest or Hello IPC messages change 71// - The interface for an individual ChromeDriver automation call changes in an 72// incompatible way 73// TODO(kkania): Investigate a better backwards compatible automation solution. 74extern const int kChromeDriverAutomationVersion; 75 76// Automation error codes. These provide the client a simple way 77// to detect certain types of errors it may be interested in handling. 78// The error code values must stay consistent across compatible versions. 79enum ErrorCode { 80 // An unknown error occurred. 81 kUnknownError = 0, 82 // Trying to operate on a JavaScript modal dialog when none is open. 83 kNoJavaScriptModalDialogOpen = 1, 84 // An open modal dialog blocked the operation. The operation may have 85 // partially completed. 86 kBlockedByModalDialog = 2, 87 // An ID was supplied that is invalid or does not refer to an existing object. 88 kInvalidId = 3, 89}; 90 91// Represents an automation error. Each error has a code and an error message. 92class Error { 93 public: 94 // Creates an invalid error. 95 Error(); 96 97 // Creates an error for the given code. A default message for the given code 98 // will be used as the error message. 99 explicit Error(ErrorCode code); 100 101 // Creates an error for the given message. The |kUnknownError| type will 102 // be used. 103 explicit Error(const std::string& error_msg); 104 105 // Creates an error for the given code and message. 106 Error(ErrorCode code, const std::string& error_msg); 107 108 virtual ~Error(); 109 110 ErrorCode code() const; 111 const std::string& message() const; 112 113 private: 114 ErrorCode code_; 115 std::string message_; 116}; 117 118} // namespace automation 119 120// Used by AutomationProxy, declared here so that other headers don't need 121// to include automation_proxy.h. 122enum AutomationLaunchResult { 123 AUTOMATION_LAUNCH_RESULT_INVALID = -1, 124 AUTOMATION_SUCCESS, 125 AUTOMATION_TIMEOUT, 126 AUTOMATION_VERSION_MISMATCH, 127 AUTOMATION_CREATE_TAB_FAILED, 128 AUTOMATION_SERVER_CRASHED, 129 AUTOMATION_CHANNEL_ERROR, 130}; 131 132enum AutomationMsg_NavigationResponseValues { 133 AUTOMATION_MSG_NAVIGATION_ERROR = 0, 134 AUTOMATION_MSG_NAVIGATION_SUCCESS, 135 AUTOMATION_MSG_NAVIGATION_AUTH_NEEDED, 136 AUTOMATION_MSG_NAVIGATION_BLOCKED_BY_MODAL_DIALOG, 137}; 138 139// Used in the AutomationMsg_GetExtensionProperty to identify which extension 140// property should be retrieved, instead of having separate messages for each 141// property. 142enum AutomationMsg_DEPRECATED_ExtensionProperty { 143 AUTOMATION_MSG_EXTENSION_ID = 0, 144 AUTOMATION_MSG_EXTENSION_NAME, 145 AUTOMATION_MSG_EXTENSION_VERSION, 146 AUTOMATION_MSG_EXTENSION_BROWSER_ACTION_INDEX, 147}; 148 149// Specifies the font size on a page which is requested by an automation 150// client. 151enum AutomationPageFontSize { 152 SMALLEST_FONT = 8, 153 SMALL_FONT = 12, 154 MEDIUM_FONT = 16, 155 LARGE_FONT = 24, 156 LARGEST_FONT = 36 157}; 158 159enum FindInPageDirection { BACK = 0, FWD = 1 }; 160enum FindInPageCase { IGNORE_CASE = 0, CASE_SENSITIVE = 1 }; 161 162#endif // CHROME_COMMON_AUTOMATION_CONSTANTS_H__ 163