| Index: chrome/test/webdriver/session.cc
|
| diff --git a/chrome/test/webdriver/session.cc b/chrome/test/webdriver/session.cc
|
| index 8cb01f9ad5f74373958073876399efd25c1bb831..1683ef7422a86beaa0bc07f301b9b10fdbd853aa 100644
|
| --- a/chrome/test/webdriver/session.cc
|
| +++ b/chrome/test/webdriver/session.cc
|
| @@ -918,11 +918,33 @@ Error* Session::IsElementEnabled(const FrameId& frame_id,
|
| return NULL;
|
| }
|
|
|
| -Error* Session::SelectOptionElement(const FrameId& frame_id,
|
| - const WebElementId& element) {
|
| +Error* Session::IsOptionElementSelected(const FrameId& frame_id,
|
| + const WebElementId& element,
|
| + bool* is_selected) {
|
| + ListValue args;
|
| + args.Append(element.ToValue());
|
| +
|
| + std::string script = base::StringPrintf(
|
| + "return (%s).apply(null, arguments);", atoms::IS_SELECTED);
|
| +
|
| + Value* result = NULL;
|
| + Error* error = ExecuteScript(frame_id, script, &args, &result);
|
| + if (error)
|
| + return error;
|
| + scoped_ptr<Value> scoped_result(result);
|
| + if (!result->GetAsBoolean(is_selected)) {
|
| + return new Error(kUnknownError, "isSelected atom returned non-boolean: " +
|
| + JsonStringify(result));
|
| + }
|
| + return NULL;
|
| +}
|
| +
|
| +Error* Session::SetOptionElementSelected(const FrameId& frame_id,
|
| + const WebElementId& element,
|
| + bool selected) {
|
| ListValue args;
|
| args.Append(element.ToValue());
|
| - args.Append(Value::CreateBooleanValue(true));
|
| + args.Append(Value::CreateBooleanValue(selected));
|
|
|
| std::string script = base::StringPrintf(
|
| "return (%s).apply(null, arguments);", atoms::SET_SELECTED);
|
| @@ -933,6 +955,16 @@ Error* Session::SelectOptionElement(const FrameId& frame_id,
|
| return error;
|
| }
|
|
|
| +Error* Session::ToggleOptionElement(const FrameId& frame_id,
|
| + const WebElementId& element) {
|
| + bool is_selected;
|
| + Error* error = IsOptionElementSelected(frame_id, element, &is_selected);
|
| + if (error)
|
| + return error;
|
| +
|
| + return SetOptionElementSelected(frame_id, element, !is_selected);
|
| +}
|
| +
|
| Error* Session::GetElementTagName(const FrameId& frame_id,
|
| const WebElementId& element,
|
| std::string* tag_name) {
|
|
|