[chromedriver] Move the new chromedriver java tests to use the server.

Previously it was using the shared library. Also adds support for passing an android-package parameter to run_java_tests.py that gets passed on to the ChromeDriver server as a capability.

NOTRY=True
BUG=chromedriver:215
TEST=This is a test...
Review URL: https://codereview.chromium.org/12760007

git-svn-id: http://src.chromium.org/svn/trunk/deps/third_party/webdriver@189486 4ff67af0-8c30-449e-8e8b-ad334ec8d88c
diff --git a/patch.diff b/patch.diff
index 8eba177..216d795 100644
--- a/patch.diff
+++ b/patch.diff
@@ -1,144 +1,55 @@
-Index: java/client/test/org/openqa/selenium/testing/drivers/ReflectionBackedDriverSupplier.java
+Index: java/client/test/org/openqa/selenium/testing/drivers/TestChromeDriver.java
 ===================================================================
---- java/client/test/org/openqa/selenium/testing/drivers/ReflectionBackedDriverSupplier.java	(revision 18370)
-+++ java/client/test/org/openqa/selenium/testing/drivers/ReflectionBackedDriverSupplier.java	(working copy)
-@@ -87,7 +87,7 @@
-     if (DesiredCapabilities.android().getBrowserName().equals(name)) {
-       className = "org.openqa.selenium.android.AndroidDriver";
-     } else if (DesiredCapabilities.chrome().getBrowserName().equals(name)) {
--      className = "org.openqa.selenium.testing.drivers.TestChromeDriver";
-+      className = "org.openqa.selenium.testing.drivers.TestNewChromeDriver";
-     } else if (DesiredCapabilities.firefox().getBrowserName().equals(name)) {
-       className = getFirefoxClassName();
-     } else if (DesiredCapabilities.htmlUnit().getBrowserName().equals(name)) {
-Index: java/client/test/org/openqa/selenium/testing/drivers/build.desc
+--- java/client/test/org/openqa/selenium/testing/drivers/TestChromeDriver.java	(revision 17049)
++++ java/client/test/org/openqa/selenium/testing/drivers/TestChromeDriver.java	(working copy)
+@@ -74,6 +74,10 @@
+     if (chromePath != null) {
+       options.setBinary(new File(chromePath));
+     }
++    String androidPackage = System.getProperty("webdriver.chrome.android_package");
++    if (androidPackage != null) {
++      options.setAndroidPackage(androidPackage);
++    }
+ 
+     DesiredCapabilities capabilities = DesiredCapabilities.chrome();
+     capabilities.setCapability(ChromeOptions.CAPABILITY, options);
+Index: java/client/src/org/openqa/selenium/chrome/ChromeOptions.java
 ===================================================================
---- java/client/test/org/openqa/selenium/testing/drivers/build.desc	(revision 18370)
-+++ java/client/test/org/openqa/selenium/testing/drivers/build.desc	(working copy)
-@@ -9,6 +9,7 @@
-     "SauceDriver.java",
-     "SynthesizedFirefoxDriver.java",
-     "TestChromeDriver.java",
-+    "TestNewChromeDriver.java",
-     "TestIgnorance.java",
-     "TestInternetExplorerDriver.java",
-     "WebDriverBuilder.java",
-Index: java/client/test/org/openqa/selenium/testing/drivers/TestNewChromeDriver.java
-===================================================================
---- java/client/test/org/openqa/selenium/testing/drivers/TestNewChromeDriver.java	(revision 0)
-+++ java/client/test/org/openqa/selenium/testing/drivers/TestNewChromeDriver.java	(revision 0)
-@@ -0,0 +1,56 @@
-+/*
-+Copyright 2012 Selenium committers
-+Copyright 2012 Software Freedom Conservancy
-+
-+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.testing.drivers;
-+
-+import org.openqa.selenium.Capabilities;
-+import org.openqa.selenium.chrome.ChromeOptions;
-+import org.openqa.selenium.chrome.NewCommandExecutor;
-+import org.openqa.selenium.remote.DesiredCapabilities;
-+import org.openqa.selenium.remote.RemoteWebDriver;
-+
-+import java.io.File;
-+
-+public class TestNewChromeDriver extends RemoteWebDriver {
-+
-+  public TestNewChromeDriver() {
-+    this(chromeWithCustomCapabilities(null));
+--- java/client/src/org/openqa/selenium/chrome/ChromeOptions.java	(revision 17049)
++++ java/client/src/org/openqa/selenium/chrome/ChromeOptions.java	(working copy)
+@@ -65,6 +65,7 @@
+   public static final String CAPABILITY = "chromeOptions";
+ 
+   private File binary;
++  private String androidPackage;
+   private List<String> args = Lists.newArrayList();
+   private List<File> extensionFiles = Lists.newArrayList();
+   private Map<String, Object> experimentalOptions = Maps.newHashMap();
+@@ -81,6 +82,16 @@
+   }
+ 
+   /**
++   * Sets the Android package name for Chrome. The package should already exist
++   * on the Android device.
++   *
++   * @param package_name Name of Chrome's Android package.
++   */
++  public void setAndroidPackage(String package_name) {
++    androidPackage = checkNotNull(package_name);
 +  }
 +
-+  public TestNewChromeDriver(Capabilities capabilities) {
-+    super(new NewCommandExecutor(), chromeWithCustomCapabilities(capabilities));
-+  }
-+
-+  private static DesiredCapabilities chromeWithCustomCapabilities(
-+      Capabilities originalCapabilities) {
-+    ChromeOptions options = new ChromeOptions();
-+    options.addArguments("disable-extensions");
-+    String chromePath = System.getProperty("webdriver.chrome.binary");
-+    if (chromePath != null) {
-+      options.setBinary(new File(chromePath));
++  /**
+    * @param arguments The arguments to use when starting Chrome.
+    * @see #addArguments(java.util.List)
+    */
+@@ -147,6 +158,10 @@
+       options.put("binary", binary.getPath());
+     }
+ 
++    if (androidPackage != null) {
++      options.put("android_package", androidPackage);
 +    }
 +
-+    DesiredCapabilities capabilities = DesiredCapabilities.chrome();
-+    capabilities.setCapability(ChromeOptions.CAPABILITY, options);
-+
-+    if (originalCapabilities != null) {
-+      capabilities.merge(originalCapabilities);
-+    }
-+
-+    return capabilities;
-+  }
-+}
-Index: java/client/src/org/openqa/selenium/chrome/NewCommandExecutor.java
-===================================================================
---- java/client/src/org/openqa/selenium/chrome/NewCommandExecutor.java	(revision 0)
-+++ java/client/src/org/openqa/selenium/chrome/NewCommandExecutor.java	(revision 0)
-@@ -0,0 +1,53 @@
-+/*
-+Copyright 2012 Selenium committers
-+Copyright 2012 Software Freedom Conservancy
-+
-+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.chrome;
-+
-+import org.openqa.selenium.remote.BeanToJsonConverter;
-+import org.openqa.selenium.remote.Command;
-+import org.openqa.selenium.remote.CommandExecutor;
-+import org.openqa.selenium.remote.JsonToBeanConverter;
-+import org.openqa.selenium.remote.Response;
-+
-+import java.io.IOException;
-+import java.util.HashMap;
-+import java.util.Map;
-+
-+/**
-+ * Executes a ChromeDriver command using the new ChromeDriver.
-+ */
-+public class NewCommandExecutor implements CommandExecutor {
-+
-+  static {
-+    System.loadLibrary("chromedriver");
-+  }
-+
-+  @Override
-+  public Response execute(Command command) throws IOException {
-+    Map<String, Object> jsonCommand = new HashMap<String, Object>();
-+    jsonCommand.put("name", command.getName());
-+    jsonCommand.put("parameters", command.getParameters());
-+    String id = "";
-+    if (command.getSessionId() != null)
-+      id = command.getSessionId().toString();
-+    jsonCommand.put("sessionId", id);
-+    String responseText = execute(new BeanToJsonConverter().convert(jsonCommand));
-+    return new JsonToBeanConverter().convert(Response.class, responseText);
-+  }
-+
-+  private static native String execute(String command);
-+}
+     options.put("args", ImmutableList.copyOf(args));
+ 
+     List<String> extensions = Lists.newArrayListWithExpectedSize(
diff --git a/test-standalone.jar b/test-standalone.jar
index 7e71092..445fcc1 100644
--- a/test-standalone.jar
+++ b/test-standalone.jar
Binary files differ