diff options
| author | kkania@chromium.org <kkania@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-05-20 15:02:33 +0000 |
|---|---|---|
| committer | kkania@chromium.org <kkania@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-05-20 15:02:33 +0000 |
| commit | 2937a8c72bfd28188ccd0b3f3b54bc3303b5f537 (patch) | |
| tree | 384b91fec1c7736bee9ce5e61055e84febe2fcd5 /chrome/test/webdriver/commands/find_element_commands.cc | |
| parent | cdca989154d270a6553c1c8e2df0122b521b49eb (diff) | |
| download | chromium_src-2937a8c72bfd28188ccd0b3f3b54bc3303b5f537.zip chromium_src-2937a8c72bfd28188ccd0b3f3b54bc3303b5f537.tar.gz chromium_src-2937a8c72bfd28188ccd0b3f3b54bc3303b5f537.tar.bz2 | |
Refactor error handling in chromedriver. Introduce new error class containing a webdriver error code, possible error details, and a stack trace.
Also some minor cleanup of the command files.
BUG=none
TEST=none
Review URL: http://codereview.chromium.org/7042018
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@86081 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/test/webdriver/commands/find_element_commands.cc')
| -rw-r--r-- | chrome/test/webdriver/commands/find_element_commands.cc | 34 |
1 files changed, 19 insertions, 15 deletions
diff --git a/chrome/test/webdriver/commands/find_element_commands.cc b/chrome/test/webdriver/commands/find_element_commands.cc index a40be0b..b0589bd 100644 --- a/chrome/test/webdriver/commands/find_element_commands.cc +++ b/chrome/test/webdriver/commands/find_element_commands.cc @@ -6,9 +6,9 @@ #include "base/values.h" #include "chrome/test/webdriver/commands/response.h" -#include "chrome/test/webdriver/error_codes.h" #include "chrome/test/webdriver/session.h" #include "chrome/test/webdriver/web_element_id.h" +#include "chrome/test/webdriver/webdriver_error.h" namespace webdriver { @@ -29,12 +29,12 @@ void FindElementCommand::ExecutePost(Response* const response) { std::string locator, query; if (!GetStringParameter("using", &locator) || !GetStringParameter("value", &query)) { - SET_WEBDRIVER_ERROR(response, - "Request is missing required 'using' and/or 'value' data", kBadRequest); + response->SetError(new Error( + kBadRequest, + "Request is missing required 'using' and/or 'value' data")); return; } - // TODO(jmikhail): The findElement(s) atom should handle this conversion. if (locator == "class name") { locator = LocatorType::kClassName; } else if (locator == "css selector") { @@ -53,25 +53,29 @@ void FindElementCommand::ExecutePost(Response* const response) { // "/session/$session/element/$id/element(s)" WebElementId root_element(GetPathVariable(4)); - ErrorCode code = kUnknownError; if (find_one_element_) { WebElementId element; - code = session_->FindElement( + Error* error = session_->FindElement( session_->current_target(), root_element, locator, query, &element); - if (code == kSuccess) - response->SetValue(element.ToValue()); + if (error) { + response->SetError(error); + return; + } + response->SetValue(element.ToValue()); } else { std::vector<WebElementId> elements; - code = session_->FindElements( + Error* error = session_->FindElements( session_->current_target(), root_element, locator, query, &elements); - if (code == kSuccess) { - ListValue* element_list = new ListValue(); - for (size_t i = 0; i < elements.size(); ++i) - element_list->Append(elements[i].ToValue()); - response->SetValue(element_list); + if (error) { + response->SetError(error); + return; } + ListValue* element_list = new ListValue(); + for (size_t i = 0; i < elements.size(); ++i) + element_list->Append(elements[i].ToValue()); + response->SetValue(element_list); } - response->SetStatus(code); + response->SetStatus(kSuccess); } } // namespace webdriver |
