From 2937a8c72bfd28188ccd0b3f3b54bc3303b5f537 Mon Sep 17 00:00:00 2001 From: "kkania@chromium.org" Date: Fri, 20 May 2011 15:02:33 +0000 Subject: 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 --- .../webdriver/commands/find_element_commands.cc | 34 ++++++++++++---------- 1 file changed, 19 insertions(+), 15 deletions(-) (limited to 'chrome/test/webdriver/commands/find_element_commands.cc') 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 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 -- cgit v1.1