summaryrefslogtreecommitdiff
path: root/xml/impl/src/com/intellij/ide/browsers
diff options
context:
space:
mode:
Diffstat (limited to 'xml/impl/src/com/intellij/ide/browsers')
-rw-r--r--xml/impl/src/com/intellij/ide/browsers/BrowserLauncherImpl.java11
-rw-r--r--xml/impl/src/com/intellij/ide/browsers/BrowserStarter.java6
-rw-r--r--xml/impl/src/com/intellij/ide/browsers/JavaScriptDebuggerStarter.java15
-rw-r--r--xml/impl/src/com/intellij/ide/browsers/OpenUrlHyperlinkInfo.java8
-rw-r--r--xml/impl/src/com/intellij/ide/browsers/StartBrowserPanel.java2
5 files changed, 27 insertions, 15 deletions
diff --git a/xml/impl/src/com/intellij/ide/browsers/BrowserLauncherImpl.java b/xml/impl/src/com/intellij/ide/browsers/BrowserLauncherImpl.java
index 4f7f4efa5085..65da7b30722c 100644
--- a/xml/impl/src/com/intellij/ide/browsers/BrowserLauncherImpl.java
+++ b/xml/impl/src/com/intellij/ide/browsers/BrowserLauncherImpl.java
@@ -24,6 +24,7 @@ import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.options.ShowSettingsUtil;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.Messages;
+import com.intellij.openapi.util.SystemInfo;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.ui.AppUIUtil;
import com.intellij.util.ArrayUtil;
@@ -38,7 +39,7 @@ final class BrowserLauncherImpl extends BrowserLauncherAppless {
@Override
protected void browseUsingNotSystemDefaultBrowserPolicy(@NotNull URI uri, @NotNull GeneralSettings settings, @Nullable Project project) {
WebBrowserManager browserManager = WebBrowserManager.getInstance();
- if (browserManager.getDefaultBrowserPolicy() == DefaultBrowserPolicy.FIRST) {
+ if (browserManager.getDefaultBrowserPolicy() == DefaultBrowserPolicy.FIRST || (SystemInfo.isMac && "open".equals(settings.getBrowserPath()))) {
WebBrowser browser = browserManager.getFirstActiveBrowser();
if (browser != null) {
browseUsingPath(uri.toString(), null, browser, project, ArrayUtil.EMPTY_STRING_ARRAY);
@@ -50,7 +51,11 @@ final class BrowserLauncherImpl extends BrowserLauncherAppless {
}
@Override
- protected void doShowError(@Nullable final String error, @Nullable final WebBrowser browser, @Nullable final Project project, final String title, @Nullable final Runnable launchTask) {
+ protected void showError(@Nullable final String error,
+ @Nullable final WebBrowser browser,
+ @Nullable final Project project,
+ final String title,
+ @Nullable final Runnable launchTask) {
AppUIUtil.invokeOnEdt(new Runnable() {
@Override
public void run() {
@@ -85,7 +90,7 @@ final class BrowserLauncherImpl extends BrowserLauncherAppless {
public void run() {
try {
if (process.waitFor() == 1) {
- doShowError(ExecUtil.readFirstLine(process.getErrorStream(), null), browser, project, null, launchTask);
+ showError(ExecUtil.readFirstLine(process.getErrorStream(), null), browser, project, null, launchTask);
}
}
catch (InterruptedException ignored) {
diff --git a/xml/impl/src/com/intellij/ide/browsers/BrowserStarter.java b/xml/impl/src/com/intellij/ide/browsers/BrowserStarter.java
index 8e3f014ea5af..ca6726926d6f 100644
--- a/xml/impl/src/com/intellij/ide/browsers/BrowserStarter.java
+++ b/xml/impl/src/com/intellij/ide/browsers/BrowserStarter.java
@@ -21,12 +21,12 @@ public class BrowserStarter {
private static final Logger LOG = Logger.getInstance(BrowserStarter.class);
private final StartBrowserSettings mySettings;
- private final RunConfiguration myNodeRunConfiguration;
+ private final RunConfiguration myRunConfiguration;
private final ProcessHandler myServerProcessHandler;
public BrowserStarter(@NotNull RunConfiguration runConfiguration, @NotNull StartBrowserSettings settings, @NotNull ProcessHandler serverProcessHandler) {
mySettings = settings;
- myNodeRunConfiguration = runConfiguration;
+ myRunConfiguration = runConfiguration;
myServerProcessHandler = serverProcessHandler;
}
@@ -102,7 +102,7 @@ public class BrowserStarter {
private void openPageNow() {
if (!isProcessTerminated()) {
- JavaScriptDebuggerStarter.Util.startDebugOrLaunchBrowser(myNodeRunConfiguration, mySettings);
+ JavaScriptDebuggerStarter.Util.startDebugOrLaunchBrowser(myRunConfiguration, mySettings);
}
}
diff --git a/xml/impl/src/com/intellij/ide/browsers/JavaScriptDebuggerStarter.java b/xml/impl/src/com/intellij/ide/browsers/JavaScriptDebuggerStarter.java
index cbc8cb111557..71dbb0c0dd71 100644
--- a/xml/impl/src/com/intellij/ide/browsers/JavaScriptDebuggerStarter.java
+++ b/xml/impl/src/com/intellij/ide/browsers/JavaScriptDebuggerStarter.java
@@ -12,8 +12,7 @@ import org.jetbrains.annotations.Nullable;
public interface JavaScriptDebuggerStarter<RC extends RunConfiguration, U> {
boolean isApplicable(@NotNull RunConfiguration runConfiguration);
- // todo we must pass browser family, otherwise result could be unexpected (by default Chrome will be used, but user can prefer Firefox)
- void start(@NotNull String url, @NotNull RC runConfiguration, @NotNull U userData);
+ void start(@NotNull String url, @NotNull RC runConfiguration, @NotNull U userData, @Nullable WebBrowser browser);
final class Util {
static final ExtensionPointName<JavaScriptDebuggerStarter> EP_NAME = ExtensionPointName.create("org.jetbrains.javaScriptDebuggerStarter");
@@ -31,11 +30,15 @@ public interface JavaScriptDebuggerStarter<RC extends RunConfiguration, U> {
}
public static <RC extends RunConfiguration> boolean start(@NotNull RC runConfiguration, @NotNull String url) {
+ return start(runConfiguration, url, null);
+ }
+
+ public static <RC extends RunConfiguration> boolean start(@NotNull RC runConfiguration, @NotNull String url, @Nullable WebBrowser browser) {
JavaScriptDebuggerStarter<RC, Object> starter = get(runConfiguration);
if (starter == null) {
return false;
}
- starter.start(url, runConfiguration, NULL_OBJECT);
+ starter.start(url, runConfiguration, NULL_OBJECT, browser);
return true;
}
@@ -49,9 +52,13 @@ public interface JavaScriptDebuggerStarter<RC extends RunConfiguration, U> {
@NotNull String url,
@Nullable WebBrowser browser,
boolean startDebugger) {
- if (!startDebugger || !start(runConfiguration, url)) {
+ if (!startDebugger || !start(runConfiguration, url, browser)) {
BrowserLauncher.getInstance().browse(url, browser, runConfiguration.getProject());
}
}
+
+ public static boolean hasStarters() {
+ return EP_NAME.getExtensions().length > 0;
+ }
}
}
diff --git a/xml/impl/src/com/intellij/ide/browsers/OpenUrlHyperlinkInfo.java b/xml/impl/src/com/intellij/ide/browsers/OpenUrlHyperlinkInfo.java
index e6bd32729b13..b634fd2fc8b1 100644
--- a/xml/impl/src/com/intellij/ide/browsers/OpenUrlHyperlinkInfo.java
+++ b/xml/impl/src/com/intellij/ide/browsers/OpenUrlHyperlinkInfo.java
@@ -40,15 +40,15 @@ public final class OpenUrlHyperlinkInfo implements HyperlinkWithPopupMenuInfo {
this(url, Conditions.<WebBrowser>alwaysTrue(), null);
}
- public OpenUrlHyperlinkInfo(@NotNull String url, @Nullable WebBrowser browser) {
- this(url, null, browser);
+ public OpenUrlHyperlinkInfo(@NotNull String url, @Nullable final WebBrowser browser) {
+ this(url, browser == null ? Conditions.<WebBrowser>alwaysTrue() : Conditions.is(browser));
}
public OpenUrlHyperlinkInfo(@NotNull String url, @NotNull Condition<WebBrowser> browserCondition) {
this(url, browserCondition, null);
}
- private OpenUrlHyperlinkInfo(@NotNull String url, @Nullable Condition<WebBrowser> browserCondition, @Nullable WebBrowser browser) {
+ private OpenUrlHyperlinkInfo(@NotNull String url, @NotNull Condition<WebBrowser> browserCondition, @Nullable WebBrowser browser) {
this.url = url;
this.browserCondition = browserCondition;
this.browser = browser;
@@ -58,7 +58,7 @@ public final class OpenUrlHyperlinkInfo implements HyperlinkWithPopupMenuInfo {
public ActionGroup getPopupMenuGroup(@NotNull MouseEvent event) {
DefaultActionGroup group = new DefaultActionGroup();
for (final WebBrowser browser : WebBrowserManager.getInstance().getActiveBrowsers()) {
- if (browserCondition == null ? (this.browser == null || browser.equals(this.browser)) : browserCondition.value(browser)) {
+ if (browserCondition.value(browser)) {
group.add(new AnAction("Open in " + browser.getName(), "Open URL in " + browser.getName(), browser.getIcon()) {
@Override
public void actionPerformed(AnActionEvent e) {
diff --git a/xml/impl/src/com/intellij/ide/browsers/StartBrowserPanel.java b/xml/impl/src/com/intellij/ide/browsers/StartBrowserPanel.java
index 603746bb3c60..a0faad5a0eb5 100644
--- a/xml/impl/src/com/intellij/ide/browsers/StartBrowserPanel.java
+++ b/xml/impl/src/com/intellij/ide/browsers/StartBrowserPanel.java
@@ -59,7 +59,7 @@ public class StartBrowserPanel {
private JPanel myRoot;
public StartBrowserPanel() {
- myStartJavaScriptDebuggerCheckBox.setVisible(JavaScriptDebuggerStarter.Util.EP_NAME.getExtensions().length > 0);
+ myStartJavaScriptDebuggerCheckBox.setVisible(JavaScriptDebuggerStarter.Util.hasStarters());
myRoot.addAncestorListener(new AncestorListenerAdapter() {
@Override
public void ancestorAdded(AncestorEvent event) {