from time import sleep
from fortrace.core.qemu_monitor import QEMUMonitorSession
from fortrace.utility.applications.application import ParentNotifier
from fortrace.utility.applications.web_browsers.edge import Edge
from fortrace.utility.applications.web_browsers.firefox import Firefox
from fortrace.utility.applications.web_browsers.web_browser import GenericWebBrowser
[docs]
def get_web_browser(
name: str, qs: QEMUMonitorSession, parent_notifier: ParentNotifier
) -> GenericWebBrowser:
"""Factory to create a specific web browser application object.
Args:
name: name of the application (if not included ValueError is thrown)
qs: handle to QEMUMonitor
parent_notifier: attribute of desktop environment to handle changes in windows
Returns:
Application handle to opened web browser
"""
sleep(2) # give browsers some time to start
match name:
case "Firefox" | "Firefox ESR":
return Firefox(qs, parent_notifier)
case "Edge" | "Microsoft Edge":
return Edge(qs, parent_notifier)
case _:
raise ValueError(f"Browser {name} not known")