support Microsoft Edge browser (WEB-19564)

This commit is contained in:
Konstantin Ulitin
2018-07-12 13:20:36 +01:00
parent 9905267c16
commit 2b991971ba
4 changed files with 45 additions and 9 deletions
@@ -220,15 +220,17 @@ open class BrowserLauncherAppless : BrowserLauncher() {
}
private fun doLaunch(url: String?, command: List<String>, browser: WebBrowser?, project: Project?, additionalParameters: Array<String> = ArrayUtil.EMPTY_STRING_ARRAY, launchTask: (() -> Unit)? = null): Boolean {
val commandLine = GeneralCommandLine(command)
if (url != null) {
if (url.startsWith("jar:")) {
return false
}
commandLine.addParameter(url)
if (url != null && url.startsWith("jar:")) {
return false
}
val commandWithUrl = command.toMutableList()
if (url != null) {
if (browser != null) browser.addOpenUrlParameter(commandWithUrl, url)
else commandWithUrl.add(url)
}
val commandLine = GeneralCommandLine(commandWithUrl)
val browserSpecificSettings = browser?.specificSettings
if (browserSpecificSettings != null) {
commandLine.environment.putAll(browserSpecificSettings.environmentVariables)
@@ -4,6 +4,7 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import javax.swing.*;
import java.util.List;
import java.util.UUID;
public abstract class WebBrowser {
@@ -27,4 +28,8 @@ public abstract class WebBrowser {
@Nullable
public abstract BrowserSpecificSettings getSpecificSettings();
public void addOpenUrlParameter(@NotNull List<String> command, @NotNull String url) {
command.add(url);
}
}
@@ -9,6 +9,7 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import javax.swing.*;
import java.util.List;
import java.util.UUID;
final class ConfigurableWebBrowser extends WebBrowser {
@@ -72,6 +73,12 @@ final class ConfigurableWebBrowser extends WebBrowser {
return AllIcons.Xml.Browsers.Nwjs16;
}
}
else if (family == BrowserFamily.EXPLORER) {
if (WebBrowserManager.isEdge(this)) {
return AllIcons.Xml.Browsers.Edge16;
}
}
return family.getIcon();
}
@@ -154,6 +161,16 @@ final class ConfigurableWebBrowser extends WebBrowser {
return IdeBundle.message("error.0.browser.path.not.specified", getName());
}
@Override
public void addOpenUrlParameter(@NotNull List<String> command, @NotNull String url) {
if (WebBrowserManager.isEdge(this) && !command.isEmpty()) {
command.set(command.size() - 1, command.get(command.size() - 1) + ":" + url);
}
else {
super.addOpenUrlParameter(command, url);
}
}
@Override
public String toString() {
return getName() + " (" + getPath() + ")";
@@ -30,6 +30,7 @@ public class WebBrowserManager extends SimpleModificationTracker implements Pers
private static final UUID PREDEFINED_OPERA_ID = UUID.fromString("53E2F627-B1A7-4DFA-BFA7-5B83CC034776");
private static final UUID PREDEFINED_YANDEX_ID = UUID.fromString("B1B2EC2C-20BD-4EE2-89C4-616DB004BCD4");
private static final UUID PREDEFINED_EXPLORER_ID = UUID.fromString("16BF23D4-93E0-4FFC-BFD6-CB13575177B0");
private static final UUID PREDEFINED_EDGE_ID = UUID.fromString("B2A9DCA7-9D0B-4E1E-98A8-AFB19C1328D2");
private static final UUID[] PREDEFINED_BROWSER_IDS = new UUID[]{
PREDEFINED_CHROME_ID,
@@ -37,9 +38,12 @@ public class WebBrowserManager extends SimpleModificationTracker implements Pers
PREDEFINED_SAFARI_ID,
PREDEFINED_OPERA_ID,
PREDEFINED_YANDEX_ID,
PREDEFINED_EXPLORER_ID
PREDEFINED_EXPLORER_ID,
PREDEFINED_EDGE_ID
};
private static final String EDGE_COMMAND = "microsoft-edge";
private static List<ConfigurableWebBrowser> getPredefinedBrowsers() {
return Arrays.asList(
new ConfigurableWebBrowser(PREDEFINED_CHROME_ID, BrowserFamily.CHROME),
@@ -47,7 +51,8 @@ public class WebBrowserManager extends SimpleModificationTracker implements Pers
new ConfigurableWebBrowser(PREDEFINED_SAFARI_ID, BrowserFamily.SAFARI),
new ConfigurableWebBrowser(PREDEFINED_OPERA_ID, BrowserFamily.OPERA),
new ConfigurableWebBrowser(PREDEFINED_YANDEX_ID, BrowserFamily.CHROME, "Yandex", SystemInfo.isWindows ? "browser" : (SystemInfo.isMac ? "Yandex" : "yandex"), false, BrowserFamily.CHROME.createBrowserSpecificSettings()),
new ConfigurableWebBrowser(PREDEFINED_EXPLORER_ID, BrowserFamily.EXPLORER)
new ConfigurableWebBrowser(PREDEFINED_EXPLORER_ID, BrowserFamily.EXPLORER),
new ConfigurableWebBrowser(PREDEFINED_EDGE_ID, BrowserFamily.EXPLORER, "Edge", EDGE_COMMAND, true, null)
);
}
@@ -71,6 +76,13 @@ public class WebBrowserManager extends SimpleModificationTracker implements Pers
return browser.getFamily().equals(BrowserFamily.CHROME) && checkNameAndPath("Dartium", browser);
}
public static boolean isEdge(@NotNull WebBrowser browser) {
return browser.getFamily() == BrowserFamily.EXPLORER &&
(browser.getId().equals(PREDEFINED_EDGE_ID) ||
checkNameAndPath(EDGE_COMMAND, browser) ||
checkNameAndPath("MicrosoftEdge", browser));
}
static boolean checkNameAndPath(@NotNull String what, @NotNull WebBrowser browser) {
if (StringUtil.containsIgnoreCase(browser.getName(), what)) {
return true;