summaryrefslogtreecommitdiffstats
path: root/chrome/test/webdriver/commands/find_element_commands.cc
diff options
context:
space:
mode:
authorkkania@chromium.org <kkania@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-05-20 15:02:33 +0000
committerkkania@chromium.org <kkania@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-05-20 15:02:33 +0000
commit2937a8c72bfd28188ccd0b3f3b54bc3303b5f537 (patch)
tree384b91fec1c7736bee9ce5e61055e84febe2fcd5 /chrome/test/webdriver/commands/find_element_commands.cc
parentcdca989154d270a6553c1c8e2df0122b521b49eb (diff)
downloadchromium_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.cc34
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