mirror of
https://github.com/Grasscutters/mitmproxy.git
synced 2024-11-23 00:01:36 +00:00
Merge pull request #2661 from mhils/browser-win
Fix browser addon on Windows
This commit is contained in:
commit
25cf3db658
@ -1,15 +1,27 @@
|
||||
import shutil
|
||||
import subprocess
|
||||
import sys
|
||||
import tempfile
|
||||
import typing
|
||||
|
||||
from mitmproxy import command
|
||||
from mitmproxy import ctx
|
||||
|
||||
platformPaths = {
|
||||
"linux": "google-chrome",
|
||||
"win32": "chrome.exe",
|
||||
"darwin": "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome",
|
||||
}
|
||||
|
||||
def get_chrome_executable() -> typing.Optional[str]:
|
||||
for browser in (
|
||||
"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome",
|
||||
# https://stackoverflow.com/questions/40674914/google-chrome-path-in-windows-10
|
||||
r"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe",
|
||||
r"C:\Program Files (x86)\Google\Application\chrome.exe",
|
||||
# Linux binary names from Python's webbrowser module.
|
||||
"google-chrome",
|
||||
"chrome",
|
||||
"chromium",
|
||||
"chromium-browser",
|
||||
):
|
||||
if shutil.which(browser):
|
||||
return browser
|
||||
return None
|
||||
|
||||
|
||||
class Browser:
|
||||
@ -29,8 +41,8 @@ class Browser:
|
||||
else:
|
||||
self.done()
|
||||
|
||||
cmd = platformPaths.get(sys.platform)
|
||||
if not cmd: # pragma: no cover
|
||||
cmd = get_chrome_executable()
|
||||
if not cmd:
|
||||
ctx.log.alert("Your platform is not supported yet - please submit a patch.")
|
||||
return
|
||||
|
||||
@ -59,4 +71,4 @@ class Browser:
|
||||
self.browser.kill()
|
||||
self.tdir.cleanup()
|
||||
self.browser = None
|
||||
self.tdir = None
|
||||
self.tdir = None
|
||||
|
@ -5,7 +5,8 @@ from mitmproxy.test import taddons
|
||||
|
||||
|
||||
def test_browser():
|
||||
with mock.patch("subprocess.Popen") as po:
|
||||
with mock.patch("subprocess.Popen") as po, mock.patch("shutil.which") as which:
|
||||
which.return_value = "chrome"
|
||||
b = browser.Browser()
|
||||
with taddons.context() as tctx:
|
||||
b.start()
|
||||
@ -18,3 +19,13 @@ def test_browser():
|
||||
assert tctx.master.has_log("already running")
|
||||
b.done()
|
||||
assert not b.browser
|
||||
|
||||
|
||||
def test_no_browser():
|
||||
with mock.patch("shutil.which") as which:
|
||||
which.return_value = False
|
||||
|
||||
b = browser.Browser()
|
||||
with taddons.context() as tctx:
|
||||
b.start()
|
||||
assert tctx.master.has_log("platform is not supported")
|
||||
|
Loading…
Reference in New Issue
Block a user