mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
support Microsoft Edge browser (WEB-19564)
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user