Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(182)

Side by Side Diff: chrome/test/webdriver/webdriver_error.cc

Issue 23526047: Delete old chromedriver code, and remove mongoose webserver. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
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 #include "chrome/test/webdriver/webdriver_error.h"
6
7 #include <sstream>
8
9 #include "chrome/common/automation_constants.h"
10
11 namespace webdriver {
12
13 namespace {
14
15 // Returns the string equivalent of the given |ErrorCode|.
16 const char* DefaultMessageForErrorCode(ErrorCode code) {
17 switch (code) {
18 case kSuccess:
19 return "Success";
20 case kNoSuchElement:
21 return "The element could not be found";
22 case kNoSuchFrame:
23 return "The frame could not be found";
24 case kUnknownCommand:
25 return "Unknown command";
26 case kStaleElementReference:
27 return "Element reference is invalid";
28 case kElementNotVisible:
29 return "Element is not visible";
30 case kInvalidElementState:
31 return "Element is in an invalid state";
32 case kUnknownError:
33 return "Unknown error";
34 case kElementNotSelectable:
35 return "Element is not selectable";
36 case kXPathLookupError:
37 return "XPath lookup error";
38 case kNoSuchWindow:
39 return "The window could not be found";
40 case kInvalidCookieDomain:
41 return "The cookie domain is invalid";
42 case kUnableToSetCookie:
43 return "Unable to set cookie";
44 case kUnexpectedAlertOpen:
45 return "An open modal dialog blocked the operation";
46 case kNoAlertOpenError:
47 return "No JavaScript modal dialog is open";
48 default:
49 return "<unknown>";
50 }
51 }
52
53 } // namespace
54
55 // static
56 Error* Error::FromAutomationError(const automation::Error& error) {
57 ErrorCode code = kUnknownError;
58 switch (error.code()) {
59 case automation::kNoJavaScriptModalDialogOpen:
60 code = kNoAlertOpenError;
61 break;
62 case automation::kBlockedByModalDialog:
63 code = kUnexpectedAlertOpen;
64 break;
65 case automation::kInvalidId:
66 code = kNoSuchWindow;
67 default:
68 break;
69 }
70
71 // In Chrome 17 and before, the automation error was just a string.
72 // Compare against some strings that correspond to webdriver errors.
73 // TODO(kkania): Remove these comparisons when Chrome 17 is unsupported.
74 if (code == kUnknownError) {
75 if (error.message() ==
76 "Command cannot be performed because a modal dialog is active" ||
77 error.message() ==
78 "Could not complete script execution because a modal "
79 "dialog is active") {
80 code = kUnexpectedAlertOpen;
81 } else if (error.message() == "No modal dialog is showing" ||
82 error.message() == "No JavaScript modal dialog is showing") {
83 code = kNoAlertOpenError;
84 }
85 }
86
87 // If the automation error code did not refer to a webdriver error code
88 // (besides unknown), include the error message from chrome. Otherwise,
89 // include the webdriver error code and the webdriver error message.
90 if (code == kUnknownError) {
91 return new Error(code, error.message());
92 } else {
93 return new Error(code);
94 }
95 }
96
97 Error::Error(ErrorCode code)
98 : code_(code),
99 details_(DefaultMessageForErrorCode(code)) {
100 }
101
102 Error::Error(ErrorCode code, const std::string& details)
103 : code_(code), details_(details) {
104 }
105
106 Error::~Error() {
107 }
108
109 void Error::AddDetails(const std::string& details) {
110 details_ = details + ";\n " + details_;
111 }
112
113 ErrorCode Error::code() const {
114 return code_;
115 }
116
117 const std::string& Error::details() const {
118 return details_;
119 }
120
121 } // namespace webdriver
OLDNEW
« no previous file with comments | « chrome/test/webdriver/webdriver_error.h ('k') | chrome/test/webdriver/webdriver_key_converter.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698