diff options
Diffstat (limited to 'WebKitTools/Scripts/webkitpy/layout_tests/port/factory.py')
-rw-r--r-- | WebKitTools/Scripts/webkitpy/layout_tests/port/factory.py | 43 |
1 files changed, 28 insertions, 15 deletions
diff --git a/WebKitTools/Scripts/webkitpy/layout_tests/port/factory.py b/WebKitTools/Scripts/webkitpy/layout_tests/port/factory.py index 5704f65..6935744 100644 --- a/WebKitTools/Scripts/webkitpy/layout_tests/port/factory.py +++ b/WebKitTools/Scripts/webkitpy/layout_tests/port/factory.py @@ -37,11 +37,21 @@ ALL_PORT_NAMES = ['test', 'dryrun', 'mac', 'win', 'gtk', 'qt', 'chromium-mac', 'google-chrome-mac', 'google-chrome-linux32', 'google-chrome-linux64'] -def get(port_name=None, options=None): +def get(port_name=None, options=None, **kwargs): """Returns an object implementing the Port interface. If port_name is None, this routine attempts to guess at the most appropriate port on this platform.""" - port_to_use = port_name + # Wrapped for backwards-compatibility + if port_name: + kwargs['port_name'] = port_name + if options: + kwargs['options'] = options + return _get_kwargs(**kwargs) + + +def _get_kwargs(**kwargs): + port_to_use = kwargs.get('port_name', None) + options = kwargs.get('options', None) if port_to_use is None: if sys.platform == 'win32' or sys.platform == 'cygwin': if options and hasattr(options, 'chromium') and options.chromium: @@ -62,37 +72,40 @@ def get(port_name=None, options=None): if port_to_use == 'test': import test - return test.TestPort(port_name, options) + maker = test.TestPort elif port_to_use.startswith('dryrun'): import dryrun - return dryrun.DryRunPort(port_name, options) + maker = dryrun.DryRunPort elif port_to_use.startswith('mac'): import mac - return mac.MacPort(port_name, options) + maker = mac.MacPort elif port_to_use.startswith('win'): import win - return win.WinPort(port_name, options) + maker = win.WinPort elif port_to_use.startswith('gtk'): import gtk - return gtk.GtkPort(port_name, options) + maker = gtk.GtkPort elif port_to_use.startswith('qt'): import qt - return qt.QtPort(port_name, options) + maker = qt.QtPort + elif port_to_use.startswith('chromium-gpu'): + import chromium_gpu + maker = chromium_gpu.get elif port_to_use.startswith('chromium-mac'): import chromium_mac - return chromium_mac.ChromiumMacPort(port_name, options) + maker = chromium_mac.ChromiumMacPort elif port_to_use.startswith('chromium-linux'): import chromium_linux - return chromium_linux.ChromiumLinuxPort(port_name, options) + maker = chromium_linux.ChromiumLinuxPort elif port_to_use.startswith('chromium-win'): import chromium_win - return chromium_win.ChromiumWinPort(port_name, options) + maker = chromium_win.ChromiumWinPort elif port_to_use.startswith('google-chrome'): import google_chrome - return google_chrome.GetGoogleChromePort(port_name, options) - - raise NotImplementedError('unsupported port: %s' % port_to_use) - + maker = google_chrome.GetGoogleChromePort + else: + raise NotImplementedError('unsupported port: %s' % port_to_use) + return maker(**kwargs) def get_all(options=None): """Returns all the objects implementing the Port interface.""" |