blob: 66b62189b6f9de96b7203c6e77dba2e084e9aa5e [file] [log] [blame]
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_COMMON_AUTOMATION_CONSTANTS_H__
#define CHROME_COMMON_AUTOMATION_CONSTANTS_H__
#pragma once
#include <string>
namespace automation {
// JSON value labels for proxy settings that are passed in via
// AutomationMsg_SetProxyConfig. These are here since they are used by both
// AutomationProvider and AutomationProxy.
extern const char kJSONProxyAutoconfig[];
extern const char kJSONProxyNoProxy[];
extern const char kJSONProxyPacUrl[];
extern const char kJSONProxyPacMandatory[];
extern const char kJSONProxyBypassList[];
extern const char kJSONProxyServer[];
// When passing the kTestingChannelID switch to the browser, prepend
// this prefix to the channel id to enable the named testing interface.
// Named testing interface is used when you want to connect an
// AutomationProxy to an already-running browser instance.
extern const char kNamedInterfacePrefix[];
// Amount of time to wait before querying the browser.
static const int kSleepTime = 250;
// Recognized by the AutomationProvider's SendWebKeyboardEventToSelectedTab
// command. Specifies the type of the keyboard event.
enum KeyEventTypes {
kRawKeyDownType = 0,
kKeyDownType,
kCharType,
kKeyUpType,
};
// Recognized by the AutomationProvider's SendWebKeyboardEventToSelectedTab
// command. Specifies masks to be used in constructing keyboard event modifiers.
enum KeyModifierMasks {
kShiftKeyMask = 1 << 0,
kControlKeyMask = 1 << 1,
kAltKeyMask = 1 << 2,
kMetaKeyMask = 1 << 3,
kNumLockKeyMask = 1 << 4,
};
// Recognized by the AutomationProvider's ProcessWebMouseEvent command.
enum MouseEventType {
kMouseDown = 0,
kMouseUp,
kMouseMove,
kMouseEnter,
kMouseLeave,
kContextMenu,
};
enum MouseButton {
kLeftButton = 0,
kMiddleButton,
kRightButton,
kNoButton,
};
// The current version of ChromeDriver automation supported by Chrome.
// This needs to be incremented for each change to ChromeDriver automation that
// is not backwards compatible. Some examples of this would be:
// - SendJSONRequest or Hello IPC messages change
// - The interface for an individual ChromeDriver automation call changes in an
// incompatible way
// TODO(kkania): Investigate a better backwards compatible automation solution.
extern const int kChromeDriverAutomationVersion;
// Automation error codes. These provide the client a simple way
// to detect certain types of errors it may be interested in handling.
// The error code values must stay consistent across compatible versions.
enum ErrorCode {
// An unknown error occurred.
kUnknownError = 0,
// Trying to operate on a JavaScript modal dialog when none is open.
kNoJavaScriptModalDialogOpen = 1,
// An open modal dialog blocked the operation. The operation may have
// partially completed.
kBlockedByModalDialog = 2,
// An ID was supplied that is invalid or does not refer to an existing object.
kInvalidId = 3,
};
// Represents an automation error. Each error has a code and an error message.
class Error {
public:
// Creates an invalid error.
Error();
// Creates an error for the given code. A default message for the given code
// will be used as the error message.
explicit Error(ErrorCode code);
// Creates an error for the given message. The |kUnknownError| type will
// be used.
explicit Error(const std::string& error_msg);
// Creates an error for the given code and message.
Error(ErrorCode code, const std::string& error_msg);
virtual ~Error();
ErrorCode code() const;
const std::string& message() const;
private:
ErrorCode code_;
std::string message_;
};
} // namespace automation
// Used by AutomationProxy, declared here so that other headers don't need
// to include automation_proxy.h.
enum AutomationLaunchResult {
AUTOMATION_LAUNCH_RESULT_INVALID = -1,
AUTOMATION_SUCCESS,
AUTOMATION_TIMEOUT,
AUTOMATION_VERSION_MISMATCH,
AUTOMATION_CREATE_TAB_FAILED,
AUTOMATION_SERVER_CRASHED,
AUTOMATION_CHANNEL_ERROR,
};
enum AutomationMsg_NavigationResponseValues {
AUTOMATION_MSG_NAVIGATION_ERROR = 0,
AUTOMATION_MSG_NAVIGATION_SUCCESS,
AUTOMATION_MSG_NAVIGATION_AUTH_NEEDED,
AUTOMATION_MSG_NAVIGATION_BLOCKED_BY_MODAL_DIALOG,
};
// Used in the AutomationMsg_GetExtensionProperty to identify which extension
// property should be retrieved, instead of having separate messages for each
// property.
enum AutomationMsg_DEPRECATED_ExtensionProperty {
AUTOMATION_MSG_EXTENSION_ID = 0,
AUTOMATION_MSG_EXTENSION_NAME,
AUTOMATION_MSG_EXTENSION_VERSION,
AUTOMATION_MSG_EXTENSION_BROWSER_ACTION_INDEX,
};
// Specifies the font size on a page which is requested by an automation
// client.
enum AutomationPageFontSize {
SMALLEST_FONT = 8,
SMALL_FONT = 12,
MEDIUM_FONT = 16,
LARGE_FONT = 24,
LARGEST_FONT = 36
};
enum FindInPageDirection { BACK = 0, FWD = 1 };
enum FindInPageCase { IGNORE_CASE = 0, CASE_SENSITIVE = 1 };
#endif // CHROME_COMMON_AUTOMATION_CONSTANTS_H__