## Meta -

OS:  

<!-- Windows 10? OSX? -->

Selenium Version:  

<!-- 2.52.0, IDE, etc -->

3.0.0-beta3
Browser:  

<!-- Internet Explorer?  Firefox? 
Firefox

FIREFOX 48+ IS ONLY COMPATIBLE WITH GECKODRIVER. Any issue logged here for 48+ will be closed as a duplicate of #2559

If the issue is with Google Chrome consider logging an issue with chromedriver instead:
https://sites.google.com/a/chromium.org/chromedriver/help

If the issue is with Microsoft Edge consider logging an issue with Microsoft instead:
https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/

If the issue is with Firefox GeckoDriver (aka Marionette) consider logging an issue with Mozilla:
https://bugzilla.mozilla.org/buglist.cgi?product=Testing&component=Marionette

If the issue is with Safari, only Safari 10+ is supported. Please log any Safari issue with Apple:
https://bugreport.apple.com/

If the issue is with PhantomJS consider logging an issue with Ghostdriver:
https://github.com/detro/ghostdriver

-->

Browser Version:  

<!-- e.g.: 49.0.2623.87 (64-bit) -->
## Expected Behavior -

When user specifies a custom browser binary location via `FirefoxBinary` object, the location should be honored by `FirefoxDriver` and it should be spawned via geckodriver by passing the location to geckodriver via `GeckoDriverService`
## Actual Behavior -

This is currently not the case.
## Steps to reproduce -

<!-- 
Please be sure to include an SSCCE (Short, Self Contained, Correct [compilable] example) http://sscce.org/ 
If you can't provide a link to the page, consider creating a reproducible page on https://jsfiddle.net/
-->

The following test code can be executed to recreate the problem

```
public static void main(String[] args) {
    RemoteWebDriver driver = null;
    try {
        DesiredCapabilities caps = DesiredCapabilities.firefox();
        caps.setCapability("marionette", true);
        //Simulating as if the binary is available in a diff location outside of the default location
        FirefoxBinary binary = new FirefoxBinary(new File("/Applications/Firefox.app/Contents/MacOS/firefox-bin-new"));
        driver = new FirefoxDriver(binary, new FirefoxProfile());
        driver.get("http://www.seleniumhq.org/download/maven.jsp");
        System.err.println("Page title : " + driver.getTitle());

    } finally {
        if (driver != null) {
            driver.quit();
        }
    }
}

```

@Override
    protected ImmutableList<String> createArgs() {
      ImmutableList.Builder<String> argsBuilder = ImmutableList.builder();
      argsBuilder.add(String.format("--port=%d", getPort()));
      if (getLogFile() != null) {
        argsBuilder.add(String.format("--log-file=\"%s\"", getLogFile().getAbsolutePath()));
      }
      try {
        Executable firefoxExe = new Executable(null);
        argsBuilder.add("-b");
        argsBuilder.add(firefoxExe.getPath());
      } catch (WebDriverException e) {
        
        
      }
      return argsBuilder.build();
    }
    @Override
    protected GeckoDriverService createDriverService(File exe, int port,
                                                                ImmutableList<String> args,
                                                                ImmutableMap<String, String> environment) {
      try {
        return new GeckoDriverService(exe, port, args, environment);
      } catch (IOException e) {
        throw new WebDriverException(e);
      }
    }
  }
}