/java/server/src/org/openqa/selenium/remote/server/handler/ExecuteScript.java
Java | 68 lines | 40 code | 13 blank | 15 comment | 2 complexity | d9cfd1e6a688e4492719d504cd9ce7a2 MD5 | raw file
Possible License(s): LGPL-2.1, MPL-2.0-no-copyleft-exception, AGPL-1.0, MIT, Apache-2.0, BSD-3-Clause, GPL-2.0
- /*
- Copyright 2007-2009 Selenium committers
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
- http://www.apache.org/licenses/LICENSE-2.0
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- */
- package org.openqa.selenium.remote.server.handler;
- import com.google.common.collect.Iterables;
- import com.google.common.collect.Lists;
- import org.openqa.selenium.JavascriptExecutor;
- import org.openqa.selenium.remote.server.JsonParametersAware;
- import org.openqa.selenium.remote.server.Session;
- import org.openqa.selenium.remote.server.handler.internal.ArgumentConverter;
- import org.openqa.selenium.remote.server.handler.internal.ResultConverter;
- import org.openqa.selenium.remote.server.rest.ResultType;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.Map;
- public class ExecuteScript extends ResponseAwareWebDriverHandler implements JsonParametersAware {
- private volatile String script;
- private volatile List<Object> args = new ArrayList<Object>();
- public ExecuteScript(Session session) {
- super(session);
- }
- public void setJsonParameters(Map<String, Object> allParameters) throws Exception {
- script = (String) allParameters.get("script");
- List<?> params = (List<?>) allParameters.get("args");
- args = Lists.newArrayList(Iterables.transform(params,
- new ArgumentConverter(getKnownElements())));
- }
- public ResultType call() throws Exception {
- Object value;
- if (args.size() > 0) {
- value = ((JavascriptExecutor) getDriver()).executeScript(script, args.toArray());
- } else {
- value = ((JavascriptExecutor) getDriver()).executeScript(script);
- }
- Object result = new ResultConverter(getKnownElements()).apply(value);
- response.setValue(result);
- return ResultType.SUCCESS;
- }
- @Override
- public String toString() {
- return String.format("[execute script: %s, %s]", script, args);
- }
- }