summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteve Dower <steve.dower@python.org>2023-04-04 16:00:03 (GMT)
committerGitHub <noreply@github.com>2023-04-04 16:00:03 (GMT)
commitfd1947ecfba589feebd48c1ebb60d1c01ee0a89d (patch)
treecbb4f8399f992f1f5b9ca18e09cfaa5234c95985
parent89e6a3446184925ee7f17cd0d948c7784a88b8d7 (diff)
downloadcpython-fd1947ecfba589feebd48c1ebb60d1c01ee0a89d.zip
cpython-fd1947ecfba589feebd48c1ebb60d1c01ee0a89d.tar.gz
cpython-fd1947ecfba589feebd48c1ebb60d1c01ee0a89d.tar.bz2
bpo-44844: Enable detection of Microsoft Edge browser in webbrowser module (GH-29908)
-rw-r--r--Lib/test/test_webbrowser.py25
-rwxr-xr-xLib/webbrowser.py16
-rw-r--r--Misc/NEWS.d/next/Library/2021-12-03-23-00-56.bpo-44844.tvg2VY.rst1
3 files changed, 42 insertions, 0 deletions
diff --git a/Lib/test/test_webbrowser.py b/Lib/test/test_webbrowser.py
index 147a113..2d695bc 100644
--- a/Lib/test/test_webbrowser.py
+++ b/Lib/test/test_webbrowser.py
@@ -95,6 +95,31 @@ class ChromeCommandTest(CommandTestMixin, unittest.TestCase):
arguments=[URL])
+class EdgeCommandTest(CommandTestMixin, unittest.TestCase):
+
+ browser_class = webbrowser.Edge
+
+ def test_open(self):
+ self._test('open',
+ options=[],
+ arguments=[URL])
+
+ def test_open_with_autoraise_false(self):
+ self._test('open', kw=dict(autoraise=False),
+ options=[],
+ arguments=[URL])
+
+ def test_open_new(self):
+ self._test('open_new',
+ options=['--new-window'],
+ arguments=[URL])
+
+ def test_open_new_tab(self):
+ self._test('open_new_tab',
+ options=[],
+ arguments=[URL])
+
+
class MozillaCommandTest(CommandTestMixin, unittest.TestCase):
browser_class = webbrowser.Mozilla
diff --git a/Lib/webbrowser.py b/Lib/webbrowser.py
index d98c599..b86d131 100755
--- a/Lib/webbrowser.py
+++ b/Lib/webbrowser.py
@@ -400,6 +400,16 @@ class Konqueror(BaseBrowser):
return ok
+class Edge(UnixBrowser):
+ "Launcher class for Microsoft Edge browser."
+
+ remote_args = ['%action', '%s']
+ remote_action = ""
+ remote_action_newwin = "--new-window"
+ remote_action_newtab = ""
+ background = True
+
+
#
# Platform support for Unix
#
@@ -456,6 +466,10 @@ def register_X_browsers():
register("opera", None, Opera("opera"))
+ if shutil.which("microsoft-edge"):
+ register("microsoft-edge", None, Edge("microsoft-edge"))
+
+
def register_standard_browsers():
global _tryorder
_tryorder = []
@@ -487,6 +501,8 @@ def register_standard_browsers():
"opera", edge64, edge32):
if shutil.which(browser):
register(browser, None, BackgroundBrowser(browser))
+ if shutil.which("MicrosoftEdge.exe"):
+ register("microsoft-edge", None, Edge("MicrosoftEdge.exe"))
else:
# Prefer X browsers if present
if os.environ.get("DISPLAY") or os.environ.get("WAYLAND_DISPLAY"):
diff --git a/Misc/NEWS.d/next/Library/2021-12-03-23-00-56.bpo-44844.tvg2VY.rst b/Misc/NEWS.d/next/Library/2021-12-03-23-00-56.bpo-44844.tvg2VY.rst
new file mode 100644
index 0000000..f0c9123
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2021-12-03-23-00-56.bpo-44844.tvg2VY.rst
@@ -0,0 +1 @@
+Enables :mod:`webbrowser` to detect and launch Microsoft Edge browser.