diff --git a/xml/impl/src/com/intellij/ide/browsers/BrowsersConfiguration.java b/xml/impl/src/com/intellij/ide/browsers/BrowsersConfiguration.java index 039635ef990c..fdb43c9d78a3 100644 --- a/xml/impl/src/com/intellij/ide/browsers/BrowsersConfiguration.java +++ b/xml/impl/src/com/intellij/ide/browsers/BrowsersConfiguration.java @@ -25,11 +25,14 @@ import com.intellij.openapi.components.State; import com.intellij.openapi.components.Storage; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.ui.Messages; +import com.intellij.openapi.util.Condition; +import com.intellij.openapi.util.Conditions; import com.intellij.openapi.util.IconLoader; import com.intellij.openapi.util.SystemInfo; import com.intellij.openapi.util.io.FileUtil; import com.intellij.util.ArrayUtil; import com.intellij.util.SystemProperties; +import com.intellij.util.containers.ContainerUtil; import com.intellij.util.containers.HashMap; import com.intellij.util.xmlb.SkipDefaultValuesSerializationFilters; import com.intellij.util.xmlb.XmlSerializer; @@ -201,7 +204,7 @@ public class BrowsersConfiguration implements PersistentStateComponent BrowserUtil.launchBrowser(url); } else { - getInstance().doLaunchBrowser(family, url, ArrayUtil.EMPTY_STRING_ARRAY, false); + getInstance().doLaunchBrowser(family, url, ArrayUtil.EMPTY_STRING_ARRAY, Conditions.alwaysTrue(), false); } } @@ -221,12 +224,22 @@ public class BrowsersConfiguration implements PersistentStateComponent @NotNull final String url, final boolean forceOpenNewInstanceOnMac, String... parameters) { - getInstance().doLaunchBrowser(family, url, parameters, forceOpenNewInstanceOnMac); + launchBrowser(family, url, forceOpenNewInstanceOnMac, Conditions.alwaysTrue(), parameters); + } + + public static void launchBrowser(final @NotNull BrowserFamily family, + @NotNull final String url, + final boolean forceOpenNewInstanceOnMac, + final Condition browserSpecificParametersFilter, + String... parameters) { + getInstance().doLaunchBrowser(family, url, parameters, browserSpecificParametersFilter, forceOpenNewInstanceOnMac); } private void doLaunchBrowser(final BrowserFamily family, @NotNull String url, - @NotNull String[] additionalParameters, final boolean forceOpenNewInstanceOnMac) { + @NotNull String[] additionalParameters, + @NotNull Condition browserSpecificParametersFilter, + final boolean forceOpenNewInstanceOnMac) { final WebBrowserSettings settings = getBrowserSettings(family); final String path = settings.getPath(); if (path != null && path.length() > 0) { @@ -234,7 +247,8 @@ public class BrowsersConfiguration implements PersistentStateComponent try { final BrowserSpecificSettings specificSettings = settings.getBrowserSpecificSettings(); final String[] browserParameters = specificSettings != null ? specificSettings.getAdditionalParameters() : ArrayUtil.EMPTY_STRING_ARRAY; - String[] parameters = ArrayUtil.mergeArrays(browserParameters, additionalParameters); + String[] parameters = ArrayUtil.mergeArrays(ContainerUtil.findAllAsArray(browserParameters, browserSpecificParametersFilter), + additionalParameters); launchBrowser(path, url, forceOpenNewInstanceOnMac, parameters); } catch (IOException e) { diff --git a/xml/impl/src/com/intellij/ide/browsers/chrome/ChromeSettings.java b/xml/impl/src/com/intellij/ide/browsers/chrome/ChromeSettings.java index 40d43763179e..9e470ac2022c 100644 --- a/xml/impl/src/com/intellij/ide/browsers/chrome/ChromeSettings.java +++ b/xml/impl/src/com/intellij/ide/browsers/chrome/ChromeSettings.java @@ -27,7 +27,7 @@ import org.jetbrains.annotations.Nullable; * @author nik */ public class ChromeSettings extends BrowserSpecificSettings { - @NonNls public static final String REMOTE_SHELL_PORT_ARG = "--remote-shell-port="; + @NonNls public static final String REMOTE_DEBUGGING_PORT_ARG = "--remote-debugging-port="; @NonNls public static final String USER_DATA_DIR_ARG = "--user-data-dir="; public static final int DEFAULT_REMOTE_SHELL_PORT = 7930; private String myUserDataDirectoryPath; @@ -88,7 +88,7 @@ public class ChromeSettings extends BrowserSpecificSettings { String[] remoteShellArg; if (myEnableRemoteDebug) { - remoteShellArg = new String[]{REMOTE_SHELL_PORT_ARG + myRemoteShellPort}; + remoteShellArg = new String[]{REMOTE_DEBUGGING_PORT_ARG + myRemoteShellPort}; } else { remoteShellArg = ArrayUtil.EMPTY_STRING_ARRAY;