1// Copyright (c) 2011 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_TEST_WEBDRIVER_WEBDRIVER_ERROR_H_ 6#define CHROME_TEST_WEBDRIVER_WEBDRIVER_ERROR_H_ 7 8#include <string> 9 10#include "base/basictypes.h" 11 12namespace automation { 13class Error; 14} 15 16namespace webdriver { 17 18// Error codes defined by the WebDriver wire protcol. 19// If you add a code here, don't forget to add it to |ErrorCodeToString|. 20enum ErrorCode { 21 kSuccess = 0, 22 kNoSuchElement = 7, 23 kNoSuchFrame = 8, 24 kUnknownCommand = 9, 25 kStaleElementReference = 10, 26 kElementNotVisible = 11, 27 kInvalidElementState = 12, 28 kUnknownError = 13, 29 kElementNotSelectable = 15, 30 kXPathLookupError = 19, 31 kNoSuchWindow = 23, 32 kInvalidCookieDomain = 24, 33 kUnableToSetCookie = 25, 34 kUnexpectedAlertOpen = 26, 35 kNoAlertOpenError = 27, 36 37 // HTTP status codes. 38 kSeeOther = 303, 39 kBadRequest = 400, 40 kSessionNotFound = 404, 41 kMethodNotAllowed = 405, 42 kInternalServerError = 500, 43}; 44 45// Represents a WebDriver error and the context within which the error occurred. 46class Error { 47 public: 48 static Error* FromAutomationError(const automation::Error& error); 49 50 explicit Error(ErrorCode code); 51 52 Error(ErrorCode code, const std::string& details); 53 54 virtual ~Error(); 55 56 void AddDetails(const std::string& details); 57 58 ErrorCode code() const; 59 const std::string& details() const; 60 61 private: 62 ErrorCode code_; 63 std::string details_; 64 65 DISALLOW_COPY_AND_ASSIGN(Error); 66}; 67 68} // namespace webdriver 69 70#endif // CHROME_TEST_WEBDRIVER_WEBDRIVER_ERROR_H_ 71