Skip to content

Commit

Permalink
Java client side support for launch_app command of chromedriver:
Browse files Browse the repository at this point in the history
/session/$sessionId/chromium/launch_app
This is using the approach proposed by @richardrb
in pull request #168
  • Loading branch information
sevaseva committed Aug 6, 2015
1 parent 9114480 commit 1b6febd
Show file tree
Hide file tree
Showing 3 changed files with 78 additions and 2 deletions.
11 changes: 9 additions & 2 deletions java/client/src/org/openqa/selenium/chrome/ChromeDriver.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@

package org.openqa.selenium.chrome;

import com.google.common.collect.ImmutableMap;
import org.openqa.selenium.Capabilities;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebDriverException;
Expand All @@ -30,7 +31,6 @@
import org.openqa.selenium.remote.RemoteWebDriver;
import org.openqa.selenium.remote.html5.RemoteLocationContext;
import org.openqa.selenium.remote.html5.RemoteWebStorage;
import org.openqa.selenium.remote.service.DriverCommandExecutor;

/**
* A {@link WebDriver} implementation that controls a Chrome browser running on the local machine.
Expand Down Expand Up @@ -167,7 +167,7 @@ public ChromeDriver(ChromeDriverService service, ChromeOptions options) {
* @param capabilities The capabilities required from the ChromeDriver.
*/
public ChromeDriver(ChromeDriverService service, Capabilities capabilities) {
super(new DriverCommandExecutor(service), capabilities);
super(new ChromeDriverCommandExecutor(service), capabilities);
locationContext = new RemoteLocationContext(getExecuteMethod());
webStorage = new RemoteWebStorage(getExecuteMethod());
}
Expand Down Expand Up @@ -198,4 +198,11 @@ public Location location() {
public void setLocation(Location location) {
locationContext.setLocation(location);
}

/**
* Launches Chome app specified by id.
*/
public void launchApp(String id) {
execute(ChromeDriverCommand.LAUNCH_APP, ImmutableMap.of("id", id));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
// Licensed to the Software Freedom Conservancy (SFC) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The SFC licenses this file
// to you 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.chrome;

/**
* Constants for the ChromeDriver specific command IDs.
*/
final class ChromeDriverCommand {
private ChromeDriverCommand() {}

static final String LAUNCH_APP = "launchApp";
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
// Licensed to the Software Freedom Conservancy (SFC) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The SFC licenses this file
// to you 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.chrome;

import com.google.common.collect.ImmutableMap;

import org.openqa.selenium.remote.CommandInfo;
import org.openqa.selenium.remote.http.HttpMethod;

import org.openqa.selenium.remote.service.DriverCommandExecutor;
import org.openqa.selenium.remote.service.DriverService;

import java.util.Map;

/**
* {@link DriverCommandExecutor} that understands ChromeDriver specific commands.
*/
class ChromeDriverCommandExecutor extends DriverCommandExecutor {

private static final Map<String, CommandInfo> CHROME_COMMAND_NAME_TO_URL = ImmutableMap.of(
ChromeDriverCommand.LAUNCH_APP,
new CommandInfo("/session/:sessionId/chromium/launch_app", HttpMethod.POST));

public ChromeDriverCommandExecutor(DriverService service) {
super(service, CHROME_COMMAND_NAME_TO_URL);
}
}

0 comments on commit 1b6febd

Please sign in to comment.