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

Unified Diff: chrome/test/webdriver/commands/webelement_commands.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 side-by-side diff with in-line comments
Download patch
Index: chrome/test/webdriver/commands/webelement_commands.cc
diff --git a/chrome/test/webdriver/commands/webelement_commands.cc b/chrome/test/webdriver/commands/webelement_commands.cc
deleted file mode 100644
index 1bea1deb6bd577a5731bf1e27370e7a0e47d98cb..0000000000000000000000000000000000000000
--- a/chrome/test/webdriver/commands/webelement_commands.cc
+++ /dev/null
@@ -1,632 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/test/webdriver/commands/webelement_commands.h"
-
-#include "base/file_util.h"
-#include "base/format_macros.h"
-#include "base/memory/scoped_ptr.h"
-#include "base/strings/string_split.h"
-#include "base/strings/string_util.h"
-#include "base/strings/stringprintf.h"
-#include "base/strings/utf_string_conversions.h"
-#include "base/values.h"
-#include "chrome/test/webdriver/commands/response.h"
-#include "chrome/test/webdriver/webdriver_basic_types.h"
-#include "chrome/test/webdriver/webdriver_error.h"
-#include "chrome/test/webdriver/webdriver_session.h"
-#include "chrome/test/webdriver/webdriver_util.h"
-#include "third_party/webdriver/atoms.h"
-
-namespace webdriver {
-
-///////////////////// WebElementCommand ////////////////////
-
-WebElementCommand::WebElementCommand(
- const std::vector<std::string>& path_segments,
- const base::DictionaryValue* const parameters)
- : WebDriverCommand(path_segments, parameters),
- path_segments_(path_segments) {}
-
-WebElementCommand::~WebElementCommand() {}
-
-bool WebElementCommand::Init(Response* const response) {
- if (!WebDriverCommand::Init(response))
- return false;
-
- // There should be at least 5 segments to match
- // "/session/$session/element/$id"
- if (path_segments_.size() < 5) {
- response->SetError(new Error(kBadRequest, "Path segments is less than 5"));
- return false;
- }
-
- // We cannot verify the ID is valid until we execute the command and
- // inject the ID into the in-page cache.
- element = ElementId(path_segments_.at(4));
- return true;
-}
-
-///////////////////// ElementAttributeCommand ////////////////////
-
-ElementAttributeCommand::ElementAttributeCommand(
- const std::vector<std::string>& path_segments,
- const base::DictionaryValue* parameters)
- : WebElementCommand(path_segments, parameters) {}
-
-ElementAttributeCommand::~ElementAttributeCommand() {}
-
-bool ElementAttributeCommand::DoesGet() {
- return true;
-}
-
-void ElementAttributeCommand::ExecuteGet(Response* const response) {
- // There should be at least 7 segments to match
- // "/session/$session/element/$id/attribute/$name"
- if (path_segments_.size() < 7) {
- response->SetError(new Error(kBadRequest, "Path segments is less than 7"));
- return;
- }
-
- const std::string key = path_segments_.at(6);
- base::Value* value;
- Error* error = session_->GetAttribute(element, key, &value);
- if (error) {
- response->SetError(error);
- return;
- }
-
- response->SetValue(value);
-}
-
-///////////////////// ElementClearCommand ////////////////////
-
-ElementClearCommand::ElementClearCommand(
- const std::vector<std::string>& path_segments,
- const base::DictionaryValue* parameters)
- : WebElementCommand(path_segments, parameters) {}
-
-ElementClearCommand::~ElementClearCommand() {}
-
-bool ElementClearCommand::DoesPost() {
- return true;
-}
-
-void ElementClearCommand::ExecutePost(Response* const response) {
- base::ListValue args;
- args.Append(element.ToValue());
-
- std::string script = base::StringPrintf(
- "(%s).apply(null, arguments);", atoms::asString(atoms::CLEAR).c_str());
-
- base::Value* result = NULL;
- Error* error = session_->ExecuteScript(script, &args, &result);
- if (error) {
- response->SetError(error);
- return;
- }
- response->SetValue(result);
-}
-
-///////////////////// ElementCssCommand ////////////////////
-
-ElementCssCommand::ElementCssCommand(
- const std::vector<std::string>& path_segments,
- const base::DictionaryValue* parameters)
- : WebElementCommand(path_segments, parameters) {}
-
-ElementCssCommand::~ElementCssCommand() {}
-
-bool ElementCssCommand::DoesGet() {
- return true;
-}
-
-void ElementCssCommand::ExecuteGet(Response* const response) {
- // There should be at least 7 segments to match
- // "/session/$session/element/$id/css/$propertyName"
- if (path_segments_.size() < 7) {
- response->SetError(new Error(kBadRequest, "Path segments is less than 7"));
- return;
- }
-
- std::string script = base::StringPrintf(
- "return (%s).apply(null, arguments);",
- atoms::asString(atoms::GET_EFFECTIVE_STYLE).c_str());
-
- base::ListValue args;
- args.Append(element.ToValue());
- args.Append(new base::StringValue(path_segments_.at(6)));
-
- base::Value* result = NULL;
- Error* error = session_->ExecuteScript(script, &args, &result);
- if (error) {
- response->SetError(error);
- return;
- }
- response->SetValue(result);
-}
-
-///////////////////// ElementDisplayedCommand ////////////////////
-
-ElementDisplayedCommand::ElementDisplayedCommand(
- const std::vector<std::string>& path_segments,
- const base::DictionaryValue* parameters)
- : WebElementCommand(path_segments, parameters) {}
-
-ElementDisplayedCommand::~ElementDisplayedCommand() {}
-
-bool ElementDisplayedCommand::DoesGet() {
- return true;
-}
-
-void ElementDisplayedCommand::ExecuteGet(Response* const response) {
- bool is_displayed;
- Error* error = session_->IsElementDisplayed(
- session_->current_target(), element, false /* ignore_opacity */,
- &is_displayed);
- if (error) {
- response->SetError(error);
- return;
- }
- response->SetValue(new base::FundamentalValue(is_displayed));
-}
-
-///////////////////// ElementEnabledCommand ////////////////////
-
-ElementEnabledCommand::ElementEnabledCommand(
- const std::vector<std::string>& path_segments,
- const base::DictionaryValue* parameters)
- : WebElementCommand(path_segments, parameters) {}
-
-ElementEnabledCommand::~ElementEnabledCommand() {}
-
-bool ElementEnabledCommand::DoesGet() {
- return true;
-}
-
-void ElementEnabledCommand::ExecuteGet(Response* const response) {
- base::ListValue args;
- args.Append(element.ToValue());
-
- std::string script = base::StringPrintf(
- "return (%s).apply(null, arguments);",
- atoms::asString(atoms::IS_ENABLED).c_str());
-
- base::Value* result = NULL;
- Error* error = session_->ExecuteScript(script, &args, &result);
- if (error) {
- response->SetError(error);
- return;
- }
- response->SetValue(result);
-}
-
-///////////////////// ElementEqualsCommand ////////////////////
-
-ElementEqualsCommand::ElementEqualsCommand(
- const std::vector<std::string>& path_segments,
- const base::DictionaryValue* parameters)
- : WebElementCommand(path_segments, parameters) {}
-
-ElementEqualsCommand::~ElementEqualsCommand() {}
-
-bool ElementEqualsCommand::DoesGet() {
- return true;
-}
-
-void ElementEqualsCommand::ExecuteGet(Response* const response) {
- // There should be at least 7 segments to match
- // "/session/$session/element/$id/equals/$other"
- if (path_segments_.size() < 7) {
- response->SetError(new Error(kBadRequest, "Path segments is less than 7"));
- return;
- }
-
- std::string script = "return arguments[0] == arguments[1];";
-
- base::ListValue args;
- args.Append(element.ToValue());
-
- ElementId other_element(path_segments_.at(6));
- args.Append(other_element.ToValue());
-
- base::Value* result = NULL;
- Error* error = session_->ExecuteScript(script, &args, &result);
- if (error) {
- response->SetError(error);
- return;
- }
- response->SetValue(result);
-}
-
-///////////////////// ElementLocationCommand ////////////////////
-
-ElementLocationCommand::ElementLocationCommand(
- const std::vector<std::string>& path_segments,
- const base::DictionaryValue* parameters)
- : WebElementCommand(path_segments, parameters) {}
-
-ElementLocationCommand::~ElementLocationCommand() {}
-
-bool ElementLocationCommand::DoesGet() {
- return true;
-}
-
-void ElementLocationCommand::ExecuteGet(Response* const response) {
- std::string script = base::StringPrintf(
- "return (%s).apply(null, arguments);",
- atoms::asString(atoms::GET_LOCATION).c_str());
-
- base::ListValue args;
- args.Append(element.ToValue());
-
- base::Value* result = NULL;
- Error* error = session_->ExecuteScript(script, &args, &result);
- if (error) {
- response->SetError(error);
- return;
- }
- response->SetValue(result);
-}
-
-///////////////////// ElementLocationInViewCommand ////////////////////
-
-ElementLocationInViewCommand::ElementLocationInViewCommand(
- const std::vector<std::string>& path_segments,
- const base::DictionaryValue* parameters)
- : WebElementCommand(path_segments, parameters) {}
-
-ElementLocationInViewCommand::~ElementLocationInViewCommand() {}
-
-bool ElementLocationInViewCommand::DoesGet() {
- return true;
-}
-
-void ElementLocationInViewCommand::ExecuteGet(Response* const response) {
- Point location;
- Error* error = session_->GetElementLocationInView(element, &location);
- if (error) {
- response->SetError(error);
- return;
- }
- base::DictionaryValue* coord_dict = new base::DictionaryValue();
- coord_dict->SetInteger("x", location.x());
- coord_dict->SetInteger("y", location.y());
- response->SetValue(coord_dict);
-}
-
-///////////////////// ElementNameCommand ////////////////////
-
-ElementNameCommand::ElementNameCommand(
- const std::vector<std::string>& path_segments,
- const base::DictionaryValue* parameters)
- : WebElementCommand(path_segments, parameters) {}
-
-ElementNameCommand::~ElementNameCommand() {}
-
-bool ElementNameCommand::DoesGet() {
- return true;
-}
-
-void ElementNameCommand::ExecuteGet(Response* const response) {
- std::string tag_name;
- Error* error = session_->GetElementTagName(
- session_->current_target(), element, &tag_name);
- if (error) {
- response->SetError(error);
- return;
- }
- response->SetValue(new base::StringValue(tag_name));
-}
-
-///////////////////// ElementSelectedCommand ////////////////////
-
-ElementSelectedCommand::ElementSelectedCommand(
- const std::vector<std::string>& path_segments,
- const base::DictionaryValue* parameters)
- : WebElementCommand(path_segments, parameters) {}
-
-ElementSelectedCommand::~ElementSelectedCommand() {}
-
-bool ElementSelectedCommand::DoesGet() {
- return true;
-}
-
-bool ElementSelectedCommand::DoesPost() {
- return true;
-}
-
-void ElementSelectedCommand::ExecuteGet(Response* const response) {
- bool is_selected;
- Error* error = session_->IsOptionElementSelected(
- session_->current_target(), element, &is_selected);
- if (error) {
- response->SetError(error);
- return;
- }
- response->SetValue(new base::FundamentalValue(is_selected));
-}
-
-void ElementSelectedCommand::ExecutePost(Response* const response) {
- Error* error = session_->SetOptionElementSelected(
- session_->current_target(), element, true);
- if (error) {
- response->SetError(error);
- return;
- }
-}
-
-///////////////////// ElementSizeCommand ////////////////////
-
-ElementSizeCommand::ElementSizeCommand(
- const std::vector<std::string>& path_segments,
- const base::DictionaryValue* parameters)
- : WebElementCommand(path_segments, parameters) {}
-
-ElementSizeCommand::~ElementSizeCommand() {}
-
-bool ElementSizeCommand::DoesGet() {
- return true;
-}
-
-void ElementSizeCommand::ExecuteGet(Response* const response) {
- Size size;
- Error* error = session_->GetElementSize(
- session_->current_target(), element, &size);
- if (error) {
- response->SetError(error);
- return;
- }
- base::DictionaryValue* dict = new base::DictionaryValue();
- dict->SetInteger("width", size.width());
- dict->SetInteger("height", size.height());
- response->SetValue(dict);
-}
-
-///////////////////// ElementSubmitCommand ////////////////////
-
-ElementSubmitCommand::ElementSubmitCommand(
- const std::vector<std::string>& path_segments,
- const base::DictionaryValue* parameters)
- : WebElementCommand(path_segments, parameters) {}
-
-ElementSubmitCommand::~ElementSubmitCommand() {}
-
-bool ElementSubmitCommand::DoesPost() {
- return true;
-}
-
-void ElementSubmitCommand::ExecutePost(Response* const response) {
- std::string script = base::StringPrintf(
- "(%s).apply(null, arguments);", atoms::asString(atoms::SUBMIT).c_str());
-
- base::ListValue args;
- args.Append(element.ToValue());
-
- base::Value* result = NULL;
- Error* error = session_->ExecuteScript(script, &args, &result);
- if (error) {
- response->SetError(error);
- return;
- }
- response->SetValue(result);
-}
-
-///////////////////// ElementToggleCommand ////////////////////
-
-ElementToggleCommand::ElementToggleCommand(
- const std::vector<std::string>& path_segments,
- const base::DictionaryValue* parameters)
- : WebElementCommand(path_segments, parameters) {}
-
-ElementToggleCommand::~ElementToggleCommand() {}
-
-bool ElementToggleCommand::DoesPost() {
- return true;
-}
-
-void ElementToggleCommand::ExecutePost(Response* const response) {
- std::string script = base::StringPrintf(
- "return (%s).apply(null, arguments);",
- atoms::asString(atoms::CLICK).c_str());
-
- base::ListValue args;
- args.Append(element.ToValue());
-
- base::Value* result = NULL;
- Error* error = session_->ExecuteScript(script, &args, &result);
- if (error) {
- response->SetError(error);
- return;
- }
- response->SetValue(result);
-}
-
-///////////////////// ElementValueCommand ////////////////////
-
-ElementValueCommand::ElementValueCommand(
- const std::vector<std::string>& path_segments,
- const base::DictionaryValue* parameters)
- : WebElementCommand(path_segments, parameters) {}
-
-ElementValueCommand::~ElementValueCommand() {}
-
-bool ElementValueCommand::DoesGet() {
- return true;
-}
-
-bool ElementValueCommand::DoesPost() {
- return true;
-}
-
-void ElementValueCommand::ExecuteGet(Response* const response) {
- base::Value* unscoped_result = NULL;
- base::ListValue args;
- std::string script = "return arguments[0]['value']";
- args.Append(element.ToValue());
-
- Error* error = session_->ExecuteScript(script, &args, &unscoped_result);
- scoped_ptr<base::Value> result(unscoped_result);
- if (error) {
- response->SetError(error);
- return;
- }
- if (!result->IsType(base::Value::TYPE_STRING) &&
- !result->IsType(base::Value::TYPE_NULL)) {
- response->SetError(new Error(
- kUnknownError, "Result is not string or null type"));
- return;
- }
- response->SetValue(result.release());
-}
-
-void ElementValueCommand::ExecutePost(Response* const response) {
- bool is_input = false;
- Error* error = HasAttributeWithLowerCaseValueASCII("tagName", "input",
- &is_input);
- if (error) {
- response->SetError(error);
- return;
- }
-
- bool is_file = false;
- error = HasAttributeWithLowerCaseValueASCII("type", "file", &is_file);
- if (error) {
- response->SetError(error);
- return;
- }
-
- // If the element is a file upload control, set the file paths to the element.
- // Otherwise send the value to the element as key input.
- if (is_input && is_file) {
- error = DragAndDropFilePaths();
- } else {
- error = SendKeys();
- }
-
- if (error) {
- response->SetError(error);
- return;
- }
-}
-
-Error* ElementValueCommand::HasAttributeWithLowerCaseValueASCII(
- const std::string& key, const std::string& value, bool* result) const {
- base::Value* unscoped_value = NULL;
- Error* error = session_->GetAttribute(element, key, &unscoped_value);
- scoped_ptr<base::Value> scoped_value(unscoped_value);
- if (error)
- return error;
-
- std::string actual_value;
- if (scoped_value->GetAsString(&actual_value)) {
- *result = LowerCaseEqualsASCII(actual_value, value.c_str());
- } else {
- // Note we do not handle converting a number to a string.
- *result = false;
- }
- return NULL;
-}
-
-Error* ElementValueCommand::DragAndDropFilePaths() const {
- const base::ListValue* path_list;
- if (!GetListParameter("value", &path_list))
- return new Error(kBadRequest, "Missing or invalid 'value' parameter");
-
- // Compress array into single string.
- base::FilePath::StringType paths_string;
- for (size_t i = 0; i < path_list->GetSize(); ++i) {
- base::FilePath::StringType path_part;
- if (!path_list->GetString(i, &path_part)) {
- return new Error(
- kBadRequest,
- "'value' is invalid: " + JsonStringify(path_list));
- }
- paths_string.append(path_part);
- }
-
- // Separate the string into separate paths, delimited by \n.
- std::vector<base::FilePath::StringType> paths;
- base::SplitString(paths_string, '\n', &paths);
-
- // Return an error if trying to drop multiple paths on a single file input.
- bool multiple = false;
- Error* error = HasAttributeWithLowerCaseValueASCII("multiple", "true",
- &multiple);
- if (error)
- return error;
- if (!multiple && paths.size() > 1)
- return new Error(kBadRequest, "The element can not hold multiple files");
-
- // Check the files exist.
- for (size_t i = 0; i < paths.size(); ++i) {
- if (!base::PathExists(base::FilePath(paths[i]))) {
- return new Error(
- kBadRequest,
- base::StringPrintf("'%s' does not exist on the file system",
- UTF16ToUTF8(
- base::FilePath(paths[i]).LossyDisplayName()).c_str()));
- }
- }
-
- Point location;
- error = session_->GetClickableLocation(element, &location);
- if (error)
- return error;
-
- return session_->DragAndDropFilePaths(location, paths);
-}
-
-Error* ElementValueCommand::SendKeys() const {
- const base::ListValue* key_list;
- if (!GetListParameter("value", &key_list)) {
- return new Error(kBadRequest, "Missing or invalid 'value' parameter");
- }
-
- // Flatten the given array of strings into one.
- string16 keys;
- Error* error = FlattenStringArray(key_list, &keys);
- if (error)
- return error;
-
- return session_->SendKeys(element, keys);
-}
-
-///////////////////// ElementTextCommand ////////////////////
-
-ElementTextCommand::ElementTextCommand(
- const std::vector<std::string>& path_segments,
- const base::DictionaryValue* parameters)
- : WebElementCommand(path_segments, parameters) {}
-
-ElementTextCommand::~ElementTextCommand() {}
-
-bool ElementTextCommand::DoesGet() {
- return true;
-}
-
-void ElementTextCommand::ExecuteGet(Response* const response) {
- base::Value* unscoped_result = NULL;
- base::ListValue args;
- args.Append(element.ToValue());
-
- std::string script = base::StringPrintf(
- "return (%s).apply(null, arguments);",
- atoms::asString(atoms::GET_TEXT).c_str());
-
- Error* error = session_->ExecuteScript(script, &args,
- &unscoped_result);
- scoped_ptr<base::Value> result(unscoped_result);
- if (error) {
- response->SetError(error);
- return;
- }
- if (!result->IsType(base::Value::TYPE_STRING)) {
- response->SetError(new Error(kUnknownError, "Result is not string type"));
- return;
- }
- response->SetValue(result.release());
-}
-
-} // namespace webdriver
« no previous file with comments | « chrome/test/webdriver/commands/webelement_commands.h ('k') | chrome/test/webdriver/commands/window_commands.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698