/* * Copyright 2012-2014 eBay Software Foundation and selendroid 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 io.selendroid.standalone.server.support; import io.selendroid.server.common.SelendroidResponse; import java.util.Properties; import org.json.JSONException; import org.json.JSONObject; /** * Implementations are able to listen to the {@link SelendroidDeviceServerStub} lifecycle. * * @author ddary * */ public abstract class TestSessionListener { public static final String BROWSER_NAME = "browserName"; public static final String PLATFORM = "platform"; public static final String TAKES_SCREENSHOT = "takesScreenshot"; public static final String VERSION = "version"; public static final String ROTATABLE = "rotatable"; public final String sessionId; public final JSONObject status; public final String uriMapping; public TestSessionListener(String sessionId, String uriMapping) throws JSONException { this.sessionId = sessionId; status = new JSONObject(); JSONObject build = new JSONObject(); build.put("browserName", "selendroid"); build.put("version", "dev"); JSONObject os = new JSONObject(); os.put("arch", "x86"); os.put("locale", "en_US"); os.put("version", 16); os.put("name", "Android"); status.put("build", build); status.put("os", os); this.uriMapping = uriMapping; } public SelendroidResponse deleteSession(Properties params) { return defaultResponseWithMessage(""); } public SelendroidResponse status(Properties params) throws JSONException { return defaultResponseWithMessage(status); } public SelendroidResponse createSession(Properties params) throws JSONException { JSONObject sessionCap = new JSONObject(); sessionCap.put(TAKES_SCREENSHOT, true); sessionCap.put(BROWSER_NAME, "selendroid"); sessionCap.put(ROTATABLE, false); sessionCap.put(PLATFORM, "android"); sessionCap.put(VERSION, "16"); return defaultResponseWithMessage(sessionCap); } public abstract SelendroidResponse executeSelendroidRequest(Properties params); protected SelendroidResponse defaultResponseWithMessage(Object message) { return new SelendroidResponse(sessionId, message); } protected SelendroidResponse defaultResponse() { return defaultResponseWithMessage(""); } }