blob: 653aca4afee97662653ecf5662991c0576c989e1 [file] [log] [blame]
// Copyright (c) 2011 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_TEST_WEBDRIVER_WEBDRIVER_ERROR_H_
#define CHROME_TEST_WEBDRIVER_WEBDRIVER_ERROR_H_
#include <string>
#include "base/basictypes.h"
namespace automation {
class Error;
}
namespace webdriver {
// Error codes defined by the WebDriver wire protcol.
// If you add a code here, don't forget to add it to |ErrorCodeToString|.
enum ErrorCode {
kSuccess = 0,
kNoSuchElement = 7,
kNoSuchFrame = 8,
kUnknownCommand = 9,
kStaleElementReference = 10,
kElementNotVisible = 11,
kInvalidElementState = 12,
kUnknownError = 13,
kElementNotSelectable = 15,
kXPathLookupError = 19,
kNoSuchWindow = 23,
kInvalidCookieDomain = 24,
kUnableToSetCookie = 25,
kUnexpectedAlertOpen = 26,
kNoAlertOpenError = 27,
// HTTP status codes.
kSeeOther = 303,
kBadRequest = 400,
kSessionNotFound = 404,
kMethodNotAllowed = 405,
kInternalServerError = 500,
};
// Represents a WebDriver error and the context within which the error occurred.
class Error {
public:
static Error* FromAutomationError(const automation::Error& error);
explicit Error(ErrorCode code);
Error(ErrorCode code, const std::string& details);
virtual ~Error();
void AddDetails(const std::string& details);
ErrorCode code() const;
const std::string& details() const;
private:
ErrorCode code_;
std::string details_;
DISALLOW_COPY_AND_ASSIGN(Error);
};
} // namespace webdriver
#endif // CHROME_TEST_WEBDRIVER_WEBDRIVER_ERROR_H_